DBA Data[Home] [Help]

PACKAGE BODY: APPS.IBC_CITEM_ADMIN_GRP

Source


1 Package Body IBC_CITEM_ADMIN_GRP AS
2 /* $Header: ibcgciab.pls 120.7 2011/11/17 08:07:57 nirprasa ship $ */
3 
4 /*******************************************************************/
5 /**************************** VARIABLES ****************************/
6 /*******************************************************************/
7 G_COMMAND_CREATE     CHAR(1) := 'C';
8 G_COMMAND_UPDATE     CHAR(1) := 'U';
9 G_COMMAND_INCREMENT  CHAR(1) := 'I';
10 G_COMMAND_TRANSLATE  CHAR(1) := 'T';
11 G_COMMAND_NOTHING    CHAR(1) := 'N';
12 G_COMMAND_POST_APPROVAL_UPDATE     CHAR(1) := 'P';
13 
14 
15 /*******************************************************************/
16 /**************************** FUNCTIONS ****************************/
17 /*******************************************************************/
18 -- -------------------
19 -- ----- PRIVATE -----
20 -- -------------------
21 
22 -- Function Conv_To_TblHandler created for STANDARD/perf change for
23 -- the use of G_MISS_xxx variables.
24 
25 FUNCTION Conv_To_TblHandler(p_value IN DATE) RETURN DATE
26 IS
27 BEGIN
28   IF p_value IS NULL THEN
29     RETURN FND_API.G_MISS_DATE;
30   ELSIF p_value = FND_API.G_MISS_DATE THEN
31     RETURN NULL;
32   ELSE
33     RETURN p_value;
34   END IF;
35 END;
36 
37 -- Overloaded for Number
38 FUNCTION Conv_To_TblHandler(p_value IN NUMBER) RETURN NUMBER
39 IS
40 BEGIN
41   IF p_value IS NULL THEN
42     RETURN FND_API.G_MISS_NUM;
43   ELSIF p_value = FND_API.G_MISS_NUM THEN
44     RETURN NULL;
45   ELSE
46     RETURN p_value;
47   END IF;
48 END;
49 
50 -- Overloaded for VARCHAR2
51 FUNCTION Conv_To_TblHandler(p_value IN VARCHAR2) RETURN VARCHAR2
52 IS
53 BEGIN
54   IF p_value IS NULL THEN
55     RETURN FND_API.G_MISS_CHAR;
56   ELSIF p_value = FND_API.G_MISS_CHAR THEN
57     RETURN NULL;
58   ELSE
59     RETURN p_value;
60   END IF;
61 END;
62 
63 -- --------------------------------------------------------------
64 -- EXIST_ITEM_REFERENCE_CODE
65 --
66 -- Given a reference code and a content item id will tell if
67 -- same reference code is being used already by another content item.
68 --
69 -- --------------------------------------------------------------
70 FUNCTION exist_item_reference_code(p_reference_code IN VARCHAR2,
71                                    p_content_item_id IN NUMBER)
72 RETURN BOOLEAN
73 IS
74   l_dummy    VARCHAR2(2);
75   l_result   BOOLEAN;
76   CURSOR chk_refcode IS
77     SELECT 'X'
78       FROM ibc_content_items
79      WHERE content_item_id <> NVL(p_content_item_id, -1)
80        AND item_reference_code = UPPER(p_reference_code);
81 BEGIN
82   l_result := FALSE;
83   OPEN chk_refcode;
84   FETCH chk_refcode INTO l_dummy;
85   l_result := chk_refcode%FOUND;
86   CLOSE chk_refcode;
87   RETURN l_result;
88 EXCEPTION
89   WHEN OTHERS THEN
90     RETURN FALSE;
91 END exist_item_reference_code;
92 
93 FUNCTION get_mime_type(p_file_type IN VARCHAR2) RETURN VARCHAR2
94 IS
95  l_sc_position   NUMBER;
96  l_result        VARCHAR2(256);
97 BEGIN
98  --DBMS_OUTPUT.put_line('=>Get_Mime_Type');
99 
100  l_sc_position := INSTR(p_file_type, ';');
101  IF l_sc_position > 0 THEN
102    l_result := UPPER(SUBSTR(p_file_type, 1, l_sc_position - 1));
103  ELSE
104    l_result := UPPER(p_file_type);
105  END IF;
106  --DBMS_OUTPUT.put_line('<=Get_Mime_Type result:' || l_result);
107 
108 --
109 -- The OCM upload process should be consistent in dealing with the MIME type for
110 -- an RTF document since there are more than one type of mime type associated with
111 -- RTF.
112 -- All RTF rendition will be stored as 'TEXT/RICHTEXT'
113 -- srrangar made this change to fix Bug# 3261798
114 
115 IF l_result IN ('APPLICATION/RTF','APPLICATION/X-RTF','TEXT/RICHTEXT') THEN
116   l_result := 'TEXT/RICHTEXT';
117 END IF;
118 
119 --
120  RETURN l_result;
121 END;
122 
123 -- --------------------------------------------------------------
124 -- DELETE ATTRIBUTE BUNDLE
125 --
126 -- Used delete the attribute bundle.  This function does NOT edit
127 -- the information about the lob located in the ibc_citem_versions_tl table.
128 --
129 -- --------------------------------------------------------------
130 FUNCTION deleteAttributeBundle(
131     f_citem_ver_id   IN  NUMBER
132     ,f_language      IN  VARCHAR2 DEFAULT USERENV('LANG')
133     ,f_log_action    IN  VARCHAR2 DEFAULT FND_API.g_true
134 )
135 RETURN VARCHAR2
136 IS
137     old_file_id NUMBER;
138 
139     CURSOR c_bundle IS
140         SELECT
141             attribute_file_id
142         FROM
143             ibc_citem_versions_tl
144         WHERE
145             citem_version_id = f_citem_ver_id
146         AND
147             LANGUAGE = f_language;
148 BEGIN
149 
150 
151  IF IBC_DEBUG_PVT.debug_enabled THEN
152    IBC_DEBUG_PVT.start_process(
153       p_proc_type  => 'FUNCTION',
154       p_proc_name  => 'DeleteAttributeBundle',
155       p_parms      => IBC_DEBUG_PVT.make_parameter_list(
156                         p_tag     => 'PARAMETERS',
157                         p_parms   => JTF_VARCHAR2_TABLE_4000(
158                                        'f_citem_ver_id', f_citem_ver_id,
159                                        'f_language', f_language,
160                                        'f_log_action', f_log_action
161                                      )
162                         )
163    );
164  END IF;
165                                                                     --DBMS_OUTPUT.put_line('----- deleteAttributeBundle -----');
166     OPEN c_bundle;
167     FETCH c_bundle INTO old_file_id;
168 
169 
170     IF (c_bundle%NOTFOUND) THEN
171         -- attribute bundle does not exist!
172         CLOSE c_bundle;
173         RETURN FND_API.G_RET_STS_ERROR;
174     ELSE
175         -- bundle exists, now delete it (if it is not null)!
176         IF (old_file_id IS NOT NULL) THEN
177            DELETE
178              FROM ibc_attribute_bundles
179            WHERE attribute_bundle_id = old_file_id;
180 
181            -- Log it!
182            IF ( f_log_action = FND_API.g_true) THEN
183                                   --***************************************************
184                                   --************ADDING TO AUDIT LOG********************
185                                   --***************************************************
186                                   Ibc_Utilities_Pvt.log_action(
187                                       p_activity       => Ibc_Utilities_Pvt.G_ALA_REMOVE
188                                       ,p_parent_value  => f_citem_ver_id
189                                       ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_ATTRIBUTE_BUNDLE
190                                       ,p_object_value1 => old_file_id
191                                       ,p_object_value2 => NULL
192                                       ,p_object_value3 => NULL
193                                       ,p_object_value4 => NULL
194                                       ,p_object_value5 => NULL
195                                       ,p_description   => 'Removing attribute bundle'
196                                   );
197                                   --***************************************************
198            END IF; -- log action
199         END IF; -- if not null
200         CLOSE c_bundle;
201 
202         IF IBC_DEBUG_PVT.debug_enabled THEN
203           IBC_DEBUG_PVT.end_process(
204             IBC_DEBUG_PVT.make_parameter_list(
205               p_tag    => 'OUTPUT',
206               p_parms  => JTF_VARCHAR2_TABLE_4000(
207                             '_RETURN', FND_API.G_RET_STS_SUCCESS
208                           )
209             )
210           );
211         END IF;
212 
213         RETURN FND_API.G_RET_STS_SUCCESS;
214     END IF;
215  EXCEPTION
216    WHEN OTHERS THEN
217      IF IBC_DEBUG_PVT.debug_enabled THEN
218        IBC_DEBUG_PVT.end_process(
219          IBC_DEBUG_PVT.make_parameter_list(
220            p_tag    => 'OUTPUT',
221            p_parms  => JTF_VARCHAR2_TABLE_4000(
222                          '_RETURN', '*** EXCEPTION *** [' || SQLERRM || ']'
223                        )
224          )
225        );
226      END IF;
227      RAISE;
228 
229  END;
230 
231 -- --------------------------------------------------------------
232 -- GET ATTACHMENT ATTRIBUTE CODE
233 --
234 -- Used to get attachment attribute code from version id
235 --
236 -- --------------------------------------------------------------
237 FUNCTION getAttachAttribCode(
238     f_citem_id   IN  NUMBER
239 )
240 RETURN VARCHAR2
241 IS
242     temp IBC_ATTRIBUTE_TYPES_B.attribute_type_code%TYPE;
243 
244     CURSOR c_acode IS
245     SELECT
246         ibc_attribute_types_b.attribute_type_code
247     FROM
248       ibc_attribute_types_b
249         ,ibc_content_items
250     WHERE
251         ibc_content_items.content_item_id = f_citem_id
252     AND
253         ibc_attribute_types_b.content_type_code = ibc_content_items.content_type_code
254     AND
255         ibc_attribute_types_b.data_type_code = Ibc_Utilities_Pub.G_DTC_ATTACHMENT;
256 
257 BEGIN
258                                                                    --DBMS_OUTPUT.put_line('----- getAttachAttribCode-----');
259     OPEN c_acode;
260     FETCH c_acode INTO temp;
261 
262     IF (c_acode%NOTFOUND) THEN
263         -- no attribute code found
264         CLOSE c_acode;
265         RETURN NULL;
266     ELSE
267         -- code found!
268         CLOSE c_acode;
269         RETURN temp;
270     END IF;
271  END;
272 
273 -- --------------------------------------------------------------
274 -- GET ATTACHMENT FILE NAME
275 --
276 -- --------------------------------------------------------------
277 FUNCTION getAttachFileName(
278     f_file_id   IN  NUMBER
279 )
280 RETURN VARCHAR2
281 IS
282     CURSOR c_fname IS
283     SELECT
284         file_name
285     FROM
286         fnd_lobs
287     WHERE
288         file_id = f_file_id;
289 
290     temp FND_LOBS.file_name%TYPE;
291 BEGIN
292                                                                     --DBMS_OUTPUT.put_line('----- getAttachFileName -----');
293   OPEN c_fname;
294   FETCH c_fname INTO temp;
295 
296   IF(c_fname%NOTFOUND) THEN
297       -- no file name found
298       CLOSE c_fname;
299       RETURN NULL;
300     ELSE
301         -- found!
302         CLOSE c_fname;
303         RETURN temp;
304     END IF;
305  END;
306 
307 -- --------------------------------------------------------------
308 -- GET ATTRIBUTE FILE ID
309 --
310 -- Used to get attribute file id of a specific item version
311 --
312 -- --------------------------------------------------------------
313 FUNCTION getAttribFID(
314     f_citem_ver_id   IN  NUMBER
315     ,f_language      IN  VARCHAR2 DEFAULT USERENV('LANG')
316 )
317 RETURN NUMBER
318 IS
319     CURSOR c_afid IS
320         SELECT
321             attribute_file_id
322         FROM
323             ibc_citem_versions_tl
324         WHERE
325             citem_version_id = f_citem_ver_id
326         AND
327             LANGUAGE = f_language;
328 
329     temp NUMBER;
330 BEGIN
331                                                                     --DBMS_OUTPUT.put_line('----- getAttribFID -----');
332    OPEN c_afid;
333    FETCH c_afid INTO temp;
334 
335    IF (c_afid%NOTFOUND) THEN
336         -- not found!
337         CLOSE c_afid;
338         RETURN NULL;
339    ELSE
340         -- found!
341         CLOSE c_afid;
342         RETURN temp;
343     END IF;
344  END;
345 
346 
347 -- --------------------------------------------------------------
348 -- GET ATTRIBUTE TYPE NAME (Translated)
349 --
350 -- Get Attribute type name given content type code, attribute type code,
351 -- and language
352 --
353 -- --------------------------------------------------------------
354 FUNCTION Get_Attribute_Type_Name(
355     p_content_type_code    IN VARCHAR2
356     ,p_attribute_type_code IN VARCHAR2
357     ,p_language            IN  VARCHAR2 DEFAULT USERENV('LANG')
358 )
359 RETURN VARCHAR2
360 IS
361   l_result    VARCHAR2(80);
362   CURSOR c_attribute_type IS
363       SELECT attribute_type_name
364         FROM ibc_attribute_types_tl
365        WHERE content_type_code = p_content_type_code
366          AND attribute_type_code = p_attribute_type_code
367          AND LANGUAGE = p_language;
368 
369 BEGIN
370 
371   l_result := NULL;
372   OPEN c_attribute_type;
373   FETCH c_attribute_type INTO l_result;
374   CLOSE c_attribute_type;
375   RETURN l_result;
376 
377 END;
378 
379 -- --------------------------------------------------------------
380 -- GET CONTENT ITEM STATUS
381 --
382 -- Used to get the status of the content item
383 --
384 -- --------------------------------------------------------------
385 FUNCTION getContentItemStatus(
386     f_content_item_id  IN  NUMBER
387 ) RETURN VARCHAR
388 IS
389     CURSOR c_base IS
390         SELECT
391             content_item_status
392         FROM
393          ibc_content_items
394         WHERE
395             content_item_id = f_content_item_id;
396 
397     temp IBC_CONTENT_ITEMS.content_item_status%TYPE;
398 BEGIN
399                                                                       --DBMS_OUTPUT.put_line('----- getBaseLanguage -----');
400 
401     OPEN c_base;
402     FETCH c_base INTO temp;
403 
404     IF(c_base%NOTFOUND)THEN
405         -- not found!
406         CLOSE c_base;
407         RETURN NULL;
408     ELSE
409         -- found!
410         CLOSE c_base;
411         RETURN temp;
412     END IF;
413 
414  END;
415 
416 -- --------------------------------------------------------------
417 -- GET BASE LANGUAGE
418 --
419 -- Used to get the version number of the content item
420 --
421 -- --------------------------------------------------------------
422 FUNCTION getBaseLanguage(
423     f_content_item_id  IN  NUMBER
424 )
425 RETURN VARCHAR2
426 IS
427     CURSOR c_base IS
428         SELECT
429             base_language
430         FROM
431          ibc_content_items
432         WHERE
433             content_item_id = f_content_item_id;
434 
435     temp IBC_CONTENT_ITEMS.base_language%TYPE;
436 BEGIN
437                                                                       --DBMS_OUTPUT.put_line('----- getBaseLanguage -----');
438 
439     OPEN c_base;
440     FETCH c_base INTO temp;
441 
442     IF(c_base%NOTFOUND)THEN
443         -- not found!
444         CLOSE c_base;
445         RETURN NULL;
446     ELSE
447         -- found!
448         CLOSE c_base;
449         RETURN temp;
450     END IF;
451 
452  END;
453 
454 -- --------------------------------------------------------------
455 -- GET CONTENT ITEM ID
456 --
457 -- Used to get content item id from version id
458 --
459 -- --------------------------------------------------------------
460 FUNCTION getCitemId(
461     f_citem_version_id   IN  NUMBER
462 )
463 RETURN NUMBER
464 IS
465     CURSOR c_item IS
466         SELECT
467             content_item_id
468         FROM
469           ibc_citem_versions_b
470         WHERE
471             citem_version_id = f_citem_version_id;
472 
473     temp NUMBER;
474 BEGIN
475                                                                      --DBMS_OUTPUT.put_line('----- getCitemId -----');
476     OPEN c_item;
477     FETCH c_item INTO temp;
478 
479     IF (c_item%NOTFOUND) THEN
480         -- not found!
481         CLOSE c_item;
482         RETURN NULL;
483     ELSE
484         -- found!
485         CLOSE c_item;
486         RETURN temp;
487     END IF;
488  END getCitemId;
489 
490 -- --------------------------------------------------------------
491 -- GET MAX VERSION ID
492 --
493 -- Used to get the maximum content item version id for a content item
494 --
495 -- --------------------------------------------------------------
496 FUNCTION getMaxVersionId(
497     f_content_item_id   IN  NUMBER
498 )
499 RETURN NUMBER
500 IS
501     CURSOR c_maxv IS
502         SELECT
503           MAX(citem_version_id)
504         FROM
505           ibc_citem_versions_b
506         WHERE
507           content_item_id = f_content_item_id;
508 
509     temp NUMBER;
510 BEGIN
511                                                                      --DBMS_OUTPUT.put_line('----- getMaxVersionId -----');
512     OPEN c_maxv;
513     FETCH c_maxv INTO temp;
514 
515     IF (c_maxv%NOTFOUND) THEN
516         -- not found!
517         CLOSE c_maxv;
518         RETURN NULL;
519     ELSE
520         -- found!
521         CLOSE c_maxv;
522         RETURN temp;
523     END IF;
524  END;
525 
526 -- --------------------------------------------------------------
527 -- HAS PERMISSION
528 --
529 -- Checks permissions to a content item
530 --
531 -- --------------------------------------------------------------
532 FUNCTION hasPermission(
533     f_content_item_id   IN NUMBER
534 )
535 RETURN VARCHAR2
536 IS
537     CURSOR c_perm IS
538         SELECT
539             locked_by_user_id
540         FROM
541             ibc_content_items
542         WHERE
543             content_item_id = f_content_item_id
544         AND
545             ( (locked_by_user_id IS NULL)
546         OR
547             (locked_by_user_id = FND_GLOBAL.user_id) );
548 
549 
550     temp NUMBER;
551 BEGIN
552                                                                     --DBMS_OUTPUT.put_line('----- hasPermission -----');
553    -- checking locking first
554   OPEN c_perm;
555   FETCH c_perm INTO temp;
556 
557     IF (c_perm%NOTFOUND) THEN
558         -- not found!
559         CLOSE c_perm;
560         RETURN FND_API.g_false;
561     ELSE
562         -- found!
563         CLOSE c_perm;
564         RETURN FND_API.g_true;
565     END IF;
566  END;
567 
568 -- --------------------------------------------------------------
569 -- HAS ASSOCIATIONS
570 --
571 -- Checks if a content item has associations
572 --
573 -- --------------------------------------------------------------
574 FUNCTION Has_Associations(
575     p_content_item_id   IN NUMBER
576 )
577 RETURN VARCHAR2
578 IS
579     CURSOR c_check IS
580        SELECT association_id
581         FROM IBC_ASSOCIATIONS
582        WHERE content_item_id = p_content_item_id;
583     temp NUMBER;
584 BEGIN
585   OPEN c_check;
586   FETCH c_check INTO temp;
587 
588  IF (c_check%NOTFOUND) THEN
589    -- not found!
590    CLOSE c_check;
591    RETURN FND_API.g_false;
592  ELSE
593    -- found!
594    CLOSE c_check;
595    RETURN FND_API.g_true;
596  END IF;
597 END Has_Associations;
598 
599 
600 -- --------------------------------------------------------------
601 -- isItemaSubItem
602 --
603 -- Used to see if the item is a Sub-Item
604 --
605 -- --------------------------------------------------------------
606 FUNCTION isItemaSubItem(p_content_item_id IN NUMBER) RETURN BOOLEAN
607 IS
608   l_dummy    VARCHAR2(2);
609   l_result   BOOLEAN;
610   CURSOR cur IS
611     SELECT 'X'
612       FROM ibc_compound_relations
613      WHERE content_item_id = p_content_item_id;
614 
615 BEGIN
616   l_result := FALSE;
617   OPEN cur;
618   FETCH cur INTO l_dummy;
619     l_result := cur%FOUND;
620   CLOSE cur;
621   RETURN l_result;
622 EXCEPTION
623   WHEN OTHERS THEN
624     RETURN FALSE;
625 END isItemaSubItem;
626 
627 
628 
629 -- --------------------------------------------------------------
630 -- HAS CATEGORIES
631 --
632 -- Checks if a content item has categories
633 --
634 -- --------------------------------------------------------------
635 FUNCTION Has_categories(
636     p_content_item_id   IN NUMBER
637 )
638 RETURN VARCHAR2
639 IS
640     CURSOR c_check IS
641        SELECT content_item_node_id
642         FROM IBC_CONTENT_ITEM_NODES
643        WHERE content_item_id = p_content_item_id;
644     temp NUMBER;
645 BEGIN
646   OPEN c_check;
647   FETCH c_check INTO temp;
648 
649  IF (c_check%NOTFOUND) THEN
650    -- not found!
651    CLOSE c_check;
652    RETURN FND_API.g_false;
653  ELSE
654    -- found!
655    CLOSE c_check;
656    RETURN FND_API.g_true;
657  END IF;
658 END Has_Categories;
659 
660 
661 -- --------------------------------------------------------------
662 -- IS_A_DEFAULT_STYLESHEET
663 --
664 -- Checks if a content item is a default stylesheet for any content type
665 --
666 -- --------------------------------------------------------------
667 FUNCTION Is_A_Default_Stylesheet(
668     p_content_item_id   IN NUMBER
669 )
670 RETURN VARCHAR2
671 IS
672     CURSOR c_check IS
673        SELECT 'X'
674         FROM IBC_STYLESHEETS
675        WHERE content_item_id = p_content_item_id
676          AND default_stylesheet_flag = FND_API.g_true;
677     l_dummy VARCHAR2(1);
678 BEGIN
679   OPEN c_check;
680   FETCH c_check INTO l_dummy;
681 
682  IF (c_check%NOTFOUND) THEN
683    -- not found!
684    CLOSE c_check;
685    RETURN FND_API.g_false;
686  ELSE
687    -- found!
688    CLOSE c_check;
689    RETURN FND_API.g_true;
690  END IF;
691 END Is_A_Default_Stylesheet;
692 
693 -- --------------------------------------------------------------
694 -- IS ITEM ADMINISTRATOR
695 --
696 -- Checks to see if user is creator or owner
697 --
698 -- --------------------------------------------------------------
699 FUNCTION isItemAdmin(
700     f_content_item_id   IN NUMBER
701 )
702 RETURN VARCHAR2
703 IS
704     CURSOR c_admin IS
705         SELECT
706             owner_resource_id
707             ,owner_resource_type
708             ,created_by
709         FROM
710             ibc_content_items
711         WHERE
712             content_item_id = f_content_item_id;
713 
714 
715     ori NUMBER;
716     ort IBC_CONTENT_ITEMS.owner_resource_type%TYPE;
717     cby NUMBER;
718 
719 BEGIN
720                                                                     --DBMS_OUTPUT.put_line('----- isItemAdmin-----');
721    -- checking locking first
722   OPEN c_admin;
723   FETCH c_admin INTO ori,ort,cby;
724 
725     IF (c_admin%NOTFOUND) THEN
726         -- not found!
727         CLOSE c_admin;
728         RETURN FND_API.g_false;
729     -- if creator
730     ELSIF (cby = FND_GLOBAL.user_id) THEN
731         CLOSE c_admin;
732         RETURN FND_API.g_true;
733     -- if owner (USER_ID)
734     ELSIF ort IS NULL
735       AND ori = FND_GLOBAL.user_id
736     THEN
737         CLOSE c_admin;
738         RETURN FND_API.g_true;
739     -- if owner (Resource)
740     ELSIF (IBC_UTILITIES_PVT.check_current_user(
741                                  p_user_id         => NULL
742                                  ,p_resource_id    => ori
743                                  ,p_resource_type  => ort ) = 'TRUE') THEN
744         CLOSE c_admin;
745         RETURN FND_API.g_true;
746     -- was not owner or creator
747     ELSE
748         CLOSE c_admin;
749         RETURN FND_API.g_false;
750     END IF;
751  END;
752 
753 -- --------------------------------------------------------------
754 -- IS CORRECT CONTENT TYPE
755 --
756 -- Used to get content item id from version id
757 --
758 -- --------------------------------------------------------------
759 FUNCTION isCorrectContentType(
760      f_content_item_id     IN NUMBER
761     ,f_content_type_code   IN VARCHAR2
762     ,f_attribute_type_code IN VARCHAR2
763 )
764 RETURN VARCHAR2
765 IS
766     CURSOR c_cct IS
767         SELECT a.reference_code
768           FROM ibc_attribute_types_b a,
769                ibc_content_items b
770          WHERE b.content_item_id = f_content_item_id
771            AND b.content_type_code = a.content_type_code
772            AND a.attribute_type_code = f_attribute_type_code
773            AND a.reference_code = f_content_type_code;
774 
775     temp IBC_ATTRIBUTE_TYPES_B.reference_code%TYPE;
776 BEGIN
777                                                                      --DBMS_OUTPUT.put_line('----- isCorrectContentType -----');
778     OPEN c_cct;
779     FETCH c_cct INTO temp;
780 
781     IF (c_cct%NOTFOUND) THEN
782         -- not found!
783         CLOSE c_cct;
784         RETURN FND_API.g_false;
785     ELSE
786         -- found!
787         CLOSE c_cct;
788         RETURN FND_API.g_true;
789     END IF;
790  END;
791 
792 -- --------------------------------------------------------------
793 -- GET DIRECTORY NODE
794 --
795 -- Used to check if the content item exists and to get the content
796 -- -- type code
797 --
798 -- --------------------------------------------------------------
799 FUNCTION getDirectoryNodeId(
800     f_content_item_id  IN  NUMBER
801 )
802 RETURN NUMBER
803 IS
804     CURSOR c_dir IS
805         SELECT
806            directory_node_id
807         FROM
808          ibc_content_items
809         WHERE
810             content_item_id = f_content_item_id;
811 
812     temp NUMBER;
813 BEGIN
814                                                                     --DBMS_OUTPUT.put_line('----- getDirectoryNodeId -----');
815     OPEN c_dir;
816     FETCH c_dir INTO temp;
817 
818     IF(c_dir%NOTFOUND) THEN
819         -- not found!
820         CLOSE c_dir;
821         RETURN NULL;
822     ELSE
823         -- found!
824         CLOSE c_dir;
825         RETURN temp;
826     END IF;
827 END;
828 
829 -- --------------------------------------------------------------
830 -- GET CONTENT TYPE
831 --
832 -- Used to check if the content item exists and to get the content
833 -- -- type code
834 --
835 -- --------------------------------------------------------------
836 FUNCTION getContentType(
837     f_content_item_id  IN  NUMBER
838 )
839 RETURN VARCHAR2
840 IS
841     CURSOR c_ctype IS
842         SELECT
843            content_type_code
844         FROM
845          ibc_content_items
846         WHERE
847             content_item_id = f_content_item_id;
848 
849     temp IBC_CONTENT_TYPES_B.content_type_code%TYPE;
850 BEGIN
851                                                                     --DBMS_OUTPUT.put_line('----- getContentType -----');
852     OPEN c_ctype;
853     FETCH c_ctype INTO temp;
854 
855     IF(c_ctype%NOTFOUND) THEN
856         -- not found!
857         CLOSE c_ctype;
858         RETURN NULL;
859     ELSE
860         -- found!
861         CLOSE c_ctype;
862         RETURN temp;
863     END IF;
864 END;
865 
866 -- --------------------------------------------------------------
867 -- GET CONTENT TYPE by VERSION
868 --
869 -- Used to check if the content item exists and to get the content
870 -- -- type code
871 --
872 -- --------------------------------------------------------------
873 FUNCTION getContentTypeV(
874     f_citem_ver_id  IN  NUMBER
875 )
876 RETURN VARCHAR2
877 IS
878     CURSOR c_ctypev IS
879         SELECT
880             ibc_content_items.content_type_code
881         FROM
882             ibc_content_items
883           ,ibc_citem_versions_b
884         WHERE
885             ibc_citem_versions_b.content_item_id = ibc_content_items.content_item_id
886         AND
887             ibc_citem_versions_b.citem_version_id = f_citem_ver_id;
888     temp IBC_CONTENT_TYPES_B.content_type_code%TYPE;
889 BEGIN
890                                                                      --DBMS_OUTPUT.put_line('----- getContentTypeV -----');
891     OPEN c_ctypev;
892     FETCH c_ctypev INTO temp;
893 
894     IF(c_ctypev%NOTFOUND) THEN
895         -- not found!
896         CLOSE c_ctypev;
897         RETURN NULL;
898     ELSE
899         -- found!
900         CLOSE c_ctypev;
901         RETURN temp;
902     END IF;
903 
904  END;
905 
906 -- --------------------------------------------------------------
907 -- GET MAX VERSION
908 --
909 -- Used to get the version number of the content item
910 --
911 -- --------------------------------------------------------------
912 FUNCTION getMaxVersion(
913     f_content_item_id  IN  NUMBER
914 )
915 RETURN NUMBER
916 IS
917     CURSOR c_max IS
918         SELECT
919             MAX(version_number)
920         FROM
921          ibc_citem_versions_b
922         WHERE
923             content_item_id = f_content_item_id;
924 
925     temp NUMBER;
926 BEGIN
927                                                                       --DBMS_OUTPUT.put_line('----- getMaxVersion -----');
928 
929     OPEN c_max;
930     FETCH c_max INTO temp;
931 
932     IF(c_max%NOTFOUND) THEN
933         -- not found so set to 0 so when incremented it will be 1!
934         temp := 0;
935     END IF;
936 
937     CLOSE c_max;
938     RETURN temp;
939 
940  END;
941 
942 -- -------------------
943 -- ----- PUBLIC ------
944 -- -------------------
945 
946 -- --------------------------------------------------------------
947 -- GET OBJECT VERSION NUMBER
948 --
949 -- Used to get attribute file id of a specific item version
950 --
951 -- --------------------------------------------------------------
952 FUNCTION getObjVerNum(
953     f_citem_id   IN  NUMBER
954 )
955 RETURN NUMBER
956 IS
957     CURSOR c_ovn IS
958         SELECT
959           object_version_number
960         FROM
961           ibc_content_items
962         WHERE
963           content_item_id = f_citem_id;
964 
965     temp NUMBER;
966 BEGIN
967                                                                     --DBMS_OUTPUT.put_line('----- getObjVerNum -----');
968   OPEN c_ovn;
969   FETCH c_ovn INTO temp;
970 
971   IF (c_ovn%NOTFOUND) THEN
972       CLOSE c_ovn;
973       RETURN NULL;
974   ELSE
975       CLOSE c_ovn;
976       RETURN temp;
977   END IF;
978  END;
979 
980 /********************************************************************/
981 /**************************** PROCEDURES ****************************/
982 /********************************************************************/
983 -- -------------------
984 -- ----- PRIVATE -----
985 -- -------------------
986 
987 -- --------------------------------------------------------------
988 -- CHANGE LOCK
989 --
990 -- --------------------------------------------------------------
991 PROCEDURE changeLock(
992     f_content_item_id   IN  NUMBER
993     ,f_new_lock  IN  NUMBER
994 )
995 IS
996 BEGIN
997                                                                        --DBMS_OUTPUT.put_line('----- changeLock -----');
998         UPDATE
999             ibc_content_items
1000         SET
1001             locked_by_user_id = f_new_lock
1002         WHERE
1003             content_item_id = f_content_item_id;
1004 END;
1005 
1006 -- --------------------------------------------------------------
1007 -- CREATE ATTRIBUTE BUNDLE
1008 --
1009 -- Used to get the arrays for an attribute bundle and create a clob
1010 -- with that data.
1011 -- --------------------------------------------------------------
1012  PROCEDURE create_attribute_bundle(
1013     px_attribute_bundle     IN OUT NOCOPY CLOB
1014     ,p_attribute_type_codes IN JTF_VARCHAR2_TABLE_100
1015     ,p_attributes           IN JTF_VARCHAR2_TABLE_32767
1016     ,p_ctype_code           IN VARCHAR2
1017     ,x_return_status        IN OUT NOCOPY VARCHAR2
1018 )
1019 IS
1020     counter NUMBER := 1; -- loop counter for tables
1021     qty_codes NUMBER; -- total quantity of attribute codes to process
1022     temp_text VARCHAR2(32767); -- max input size plus padding
1023     temp_attribute VARCHAR2(32767);
1024     att_size NUMBER; -- loop variable -- max size of attribute
1025     att_type IBC_ATTRIBUTE_TYPES_B.attribute_type_code%TYPE; -- loop variable -- type of attribute
1026     required NUMBER;
1027     cont_flag VARCHAR2(1);  -- continue flag
1028 
1029     CURSOR c_attribute_type(p_attribute_type_code IN VARCHAR2) IS
1030       SELECT data_type_code
1031              ,data_length
1032              ,min_instances
1033         FROM ibc_attribute_types_b
1034        WHERE attribute_type_code = p_attribute_type_code
1035          AND content_type_code = p_ctype_code;
1036 
1037 BEGIN
1038 
1039  IF IBC_DEBUG_PVT.debug_enabled THEN
1040    IBC_DEBUG_PVT.start_process(
1041       p_proc_type  => 'PROCEDURE',
1042       p_proc_name  => 'Create_Attribute_Bundle',
1043       p_parms      => IBC_DEBUG_PVT.make_parameter_list(
1044                         p_tag     => 'PARAMETERS',
1045                         p_parms   => JTF_VARCHAR2_TABLE_32767(
1046                                        'p_attribute_type_codes', IBC_DEBUG_PVT.make_list(p_attribute_type_codes),
1047                                        'p_attributes', IBC_DEBUG_PVT.make_list_VC32767(p_attributes),
1048                                        'p_ctype_code', p_ctype_code
1049                                      )
1050                         )
1051    );
1052  END IF;
1053                                                                          --DBMS_OUTPUT.put_line('----- create_attribute_bundle -----');
1054     x_return_status := FND_API.G_RET_STS_SUCCESS;
1055 
1056     IF ((p_attribute_type_codes IS NOT NULL) AND (p_attributes IS NOT NULL)) THEN
1057         qty_codes := p_attribute_type_codes.COUNT;
1058 
1059         -- basic table/array validation (making sure that they are truly parallel)
1060         IF (qty_codes <> p_attributes.COUNT) THEN
1061            --DBMS_OUTPUT.put_line('EX - uneven attribute arrays');
1062            x_return_status := FND_API.G_RET_STS_ERROR;
1063             FND_MESSAGE.Set_Name('IBC', 'ATTRIBUTE_ARRAY_ERROR');
1064            FND_MSG_PUB.ADD;
1065         ELSE
1066         -- loop for each record in the arrays
1067             LOOP
1068                 cont_flag := FND_API.g_true;
1069 
1070                 IF( (UPPER(p_attribute_type_codes(counter)) = 'NAME') OR (UPPER(p_attribute_type_codes(counter)) = 'DESCRIPTION') ) THEN
1071                     --DBMS_OUTPUT.put_line('EX - reserved type code');
1072                     cont_flag := FND_API.g_false;
1073                     FND_MESSAGE.Set_Name('IBC', 'RESERVED_TYPE_CODE_ERROR');
1074                     FND_MESSAGE.Set_Token('CODE', p_attribute_type_codes(counter), FALSE);
1075                     FND_MSG_PUB.ADD;
1076                     x_return_status := FND_API.G_RET_STS_ERROR;
1077                 END IF;
1078 
1079                 IF (cont_flag = FND_API.g_true) THEN
1080                     OPEN c_attribute_type(p_attribute_type_codes(counter));
1081                     FETCH c_attribute_type INTO att_type, att_size, required;
1082                     IF c_attribute_type%NOTFOUND THEN
1083                        cont_flag := FND_API.g_false;
1084                        x_return_status := FND_API.G_RET_STS_ERROR;
1085                        FND_MESSAGE.Set_Name('IBC', 'INVALID_ATT_TYPE');
1086                        FND_MESSAGE.Set_Token('TYPE_CODE', p_attribute_type_codes(counter));
1087                        FND_MSG_PUB.ADD;
1088                     END IF;
1089                     CLOSE c_attribute_type;
1090                 END IF;
1091 
1092                 IF (cont_flag = FND_API.g_true) THEN
1093                     -- *********************************************
1094                     -- ********** DATATYPE VALIDATION **************
1095                     -- *********************************************
1096 
1097 
1098                     -- cleaning up inputted value
1099                     temp_attribute := TRIM(p_attributes(counter));
1100 
1101                     -- Checking primitive types only!
1102                     -- null allowed?
1103                     IF (temp_attribute IS NULL) THEN
1104                         IF (required > 0) THEN
1105                             FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_REQUIRED');
1106                             FND_MESSAGE.Set_Token('ATTRIBUTE_NAME', get_Attribute_type_name(p_ctype_code, p_attribute_type_codes(counter)), FALSE);
1107                             FND_MSG_PUB.ADD;
1108                             x_return_status := FND_API.G_RET_STS_ERROR;
1109                         END IF;
1110                     -- string length
1111                     ELSIF (att_type = IBC_UTILITIES_PUB.G_DTC_TEXT) THEN
1112                         IF (LENGTH(temp_attribute) > att_size) THEN
1113                             FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_DATA_LENGTH');
1114                             FND_MESSAGE.Set_Token('ATTRIBUTE_NAME', get_Attribute_type_name(p_ctype_code, p_attribute_type_codes(counter)), FALSE);
1115                             FND_MESSAGE.Set_Token('DATA_LENGTH', att_size);
1116                             FND_MSG_PUB.ADD;
1117                             x_return_status := FND_API.G_RET_STS_ERROR;
1118                         END IF;
1119                     -- number (decimal)
1120                     ELSIF (att_type = IBC_UTILITIES_PUB.G_DTC_NUMBER) THEN
1121                         IF (IBC_VALIDATE_PVT.isNumber(temp_attribute) = FND_API.g_false) THEN
1122                             FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_INVALID_NUMBER');
1123                             FND_MESSAGE.Set_Token('ATTRIBUTE_NAME', get_Attribute_type_name(p_ctype_code, p_attribute_type_codes(counter)), FALSE);
1124                             FND_MSG_PUB.ADD;
1125                             x_return_status := FND_API.G_RET_STS_ERROR;
1126                         END IF;
1127                     -- date (datetime)
1128                     ELSIF (att_type = IBC_UTILITIES_PUB.G_DTC_DATE) THEN
1129                         IF (IBC_VALIDATE_PVT.isDate(temp_attribute) = FND_API.g_false) THEN
1130                             FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_INVALID_DATE');
1131                             FND_MESSAGE.Set_Token('ATTRIBUTE_NAME', get_Attribute_type_name(p_ctype_code, p_attribute_type_codes(counter)), FALSE);
1132                             FND_MSG_PUB.ADD;
1133                             x_return_status := FND_API.G_RET_STS_ERROR;
1134                         END IF;
1135                     -- boolean
1136                     ELSIF (att_type = IBC_UTILITIES_PUB.G_DTC_BOOLEAN) THEN
1137                         IF (IBC_VALIDATE_PVT.isBoolean(temp_attribute) = FND_API.g_false) THEN
1138                             FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_INVALID_BOOLEAN');
1139                             FND_MESSAGE.Set_Token('ATTRIBUTE_NAME', get_Attribute_type_name(p_ctype_code, p_attribute_type_codes(counter)), FALSE);
1140                             FND_MSG_PUB.ADD;
1141                             x_return_status := FND_API.G_RET_STS_ERROR;
1142                         END IF;
1143                     -- boolean
1144                     ELSIF ( (att_type = IBC_UTILITIES_PUB.G_DTC_COMPONENT) OR (att_type = IBC_UTILITIES_PUB.G_DTC_ATTACHMENT) ) THEN
1145                         --DBMS_OUTPUT.put_line('EX - non primitive code');
1146                         FND_MESSAGE.Set_Name('IBC', 'NON_PRIM_ATTRIB_ERROR');
1147                         FND_MSG_PUB.ADD;
1148                         x_return_status := FND_API.G_RET_STS_ERROR;
1149                     END IF;
1150 
1151                     -- *********** TEMPORARILY STORING INFO IN TEMP LOB **********
1152                     -- only storing if an error has not yet been encountered
1153                     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1154                         -- Open TAG
1155                         -- Building xml string to be stored
1156                         IF (att_type NOT IN (IBC_UTILITIES_PUB.G_DTC_TEXT,
1157                                              IBC_UTILITIES_PUB.G_DTC_HTML,
1158                                              IBC_UTILITIES_PUB.G_DTC_URL))
1159                         THEN
1160                           -- If not TEXT or HTML or URL -> regular formatting
1161                           temp_text := '<'||p_attribute_type_codes(counter)||' datatype="'||att_type||'">';
1162                         ELSE
1163                           -- if TEXT, HTML or URL -> Enclose the content on a CDATA
1164                           temp_text := '<'||p_attribute_type_codes(counter)||' datatype="'||att_type||'">' ||
1165                                        '<![CDATA[';
1166                         END IF;
1167                         DBMS_LOB.writeappend(px_attribute_bundle, LENGTH(temp_text), temp_text);
1168 
1169                         -- Actual Attribute Value
1170                         IF (att_type = IBC_UTILITIES_PUB.G_DTC_DATE) THEN
1171                           BEGIN
1172                             -- Bug# 3625846
1173                             temp_text := FND_DATE.date_to_canonical(TO_DATE(p_attributes(counter),
1174                                             FND_PROFILE.value('ICX_DATE_FORMAT_MASK')));
1175                           EXCEPTION
1176                             WHEN OTHERS THEN
1177                             temp_text := FND_DATE.date_to_canonical(TO_DATE(p_attributes(counter),'RRRR-mm-dd'));
1178 
1179                           END;
1180                         ELSE
1181                           temp_text := p_attributes(counter);
1182                         END IF;
1183 
1184                         IF temp_text IS NOT NULL THEN
1185                           DBMS_LOB.writeappend(px_attribute_bundle, LENGTH(temp_text), temp_text);
1186                         END IF;
1187 
1188                         WHILE counter + 1 <= qty_codes AND
1189                               p_attribute_type_codes(counter) = p_attribute_type_codes(counter+1)
1190                         LOOP
1191                           IBC_DEBUG_PVT.debug_message('COUNTER=' || counter);
1192                           counter := counter + 1;
1193                           temp_text := p_attributes(counter);
1194                           IF temp_text IS NOT NULL THEN
1195                             DBMS_LOB.writeappend(px_attribute_bundle, LENGTH(temp_text), temp_text);
1196                           END IF;
1197                         END LOOP;
1198 
1199                         -- Close TAG
1200                         -- Building xml string to be stored
1201                         IF (att_type NOT IN (IBC_UTILITIES_PUB.G_DTC_TEXT,
1202                                              IBC_UTILITIES_PUB.G_DTC_HTML,
1203                                              IBC_UTILITIES_PUB.G_DTC_URL))
1204                         THEN
1205                           -- If not TEXT or HTML or URL -> regular formatting
1206                           temp_text := '</'||p_attribute_type_codes(counter)||'>';
1207                         ELSE
1208                           -- if TEXT, HTML or URL -> Enclose the content on a CDATA
1209                           temp_text := ']]>' ||
1210                                        '</'||p_attribute_type_codes(counter)||'>';
1211                         END IF;
1212                         -- writing to outgoing lob
1213                         DBMS_LOB.writeappend(px_attribute_bundle, LENGTH(temp_text), temp_text);
1214                     END IF;
1215                 END IF; -- if continue flag ...
1216 
1217                 EXIT WHEN counter = qty_codes;
1218                 counter := counter + 1;
1219             END LOOP;
1220         END IF;
1221     END IF;
1222 
1223     IF IBC_DEBUG_PVT.debug_enabled THEN
1224       IBC_DEBUG_PVT.end_process(
1225         IBC_DEBUG_PVT.make_parameter_list(
1226           p_tag    => 'OUTPUT',
1227           p_parms  => JTF_VARCHAR2_TABLE_4000(
1228                         'x_return_status', x_return_status
1229                       )
1230         )
1231       );
1232     END IF;
1233 
1234 EXCEPTION
1235     WHEN OTHERS THEN
1236       --DBMS_OUTPUT.put_line('EX - CREATE ATTRIBUTE BUNDLE ERROR');
1237       x_return_status := FND_API.G_RET_STS_ERROR;
1238       FND_MESSAGE.Set_Name('IBC', 'A_BUNDLE_ERROR');
1239       FND_MESSAGE.set_token('SITUATION', 'CREATION');
1240       FND_MSG_PUB.ADD;
1241       IF IBC_DEBUG_PVT.debug_enabled THEN
1242         IBC_DEBUG_PVT.end_process(
1243           IBC_DEBUG_PVT.make_parameter_list(
1244             p_tag    => 'OUTPUT',
1245             p_parms  => JTF_VARCHAR2_TABLE_4000(
1246                           'x_return_status', x_return_status,
1247                           'EXCEPTION', SQLERRM
1248                         )
1249           )
1250         );
1251       END IF;
1252 END;
1253 
1254 -- --------------------------------------------------------------
1255 -- COPY VERSION (INTERNAL)
1256 --
1257 --
1258 -- --------------------------------------------------------------
1259 PROCEDURE copy_version_int(
1260     p_language                  IN VARCHAR2
1261     ,p_new_citem_name   IN VARCHAR2
1262     ,px_content_item_id         IN OUT NOCOPY NUMBER
1263     ,px_citem_ver_id            IN OUT NOCOPY NUMBER
1264     ,px_object_version_number   IN OUT NOCOPY NUMBER
1265     ,x_return_status            OUT NOCOPY VARCHAR2
1266     ,x_msg_count                OUT NOCOPY NUMBER
1267     ,x_msg_data                 OUT NOCOPY VARCHAR2
1268 )
1269 IS
1270     new_citem_ver_id NUMBER;
1271     new_ver_num NUMBER;
1272     new_attrib_fid NUMBER;
1273     row_id  VARCHAR2(250);  -- required for use with table handlers
1274 
1275     o_ovn NUMBER;
1276     o_content_item_id NUMBER;
1277     o_start_date DATE;
1278     o_end_date DATE;
1279     o_name IBC_CITEM_VERSIONS_TL.content_item_name%TYPE;
1280     o_description IBC_CITEM_VERSIONS_TL.description%TYPE;
1281     o_attrib_fid  NUMBER;
1282     o_attach_fid NUMBER;
1283     o_attach_attrib_code IBC_CITEM_VERSIONS_TL.attachment_attribute_code%TYPE;
1284     o_source_lang IBC_CITEM_VERSIONS_TL.source_lang%TYPE;
1285     o_attach_fname IBC_CITEM_VERSIONS_TL.attachment_file_name%TYPE;
1286     o_default_rendition_mime_type IBC_CITEM_VERSIONS_TL.default_rendition_mime_type%TYPE;
1287     o_attrib_bundle CLOB;
1288 
1289     compound_id NUMBER; --temp holder of newly created compound id
1290     l_rendition_id NUMBER;
1291 
1292     CURSOR c_old_item IS
1293         SELECT
1294             citem_id
1295             ,NVL(p_new_citem_name,name) name --Added to ensure uniqueness of citem under folder
1296             ,version
1297             ,description
1298             ,start_date
1299             ,end_date
1300             ,attrib_fid
1301             ,attach_fid
1302             ,attach_file_name
1303             ,default_rendition_mime_type
1304             ,object_version_number
1305         FROM
1306             IBC_CITEMS_V
1307         WHERE
1308             citem_ver_id = px_citem_ver_id
1309         AND
1310             LANGUAGE = p_language;
1311 
1312     CURSOR c_abundle IS
1313         SELECT attribute_bundle_data file_data
1314           FROM IBC_ATTRIBUTE_BUNDLES
1315         WHERE attribute_bundle_id = o_attrib_fid;
1316 
1317    CURSOR c_components(p_citem_version_id NUMBER) IS
1318      SELECT content_item_id      ciid
1319             ,attribute_type_code atc
1320             ,content_type_code   ctc
1321             ,sort_order          sod
1322        FROM ibc_compound_relations
1323       WHERE citem_version_id = p_citem_version_id;
1324 
1325    CURSOR c_renditions(p_citem_version_id NUMBER,
1326                        p_language         VARCHAR2) IS
1327      SELECT LANGUAGE,
1328             file_id,
1329             file_name,
1330             mime_type
1331        FROM ibc_renditions
1332       WHERE citem_version_id = p_citem_version_id
1333         AND LANGUAGE = p_language;
1334 
1335 BEGIN
1336                                                                        --DBMS_OUTPUT.put_line('----- copy version int -----');
1337   IF IBC_DEBUG_PVT.debug_enabled THEN
1338     IBC_DEBUG_PVT.start_process(
1339        p_proc_type  => 'PROCEDURE',
1340        p_proc_name  => 'Copy_Version_Int',
1341        p_parms      => IBC_DEBUG_PVT.make_parameter_list(
1342                          p_tag     => 'PARAMETERS',
1343                          p_parms   => JTF_VARCHAR2_TABLE_4000(
1344                                         'p_language', p_language,
1345                                         'px_content_item_id', px_content_item_id,
1346                                         'px_citem_ver_id', px_citem_ver_id,
1347                                         'px_object_version_number', px_object_version_number
1348                                       )
1349                          )
1350     );
1351   END IF;
1352 
1353     -- Setting initial state
1354     x_return_status := FND_API.G_RET_STS_SUCCESS;
1355 
1356     -- populating the old values
1357     OPEN c_old_item;
1358 
1359     FETCH
1360         c_old_item
1361     INTO
1362         o_content_item_id
1363         ,o_name
1364         ,new_ver_num
1365         ,o_description
1366         ,o_start_date
1367         ,o_end_date
1368         ,o_attrib_fid
1369         ,o_attach_fid
1370         ,o_attach_fname
1371         ,o_default_rendition_mime_type
1372         ,o_ovn;
1373 
1374     IF (c_old_item%NOTFOUND) THEN
1375         CLOSE c_old_item;
1376         x_return_status := FND_API.G_RET_STS_ERROR;
1377        FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
1378        FND_MESSAGE.Set_Token('INPUT', 'content_item_version_id/language combination', FALSE);
1379         FND_MSG_PUB.ADD;
1380         RAISE FND_API.G_EXC_ERROR;
1381     END IF;
1382 
1383     CLOSE c_old_item;
1384 
1385     IF (px_content_item_id IS NULL) THEN
1386         px_content_item_id := o_content_item_id;
1387     END IF;
1388 
1389     -- setting object version number if it was not provided
1390     IF (px_object_version_number IS NULL) THEN
1391         px_object_version_number := o_ovn;
1392     END IF;
1393 
1394     -- Fetching Attachment Attribute code
1395     o_attach_attrib_code := getAttachAttribCode(px_content_item_id);
1396 
1397     -- get version number
1398     new_ver_num := getMaxVersion(px_content_item_id);
1399     IF(new_ver_num IS NULL) THEN
1400         new_ver_num := 1;
1401     ELSE
1402         new_ver_num := new_ver_num + 1;
1403     END IF;
1404 
1405 
1406     -- insert attribute bundle -------------------------
1407     IF ( o_attrib_fid IS NOT NULL) THEN
1408         OPEN c_abundle;
1409         FETCH c_abundle INTO o_attrib_bundle;
1410 
1411         IF (c_abundle%NOTFOUND) THEN
1412             CLOSE c_abundle;
1413             --DBMS_OUTPUT.put_line('EX - old attribute bundle not found');
1414             x_return_status := FND_API.G_RET_STS_ERROR;
1415             FND_MESSAGE.Set_Name('IBC', 'INVALID_ATT_FILE_POINTER');
1416             FND_MESSAGE.Set_Token('CIVL',px_citem_ver_id, FALSE);
1417             FND_MSG_PUB.ADD;
1418             RAISE FND_API.G_EXC_ERROR;
1419         ELSE
1420             -- adding data to fnd_lobs
1421             Ibc_Utilities_Pvt.insert_attribute_bundle(
1422                 x_lob_file_id           => new_attrib_fid
1423                 ,p_new_bundle           => o_attrib_bundle
1424                 ,x_return_status        => x_return_status
1425             );
1426             CLOSE c_abundle;
1427         END IF;
1428     END IF;
1429 
1430     -- insert basic information -------------------------
1431     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1432         --DBMS_OUTPUT.put_line('insert base lang with citem_id '||px_content_item_id||' and citem_ver_id '||new_citem_ver_id|| 'and ovn '||px_object_version_number);
1433 
1434         -- new_citem_ver_id should always be null since a new version is created with EVERY copy
1435         -- ****RENDITIONS_WORK****
1436         IBC_CITEM_VERSIONS_PKG.insert_base_lang(
1437             x_rowid                         => row_id
1438             ,px_citem_version_id            => new_citem_ver_id
1439             ,p_content_item_id              => px_content_item_id
1440             ,p_version_number               => new_ver_num
1441             ,p_citem_version_status         => IBC_UTILITIES_PUB.G_STV_WORK_IN_PROGRESS
1442             ,p_start_date                   => o_start_date
1443             ,p_end_date                     => o_end_date
1444             ,px_object_version_number       => px_object_version_number
1445             ,p_attribute_file_id            => new_attrib_fid
1446             ,p_attachment_attribute_code    => o_attach_attrib_code
1447             ,p_attachment_file_id           => o_attach_fid
1448             ,p_content_item_name            => o_name
1449             ,p_attachment_file_name         => o_attach_fname
1450             ,p_default_rendition_mime_type  => o_default_rendition_mime_type
1451             ,p_description                  => o_description
1452             ,p_source_lang                  => p_language
1453         );
1454 
1455         -- Copying Translation rows from source version
1456         -- 11.5.10 enhancement (for PRP)
1457         INSERT INTO IBC_CITEM_VERSIONS_TL (
1458          CITEM_VERSION_ID,
1459          ATTRIBUTE_FILE_ID,
1460          ATTACHMENT_ATTRIBUTE_CODE,
1461          CONTENT_ITEM_NAME,
1462          ATTACHMENT_FILE_ID,
1463          ATTACHMENT_FILE_NAME,
1464          DESCRIPTION,
1465          DEFAULT_RENDITION_MIME_TYPE,
1466          CREATION_DATE,
1467          CREATED_BY,
1468          LAST_UPDATE_DATE,
1469          LAST_UPDATED_BY,
1470          LAST_UPDATE_LOGIN,
1471          LANGUAGE,
1472          SOURCE_LANG,
1473          CITEM_TRANSLATION_STATUS
1474        ) SELECT new_citem_ver_id,
1475                 attribute_file_id,
1476                 attachment_attribute_code,
1477                 content_item_name,
1478                 attachment_file_id,
1479                 attachment_file_name,
1480                 description,
1481                 default_rendition_mime_type,
1482                 creation_date,
1483                 created_by,
1484                 last_update_date,
1485                 last_updated_by,
1486                 last_update_login,
1487                 LANGUAGE,
1488                 source_lang,
1489                 IBC_UTILITIES_PUB.g_stv_work_in_progress
1490            FROM IBC_CITEM_VERSIONS_TL
1491           WHERE citem_version_id = px_citem_ver_id
1492             AND LANGUAGE <> p_language;
1493 
1494   --Bug Fix: 3623676
1495   Ibc_Citem_Versions_Pkg.POPULATE_ALL_ATTACHMENTS(new_citem_ver_id,p_language);
1496 
1497     END IF;
1498 
1499     -- insert renditions --------------------------------
1500     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1501 
1502         FOR r_rendition IN c_renditions(px_citem_ver_id, p_language) LOOP
1503           l_rendition_id := NULL;
1504           IBC_RENDITIONS_PKG.insert_row(
1505             Px_rowid                   => row_id
1506             ,Px_RENDITION_ID          => l_rendition_id
1507             ,p_object_version_number => G_OBJ_VERSION_DEFAULT
1508             ,P_LANGUAGE                 => r_rendition.LANGUAGE
1509             ,P_FILE_ID                 => r_rendition.file_id
1510             ,P_FILE_NAME               => r_rendition.file_name
1511             ,P_CITEM_VERSION_ID       => new_citem_ver_id
1512             ,P_MIME_TYPE                => r_rendition.mime_type
1513           );
1514         END LOOP;
1515 
1516     END IF;
1517 
1518 
1519     -- insert components --------------------------------
1520     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1521 
1522         FOR r_component IN c_components(px_citem_ver_id) LOOP
1523             --resetting id
1524             compound_id := NULL;
1525 
1526             IBC_COMPOUND_RELATIONS_PKG.insert_row(
1527                 x_rowid                  => row_id
1528                 ,px_compound_relation_id => compound_id
1529                 ,p_content_item_id       => r_component.ciid
1530                 ,p_attribute_type_code   => r_component.atc
1531                 ,p_content_type_code     => r_component.ctc
1532                 ,p_object_version_number => G_OBJ_VERSION_DEFAULT
1533                 ,p_citem_version_id      => new_citem_ver_id
1534                 ,p_sort_order            => r_component.sod
1535               );
1536 
1537         END LOOP;
1538 
1539     END IF;
1540 
1541     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1542                                    --***************************************************
1543                                    --************ADDING TO AUDIT LOG********************
1544                                    --***************************************************
1545                                    Ibc_Utilities_Pvt.log_action(
1546                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
1547                                        ,p_parent_value  => NULL
1548                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
1549                                        ,p_object_value1 => px_content_item_id
1550                                        ,p_object_value2 => NULL
1551                                        ,p_object_value3 => NULL
1552                                        ,p_object_value4 => NULL
1553                                        ,p_object_value5 => NULL
1554                                        ,p_description   => NULL
1555                                    );
1556 
1557                                    Ibc_Utilities_Pvt.log_action(
1558                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_COPY
1559                                        ,p_parent_value  => px_content_item_id
1560                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
1561                                        ,p_object_value1 => new_citem_ver_id
1562                                        ,p_object_value2 => p_language
1563                                        ,p_object_value3 => px_citem_ver_id
1564                                        ,p_object_value4 => NULL
1565                                        ,p_object_value5 => NULL
1566                                        ,p_description   => 'Copied content item version'
1567                                    );
1568                                    --***************************************************
1569                                    --***************************************************
1570 
1571    END IF;
1572 
1573     -- setting version id for return
1574     px_citem_ver_id := new_citem_ver_id;
1575 
1576   IF IBC_DEBUG_PVT.debug_enabled THEN
1577     IBC_DEBUG_PVT.end_process(
1578       IBC_DEBUG_PVT.make_parameter_list(
1579         p_tag    => 'OUTPUT',
1580         p_parms  => JTF_VARCHAR2_TABLE_4000(
1581                       'px_content_item_id', px_content_item_id,
1582                       'px_citem_ver_id', px_citem_ver_id,
1583                       'px_object_version_number', px_object_version_number,
1584                       'x_return_status', x_return_status,
1585                       'x_msg_count', x_msg_count,
1586                       'x_msg_data', x_msg_data
1587                     )
1588       )
1589     );
1590   END IF;
1591 
1592 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
1593 EXCEPTION
1594   WHEN OTHERS THEN
1595     IF IBC_DEBUG_PVT.debug_enabled THEN
1596       IBC_DEBUG_PVT.end_process(
1597         IBC_DEBUG_PVT.make_parameter_list(
1598           p_tag    => 'OUTPUT',
1599           p_parms  => JTF_VARCHAR2_TABLE_4000(
1600                         'x_return_status', '*** EXCEPTION *** [' || SQLERRM ||']'
1601                       )
1602         )
1603       );
1604     END IF;
1605     RAISE;
1606 
1607 END;
1608 
1609 -- --------------------------------------------------------------
1610 -- GET ATTRIBUTE BUNDLE (INTERNAL)
1611 --
1612 -- Used to get the attribute bundle for updating/etc
1613 --
1614 --
1615 --
1616 -- --------------------------------------------------------------
1617 PROCEDURE get_attribute_bundle_int(
1618     p_attrib_fid             IN NUMBER
1619     ,p_ctype_code            IN VARCHAR2
1620     ,p_language              IN VARCHAR2 DEFAULT USERENV('LANG')
1621     ,x_attribute_type_codes  OUT NOCOPY JTF_VARCHAR2_TABLE_100
1622     ,x_attribute_type_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
1623     ,x_attributes            OUT NOCOPY JTF_VARCHAR2_TABLE_32767
1624     ,x_return_status         OUT NOCOPY VARCHAR2
1625 )
1626 IS
1627     temp_bundle CLOB; -- temporary clob to hold text information while creating
1628     xml_parser  XMLPARSER.parser;
1629     dom_doc     XMLDOM.DOMDocument;
1630     dom_node_list   XMLDOM.DOMNodeList; -- base nodes
1631     att_node_list   XMLDOM.DOMNodeList; -- attribute nodes
1632     dom_node    XMLDOM.DOMNode; -- base node
1633     total_att_count NUMBER; -- temp variable to hold total count of attributes found
1634     temp_node_list  XMLDOM.DOMNodeList; -- temporary nodes for use inside creation loop
1635     temp_node XMLDOM.DOMNode;
1636     char_data XMLDOM.DOMCharacterData;
1637     counter NUMBER := 1; -- variable for return arrays(tables)
1638 
1639     CHUNKSIZE       CONSTANT NUMBER := 4000;
1640     l_res_buffer    VARCHAR2(32767);
1641     l_total_length  NUMBER;
1642 
1643     -- table variables
1644     attribute_type_codes  JTF_VARCHAR2_TABLE_100  := JTF_VARCHAR2_TABLE_100();
1645     attribute_type_names  JTF_VARCHAR2_TABLE_300  := JTF_VARCHAR2_TABLE_300();
1646     attributes            JTF_VARCHAR2_TABLE_32767 := JTF_VARCHAR2_TABLE_32767();
1647 
1648     -- attribute loop variables
1649     atn IBC_ATTRIBUTE_TYPES_TL.attribute_type_name%TYPE;
1650     atc IBC_ATTRIBUTE_TYPES_TL.attribute_type_code%TYPE; -- loop variable for attribute type
1651     dtc IBC_ATTRIBUTE_TYPES_B.data_type_code%TYPE;
1652 
1653     -- XML encoding
1654     l_xml_encoding        VARCHAR2(80);
1655 BEGIN
1656 
1657  IF IBC_DEBUG_PVT.debug_enabled THEN
1658    IBC_DEBUG_PVT.start_process(
1659       p_proc_type  => 'PROCEDURE',
1660       p_proc_name  => 'Get_Attribute_Bundle_Int',
1661       p_parms      => IBC_DEBUG_PVT.make_parameter_list(
1662                         p_tag     => 'PARAMETERS',
1663                         p_parms   => JTF_VARCHAR2_TABLE_4000(
1664                                        'p_attrib_fid', p_attrib_fid,
1665                                        'p_ctype_code', p_ctype_code,
1666                                        'p_language', p_language
1667                                      )
1668                         )
1669    );
1670  END IF;
1671 
1672 
1673                                                                     --DBMS_OUTPUT.put_line('----- get_attribute_bundle_int -----');
1674     x_return_status := FND_API.G_RET_STS_SUCCESS;
1675     --get attributes
1676     -- CREATING TEMP ATTRIBUTE BUNDLE
1677     DBMS_LOB.createtemporary(temp_bundle, TRUE, 2);
1678 
1679     -- Attaching encoding to XML based on DB character set
1680     l_xml_encoding := '<?xml version="1.0" encoding="'||
1681                       IBC_UTILITIES_PVT.getEncoding() ||
1682                       '"?>';
1683     DBMS_LOB.WRITEAPPEND(temp_bundle, LENGTH(l_xml_encoding), l_xml_encoding);
1684 
1685     -- BUILDING COMPLETE XML CLOB
1686     -- creating open tags
1687     Ibc_Utilities_Pvt.build_citem_open_tags (
1688       p_content_type_code    => p_ctype_code
1689       ,p_content_item_id     => -1
1690         ,p_item_reference_code => NULL
1691       ,p_root_tag_only_flag  => FND_API.g_false
1692         ,p_xml_clob_loc      => temp_bundle
1693     );
1694 
1695     Ibc_Utilities_Pvt.Build_Attribute_Bundle (
1696       p_file_id              => p_attrib_fid
1697         ,p_xml_clob_loc      => temp_bundle
1698     );
1699 
1700     -- creating close tags
1701     Ibc_Utilities_Pvt.build_close_tag (
1702       p_close_tag          => p_ctype_code
1703         ,p_xml_clob_loc      => temp_bundle
1704     );
1705 
1706 
1707     -- ************************** XML PARSER CREATION ***********************
1708     -- creating parser to parse temp clob
1709     xml_parser := XMLPARSER.newParser();
1710     XMLPARSER.parseClob(xml_parser, temp_bundle);
1711     -- getting document
1712     dom_doc := XMLPARSER.getDocument(xml_parser);
1713     -- getting base node
1714     --dom_node_list := XMLDOM.getElementsByTagName(dom_doc, p_ctype_code);
1715     --dom_node := XMLDOM.item(dom_node_list, 0);
1716     dom_node := XMLDOM.makeNode(XMLDOM.getDocumentElement(dom_doc));
1717     -- getting child nodes
1718     att_node_list := XMLDOM.getChildNodes(dom_node);
1719     total_att_count := XMLDOM.getLength(att_node_list);
1720 
1721 --  Tracing output to show what nodes are available for this item
1722 --  for i in 0..total_att_count-1 loop
1723 --    --DBMS_OUTPUT.put_line(XMLDOM.getNodeName(XMLDOM.item(att_node_list, i)));
1724 --  end loop;
1725 
1726     --  Loading attribute information
1727     FOR i IN 0..total_att_count-1 LOOP
1728 
1729         -- ignoring the built-in attributes
1730         IF ( (XMLDOM.getNodeName(XMLDOM.item(att_node_list, i)) <> 'NAME') AND
1731             (XMLDOM.getNodeName(XMLDOM.item(att_node_list, i)) <> 'DESCRIPTION') ) THEN
1732             attribute_type_codes.extend;
1733             attribute_type_names.extend;
1734             attributes.extend;
1735             atc := XMLDOM.getNodeName(XMLDOM.item(att_node_list, i));
1736 
1737             SELECT
1738                 attl.attribute_type_name,
1739                 atb.data_type_code
1740             INTO
1741                 atn,
1742                 dtc
1743             FROM
1744                 IBC_ATTRIBUTE_TYPES_TL attl,
1745                 IBC_ATTRIBUTE_TYPES_B atb
1746             WHERE
1747                 atb.attribute_type_code = attl.attribute_type_code
1748             AND
1749                 atb.content_type_code = attl.content_type_code
1750             AND
1751                 attl.LANGUAGE = p_language
1752             AND
1753                 attl.attribute_type_code = atc
1754             AND
1755                 attl.content_type_code = p_ctype_code;
1756 
1757             attribute_type_codes(counter) := atc;
1758             attribute_type_names(counter) := atn;
1759 
1760             temp_node := XMLDOM.getFirstChild(XMLDOM.item(att_node_list, i));
1761             attributes(counter) := NULL;
1762             IF (NOT XMLDOM.isNull(temp_node)) THEN
1763                -- Reading Data from XML node thru char_Data because of 4K limitation
1764                -- Replacing: attributes(counter) := XMLDOM.getNodeValue(temp_node);
1765                char_data := XMLDOM.makecharacterdata(temp_node);
1766                l_total_length := XMLDOM.getlength(char_data);
1767 
1768                WHILE l_total_length > 0 LOOP
1769 
1770                  IF l_total_length > CHUNKSIZE THEN
1771                    l_res_buffer := XMLDOM.substringdata(char_data,XMLDOM.getlength(char_data) - l_total_length,CHUNKSIZE);
1772                  ELSE
1773                    l_res_buffer := XMLDOM.substringdata(char_data,XMLDOM.getlength(char_data) - l_total_length, l_total_length);
1774                  END IF;
1775 
1776                  l_total_length := l_total_length - LENGTH(l_res_buffer);
1777                  attributes(counter) := attributes(counter) || l_res_buffer;
1778 
1779                  -- Logic to split attribute values in case they exceed 32000 characters
1780                  IF l_total_length > 0 AND LENGTH(attributes(counter)) >= 32000 THEN
1781                    counter := counter + 1;
1782                    attribute_type_codes.extend;
1783                    attribute_type_names.extend;
1784                    attributes.extend;
1785                    attribute_type_codes(counter) := atc;
1786                    attribute_type_names(counter) := atn;
1787                    attributes(counter) := NULL;
1788                  END IF;
1789 
1790                END LOOP;
1791 
1792             END IF;
1793 
1794             -- Conversion from storage format (canonical) to client date format in case of Date
1795             -- Bug# 3625846
1796             IF attributes(counter) IS NOT NULL AND dtc = IBC_UTILITIES_PUB.G_DTC_DATE THEN
1797               BEGIN
1798                 l_res_buffer := attributes(counter);
1799                 attributes(counter) := TO_CHAR(FND_DATE.canonical_to_date(attributes(counter)),
1800                                            FND_PROFILE.value('ICX_DATE_FORMAT_MASK'));
1801           EXCEPTION
1802             WHEN OTHERS THEN
1803               attributes(counter) := l_res_buffer;
1804           END;
1805             END IF;
1806 
1807             counter := counter + 1;
1808 
1809         END IF;
1810    END LOOP;
1811 
1812     -- setting to return variables.  Sending null values if there were errors.
1813    IF (total_att_count > 0) THEN
1814         x_attribute_type_codes := attribute_type_codes;
1815         x_attribute_type_names := attribute_type_names;
1816         x_attributes := attributes;
1817    ELSE
1818         x_attribute_type_codes := NULL;
1819         x_attribute_type_names := NULL;
1820         x_attributes := NULL;
1821    END IF;
1822 
1823   IF IBC_DEBUG_PVT.debug_enabled THEN
1824     IBC_DEBUG_PVT.end_process(
1825       IBC_DEBUG_PVT.make_parameter_list(
1826         p_tag    => 'OUTPUT',
1827         p_parms  => JTF_VARCHAR2_TABLE_32767(
1828                       'x_attribute_type_codes', IBC_DEBUG_PVT.make_list(x_attribute_type_codes),
1829                       'x_attribute_type_names', IBC_DEBUG_PVT.make_list(x_attribute_type_names),
1830                       'x_attributes', IBC_DEBUG_PVT.make_list_VC32767(x_attributes),
1831                       'x_return_status', x_return_status
1832                     )
1833       )
1834     );
1835   END IF;
1836 
1837 EXCEPTION
1838     WHEN OTHERS THEN
1839       --DBMS_OUTPUT.put_line('EX - GET ATTRIBUTE BUNDLE INT ERROR');
1840       x_return_status := FND_API.G_RET_STS_ERROR;
1841        FND_MESSAGE.Set_Name('IBC', 'A_BUNDLE_ERROR');
1842       FND_MESSAGE.set_token('SITUATION', 'CREATION');
1843       FND_MSG_PUB.ADD;
1844 
1845       IF IBC_DEBUG_PVT.debug_enabled THEN
1846         IBC_DEBUG_PVT.end_process(
1847           IBC_DEBUG_PVT.make_parameter_list(
1848             p_tag    => 'OUTPUT',
1849             p_parms  => JTF_VARCHAR2_TABLE_32767(
1850                           'x_attribute_type_codes', IBC_DEBUG_PVT.make_list(x_attribute_type_codes),
1851                           'x_attribute_type_names', IBC_DEBUG_PVT.make_list(x_attribute_type_names),
1852                           'x_attributes', IBC_DEBUG_PVT.make_list_VC32767(x_attributes),
1853                           'x_return_status', x_return_status,
1854                           'EXCEPTION', SQLERRM
1855                         )
1856           )
1857         );
1858       END IF;
1859 
1860 END;
1861 
1862 -- --------------------------------------------------------------
1863 -- INSERT ASSOCIATIONS (INTERNAL)
1864 --
1865 --
1866 --
1867 -- --------------------------------------------------------------
1868 PROCEDURE insert_citem_associations_int(
1869     p_content_item_id           IN NUMBER
1870     ,p_citem_version_id         IN NUMBER
1871     ,p_assoc_type_codes         IN JTF_VARCHAR2_TABLE_100
1872     ,p_assoc_objects1           IN JTF_VARCHAR2_TABLE_300
1873     ,p_assoc_objects2           IN JTF_VARCHAR2_TABLE_300 DEFAULT NULL
1874     ,p_assoc_objects3           IN JTF_VARCHAR2_TABLE_300 DEFAULT NULL
1875     ,p_assoc_objects4           IN JTF_VARCHAR2_TABLE_300 DEFAULT NULL
1876     ,p_assoc_objects5           IN JTF_VARCHAR2_TABLE_300 DEFAULT NULL
1877     ,p_log_action               IN VARCHAR2 DEFAULT FND_API.g_true
1878     ,x_return_status            OUT NOCOPY VARCHAR2
1879 )
1880 IS
1881     qty_codes NUMBER;
1882     row_id  VARCHAR2(250);  -- required for use with table handlers
1883     insert_data CHAR(1); -- flag to tell if this association is okay to insert
1884     counter NUMBER := 1;
1885     -- flags to indicate if assoc_object arrays are null (as a whole)
1886     a2 VARCHAR2(300);
1887     a3 VARCHAR2(300);
1888     a4 VARCHAR2(300);
1889     a5 VARCHAR2(300);
1890     assoc_id NUMBER;
1891 
1892 BEGIN
1893 
1894   IF IBC_DEBUG_PVT.debug_enabled THEN
1895     IBC_DEBUG_PVT.start_process(
1896        p_proc_type  => 'PROCEDURE',
1897        p_proc_name  => 'Insert_Citem_Associations_Int',
1898        p_parms      => IBC_DEBUG_PVT.make_parameter_list(
1899                          p_tag     => 'PARAMETERS',
1900                          p_parms   => JTF_VARCHAR2_TABLE_4000(
1901                                         'p_content_item_id', p_content_item_id,
1902                                         'p_citem_version_id', p_citem_version_id,
1903                                         'p_assoc_type_codes', IBC_DEBUG_PVT.make_list(p_assoc_type_codes),
1904                                         'p_assoc_objects1', IBC_DEBUG_PVT.make_list(p_assoc_objects1),
1905                                         'p_assoc_objects2', IBC_DEBUG_PVT.make_list(p_assoc_objects2),
1906                                         'p_assoc_objects3', IBC_DEBUG_PVT.make_list(p_assoc_objects3),
1907                                         'p_assoc_objects4', IBC_DEBUG_PVT.make_list(p_assoc_objects4),
1908                                         'p_assoc_objects5', IBC_DEBUG_PVT.make_list(p_assoc_objects5),
1909                                         'p_log_action', p_log_action
1910                                       )
1911                          )
1912     );
1913   END IF;
1914                                                                     --DBMS_OUTPUT.put_line('----- insert_citem_associations_int -----');
1915     x_return_status := FND_API.G_RET_STS_SUCCESS;
1916     qty_codes := p_assoc_type_codes.COUNT;
1917     -- if any of the arrays are non-parallel, throw an error
1918     IF( (p_assoc_objects1.COUNT <> qty_codes) OR
1919       ( (p_assoc_objects2 IS NOT NULL) AND (p_assoc_objects2.COUNT <> qty_codes) ) OR
1920       ( (p_assoc_objects3 IS NOT NULL) AND (p_assoc_objects3.COUNT <> qty_codes) ) OR
1921       ( (p_assoc_objects4 IS NOT NULL) AND (p_assoc_objects4.COUNT <> qty_codes) ) OR
1922       ( (p_assoc_objects5 IS NOT NULL) AND (p_assoc_objects5.COUNT <> qty_codes) ) )  THEN
1923         --DBMS_OUTPUT.put_line('EX - improper (non-parallel) array');
1924         x_return_status := FND_API.G_RET_STS_ERROR;
1925         FND_MESSAGE.Set_Name('IBC', 'IMPROPER_ARRAY');
1926         FND_MSG_PUB.ADD;
1927     ELSE
1928         LOOP
1929             -- setting insert flag to true to start
1930             insert_data := FND_API.g_true;
1931 
1932             -- assoc type
1933             IF (IBC_VALIDATE_PVT.isValidAssocType(p_assoc_type_codes(counter)) = FND_API.g_false ) THEN
1934                 --DBMS_OUTPUT.put_line('EX - assoc type');
1935                 insert_data := FND_API.g_false;
1936                 x_return_status := FND_API.G_RET_STS_ERROR;
1937                 FND_MESSAGE.Set_Name('IBC', 'INVALID_ASSOC_TYPE_CODE');
1938                 FND_MESSAGE.Set_Token('ASSOC_TYPE_CODE', p_assoc_type_codes(counter), FALSE);
1939                 FND_MSG_PUB.ADD;
1940             END IF;
1941 
1942             -- is insert flag still true?
1943             IF (insert_data = FND_API.g_true) THEN
1944                 -- resetting id
1945                 assoc_id := NULL;
1946 
1947                 -- setting temp values to avoid null value errors
1948                 IF (p_assoc_objects2 IS NOT NULL) THEN
1949                     a2 := p_assoc_objects2(counter);
1950                 ELSE
1951                     a2 := NULL;
1952                 END IF;
1953 
1954                 IF (p_assoc_objects3 IS NOT NULL) THEN
1955                     a3 := p_assoc_objects3(counter);
1956                 ELSE
1957                     a3 := NULL;
1958                 END IF;
1959 
1960                 IF (p_assoc_objects4 IS NOT NULL) THEN
1961                     a4 := p_assoc_objects4(counter);
1962                 ELSE
1963                     a4 := NULL;
1964                 END IF;
1965 
1966                 IF (p_assoc_objects5 IS NOT NULL) THEN
1967                     a5 := p_assoc_objects5(counter);
1968                 ELSE
1969                     a5 := NULL;
1970                 END IF;
1971                 -- ACTUAL INSERT !!!
1972                 Ibc_Associations_Pkg.insert_row (
1973                     px_association_id           => assoc_id
1974                     ,p_content_item_id          => p_content_item_id
1975                     ,p_citem_version_id         => p_citem_version_id
1976                     ,p_association_type_code  => p_assoc_type_codes(counter)
1977                     ,p_associated_object_val1   => p_assoc_objects1(counter)
1978                     ,p_associated_object_val2   => a2
1979                     ,p_associated_object_val3   => a3
1980                     ,p_associated_object_val4   => a4
1981                     ,p_associated_object_val5   => a5
1982                     ,p_object_version_number  => G_OBJ_VERSION_DEFAULT
1983                     ,x_rowid            => row_id
1984                 );
1985 
1986                 IF (p_log_action = FND_API.g_true) THEN
1987 
1988                                            --***************************************************
1989                                            --************ADDING TO AUDIT LOG********************
1990                                            --***************************************************
1991                                            Ibc_Utilities_Pvt.log_action(
1992                                                p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
1993                                                ,p_parent_value  => NULL
1994                                                ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
1995                                                ,p_object_value1 => p_content_item_id
1996                                                ,p_object_value2 => NULL
1997                                                ,p_object_value3 => NULL
1998                                                ,p_object_value4 => NULL
1999                                                ,p_object_value5 => NULL
2000                                                ,p_description   => 'Updated item'
2001                                            );
2002                                            Ibc_Utilities_Pvt.log_action(
2003                                                p_activity       => Ibc_Utilities_Pvt.G_ALA_CREATE
2004                                                ,p_parent_value  => p_content_item_id
2005                                                ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_ASSOCIATION
2006                                                ,p_object_value1 => p_assoc_objects1(counter)
2007                                                ,p_object_value2 => a2
2008                                                ,p_object_value3 => a3
2009                                                ,p_object_value4 => a4
2010                                                ,p_object_value5 => a5
2011                                                ,p_description   => 'Created of type '|| p_assoc_type_codes(counter)||' with association id '||assoc_id
2012                                            );
2013                                            --***************************************************
2014                 END IF;
2015             END IF;
2016 
2017         EXIT WHEN counter = qty_codes;
2018             counter := counter + 1;
2019         END LOOP;
2020     END IF;
2021 
2022   IF IBC_DEBUG_PVT.debug_enabled THEN
2023     IBC_DEBUG_PVT.end_process(
2024       IBC_DEBUG_PVT.make_parameter_list(
2025         p_tag    => 'OUTPUT',
2026         p_parms  => JTF_VARCHAR2_TABLE_4000(
2027                       'x_return_status', x_return_status
2028                     )
2029       )
2030     );
2031   END IF;
2032 
2033 EXCEPTION
2034   WHEN OTHERS THEN
2035     IF IBC_DEBUG_PVT.debug_enabled THEN
2036       IBC_DEBUG_PVT.end_process(
2037         IBC_DEBUG_PVT.make_parameter_list(
2038           p_tag    => 'OUTPUT',
2039           p_parms  => JTF_VARCHAR2_TABLE_4000(
2040                         'x_return_status', x_return_status,
2041                         'EXCEPTION', SQLERRM
2042                       )
2043         )
2044       );
2045     END IF;
2046 END;
2047 
2048 -- --------------------------------------------------------------
2049 -- INSERT COMPONENT ITEMS (INTERNAL)
2050 --
2051 --
2052 --
2053 -- --------------------------------------------------------------
2054 PROCEDURE insert_component_items_int(
2055     p_citem_ver_id              IN NUMBER
2056     ,p_content_item_id          IN NUMBER
2057     ,p_content_item_ids         IN JTF_NUMBER_TABLE
2058     ,p_citem_ver_ids            IN JTF_NUMBER_TABLE DEFAULT NULL
2059     ,p_attribute_type_codes     IN JTF_VARCHAR2_TABLE_100
2060     ,p_ctype_code               IN VARCHAR2
2061     ,p_sort_order               IN JTF_NUMBER_TABLE DEFAULT NULL
2062     ,p_log_action               IN VARCHAR2 DEFAULT FND_API.g_true
2063     ,x_return_status            OUT NOCOPY VARCHAR2
2064 )
2065 IS
2066     qty_codes NUMBER;
2067     compound_id NUMBER;
2068     row_id  VARCHAR2(250);  -- required for use with table handlers
2069     -- flag to denote whether errors were found with this compound item
2070     insert_data CHAR(1);
2071     counter NUMBER := 1;
2072     sort_order NUMBER;
2073     temp NUMBER;
2074     l_subitem_version_id NUMBER;
2075 
2076     CURSOR c_comp_info(p_content_type VARCHAR2,
2077                        p_attribute_type VARCHAR2)
2078     IS
2079       SELECT default_value, updateable_flag
2080         FROM ibc_attribute_types_b
2081        WHERE content_type_code = p_content_type
2082          AND attribute_type_code = p_attribute_type;
2083 
2084 BEGIN
2085 
2086   IF IBC_DEBUG_PVT.debug_enabled THEN
2087     IBC_DEBUG_PVT.start_process(
2088        p_proc_type  => 'PROCEDURE',
2089        p_proc_name  => 'insert_component_items_int',
2090        p_parms      => IBC_DEBUG_PVT.make_parameter_list(
2091                          p_tag     => 'PARAMETERS',
2092                          p_parms   => JTF_VARCHAR2_TABLE_4000(
2093                                         'p_citem_ver_id', p_citem_ver_id,
2094                                         'p_content_item_id', p_content_item_id,
2095                                         'p_content_item_ids', IBC_DEBUG_PVT.make_list(p_content_item_ids),
2096                                         'p_citem_ver_ids', IBC_DEBUG_PVT.make_list(p_citem_ver_ids),
2097                                         'p_attribute_type_codes', IBC_DEBUG_PVT.make_list(p_attribute_type_codes),
2098                                         'p_ctype_code', p_ctype_code,
2099                                         'p_sort_order', IBC_DEBUG_PVT.make_list(p_sort_order),
2100                                         'p_log_action', p_log_action
2101                                       )
2102                          )
2103     );
2104   END IF;
2105                                                                     --DBMS_OUTPUT.put_line('----- insert_component_items_int -----');
2106      x_return_status := FND_API.G_RET_STS_SUCCESS;
2107 
2108     IF ( (p_attribute_type_codes IS NOT NULL) AND (p_content_item_ids IS NOT NULL) ) THEN
2109         qty_codes := p_attribute_type_codes.COUNT;
2110         -- basic table/array validation
2111         IF ( (qty_codes <> p_content_item_ids.COUNT) OR ((p_sort_order IS NOT NULL) AND (qty_codes <> p_sort_order.COUNT)) ) THEN
2112             --DBMS_OUTPUT.put_line('EX - array count');
2113             x_return_status := FND_API.G_RET_STS_ERROR;
2114            FND_MESSAGE.Set_Name('IBC', 'COMPONENT_ARRAY_ERROR');
2115           FND_MSG_PUB.ADD;
2116           RAISE FND_API.G_EXC_ERROR;
2117         ELSE
2118         -- loop for each record
2119 
2120             LOOP
2121                 -- setting insert flag to true to start
2122                 insert_data := FND_API.g_true;
2123 
2124                 -- content item
2125                 IF (IBC_VALIDATE_PVT.isValidCitem(p_content_item_ids(counter)) = FND_API.g_false) THEN
2126                     --DBMS_OUTPUT.put_line('EX - content_item_id -- '||p_content_item_ids(counter) );
2127                     insert_data := FND_API.g_false;
2128                     x_return_status := FND_API.G_RET_STS_ERROR;
2129                     FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
2130                     FND_MESSAGE.Set_Token('INPUT', 'p_content_item_id', FALSE);
2131                     FND_MSG_PUB.ADD;
2132                     RAISE FND_API.G_EXC_ERROR;
2133                 END IF;
2134 
2135                 -- citem version ids
2136                 IF (insert_data = FND_API.g_true AND
2137                     p_citem_ver_ids IS NOT NULL AND
2138                     p_citem_ver_ids IS NOT NULL AND
2139                     p_citem_ver_ids(counter) NOT IN (0, -1, -999, FND_API.G_MISS_NUM) AND
2140                     IBC_VALIDATE_PVT.isValidCitemVerForCitem(p_content_item_ids(counter), p_citem_ver_ids(counter)) = FND_API.g_false)
2141                 THEN
2142                     insert_data := FND_API.g_false;
2143                     x_return_status := FND_API.G_RET_STS_ERROR;
2144                     FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
2145                     FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
2146                     FND_MSG_PUB.ADD;
2147                     RAISE FND_API.G_EXC_ERROR;
2148                 END IF;
2149 
2150                  -- attribute type code
2151                 IF ( (insert_data = FND_API.g_true) AND (IBC_VALIDATE_PVT.isValidAttrCode(p_attribute_type_codes(counter),p_ctype_code) = FND_API.g_false) ) THEN
2152                     --DBMS_OUTPUT.put_line('EX - attribute type');
2153                     insert_data := FND_API.g_false;
2154                     x_return_status := FND_API.G_RET_STS_ERROR;
2155                     FND_MESSAGE.Set_Name('IBC', 'INVALID_ATT_TYPE');
2156                     FND_MESSAGE.Set_Token('TYPE_CODE', p_attribute_type_codes(counter), FALSE);
2157                     FND_MSG_PUB.ADD;
2158                     RAISE FND_API.G_EXC_ERROR;
2159                 END IF;
2160 
2161                 -- correct content_type?
2162                 IF (isCorrectContentType(p_content_item_id, getContentType(p_content_item_ids(counter)),p_attribute_type_codes(counter)) = FND_API.g_false) THEN
2163                     --DBMS_OUTPUT.put_line('EX - invalid content type for attribute');
2164                     insert_data := FND_API.g_false;
2165                     x_return_status := FND_API.G_RET_STS_ERROR;
2166                     FND_MESSAGE.Set_Name('IBC', 'INVALID_ATT_TYPE');
2167                     FND_MESSAGE.Set_Token('TYPE_CODE', p_attribute_type_codes(counter), FALSE);
2168                     FND_MSG_PUB.ADD;
2169                     RAISE FND_API.G_EXC_ERROR;
2170                 END IF;
2171 
2172                 -- Changed Default Value for non-updateable component?
2173                 FOR r_comp_info IN c_comp_info(p_ctype_code, p_attribute_type_codes(counter))
2174                 LOOP
2175                   IF r_comp_info.updateable_flag = FND_API.g_false THEN
2176                     IF r_comp_info.default_value IS NOT NULL AND
2177                        TO_CHAR(p_content_item_ids(counter)) <> r_comp_info.default_value
2178                     THEN
2179                       insert_data := FND_API.g_false;
2180                       x_return_status := FND_API.G_RET_STS_ERROR;
2181                       FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_NU_DEFAULT_VALUE');
2182                       FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2183                                             get_attribute_type_name(p_ctype_code, p_attribute_type_codes(counter), USERENV('lang')), FALSE);
2184                       FND_MSG_PUB.ADD;
2185                       RAISE FND_API.G_EXC_ERROR;
2186                     END IF;
2187                   END IF;
2188                 END LOOP;
2189 
2190                 IF (insert_data = FND_API.g_true) THEN
2191 
2192                     -- determining if the content item id is reusable
2193                     SELECT
2194                         MIN(parent_item_id)
2195                     INTO
2196                         temp
2197                     FROM
2198                       ibc_content_items
2199                     WHERE
2200                         content_item_id = p_content_item_ids(counter);
2201 
2202                     IF( (temp IS NOT NULL) AND (temp <> p_content_item_id) ) THEN
2203                         --DBMS_OUTPUT.put_line('EX - parent item id');
2204                         insert_data := FND_API.g_false;
2205                         x_return_status := FND_API.G_RET_STS_ERROR;
2206                         FND_MESSAGE.Set_Name('IBC', 'UNUSABLE_COMPONENT');
2207                         FND_MESSAGE.Set_Token('COMPONENT',p_content_item_ids(counter), FALSE);
2208                         FND_MSG_PUB.ADD;
2209                         RAISE FND_API.G_EXC_ERROR;
2210                     END IF;
2211                 END IF;
2212 
2213                 -- is insert flag still true?
2214                 IF (insert_data = FND_API.g_true) THEN
2215                   -- setting sort order in case of null value
2216                   IF ( (p_sort_order IS NULL) OR (p_sort_order(counter) IS NULL) ) THEN
2217                      sort_order := 1;
2218                   ELSE
2219                      sort_order := p_sort_order(counter);
2220                   END IF;
2221 
2222                   -- setting subitem component citem_ver_id
2223                   IF ( (p_citem_ver_ids IS NULL) OR (p_citem_ver_ids(counter) IS NULL)
2224                         OR (p_citem_ver_ids(counter) IN (0, -1, -999, FND_API.G_MISS_NUM)))
2225                   THEN
2226                      l_subitem_version_id := NULL;
2227                   ELSE
2228                      l_subitem_version_id := p_citem_ver_ids(counter);
2229                   END IF;
2230 
2231 
2232                   Ibc_Compound_Relations_Pkg.insert_row(
2233                     x_ROWID                  => row_id
2234                     ,px_COMPOUND_RELATION_ID => compound_id
2235                     ,p_CONTENT_ITEM_ID       => p_content_item_ids(counter)
2236                     ,p_ATTRIBUTE_TYPE_CODE   => p_attribute_type_codes(counter)
2237                     ,p_CONTENT_TYPE_CODE     => p_ctype_code
2238                     ,p_object_version_number => G_OBJ_VERSION_DEFAULT
2239                     ,p_CITEM_VERSION_ID      => p_citem_ver_id
2240                     ,p_SORT_ORDER            => sort_order
2241                     ,p_subitem_version_id    => l_subitem_version_id
2242                   );
2243 
2244                   IF (p_log_action = FND_API.g_true) THEN
2245 
2246                                    --***************************************************
2247                                    --************ADDING TO AUDIT LOG********************
2248                                    --***************************************************
2249                                    Ibc_Utilities_Pvt.log_action(
2250                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
2251                                        ,p_parent_value  => NULL
2252                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
2253                                        ,p_object_value1 => p_content_item_ids(counter)
2254                                        ,p_object_value2 => NULL
2255                                        ,p_object_value3 => NULL
2256                                        ,p_object_value4 => NULL
2257                                        ,p_object_value5 => NULL
2258                                        ,p_description   => 'Updating version'
2259                                    );
2260                                    Ibc_Utilities_Pvt.log_action(
2261                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
2262                                        ,p_parent_value  => p_content_item_ids(counter)
2263                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
2264                                        ,p_object_value1 => p_citem_ver_id
2265                                        ,p_object_value2 => NULL
2266                                        ,p_object_value3 => NULL
2267                                        ,p_object_value4 => NULL
2268                                        ,p_object_value5 => NULL
2269                                        ,p_description   => 'Adding component'
2270                                    );
2271                                    Ibc_Utilities_Pvt.log_action(
2272                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_CREATE
2273                                        ,p_parent_value  => p_citem_ver_id
2274                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_COMPONENT
2275                                        ,p_object_value1 => p_attribute_type_codes(counter)
2276                                        ,p_object_value2 => p_content_item_ids(counter)
2277                                        ,p_object_value3 => NULL
2278                                        ,p_object_value4 => NULL
2279                                        ,p_object_value5 => NULL
2280                                        ,p_description   => 'Adding new component with compound id: '||compound_id
2281                                    );
2282                                    --***************************************************
2283                    END IF;
2284                 END IF;
2285 
2286             -- resetting compound id for next loop
2287             compound_id := NULL;
2288 
2289             EXIT WHEN counter = qty_codes;
2290                 counter := counter + 1;
2291             END LOOP;
2292         END IF; -- if qty_codes ...
2293     END IF; -- if attribute_type_codes ...
2294 
2295   IF IBC_DEBUG_PVT.debug_enabled THEN
2296     IBC_DEBUG_PVT.end_process(
2297       IBC_DEBUG_PVT.make_parameter_list(
2298         p_tag    => 'OUTPUT',
2299         p_parms  => JTF_VARCHAR2_TABLE_4000(
2300                       'x_return_status', x_return_status
2301                     )
2302       )
2303     );
2304   END IF;
2305 
2306 EXCEPTION
2307   WHEN OTHERS THEN
2308     IF IBC_DEBUG_PVT.debug_enabled THEN
2309       IBC_DEBUG_PVT.end_process(
2310         IBC_DEBUG_PVT.make_parameter_list(
2311           p_tag    => 'OUTPUT',
2312           p_parms  => JTF_VARCHAR2_TABLE_4000(
2313                         'x_return_status', '*** EXCEPTION *** [' || SQLERRM || ']'
2314                       )
2315         )
2316       );
2317     END IF;
2318     RAISE;
2319 END;
2320 
2321 -- --------------------------------------------------------------
2322 -- VALIDATE COMPONENTS (INTERNAL)
2323 --
2324 --
2325 --
2326 -- --------------------------------------------------------------
2327 PROCEDURE validate_components(
2328    p_citem_version_id           IN NUMBER
2329    ,p_content_type_code         IN VARCHAR2
2330    ,p_attribute_type_code       IN VARCHAR2
2331    ,p_default_value             IN VARCHAR2
2332    ,p_updateable                IN VARCHAR2
2333    ,p_minimum                   IN NUMBER
2334    ,p_maximum                   IN NUMBER
2335    ,p_language                  IN VARCHAR2
2336    ,x_return_status             OUT NOCOPY VARCHAR2
2337 )
2338 IS
2339    temp NUMBER;
2340    counter NUMBER := 0;
2341 
2342    CURSOR c_components(p_attribute_type_code VARCHAR2,
2343                        p_content_type_code   VARCHAR2,
2344                        p_citem_version_id    NUMBER)
2345    IS
2346       SELECT content_item_id
2347         FROM ibc_compound_relations
2348        WHERE attribute_type_code = p_attribute_type_code
2349          AND content_Type_code = p_content_type_code
2350          AND citem_version_id = p_citem_version_id;
2351 
2352    citem_id NUMBER;
2353 BEGIN
2354                                                                     --DBMS_OUTPUT.put_line('----- validate_components -----');
2355   IF IBC_DEBUG_PVT.debug_enabled THEN
2356     IBC_DEBUG_PVT.start_process(
2357        p_proc_type  => 'PROCEDURE',
2358        p_proc_name  => 'Validate_Components',
2359        p_parms      => IBC_DEBUG_PVT.make_parameter_list(
2360                          p_tag     => 'PARAMETERS',
2361                          p_parms   => JTF_VARCHAR2_TABLE_4000(
2362                                         'p_citem_version_id', p_citem_version_id,
2363                                         'p_content_type_code', p_content_type_code,
2364                                         'p_attribute_type_code', p_attribute_type_code,
2365                                         'p_default_value', p_default_value,
2366                                         'p_minimum', p_minimum,
2367                                         'p_maximum', p_maximum,
2368                                         'p_language', p_language
2369                                       )
2370                          )
2371     );
2372   END IF;
2373 
2374      x_return_status := FND_API.G_RET_STS_SUCCESS;
2375 
2376     -- looping through all components of this attribute type
2377     OPEN c_components(p_attribute_type_code, p_content_type_code, p_citem_version_id);
2378 
2379     -- VALIDATION LOOP
2380     LOOP
2381         FETCH c_components INTO citem_id;
2382         EXIT WHEN c_components%NOTFOUND;
2383 
2384         IF (p_updateable = FND_API.g_false) THEN
2385           IF (p_default_value IS NOT NULL) THEN
2386               IF(TO_CHAR(citem_id) <> p_default_value) THEN
2387                   --DBMS_OUTPUT.put_line('EX - component default value');
2388                   x_return_status := FND_API.G_RET_STS_ERROR;
2389                   FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_NU_DEFAULT_VALUE');
2390                   FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2391                                         get_attribute_type_name(p_content_type_code, p_attribute_type_code, p_language), FALSE);
2392                   FND_MSG_PUB.ADD;
2393               END IF;
2394           END IF;
2395         END IF;
2396 
2397         -- if it is required then check to see if it is approved!
2398         IF(p_minimum > 0) THEN
2399             IF (getContentItemStatus(citem_id) <> IBC_UTILITIES_PUB.G_STI_APPROVED) THEN
2400                 --DBMS_OUTPUT.put_line('EX - component not approved');
2401                 x_return_status := FND_API.G_RET_STS_ERROR;
2402                 FND_MESSAGE.Set_Name('IBC', 'COMPONENT_APPROVAL_REQUIRED');
2403                 FND_MESSAGE.Set_Token('CONTENT_ITEM_ID', citem_id, FALSE);
2404                 FND_MSG_PUB.ADD;
2405             END IF;
2406         END IF;
2407 
2408         counter := counter + 1;
2409     END LOOP;
2410     -- clean up!
2411     CLOSE c_components;
2412 
2413     IF (counter < p_minimum) THEN
2414        x_return_status := FND_API.G_RET_STS_ERROR;
2415        IF p_minimum = 1 THEN
2416           FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_REQUIRED');
2417           FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2418                                 get_attribute_type_name(p_content_type_code, p_attribute_type_code, p_language), FALSE);
2419           FND_MSG_PUB.ADD;
2420        ELSE
2421           FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_MIN_INSTANCES');
2422           FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2423                                 get_attribute_type_name(p_content_type_code, p_attribute_type_code, p_language), FALSE);
2424           FND_MESSAGE.Set_Token('MIN_INSTANCES', TO_CHAR(p_minimum), FALSE);
2425           FND_MSG_PUB.ADD;
2426        END IF;
2427     END IF;
2428     -- maxi
2429     IF ((p_maximum IS NOT NULL) AND (counter > p_maximum)) THEN
2430         --DBMS_OUTPUT.put_line('EX - component maximum');
2431         x_return_status := FND_API.G_RET_STS_ERROR;
2432         FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_MAX_INSTANCES');
2433         FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2434                               get_attribute_type_name(p_content_type_code, p_attribute_type_code, p_language), FALSE);
2435         FND_MESSAGE.Set_Token('MAX_INSTANCES', TO_CHAR(p_maximum), FALSE);
2436         FND_MSG_PUB.ADD;
2437     END IF;
2438 
2439      --DBMS_OUTPUT.put_line('END OF COMPONENT VALIDATION');
2440   IF IBC_DEBUG_PVT.debug_enabled THEN
2441     IBC_DEBUG_PVT.end_process(
2442       IBC_DEBUG_PVT.make_parameter_list(
2443         p_tag    => 'OUTPUT',
2444         p_parms  => JTF_VARCHAR2_TABLE_4000(
2445                       'x_return_status', x_return_status
2446                     )
2447       )
2448     );
2449   END IF;
2450 
2451 EXCEPTION
2452   WHEN OTHERS THEN
2453     IF IBC_DEBUG_PVT.debug_enabled THEN
2454       IBC_DEBUG_PVT.end_process(
2455         IBC_DEBUG_PVT.make_parameter_list(
2456           p_tag    => 'OUTPUT',
2457           p_parms  => JTF_VARCHAR2_TABLE_4000(
2458                         'x_return_status', '*** EXCEPTION *** [' || SQLERRM || ']'
2459                       )
2460         )
2461       );
2462     END IF;
2463     RAISE;
2464 
2465 
2466 END;
2467 
2468 
2469 -- --------------------------------------------------------------
2470 -- VALIDATE ATTRIBUTE BUNDLE
2471 --
2472 -- Used validate attributes of a content item against the content type
2473 --
2474 -- ***** SQL variables are attribute types for content type
2475 -- ***** xml parser variables are the actual data contained in attribute bundle
2476 -- --------------------------------------------------------------
2477  PROCEDURE validate_attribute_bundle(
2478     p_attribute_bundle      IN CLOB
2479     ,p_citem_ver_id         IN NUMBER
2480     ,p_language             IN VARCHAR2 DEFAULT USERENV('LANG')
2481     ,x_return_status        OUT NOCOPY VARCHAR2
2482 )
2483 IS
2484     content_item_id NUMBER; --content item id
2485     ctype_code IBC_CONTENT_TYPES_B.content_type_code%TYPE; -- content type code
2486     citem_name IBC_CITEM_VERSIONS_TL.content_item_name%TYPE; -- content item name
2487     citem_desc IBC_CITEM_VERSIONS_TL.description%TYPE; -- content item description
2488     attach_file_id IBC_CITEM_VERSIONS_TL.attachment_file_id%TYPE;
2489     temp_bundle CLOB; -- temporary clob to hold text information while creating
2490     xml_parser  XMLPARSER.parser;
2491     dom_doc     XMLDOM.DOMDocument;
2492     dom_node_list   XMLDOM.DOMNodeList; -- base nodes
2493     att_node_list   XMLDOM.DOMNodeList; -- attribute nodes
2494     temp_node_list  XMLDOM.DOMNodeList; -- temporary nodes for use inside validation loop
2495     dom_node    XMLDOM.DOMNode; -- base node
2496     temp_node    XMLDOM.DOMNode; -- temp node for use inside validation loop
2497     valid_element_count NUMBER;  -- temp variable to hold count of how many valid elements found
2498     total_att_count NUMBER; -- temp variable to hold total count of attributes found
2499 
2500     -- used to loop through all the attributes
2501     CURSOR c_attributes(p_content_type_code IN VARCHAR2) IS
2502       SELECT attribute_type_code atc
2503              ,data_type_code dtc
2504              ,min_instances mini
2505              ,max_instances maxi
2506              ,reference_code rc
2507              ,default_value dv
2508              ,updateable_flag upd
2509              ,data_length dl
2510              ,flex_value_set_id vset
2511         FROM ibc_attribute_types_b
2512        WHERE content_type_code = p_content_type_code;
2513 
2514     CURSOR c_count_renditions IS
2515       SELECT COUNT(*)
2516         FROM IBC_RENDITIONS
2517         WHERE CITEM_VERSION_ID = p_citem_ver_id
2518           AND LANGUAGE = p_language;
2519 
2520 
2521     node_value VARCHAR2(32767);
2522 
2523     char_data XMLDOM.DOMCharacterData;
2524     CHUNKSIZE       CONSTANT NUMBER := 4000;
2525     l_res_buffer    VARCHAR2(32767);
2526     l_total_length  NUMBER;
2527 
2528     temp NUMBER;
2529     temp_desc IBC_CITEM_VERSIONS_TL.description%TYPE;
2530     return_status VARCHAR2(1);   -- hold temporary status so all errors can be found before error is thrown
2531 
2532     l_exists VARCHAR2(1);
2533     l_msg_count  NUMBER;
2534     l_msg_data   VARCHAR2(2000);
2535 
2536     l_xml_encoding VARCHAR2(80);
2537 
2538 BEGIN
2539 
2540   IF IBC_DEBUG_PVT.debug_enabled THEN
2541     IBC_DEBUG_PVT.start_process(
2542        p_proc_type  => 'PROCEDURE',
2543        p_proc_name  => 'Validate_Attribute_Bundle',
2544        p_parms      => IBC_DEBUG_PVT.make_parameter_list(
2545                          p_tag     => 'PARAMETERS',
2546                          p_parms   => JTF_VARCHAR2_TABLE_4000(
2547                                         'p_citem_ver_id', p_citem_ver_id,
2548                                         'p_language', p_language
2549                                       )
2550                          )
2551     );
2552   END IF;
2553                                                                     --DBMS_OUTPUT.put_line('----- validate_attribute_bundle -----');
2554     x_return_status := FND_API.G_RET_STS_SUCCESS;
2555 
2556     -- getting citem, ctype, attribute information for use in checking
2557     SELECT
2558         ibc_content_items.content_type_code
2559         ,ibc_content_items.content_item_id
2560         ,ibc_citem_versions_tl.content_item_name
2561         ,ibc_citem_versions_tl.description
2562         ,ibc_citem_versions_tl.attachment_file_id
2563     INTO
2564         ctype_code
2565         ,content_item_id
2566         ,citem_name
2567         ,citem_desc
2568         ,attach_file_id
2569     FROM
2570         ibc_citem_versions_b
2571         ,ibc_citem_versions_tl
2572         ,ibc_content_items
2573     WHERE
2574         ibc_content_items.content_item_id = ibc_citem_versions_b.content_item_id
2575     AND
2576         ibc_citem_versions_b.citem_version_id = ibc_citem_versions_tl.citem_version_id
2577     AND
2578         ibc_citem_versions_tl.LANGUAGE = p_language
2579     AND
2580         ibc_citem_versions_b.citem_version_id = p_citem_ver_id;
2581 
2582     -- CREATING TEMP ATTRIBUTE BUNDLE
2583     DBMS_LOB.createtemporary(temp_bundle, TRUE, 2);
2584 
2585     -- BUILDING COMPLETE XML CLOB
2586 
2587     -- Attaching encoding to XML based on DB character set
2588     l_xml_encoding := '<?xml version="1.0" encoding="'||
2589                       IBC_UTILITIES_PVT.getEncoding() ||
2590                       '"?>';
2591     DBMS_LOB.WRITEAPPEND(temp_bundle, LENGTH(l_xml_encoding), l_xml_encoding);
2592 
2593     -- creating open tags
2594     Ibc_Utilities_Pvt.build_citem_open_tags (
2595      p_content_type_code     => ctype_code
2596      ,p_content_item_id      => content_item_id
2597     ,p_item_reference_code  => NULL
2598      ,p_content_item_name    => citem_name
2599      ,p_description          => citem_desc
2600      ,p_root_tag_only_flag   => FND_API.g_false
2601      ,p_xml_clob_loc       => temp_bundle
2602      );
2603 
2604     --appending given clob
2605     DBMS_LOB.APPEND (
2606        dest_lob                 => temp_bundle
2607        ,src_lob                 => p_attribute_bundle
2608     );
2609 
2610 
2611     -- creating close tags
2612     Ibc_Utilities_Pvt.build_close_tag (
2613      p_close_tag           => ctype_code
2614      ,p_xml_clob_loc       => temp_bundle
2615     );
2616 
2617     -- ************************** XML PARSER CREATION ***********************
2618     -- creating parser to parse temp clob
2619     xml_parser := XMLPARSER.newParser();
2620     XMLPARSER.parseClob(xml_parser, temp_bundle);
2621     -- getting document
2622     dom_doc := XMLPARSER.getDocument(xml_parser);
2623     -- getting base node
2624     --dom_node_list := XMLDOM.getElementsByTagName(dom_doc, ctype_code);
2625     --dom_node := XMLDOM.item(dom_node_list, 0);
2626     dom_node := XMLDOM.makeNode(XMLDOM.getDocumentElement(dom_doc));
2627     -- getting child nodes
2628     att_node_list := XMLDOM.getChildNodes(dom_node);
2629     total_att_count := XMLDOM.getLength(att_node_list);
2630 
2631     -- Tracing output of XML content
2632     --IF IBC_DEBUG_PVT.debug_enabled THEN
2633     --  DECLARE
2634     --    l_clob_len NUMBER;
2635     --    l_buffer   VARCHAR2(10000);
2636     --  BEGIN
2637     --    l_clob_len := DBMS_LOB.getlength(temp_bundle);
2638     --    IBC_DEBUG_PVT.debug_message('CLOBLEN=' || l_clob_len);
2639     --    DBMS_LOB.read(temp_bundle, l_clob_len, 1, l_buffer);
2640     --    IBC_DEBUG_PVT.debug_message(l_buffer);
2641     --  EXCEPTION
2642     --    WHEN OTHERS THEN
2643     --      NULL;
2644     --  END;
2645     --END IF;
2646 
2647 --  Tracing output to show what nodes are available for this item
2648 --  for i in 0..total_att_count-1 loop
2649 --    --DBMS_OUTPUT.put_line(XMLDOM.getNodeName(XMLDOM.item(att_node_list, i)));
2650 --  end loop;
2651 
2652     -- VALIDATION LOOP
2653     FOR r_attribute IN c_attributes(ctype_code) LOOP
2654 
2655         -- check description datatype code...
2656         IF(r_attribute.atc = 'DESCRIPTION') THEN
2657             --... but only if it is required
2658             IF(r_attribute.mini > 0) THEN
2659                 SELECT
2660                     description
2661                 INTO
2662                     temp_desc
2663                 FROM
2664                     ibc_citem_versions_tl
2665                 WHERE
2666                     citem_version_id = p_citem_ver_id
2667                 AND
2668                     LANGUAGE = p_language;
2669 
2670                 IF (temp_desc IS NULL) THEN
2671                     x_return_status := FND_API.G_RET_STS_ERROR;
2672                     FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_REQUIRED');
2673                     FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2674                                           get_attribute_type_name(ctype_code, r_attribute.atc, p_language), FALSE);
2675                     FND_MSG_PUB.ADD;
2676                 END IF;
2677             END IF;
2678 
2679         -- do not check if the data type code is a component...
2680         ELSIF(r_attribute.dtc = Ibc_Utilities_Pub.G_DTC_COMPONENT) THEN
2681             validate_components(
2682                 p_citem_version_id           => p_citem_ver_id
2683                 ,p_content_type_code         => ctype_code
2684                 ,p_attribute_type_code       => r_attribute.atc
2685                 ,p_default_value             => r_attribute.dv
2686                 ,p_updateable                => r_attribute.upd
2687                 ,p_minimum                   => r_attribute.mini
2688                 ,p_maximum                   => r_attribute.maxi
2689                 ,p_language                  => p_language
2690                 ,x_return_status             => return_status
2691             );
2692 
2693             -- setting return error
2694             IF (return_status <> FND_API.G_RET_STS_SUCCESS) THEN
2695                 x_return_status := FND_API.G_RET_STS_ERROR;
2696             END IF;
2697 
2698         -- making sure attachments only appear once
2699         ELSIF(r_attribute.dtc = Ibc_Utilities_Pub.G_DTC_ATTACHMENT) THEN
2700 
2701             -- No more renditions support for attachments.
2702             -- IF attachment valid_element_count = 1 ELSE 0
2703             IF attach_file_id IS NOT NULL THEN
2704               valid_element_count := 1;
2705             ELSE
2706               valid_element_count := 0;
2707             END IF;
2708 
2709             -- mini
2710             IF (valid_element_count < r_attribute.mini) THEN
2711                 x_return_status := FND_API.G_RET_STS_ERROR;
2712                 IF r_attribute.mini = 1 THEN
2713                     FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_REQUIRED');
2714                     FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2715                                           get_attribute_type_name(ctype_code, r_attribute.atc, p_language), FALSE);
2716                     FND_MSG_PUB.ADD;
2717                 ELSE
2718                     FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_MIN_INSTANCES');
2719                     FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2720                                           get_attribute_type_name(ctype_code, r_attribute.atc, p_language), FALSE);
2721                     FND_MESSAGE.Set_Token('MIN_INSTANCES', TO_CHAR(r_attribute.mini), FALSE);
2722                     FND_MSG_PUB.ADD;
2723                 END IF;
2724             END IF;
2725 
2726 
2727             -- maxi
2728             IF (valid_element_count > r_attribute.maxi) THEN
2729                x_return_status := FND_API.G_RET_STS_ERROR;
2730                FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_MAX_INSTANCES');
2731                FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2732                                      get_attribute_type_name(ctype_code, r_attribute.atc, p_language), FALSE);
2733                FND_MESSAGE.Set_Token('MAX_INSTANCES', TO_CHAR(r_attribute.maxi), FALSE);
2734                FND_MSG_PUB.ADD;
2735             END IF;
2736 
2737         ELSE
2738             -- ** validate each column of attribute **
2739             -- attribute type code -- (reference)
2740 
2741             -- data type code -- (validated on insert)
2742 
2743             -- finding and counting all the elements that are of this attribute type
2744             temp_node_list := XMLDOM.getChildrenByTagName(XMLDOM.makeElement(dom_node), r_attribute.atc);
2745             valid_element_count := XMLDOM.getLength(temp_node_list);
2746 
2747             -- mini
2748             IF (valid_element_count < r_attribute.mini) THEN
2749                 x_return_status := FND_API.G_RET_STS_ERROR;
2750                 IF r_attribute.mini = 1 THEN
2751                     FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_REQUIRED');
2752                     FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2753                                           get_attribute_type_name(ctype_code, r_attribute.atc, p_language), FALSE);
2754                     FND_MSG_PUB.ADD;
2755                 ELSE
2756                     FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_MIN_INSTANCES');
2757                     FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2758                                           get_attribute_type_name(ctype_code, r_attribute.atc, p_language), FALSE);
2759                     FND_MESSAGE.Set_Token('MIN_INSTANCES', TO_CHAR(r_attribute.mini), FALSE);
2760                     FND_MSG_PUB.ADD;
2761                 END IF;
2762             END IF;
2763 
2764             -- maxi
2765             IF ((r_attribute.maxi IS NOT NULL) AND (valid_element_count > r_attribute.maxi)) THEN
2766                x_return_status := FND_API.G_RET_STS_ERROR;
2767                FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_MAX_INSTANCES');
2768                FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2769                                      get_attribute_type_name(ctype_code, r_attribute.atc, p_language), FALSE);
2770                FND_MESSAGE.Set_Token('MAX_INSTANCES', TO_CHAR(r_attribute.maxi), FALSE);
2771                FND_MSG_PUB.ADD;
2772             END IF;
2773 
2774             -- looping through all elements this type to check size and value (vs. default)
2775             FOR i IN 0..valid_element_count-1 LOOP
2776 
2777                 -- getting node value
2778                 temp_node := XMLDOM.getFirstChild(XMLDOM.item(temp_node_list, i));
2779 
2780                 node_value := NULL;
2781                 IF (NOT XMLDOM.isNull(temp_node)) THEN
2782                    -- Reading Data from XML node thru char_Data because of 4K limitation
2783                    -- Replacing: node_value := XMLDOM.getNodeValue(temp_node);
2784                    char_data := XMLDOM.makecharacterdata(temp_node);
2785                    l_total_length := XMLDOM.getlength(char_data);
2786 
2787                    WHILE l_total_length > 0 LOOP
2788 
2789                      IF l_total_length > CHUNKSIZE THEN
2790                        l_res_buffer := XMLDOM.substringdata(char_data,XMLDOM.getlength(char_data) - l_total_length,CHUNKSIZE);
2791                      ELSE
2792                        l_res_buffer := XMLDOM.substringdata(char_data,XMLDOM.getlength(char_data) - l_total_length, l_total_length);
2793                      END IF;
2794 
2795                      l_total_length := l_total_length - LENGTH(l_res_buffer);
2796 
2797                      IF LENGTH(node_value) + LENGTH(l_res_buffer) > 32767 THEN
2798                        node_value := node_value || l_res_buffer;
2799                      END IF;
2800 
2801                    END LOOP;
2802 
2803                 END IF;
2804 
2805                 -- size
2806                 IF (r_attribute.dtc = 'string') THEN
2807                     IF(LENGTH(node_value) > NVL(r_attribute.dl, 32767)) THEN
2808                         x_return_status := FND_API.G_RET_STS_ERROR;
2809                         FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_DATA_LENGTH');
2810                         FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2811                                               get_attribute_type_name(ctype_code, r_attribute.atc, p_language), FALSE);
2812                         FND_MESSAGE.Set_Token('DATA_LENGTH', TO_CHAR(NVL(r_attribute.dl, 32767)), FALSE);
2813                         FND_MSG_PUB.ADD;
2814                     END IF;
2815                 END IF;
2816 
2817                 -- updateable
2818                 IF (r_attribute.upd = FND_API.g_false) THEN
2819                     -- checking to see if value is the same as the default value
2820                     IF (r_attribute.dv <> node_value) THEN
2821                         x_return_status := FND_API.G_RET_STS_ERROR;
2822                         FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_NU_DEFAULT_VALUE');
2823                         FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2824                                               get_attribute_type_name(ctype_code, r_attribute.atc, p_language), FALSE);
2825                         FND_MSG_PUB.ADD;
2826                     END IF;
2827                 END IF;
2828 
2829                 -- Validate against ValueSet
2830                 IF (node_value IS NOT NULL AND r_attribute.vset IS NOT NULL) THEN
2831                   IBC_CTYPE_PVT.Is_Valid_Flex_Value(
2832                     P_Api_Version_Number    => 1
2833                     ,P_Init_Msg_List        => FND_API.g_false
2834                     ,p_flex_value_set_id    => r_attribute.vset
2835                     ,p_flex_value_code      => node_value
2836                     ,x_exists               => l_exists
2837                     ,X_Return_Status        => x_return_status
2838                     ,X_Msg_Count             => l_msg_count
2839                     ,X_Msg_Data             => l_msg_data
2840                   );
2841                   IF l_exists = FND_API.g_false THEN
2842                     x_return_status := FND_API.G_RET_STS_ERROR;
2843                     FND_MESSAGE.Set_Name('IBC', 'IBC_VALATTR_NOT_IN_VSET');
2844                     FND_MESSAGE.Set_Token('ATTRIBUTE_NAME',
2845                                           get_attribute_type_name(ctype_code, r_attribute.atc, p_language), FALSE);
2846                     FND_MSG_PUB.ADD;
2847                   END IF;
2848                 END IF;
2849 
2850             END LOOP; -- end for loop
2851         END IF;
2852     END LOOP;
2853 
2854   IF IBC_DEBUG_PVT.debug_enabled THEN
2855     IBC_DEBUG_PVT.end_process(
2856       IBC_DEBUG_PVT.make_parameter_list(
2857         p_tag    => 'OUTPUT',
2858         p_parms  => JTF_VARCHAR2_TABLE_4000(
2859                       'x_return_status', x_return_status
2860                     )
2861       )
2862     );
2863   END IF;
2864 
2865 EXCEPTION
2866     WHEN OTHERS THEN
2867         --DBMS_OUTPUT.put_line('EX - bundle validation --others--');
2868         x_return_status := FND_API.G_RET_STS_ERROR;
2869         FND_MESSAGE.Set_Name('IBC', 'A_BUNDLE_ERROR');
2870         FND_MESSAGE.set_token('SITUATION', 'VALIDATION');
2871         FND_MSG_PUB.ADD;
2872 
2873         IF IBC_DEBUG_PVT.debug_enabled THEN
2874           IBC_DEBUG_PVT.end_process(
2875             IBC_DEBUG_PVT.make_parameter_list(
2876               p_tag    => 'OUTPUT',
2877               p_parms  => JTF_VARCHAR2_TABLE_4000(
2878                             'x_return_status', '*** EXCEPTION *** [' || SQLERRM || ']'
2879                           )
2880             )
2881           );
2882         END IF;
2883 END;
2884 
2885 -- --------------------------------------------------------------
2886 -- GET CITEM INFO
2887 --
2888 -- --------------------------------------------------------------
2889 PROCEDURE get_citem_info(
2890     p_citem_ver_id              IN NUMBER
2891     ,x_content_item_id          OUT NOCOPY NUMBER
2892     ,x_ctype_code               OUT NOCOPY VARCHAR2
2893     ,x_object_version_number    OUT NOCOPY NUMBER
2894 )
2895 IS
2896 --******************* BEGIN REQUIRED VARIABLES *************************
2897   l_api_name CONSTANT VARCHAR2(30) := 'get_citem_info';        --|**|
2898 --******************* END REQUIRED VARIABLES ***************************
2899 BEGIN
2900     --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
2901     SELECT
2902         IBC_CONTENT_ITEMS.content_item_id
2903         ,IBC_CONTENT_ITEMS.content_type_code
2904         ,IBC_CONTENT_ITEMS.object_version_number
2905     INTO
2906         x_content_item_id
2907         ,x_ctype_code
2908         ,x_object_version_number
2909     FROM
2910         ibc_content_items
2911         ,ibc_citem_versions_b
2912     WHERE
2913         IBC_CONTENT_ITEMS.content_item_id = IBC_CITEM_VERSIONS_B.content_item_id
2914     AND
2915         IBC_CITEM_VERSIONS_B.citem_version_id = p_citem_ver_id;
2916 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
2917 EXCEPTION
2918   WHEN OTHERS THEN
2919       RAISE;
2920 END;
2921 
2922 -- --------------------------------------------------------------
2923 -- APPROVE CONTENT ITEM VERSION (INTERNAL)
2924 --
2925 -- Used to move a content item version to the status of approved.
2926 --
2927 -- --------------------------------------------------------------
2928 PROCEDURE approve_citem_version_int(
2929     p_citem_ver_id              IN NUMBER
2930     ,p_content_item_id          IN NUMBER
2931     ,p_base_lang                IN VARCHAR2
2932     ,p_log_action               IN VARCHAR2 DEFAULT FND_API.g_true
2933     ,px_object_version_number   IN OUT NOCOPY NUMBER
2934     ,x_return_status            OUT NOCOPY VARCHAR2
2935 )
2936 IS
2937 --******************* BEGIN REQUIRED VARIABLES *************************
2938   l_api_name CONSTANT VARCHAR2(30) := 'approve_citem_version_int';--|**|
2939 --******************* END REQUIRED VARIABLES ***************************
2940     content_item_name IBC_CITEM_VERSIONS_TL.content_item_name%TYPE;
2941     description IBC_CITEM_VERSIONS_TL.description%TYPE;
2942     version_number IBC_CITEM_VERSIONS_B.version_number%TYPE;
2943     start_date DATE;
2944     end_date DATE;
2945     ovn NUMBER;
2946     attach_fid NUMBER;
2947     attrib_fid NUMBER;
2948     attach_code IBC_CITEM_VERSIONS_TL.attachment_attribute_code%TYPE;
2949     attach_fname IBC_CITEM_VERSIONS_TL.attachment_file_name%TYPE;
2950     default_rendition_mime_type  IBC_CITEM_VERSIONS_TL.default_rendition_mime_type%TYPE;
2951     temp_bundle CLOB;
2952     temp NUMBER;
2953 
2954     CURSOR info IS
2955         SELECT
2956            IBC_CONTENT_ITEMS.object_version_number
2957            ,IBC_CITEM_VERSIONS_B.version_number
2958            ,IBC_CITEM_VERSIONS_B.start_date
2959            ,IBC_CITEM_VERSIONS_B.end_date
2960            ,IBC_CITEM_VERSIONS_TL.attribute_file_id
2961            ,IBC_CITEM_VERSIONS_TL.attachment_file_id
2962            ,IBC_CITEM_VERSIONS_TL.content_item_name
2963            ,IBC_CITEM_VERSIONS_TL.description
2964            ,IBC_CITEM_VERSIONS_TL.attachment_file_name
2965            ,IBC_CITEM_VERSIONS_TL.default_rendition_mime_type
2966            ,IBC_CITEM_VERSIONS_TL.attachment_attribute_code
2967         FROM
2968            IBC_CONTENT_ITEMS
2969            ,IBC_CITEM_VERSIONS_B
2970            ,IBC_CITEM_VERSIONS_TL
2971         WHERE
2972            IBC_CONTENT_ITEMS.content_item_id = IBC_CITEM_VERSIONS_B.content_item_id
2973         AND
2974            IBC_CITEM_VERSIONS_B.citem_version_id = IBC_CITEM_VERSIONS_TL.citem_version_id
2975         AND
2976            IBC_CITEM_VERSIONS_TL.citem_version_id = p_citem_ver_id
2977         AND
2978            IBC_CITEM_VERSIONS_TL.LANGUAGE = p_base_lang;
2979 
2980    l_rendition_id NUMBER;
2981    row_id  VARCHAR2(250);
2982 
2983    CURSOR c_base_renditions(cv_citem_version_id NUMBER
2984                            ,cv_language         VARCHAR2
2985                            )IS
2986      SELECT file_id
2987            ,file_name
2988            ,mime_type
2989        FROM ibc_renditions
2990       WHERE citem_version_id = cv_citem_version_id
2991         AND LANGUAGE = cv_language;
2992 
2993    CURSOR c_populate_rend(cv_citem_version_id NUMBER
2994                          ,cv_language         VARCHAR2) IS
2995      SELECT CIVTL.LANGUAGE
2996        FROM ibc_citem_versions_tl CIVTL
2997       WHERE CIVTL.citem_version_id = cv_citem_version_id
2998         AND CIVTL.LANGUAGE <> cv_language;
2999 
3000 BEGIN
3001 
3002   IF IBC_DEBUG_PVT.debug_enabled THEN
3003     IBC_DEBUG_PVT.start_process(
3004        p_proc_type  => 'PROCEDURE',
3005        p_proc_name  => 'Approve_Citem_Version_Int',
3006        p_parms      => IBC_DEBUG_PVT.make_parameter_list(
3007                          p_tag     => 'PARAMETERS',
3008                          p_parms   => JTF_VARCHAR2_TABLE_4000(
3009                                         'p_citem_ver_id', p_citem_ver_id,
3010                                         'p_content_item_id', p_content_item_id,
3011                                         'p_base_lang', p_base_lang,
3012                                         'p_log_action', p_log_action,
3013                                         'px_object_version_number', px_object_version_number
3014                                       )
3015                          )
3016     );
3017   END IF;
3018 
3019     --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
3020     x_return_status := FND_API.G_RET_STS_SUCCESS;
3021     temp := p_citem_ver_id;
3022 
3023     -- CREATING TEMP ATTRIBUTE BUNDLE
3024     DBMS_LOB.createtemporary(temp_bundle, TRUE, 2);
3025 
3026     OPEN info;
3027     FETCH info
3028     INTO ovn,version_number,start_date,end_date,attrib_fid,attach_fid,
3029          content_item_name,description,attach_fname,
3030          default_rendition_mime_type,attach_code;
3031 
3032     IF(info%NOTFOUND) THEN
3033         --DBMS_OUTPUT.put_line('EX - NO DATA FOUND FOR CREATED ITEM!');
3034         x_return_status := FND_API.G_RET_STS_ERROR;
3035       FND_MESSAGE.Set_Name('IBC', 'GENERL_ERROR');
3036         FND_MSG_PUB.ADD;
3037     END IF;
3038 
3039     CLOSE info;
3040 
3041 
3042   -- building full XML  if the bundle is present
3043     IF ( (attrib_fid IS NOT NULL) AND (x_return_status IS NOT NULL) ) THEN
3044         Ibc_Utilities_Pvt.build_attribute_bundle (
3045            p_file_id       => attrib_fid
3046           ,p_xml_clob_loc  => temp_bundle
3047         );
3048         -- VALIDATION
3049         validate_attribute_bundle(
3050             p_attribute_bundle  => temp_bundle
3051             ,p_citem_ver_id     => p_citem_ver_id
3052             ,p_language         => p_base_lang
3053             ,x_return_status    => x_return_status
3054         );
3055     END IF;
3056 
3057 
3058     -- doing actual updates
3059     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
3060         --DBMS_OUTPUT.put_line('APPROVING VERSION');
3061         -- update version status
3062         Ibc_Citem_Versions_Pkg.update_row(
3063             p_CITEM_VERSION_ID          => p_citem_ver_id
3064             ,p_content_item_id          => p_content_item_id
3065             ,p_CITEM_VERSION_STATUS     => Ibc_Utilities_Pub.G_STV_APPROVED
3066             ,P_SOURCE_LANG              => p_base_lang
3067             ,px_object_version_number   => px_object_version_number
3068             ,p_citem_translation_status => Ibc_Utilities_Pub.G_STV_APPROVED
3069         );
3070 
3071         --DBMS_OUTPUT.put_line('APPROVING ITEM');
3072         -- set live version if this is base language
3073         Ibc_Content_Items_Pkg.update_row (
3074             p_CONTENT_ITEM_ID     => p_content_item_id
3075             ,p_LIVE_CITEM_VERSION_ID  => p_citem_ver_id
3076             ,p_CONTENT_ITEM_STATUS    => Ibc_Utilities_Pub.G_STI_APPROVED
3077             ,p_LOCKED_BY_USER_ID    => FND_API.G_MISS_NUM       -- Updated for STANDARD/perf change of G_MISS_xxx
3078             ,px_object_version_number => px_object_version_number
3079         );
3080 
3081         --DBMS_OUTPUT.put_line('POPULATING ALL LANGS');
3082         -- populating all the other languages
3083         -- ****RENDITIONS_WORK****
3084         Ibc_Citem_Versions_Pkg.populate_all_lang (
3085             p_CITEM_VERSION_ID             => temp
3086             ,p_CONTENT_ITEM_ID             => p_content_item_id
3087             ,p_VERSION_NUMBER              => version_number
3088             ,p_CITEM_VERSION_STATUS        => Ibc_Utilities_Pub.G_STV_APPROVED
3089             ,p_START_DATE                  => start_date
3090             ,p_END_DATE                    => end_date
3091             ,p_OBJECT_VERSION_NUMBER       => ovn
3092             ,p_ATTRIBUTE_FILE_ID           => attrib_fid
3093             ,p_ATTACHMENT_ATTRIBUTE_CODE   => attach_code
3094             ,P_SOURCE_LANG                    => p_base_lang
3095             ,p_ATTACHMENT_FILE_ID          => attach_fid
3096             ,p_CONTENT_ITEM_NAME           => content_item_name
3097             ,p_ATTACHMENT_FILE_NAME        => attach_fname
3098             ,p_DEFAULT_RENDITION_MIME_TYPE => default_rendition_mime_type
3099             ,p_DESCRIPTION                 => description
3100             ,p_CITEM_TRANSLATION_STATUS    => 'INPROGRESS'
3101         );
3102 
3103 
3104         -- Default the renditions for the base language
3105         -- Bug Fix: 3416463
3106         FOR cr_populate_ren IN c_populate_rend(p_citem_ver_id,p_base_lang) LOOP
3107           FOR cr_base_ren IN c_base_renditions(p_citem_ver_id,p_base_lang) LOOP
3108               l_rendition_id := NULL;
3109               ibc_renditions_pkg.insert_row(
3110                  px_rowid                => row_id
3111                 ,px_rendition_id         => l_rendition_id
3112                 ,p_object_version_number => G_OBJ_VERSION_DEFAULT
3113                 ,p_language              => cr_populate_ren.LANGUAGE
3114                 ,p_file_id               => cr_base_ren.file_id
3115                 ,p_file_name             => cr_base_ren.file_name
3116                 ,p_citem_version_id      => p_citem_ver_id
3117                 ,p_mime_type             => cr_base_ren.mime_type
3118                 );
3119           END LOOP;
3120         END LOOP;
3121 
3122         -- only logging if requested
3123         IF (p_log_action = FND_API.g_true) THEN
3124                                --***************************************************
3125                                --************ADDING TO AUDIT LOG********************
3126                                --***************************************************
3127                                Ibc_Utilities_Pvt.log_action(
3128                                    p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
3129                                    ,p_parent_value  => NULL
3130                                    ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
3131                                    ,p_object_value1 => p_content_item_id
3132                                    ,p_object_value2 => NULL
3133                                    ,p_object_value3 => NULL
3134                                    ,p_object_value4 => NULL
3135                                    ,p_object_value5 => NULL
3136                                    ,p_description   => 'Setting status to APPROVED and setting live version id'
3137                                );
3138                                --***************************************************
3139                                Ibc_Utilities_Pvt.log_action(
3140                                    p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
3141                                    ,p_parent_value  => p_content_item_id
3142                                    ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
3143                                    ,p_object_value1 => p_citem_ver_id
3144                                    ,p_object_value2 => NULL
3145                                    ,p_object_value3 => NULL
3146                                    ,p_object_value4 => NULL
3147                                    ,p_object_value5 => NULL
3148                                    ,p_description   => 'APPROVING'
3149                                );
3150                                --***************************************************
3151         END IF;
3152 
3153    ELSE
3154         --DBMS_OUTPUT.put_line('EX - Approval error');
3155         x_return_status := FND_API.G_RET_STS_ERROR;
3156        FND_MESSAGE.Set_Name('IBC', 'APPROVAL_ERROR');
3157         FND_MSG_PUB.ADD;
3158   END IF;
3159 
3160   IF IBC_DEBUG_PVT.debug_enabled THEN
3161     IBC_DEBUG_PVT.end_process(
3162       IBC_DEBUG_PVT.make_parameter_list(
3163         p_tag    => 'OUTPUT',
3164         p_parms  => JTF_VARCHAR2_TABLE_4000(
3165                       'px_object_version_number', px_object_version_number,
3166                       'x_return_status', x_return_status
3167                     )
3168       )
3169     );
3170   END IF;
3171 
3172 EXCEPTION
3173   WHEN OTHERS THEN
3174     IF IBC_DEBUG_PVT.debug_enabled THEN
3175       IBC_DEBUG_PVT.end_process(
3176         IBC_DEBUG_PVT.make_parameter_list(
3177           p_tag    => 'OUTPUT',
3178           p_parms  => JTF_VARCHAR2_TABLE_4000(
3179                         'x_return_status', '*** EXCEPTION *** [' || SQLERRM || ']'
3180                       )
3181         )
3182       );
3183     END IF;
3184     RAISE;
3185 
3186 END;
3187 
3188 -- --------------------------------------------------------------
3189 -- VERSION ENGINE
3190 --
3191 -- Used determine what to do with inputted content item data
3192 --
3193 -- Version Engine Logic
3194 -- ** resolution points
3195 -- ++ this point should not be able to be reached
3196 --
3197 -- Content Item Version = NULL?
3198 --     YES --> Is Content Item = NULL?
3199 --         YES -- Does content type exist?
3200 --             YES --> Create new content item and version.                                    **
3201 --             NO --> ERROR... ITEM MUST BE CREATED WITH VALID CONTENT TYPE                    **
3202 --         NO  --> Content Item exist?
3203 --             YES --> Is this language = base language?
3204 --                 YES --> Create a new version with incremented version number!               **
3205 --                 NO  --> ERROR... CANNOT TRANSLATE ITEM WITHOUT VERSION ID                   **
3206 --             NO --> ERROR... CANNOT CREATE FROM NON-EXISTING ITEM                            **
3207 --     NO  --> Does this version exist?
3208 --         YES -->  Is it approved?
3209 --             YES --> Is it the same language?
3210 --                 YES --> ERROR... CANNOT UPDATE APPROVED ITEM!!                              **
3211 --                 NO  --> Replace translation with this translation!                          **
3212 --             NO  --> Update version with this new data!                                      **
3213 --         NO  --> ERROR... CANNOT RESOLVE CONTENT ITEM VERSION ID!                            **
3214 -- --------------------------------------------------------------
3215 PROCEDURE version_engine(
3216     px_content_item_id          IN OUT NOCOPY NUMBER
3217     ,p_citem_ver_id             IN NUMBER
3218     ,p_ctype_code               IN VARCHAR2
3219     ,p_language                 IN VARCHAR2
3220     ,x_return_status            OUT NOCOPY VARCHAR2
3221     ,x_item_command             OUT NOCOPY CHAR
3222     ,x_version_command          OUT NOCOPY CHAR
3223     ,x_base_lang                OUT NOCOPY VARCHAR2
3224 )
3225 IS
3226 
3227 --******************* BEGIN REQUIRED VARIABLES *************************
3228   l_api_name CONSTANT VARCHAR2(30) := 'version_enginet';         --|**|
3229 --******************* END REQUIRED VARIABLES ***************************
3230 BEGIN
3231 
3232   IF IBC_DEBUG_PVT.debug_enabled THEN
3233     IBC_DEBUG_PVT.start_process(
3234        p_proc_type  => 'PROCEDURE',
3235        p_proc_name  => 'Version_Engine',
3236        p_parms      => IBC_DEBUG_PVT.make_parameter_list(
3237                          p_tag     => 'PARAMETERS',
3238                          p_parms   => JTF_VARCHAR2_TABLE_4000(
3239                                         'px_content_item_id', px_content_item_id,
3240                                         'p_citem_ver_id', p_citem_ver_id,
3241                                         'p_ctype_code', p_ctype_code,
3242                                         'p_language', p_language
3243                                       )
3244                          )
3245     );
3246   END IF;
3247 
3248     --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
3249     x_return_status := FND_API.G_RET_STS_SUCCESS;
3250     x_item_command := G_COMMAND_NOTHING;
3251     x_version_command := G_COMMAND_NOTHING;
3252     x_base_lang := USERENV('LANG');
3253 
3254 -- Content Item Version = NULL?
3255     IF (p_citem_ver_id IS NULL) THEN
3256 --     YES --> Is Content Item = NULL?
3257         IF (px_content_item_id IS NULL) THEN
3258 --        YES -- Does content type exist?
3259             -- miss_char will NOT work here!
3260             IF (IBC_VALIDATE_PVT.isValidCType(p_ctype_code) = FND_API.g_true) THEN
3261 --             YES --> Create new content item and version.
3262                 -- create new item and version
3263                 x_item_command := G_COMMAND_CREATE;
3264                 x_version_command := G_COMMAND_CREATE;
3265                 x_base_lang := p_language;
3266             ELSE
3267 --             NO --> ERROR... ITEM MUST BE CREATED WITH VALID CONTENT TYPE
3268                 --DBMS_OUTPUT.put_line('EX - ctype_code');
3269                 x_return_status := FND_API.G_RET_STS_ERROR;
3270                 FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
3271                 FND_MESSAGE.Set_Token('INPUT', 'p_ctype_code', FALSE);
3272                 FND_MSG_PUB.ADD;
3273             END IF;
3274         ELSE
3275 --         NO  --> Content Item exist?
3276             IF (IBC_VALIDATE_PVT.isValidCitem(px_content_item_id) = FND_API.g_true)  THEN
3277 --              YES --> Is this language = base language?
3278                 x_base_lang := getBaseLanguage(px_content_item_id);
3279                 IF (x_base_lang = p_language) THEN
3280 --                 YES --> Create a new version with incremented version number!               **
3281                      -- only update item if it needs it
3282                     x_item_command := G_COMMAND_UPDATE;
3283                     x_version_command := G_COMMAND_INCREMENT;
3284                 ELSE
3285 --                 NO  --> ERROR... CANNOT TRANSLATE ITEM WITHOUT VERSION ID                   **
3286                     --DBMS_OUTPUT.put_line('EX - translation without version id');
3287                     x_return_status := FND_API.G_RET_STS_ERROR;
3288                     FND_MESSAGE.Set_Name('IBC', 'TRANS_WITHOUT_VERSION_ID');
3289                     FND_MSG_PUB.ADD;
3290                END IF;
3291             ELSE
3292 --             NO --> ERROR... CANNOT CREATE FROM NON-EXISTING ITEM
3293                 --DBMS_OUTPUT.put_line('EX - content_item_id');
3294                 x_return_status := FND_API.G_RET_STS_ERROR;
3295                 FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
3296                 FND_MESSAGE.Set_Token('INPUT', 'px_content_item_id', FALSE);
3297                 FND_MSG_PUB.ADD;
3298             END IF;
3299         END IF;
3300     ELSE
3301 --     NO  --> Does this version exist?
3302         IF (IBC_VALIDATE_PVT.isValidCitemVer(p_citem_ver_id) = FND_API.g_true) THEN
3303             -- making sure that a valid value exists for content item id
3304             px_content_item_id := getCitemId(p_citem_ver_id);
3305             x_base_lang := getBaseLanguage(px_content_item_id);
3306 --          YES -->  Is it approved?
3307             IF (IBC_VALIDATE_PVT.isApproved(p_citem_ver_id) = FND_API.g_true) THEN
3308 --              YES --> Is it the same language?
3309                 IF (x_base_lang = p_language) THEN
3310                     -- DBMS_OUTPUT.put_line('EX - content_item_id');
3311                     -- x_return_status := FND_API.G_RET_STS_ERROR;
3312                     -- FND_MESSAGE.Set_Name('IBC', 'UPDATE_APPROVED_ITEM_ERROR');
3313                     -- FND_MSG_PUB.ADD;
3314                     -- In R12 some of the metadata of an Item can be updated
3315                     -- post-approval
3316                     --
3317                     x_item_command := G_COMMAND_POST_APPROVAL_UPDATE;
3318                     x_version_command := G_COMMAND_POST_APPROVAL_UPDATE;
3319                 ELSE
3320 --                 NO  --> Replace translation with this translation!                          **
3321                     -- item cannot be updated at translation time!!
3322                     x_item_command := G_COMMAND_NOTHING;
3323                     x_version_command := G_COMMAND_TRANSLATE;
3324                 END IF;
3325             ELSE
3326                 IF (x_base_lang <> p_language) THEN
3327                     --DBMS_OUTPUT.put_line('EX - trans of non approved item');
3328                     x_return_status := FND_API.G_RET_STS_ERROR;
3329                     FND_MESSAGE.Set_Name('IBC', 'TRANS_NON_APPROVED_ITEM');
3330                     FND_MSG_PUB.ADD;
3331                 ELSE
3332                     x_item_command := G_COMMAND_UPDATE;
3333                     x_version_command := G_COMMAND_UPDATE;
3334                 END IF;
3335             END IF;
3336         ELSE
3337 --         NO  --> ERROR... CANNOT RESOLVE CONTENT ITEM VERSION ID!                            **
3338             --DBMS_OUTPUT.put_line('EX - content_item_id');
3339             x_return_status := FND_API.G_RET_STS_ERROR;
3340             FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
3341             FND_MESSAGE.Set_Token('INPUT', 'px_content_item_id', FALSE);
3342             FND_MSG_PUB.ADD;
3343         END IF;
3344     END IF;
3345 
3346   IF IBC_DEBUG_PVT.debug_enabled THEN
3347     IBC_DEBUG_PVT.end_process(
3348       IBC_DEBUG_PVT.make_parameter_list(
3349         p_tag    => 'OUTPUT',
3350         p_parms  => JTF_VARCHAR2_TABLE_4000(
3351                       'x_return_status', x_return_status,
3352                       'x_item_command', x_item_command,
3353                       'x_version_command', x_version_command,
3354                       'x_base_lang', x_base_lang
3355                     )
3356       )
3357     );
3358   END IF;
3359 
3360 
3361 EXCEPTION
3362     WHEN OTHERS THEN
3363       --DBMS_OUTPUT.put_line('EX - version engine general error');
3364       x_return_status := FND_API.G_RET_STS_ERROR;
3365       FND_MESSAGE.Set_Name('IBC', 'VERSION_ENGINE_ERROR');
3366       FND_MSG_PUB.ADD;
3367       IF IBC_DEBUG_PVT.debug_enabled THEN
3368         IBC_DEBUG_PVT.end_process(
3369           IBC_DEBUG_PVT.make_parameter_list(
3370             p_tag    => 'OUTPUT',
3371             p_parms  => JTF_VARCHAR2_TABLE_4000(
3372                           '_RETURN', '*** EXCEPTION *** [' || SQLERRM || ']',
3373                           'x_return_status', x_return_status,
3374                           'x_item_command', x_item_command,
3375                           'x_version_command', x_version_command,
3376                           'x_base_lang', x_base_lang
3377                         )
3378           )
3379         );
3380       END IF;
3381 END;
3382 
3383 -- -------------------
3384 -- ----- PUBLIC ****************************************************************************************************************************
3385 -- -------------------
3386 
3387 -- --------------------------------------------------------------
3388 -- APPROVE CONTENT ITEM
3389 --
3390 -- Used to move a content item version to the status of approved.
3391 --
3392 -- --------------------------------------------------------------
3393 PROCEDURE approve_item(
3394     p_citem_ver_id              IN NUMBER
3395     ,p_commit                   IN VARCHAR2
3396     ,p_api_version_number       IN NUMBER
3397     ,p_init_msg_list            IN VARCHAR2
3398     ,px_object_version_number   IN OUT NOCOPY NUMBER
3399     ,x_return_status            OUT NOCOPY VARCHAR2
3400     ,x_msg_count                OUT NOCOPY NUMBER
3401     ,x_msg_data                 OUT NOCOPY VARCHAR2
3402 )
3403 IS
3404 --******************* BEGIN REQUIRED VARIABLES *************************
3405   l_api_name CONSTANT VARCHAR2(30) := 'approve_citem_version';   --|**|
3406   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
3407 --******************* END REQUIRED VARIABLES ***************************
3408     content_item_id NUMBER;
3409     -- variable used to determine whether to update live_version_id
3410     base_lang IBC_CONTENT_ITEMS.base_language%TYPE;
3411     temp NUMBER;
3412     dir_id NUMBER;
3413     l_dummy   VARCHAR2(1);
3414 
3415     CURSOR c_component_not_status (p_citem_ver_id IN NUMBER,
3416                                    p_status IN VARCHAR2)
3417     IS
3418       SELECT 'X'
3419        FROM ibc_citem_versions_b a,
3420             ibc_compound_relations b,
3421             ibc_content_items c
3422       WHERE a.citem_version_id = b.citem_version_id
3423         AND b.content_item_id = c.content_item_id
3424         AND a.citem_version_id = p_citem_ver_id
3425         AND c.content_item_status <> p_status;
3426 
3427 
3428 BEGIN
3429 --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
3430 --******************* BEGIN REQUIRED AREA ******************************
3431       SAVEPOINT svpt_approve_item;                                --|**|
3432       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
3433         FND_MSG_PUB.initialize;                                   --|**|
3434       END IF;                                                     --|**|
3435                                                                   --|**|
3436       -- Standard call to check for call compatibility.           --|**|
3437       IF NOT FND_API.Compatible_API_Call (                        --|**|
3438             l_api_version_number                                  --|**|
3439          ,p_api_version_number                                 --|**|
3440          ,l_api_name                                           --|**|
3441          ,G_PKG_NAME                                           --|**|
3442       )THEN                                                       --|**|
3443        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
3444       END IF;                                                     --|**|
3445                                                                   --|**|
3446       -- Initialize API return status to SUCCESS                  --|**|
3447       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
3448 --******************* END REQUIRED AREA ********************************
3449 
3450     IF IBC_DEBUG_PVT.debug_enabled THEN
3451       IBC_DEBUG_PVT.start_process(
3452          p_proc_type  => 'PROCEDURE',
3453          p_proc_name  => 'Approve_Item',
3454          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
3455                            p_tag     => 'PARAMETERS',
3456                            p_parms   => JTF_VARCHAR2_TABLE_4000(
3457                                           'p_citem_ver_id', p_citem_ver_id,
3458                                           'p_commit', p_commit,
3459                                           'p_api_version_number', p_api_version_number,
3460                                           'p_init_msg_list', p_init_msg_list,
3461                                           'px_object_version_number', px_object_version_number
3462                                         )
3463                            )
3464       );
3465     END IF;
3466 
3467     -- checking version id
3468     IF (IBC_VALIDATE_PVT.isValidCitemVer(p_citem_ver_id) = FND_API.g_false) THEN
3469         --DBMS_OUTPUT.put_line('EX - p_citem_ver_id');
3470         x_return_status := FND_API.G_RET_STS_ERROR;
3471         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
3472         FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
3473         FND_MSG_PUB.ADD;
3474         RAISE FND_API.G_EXC_ERROR;
3475     END IF;
3476 
3477     -- getting content item id and base language
3478     SELECT
3479         ibc_content_items.content_item_id
3480         ,ibc_content_items.base_language
3481         ,ibc_content_items.directory_node_id
3482     INTO
3483         content_item_id
3484         ,base_lang
3485         ,dir_id
3486     FROM
3487         ibc_content_items
3488         ,ibc_citem_versions_b
3489     WHERE
3490         ibc_content_items.content_item_id = ibc_citem_versions_b.content_item_id
3491     AND
3492        ibc_citem_versions_b.citem_version_id = p_citem_ver_id;
3493 
3494     -- ***************PERMISSION CHECK**********************************
3495     IF (hasPermission(content_item_id) = FND_API.g_false) THEN
3496         --DBMS_OUTPUT.put_line('EX - no lock permissions');
3497         x_return_status := FND_API.G_RET_STS_ERROR;
3498        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');
3499         FND_MSG_PUB.ADD;
3500         RAISE FND_API.G_EXC_ERROR;
3501     END IF;
3502     -- ***************/PERMISSION CHECK**********************************
3503 
3504 
3505     -- **************CHECKING IF APPROVAL IS ALLOWED ******************
3506     -- can be approved if source lang is already approved or if this is the source lang
3507     SELECT
3508         MIN(ibc_citem_versions_b.citem_version_id)
3509     INTO
3510         temp
3511     FROM
3512        ibc_citem_versions_b
3513         ,ibc_citem_versions_tl
3514     WHERE
3515         (
3516             (
3517                 ibc_citem_versions_tl.LANGUAGE = ibc_citem_versions_tl.source_lang
3518                     AND
3519                 ibc_citem_versions_b.citem_version_status = Ibc_Utilities_Pub.G_STV_APPROVED
3520              )
3521          OR
3522              ibc_citem_versions_tl.source_lang = base_lang
3523          )
3524         AND
3525            ibc_citem_versions_b.citem_version_id = ibc_citem_versions_tl.citem_version_id
3526         AND
3527            ibc_citem_versions_b.citem_version_id = p_citem_ver_id;
3528 
3529 
3530     IF (temp IS NULL) THEN
3531         --DBMS_OUTPUT.put_line('EX - version cannot be approved');
3532         x_return_status := FND_API.G_RET_STS_ERROR;
3533       FND_MESSAGE.Set_Name('IBC', 'APPROVAL_NOT_ALLOWED');
3534         FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
3535         FND_MSG_PUB.ADD;
3536         RAISE FND_API.G_EXC_ERROR;
3537     END IF;
3538 
3539     -- Can be approved if in case of having components they are already approved.
3540     OPEN c_component_not_status(p_citem_ver_id, IBC_UTILITIES_PUB.G_STV_APPROVED);
3541     FETCH c_component_not_status INTO l_dummy;
3542     IF (c_component_not_status%FOUND) THEN
3543       CLOSE c_component_not_status;
3544       x_return_status := FND_API.G_RET_STS_ERROR;
3545       FND_MESSAGE.Set_Name('IBC', 'COMPONENT_APPROVAL_REQUIRED');
3546       FND_MSG_PUB.ADD;
3547       RAISE FND_API.G_EXC_ERROR;
3548     END IF;
3549     CLOSE c_component_not_status;
3550 
3551 
3552 -- *** VALIDATION OF VALUES ******
3553      -- version id
3554     IF (p_citem_ver_id IS NULL) THEN
3555         --DBMS_OUTPUT.put_line('EX - citem_ver_id');
3556         x_return_status := FND_API.G_RET_STS_ERROR;
3557          FND_MESSAGE.Set_Name('IBC', 'IBC_INPUT_REQUIRED');
3558         FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
3559         FND_MSG_PUB.ADD;
3560         RAISE FND_API.G_EXC_ERROR;
3561     END IF;
3562 
3563    -- CALLING ACTUAL APPROVAL ROUTINE
3564     approve_citem_version_int(
3565       p_citem_ver_id              => p_citem_ver_id
3566       ,p_content_item_id          => content_item_id
3567       ,p_base_lang                => base_lang
3568       ,p_log_action               => FND_API.g_true
3569       ,px_object_version_number   => px_object_version_number
3570       ,x_return_status            => x_return_status
3571     );
3572 
3573     IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3574         RAISE FND_API.G_EXC_ERROR;
3575     END IF;
3576 
3577     -- COMMIT?
3578     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
3579         COMMIT;
3580     END IF;
3581 
3582     -- Standard call to get message count and if count is 1, get message info.
3583     FND_MSG_PUB.Count_And_Get(
3584         p_count           =>      x_msg_count,
3585         p_data            =>      x_msg_data
3586     );
3587 
3588   IF IBC_DEBUG_PVT.debug_enabled THEN
3589     IBC_DEBUG_PVT.end_process(
3590       IBC_DEBUG_PVT.make_parameter_list(
3591         p_tag    => 'OUTPUT',
3592         p_parms  => JTF_VARCHAR2_TABLE_4000(
3593                       'px_object_version_number', px_object_version_number,
3594                       'x_return_status', x_return_status,
3595                       'x_msg_count', x_msg_count,
3596                       'x_msg_data', x_msg_data
3597                     )
3598       )
3599     );
3600   END IF;
3601 
3602 EXCEPTION
3603     WHEN FND_API.G_EXC_ERROR THEN
3604       ROLLBACK TO svpt_approve_item;
3605       --DBMS_OUTPUT.put_line('Expected Error');
3606       Ibc_Utilities_Pvt.handle_exceptions(
3607          p_api_name           => L_API_NAME
3608          ,p_pkg_name          => G_PKG_NAME
3609          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
3610          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
3611          ,p_sqlcode           => SQLCODE
3612          ,p_sqlerrm           => SQLERRM
3613          ,x_msg_count         => x_msg_count
3614          ,x_msg_data          => x_msg_data
3615          ,x_return_status     => x_return_status
3616        );
3617       IF IBC_DEBUG_PVT.debug_enabled THEN
3618         IBC_DEBUG_PVT.end_process(
3619           IBC_DEBUG_PVT.make_parameter_list(
3620             p_tag    => 'OUTPUT',
3621             p_parms  => JTF_VARCHAR2_TABLE_4000(
3622                           'px_object_version_number', px_object_version_number,
3623                           'x_return_status', x_return_status,
3624                           'x_msg_count', x_msg_count,
3625                           'x_msg_data', x_msg_data
3626                         )
3627           )
3628         );
3629       END IF;
3630   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3631       ROLLBACK TO svpt_approve_item;
3632       --DBMS_OUTPUT.put_line('Unexpected error');
3633       Ibc_Utilities_Pvt.handle_exceptions(
3634          p_api_name           => L_API_NAME
3635          ,p_pkg_name          => G_PKG_NAME
3636          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
3637          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
3638          ,p_sqlcode           => SQLCODE
3639          ,p_sqlerrm           => SQLERRM
3640          ,x_msg_count         => x_msg_count
3641          ,x_msg_data          => x_msg_data
3642          ,x_return_status     => x_return_status
3643       );
3644       IF IBC_DEBUG_PVT.debug_enabled THEN
3645         IBC_DEBUG_PVT.end_process(
3646           IBC_DEBUG_PVT.make_parameter_list(
3647             p_tag    => 'OUTPUT',
3648             p_parms  => JTF_VARCHAR2_TABLE_4000(
3649                           'px_object_version_number', px_object_version_number,
3650                           'x_return_status', x_return_status,
3651                           'x_msg_count', x_msg_count,
3652                           'x_msg_data', x_msg_data
3653                         )
3654           )
3655         );
3656       END IF;
3657   WHEN OTHERS THEN
3658       ROLLBACK TO svpt_approve_item;
3659       --DBMS_OUTPUT.put_line('Other error');
3660       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
3661          p_api_name           => L_API_NAME
3662          ,p_pkg_name          => G_PKG_NAME
3663          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
3664          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
3665          ,p_sqlcode           => SQLCODE
3666          ,p_sqlerrm           => SQLERRM
3667          ,x_msg_count         => x_msg_count
3668          ,x_msg_data          => x_msg_data
3669          ,x_return_status     => x_return_status
3670       );
3671       IF IBC_DEBUG_PVT.debug_enabled THEN
3672         IBC_DEBUG_PVT.end_process(
3673           IBC_DEBUG_PVT.make_parameter_list(
3674             p_tag    => 'OUTPUT',
3675             p_parms  => JTF_VARCHAR2_TABLE_4000(
3676                           'px_object_version_number', px_object_version_number,
3677                           'x_return_status', x_return_status,
3678                           'x_msg_count', x_msg_count,
3679                           'x_msg_data', x_msg_data,
3680                           'EXCEPTION', SQLERRM
3681                         )
3682           )
3683         );
3684       END IF;
3685  END;
3686 
3687 -- --------------------------------------------------------------
3688 -- ARCHIVE ITEM
3689 --
3690 -- Used to move content item to archived status
3691 --
3692 --
3693 --
3694 -- --------------------------------------------------------------
3695 PROCEDURE archive_item(
3696     p_content_item_id           IN NUMBER
3697     ,p_cascaded_flag            IN VARCHAR2
3698     ,p_commit                   IN VARCHAR2
3699     ,p_api_version_number       IN NUMBER
3700     ,p_init_msg_list            IN VARCHAR2
3701     ,px_object_version_number   IN OUT NOCOPY NUMBER
3702     ,x_return_status            OUT NOCOPY VARCHAR2
3703     ,x_msg_count                OUT NOCOPY NUMBER
3704     ,x_msg_data                 OUT NOCOPY VARCHAR2
3705 )
3706 IS
3707 --******************* BEGIN REQUIRED VARIABLES *************************
3708   l_api_name CONSTANT VARCHAR2(30) := 'archive_item';            --|**|
3709   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
3710 --******************* END REQUIRED VARIABLES ***************************
3711    dir_id NUMBER;
3712    l_created_by    NUMBER;
3713 
3714    CURSOR c_creator(p_content_item_id NUMBER) IS
3715      SELECT created_by
3716        FROM ibc_content_items
3717       WHERE content_item_id = p_content_item_id;
3718 
3719 BEGIN
3720   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
3721 --******************* BEGIN REQUIRED AREA ******************************
3722       SAVEPOINT svpt_archive_item;                                --|**|
3723       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
3724         FND_MSG_PUB.initialize;                                   --|**|
3725       END IF;                                                     --|**|
3726                                                                   --|**|
3727       -- Standard call to check for call compatibility.           --|**|
3728       IF NOT FND_API.Compatible_API_Call (                        --|**|
3729             l_api_version_number                                  --|**|
3730          ,p_api_version_number                                 --|**|
3731          ,l_api_name                                           --|**|
3732          ,G_PKG_NAME                                           --|**|
3733       )THEN                                                       --|**|
3734        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
3735       END IF;                                                     --|**|
3736                                                                   --|**|
3737       -- Initialize API return status to SUCCESS                  --|**|
3738       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
3739 --******************* END REQUIRED AREA ********************************
3740 
3741     IF IBC_DEBUG_PVT.debug_enabled THEN
3742       IBC_DEBUG_PVT.start_process(
3743          p_proc_type  => 'PROCEDURE',
3744          p_proc_name  => 'Archive_Item',
3745          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
3746                            p_tag     => 'PARAMETERS',
3747                            p_parms   => JTF_VARCHAR2_TABLE_4000(
3748                                           'p_content_item_id', p_content_item_id,
3749                                           'p_commit', p_commit,
3750                                           'p_api_version_number', p_api_version_number,
3751                                           'p_init_msg_list', p_init_msg_list,
3752                                           'px_object_version_number', px_object_version_number
3753                                         )
3754                            )
3755       );
3756     END IF;
3757 
3758     -- citem validation
3759     IF (IBC_VALIDATE_PVT.isValidCitem(p_content_item_id) = FND_API.g_false ) THEN
3760         --DBMS_OUTPUT.put_line('EX - content_item_id');
3761         x_return_status := FND_API.G_RET_STS_ERROR;
3762          FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
3763         FND_MESSAGE.Set_Token('INPUT', 'p_content_item_id', FALSE);
3764         FND_MSG_PUB.ADD;
3765         RAISE FND_API.G_EXC_ERROR;
3766     END IF;
3767 
3768     -- Version Status validation
3769     -- If any content item version is in a submitted status then the Content Item
3770     -- cannot be archived
3771     IF (isCitemVerInPassedStatus(p_content_item_id,IBC_UTILITIES_PUB.G_STV_SUBMIT_FOR_APPROVAL))THEN
3772        x_return_status := FND_API.G_RET_STS_ERROR;
3773        FND_MESSAGE.Set_Name('IBC', 'IBC_ITEM_INVALID_FOR_ARCHIVE');
3774        FND_MSG_PUB.ADD;
3775        RAISE FND_API.G_EXC_ERROR;
3776     END IF;
3777 
3778     -- Item Locking Validation
3779     -- If the content item is not locked by the Current User then it cannot be archived
3780     IF NOT (isItemLockedByCurrentUser(p_content_item_id))THEN
3781        x_return_status := FND_API.G_RET_STS_ERROR;
3782        FND_MESSAGE.Set_Name('IBC', 'IBC_UNLOCK_NOT_ALLOW_MSG');
3783        FND_MSG_PUB.ADD;
3784        RAISE FND_API.G_EXC_ERROR;
3785     END IF;
3786 
3787     -- If it has associations it will raise an error
3788     IF (Has_Associations(p_content_item_id) = FND_API.g_true) THEN
3789         --DBMS_OUTPUT.put_line('EX - content_item_id');
3790         x_return_status := FND_API.G_RET_STS_ERROR;
3791          FND_MESSAGE.Set_Name('IBC', 'IBC_NOARCHIVE_ASSOC_EXIST');
3792         FND_MSG_PUB.ADD;
3793         RAISE FND_API.G_EXC_ERROR;
3794     END IF;
3795 
3796     -- Item Sub Item Validation
3797     -- If the content item is Used as Sub Item then it cannot be archived
3798     -- srrangar made this change to Fix Bug#3346690
3799     --
3800     IF (isItemaSubItem(p_content_item_id))THEN
3801        x_return_status := FND_API.G_RET_STS_ERROR;
3802        FND_MESSAGE.Set_Name('IBC', 'IBC_SUBITEM_INVALID_TO_ARCHIVE');
3803 
3804        FND_MSG_PUB.ADD;
3805        RAISE FND_API.G_EXC_ERROR;
3806     END IF;
3807 
3808     -- If already archived then raise error
3809     IF (getContentItemStatus(p_content_item_id)
3810         IN (Ibc_Utilities_Pub.G_STI_ARCHIVED, Ibc_Utilities_Pub.G_STI_ARCHIVED_CASCADE))
3811     THEN
3812         --DBMS_OUTPUT.put_line('EX - content_item_id');
3813         x_return_status := FND_API.G_RET_STS_ERROR;
3814          FND_MESSAGE.Set_Name('IBC', 'IBC_CITEM_ALREADY_ARCHIVED');
3815         FND_MSG_PUB.ADD;
3816         RAISE FND_API.G_EXC_ERROR;
3817     END IF;
3818 
3819 
3820 
3821     -- If it has categories it will raise an error
3822     IF (Has_Categories(p_content_item_id) = FND_API.g_true) THEN
3823         --DBMS_OUTPUT.put_line('EX - content_item_id');
3824         x_return_status := FND_API.G_RET_STS_ERROR;
3825          FND_MESSAGE.Set_Name('IBC', 'IBC_NOARCHIVE_CATEGORIES_EXIST');
3826         FND_MSG_PUB.ADD;
3827         RAISE FND_API.G_EXC_ERROR;
3828     END IF;
3829 
3830     -- If it is default stylesheet raise error
3831     IF (Is_A_Default_Stylesheet(p_content_item_id) = FND_API.g_true) THEN
3832         x_return_status := FND_API.G_RET_STS_ERROR;
3833          FND_MESSAGE.Set_Name('IBC', 'IBC_NOARCHIVE_DFLT_STYLESHEET');
3834         FND_MSG_PUB.ADD;
3835         RAISE FND_API.G_EXC_ERROR;
3836     END IF;
3837 
3838     OPEN c_creator(p_content_item_id);
3839     FETCH c_creator INTO l_created_by;
3840 
3841     -- It is a Seeded Item it cannot be archived (Fix for bug# 3614353)
3842     IF (l_created_by = 1) THEN
3843         CLOSE c_creator;
3844         x_return_status := FND_API.G_RET_STS_ERROR;
3845         FND_MESSAGE.Set_Name('IBC', 'IBC_NOARCHIVE_SEED_ITEM');
3846         FND_MSG_PUB.ADD;
3847         RAISE FND_API.G_EXC_ERROR;
3848     END IF;
3849 
3850     CLOSE c_creator;
3851 
3852     dir_id := getDirectoryNodeId(p_content_item_id);
3853     -- ***************PERMISSION CHECK*********************************************************************
3854     IF (hasPermission(p_content_item_id) = FND_API.g_false) THEN                                       --|*|
3855         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
3856         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
3857        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                        --|*|
3858         FND_MSG_PUB.ADD;                                                                               --|*|
3859         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
3860     ELSIF(isItemAdmin(p_content_item_id) = FND_API.g_false) THEN                                       --|*|
3861        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
3862                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
3863                   ,p_instance_pk1_value    => p_content_item_id                                        --|*|
3864                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
3865                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
3866                   ,p_container_pk1_value   => dir_id                                                   --|*|
3867                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
3868                   ) = FND_API.g_false                                                                  --|*|
3869             ) THEN                                                                                     --|*|
3870            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
3871            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
3872          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
3873            FND_MSG_PUB.ADD;                                                                            --|*|
3874            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
3875       END IF;                                                                                          --|*|
3876     END IF;                                                                                            --|*|
3877     -- ***************PERMISSION CHECK*********************************************************************
3878 
3879     -- Actual update
3880     IF p_cascaded_flag = FND_API.g_false THEN
3881       Ibc_Content_Items_Pkg.update_row (
3882         p_content_item_id         => p_content_item_id
3883         ,p_content_item_status    => Ibc_Utilities_Pub.G_STI_ARCHIVED
3884         ,p_locked_by_user_id      => FND_API.G_MISS_NUM    -- Updated for STANDARD/perf change of G_MISS_xxx
3885         ,px_object_version_number => px_object_version_number
3886       );
3887     ELSE
3888       Ibc_Content_Items_Pkg.update_row (
3889         p_content_item_id         => p_content_item_id
3890         ,p_content_item_status    => Ibc_Utilities_Pub.G_STI_ARCHIVED_CASCADE
3891         ,p_locked_by_user_id      => FND_API.G_MISS_NUM    -- Updated for STANDARD/perf change of G_MISS_xxx
3892         ,px_object_version_number => px_object_version_number
3893       );
3894     END IF;
3895 
3896 
3897                                    --***************************************************
3898                                    --************ADDING TO AUDIT LOG********************
3899                                    --***************************************************
3900                                    Ibc_Utilities_Pvt.log_action(
3901                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_ARCHIVE
3902                                        ,p_parent_value  => NULL
3903                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
3904                                        ,p_object_value1 => p_content_item_id
3905                                        ,p_object_value2 => NULL
3906                                        ,p_object_value3 => NULL
3907                                        ,p_object_value4 => NULL
3908                                        ,p_object_value5 => NULL
3909                                        ,p_description   => 'Archiving item'
3910                                    );
3911                                    --***************************************************
3912 
3913     -- COMMIT?
3914     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
3915         COMMIT;
3916     END IF;
3917 
3918     -- Standard call to get message count and if count is 1, get message info.
3919     FND_MSG_PUB.Count_And_Get(
3920         p_count           =>      x_msg_count,
3921         p_data            =>      x_msg_data
3922     );
3923 
3924 
3925   IF IBC_DEBUG_PVT.debug_enabled THEN
3926     IBC_DEBUG_PVT.end_process(
3927       IBC_DEBUG_PVT.make_parameter_list(
3928         p_tag    => 'OUTPUT',
3929         p_parms  => JTF_VARCHAR2_TABLE_4000(
3930                       'px_object_version_number', px_object_version_number,
3931                       'x_return_status', x_return_status,
3932                       'x_msg_count', x_msg_count,
3933                       'x_msg_data', x_msg_data
3934                     )
3935       )
3936     );
3937   END IF;
3938 
3939 EXCEPTION
3940     WHEN FND_API.G_EXC_ERROR THEN
3941       ROLLBACK TO svpt_archive_item;
3942       --DBMS_OUTPUT.put_line('Expected Error');
3943       Ibc_Utilities_Pvt.handle_exceptions(
3944          p_api_name           => L_API_NAME
3945          ,p_pkg_name          => G_PKG_NAME
3946          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
3947          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
3948          ,p_sqlcode           => SQLCODE
3949          ,p_sqlerrm           => SQLERRM
3950          ,x_msg_count         => x_msg_count
3951          ,x_msg_data          => x_msg_data
3952          ,x_return_status     => x_return_status
3953        );
3954       IF IBC_DEBUG_PVT.debug_enabled THEN
3955         IBC_DEBUG_PVT.end_process(
3956           IBC_DEBUG_PVT.make_parameter_list(
3957             p_tag    => 'OUTPUT',
3958             p_parms  => JTF_VARCHAR2_TABLE_4000(
3959                           'px_object_version_number', px_object_version_number,
3960                           'x_return_status', x_return_status,
3961                           'x_msg_count', x_msg_count,
3962                           'x_msg_data', x_msg_data
3963                         )
3964           )
3965         );
3966       END IF;
3967   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3968       ROLLBACK TO svpt_archive_item;
3969       --DBMS_OUTPUT.put_line('Unexpected error');
3970       Ibc_Utilities_Pvt.handle_exceptions(
3971          p_api_name           => L_API_NAME
3972          ,p_pkg_name          => G_PKG_NAME
3973          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
3974          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
3975          ,p_sqlcode           => SQLCODE
3976          ,p_sqlerrm           => SQLERRM
3977          ,x_msg_count         => x_msg_count
3978          ,x_msg_data          => x_msg_data
3979          ,x_return_status     => x_return_status
3980       );
3981       IF IBC_DEBUG_PVT.debug_enabled THEN
3982         IBC_DEBUG_PVT.end_process(
3983           IBC_DEBUG_PVT.make_parameter_list(
3984             p_tag    => 'OUTPUT',
3985             p_parms  => JTF_VARCHAR2_TABLE_4000(
3986                           'px_object_version_number', px_object_version_number,
3987                           'x_return_status', x_return_status,
3988                           'x_msg_count', x_msg_count,
3989                           'x_msg_data', x_msg_data
3990                         )
3991           )
3992         );
3993       END IF;
3994   WHEN OTHERS THEN
3995       ROLLBACK TO svpt_archive_item;
3996       --DBMS_OUTPUT.put_line('Other error');
3997       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
3998          p_api_name           => L_API_NAME
3999          ,p_pkg_name          => G_PKG_NAME
4000          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
4001          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
4002          ,p_sqlcode           => SQLCODE
4003          ,p_sqlerrm           => SQLERRM
4004          ,x_msg_count         => x_msg_count
4005          ,x_msg_data          => x_msg_data
4006          ,x_return_status     => x_return_status
4007       );
4008       IF IBC_DEBUG_PVT.debug_enabled THEN
4009         IBC_DEBUG_PVT.end_process(
4010           IBC_DEBUG_PVT.make_parameter_list(
4011             p_tag    => 'OUTPUT',
4012             p_parms  => JTF_VARCHAR2_TABLE_4000(
4013                           'px_object_version_number', px_object_version_number,
4014                           'x_return_status', x_return_status,
4015                           'x_msg_count', x_msg_count,
4016                           'x_msg_data', x_msg_data,
4017                           'EXCEPTION', SQLERRM
4018                         )
4019           )
4020         );
4021       END IF;
4022  END;
4023 
4024 -- --------------------------------------------------------------
4025 -- CHANGE STATUS
4026 --  It changes status of a particular version. It will not allow
4027 --  changes to approved versions.  NOTE: archiving of versions is
4028 --  not currently supported even though status CODE exists.
4029 -- --------------------------------------------------------------
4030 PROCEDURE change_status(
4031     p_citem_ver_id              IN NUMBER
4032     ,p_new_status               IN VARCHAR2
4033     ,p_language                 IN VARCHAR2
4034     ,p_commit                   IN VARCHAR2
4035     ,p_api_version_number       IN NUMBER
4036     ,p_init_msg_list            IN VARCHAR2
4037     ,px_object_version_number   IN OUT NOCOPY NUMBER
4038     ,x_return_status            OUT NOCOPY VARCHAR2
4039     ,x_msg_count                OUT NOCOPY NUMBER
4040     ,x_msg_data                 OUT NOCOPY VARCHAR2
4041 )
4042 IS
4043 --******************* BEGIN REQUIRED VARIABLES *************************
4044   l_api_name CONSTANT VARCHAR2(30) := 'change_status';--|**|
4045   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
4046 --******************* END REQUIRED VARIABLES ***************************
4047    content_item_id NUMBER;
4048    ctype_code IBC_CONTENT_TYPES_B.content_type_code%TYPE;
4049    dir_id NUMBER;
4050 BEGIN
4051   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
4052 --******************* BEGIN REQUIRED AREA ******************************
4053       SAVEPOINT svpt_change_status;                               --|**|
4054       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
4055         FND_MSG_PUB.initialize;                                   --|**|
4056       END IF;                                                     --|**|
4057                                                                   --|**|
4058       -- Standard call to check for call compatibility.           --|**|
4059       IF NOT FND_API.Compatible_API_Call (                        --|**|
4060             l_api_version_number                                  --|**|
4061          ,p_api_version_number                                 --|**|
4062          ,l_api_name                                           --|**|
4063          ,G_PKG_NAME                                           --|**|
4064       )THEN                                                       --|**|
4065        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
4066       END IF;                                                     --|**|
4067                                                                   --|**|
4068       -- Initialize API return status to SUCCESS                  --|**|
4069       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
4070 --******************* END REQUIRED AREA ********************************
4071 
4072     IF IBC_DEBUG_PVT.debug_enabled THEN
4073       IBC_DEBUG_PVT.start_process(
4074          p_proc_type  => 'PROCEDURE',
4075          p_proc_name  => 'Change_Status',
4076          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
4077                            p_tag     => 'PARAMETERS',
4078                            p_parms   => JTF_VARCHAR2_TABLE_4000(
4079                                           'p_citem_ver_id', p_citem_ver_id,
4080                                           'p_new_status', p_new_status,
4081                                           'p_language', p_language,
4082                                           'p_commit', p_commit,
4083                                           'p_api_version_number', p_api_version_number,
4084                                           'p_init_msg_list', p_init_msg_list,
4085                                           'px_object_version_number', px_object_version_number
4086                                         )
4087                            )
4088       );
4089     END IF;
4090 
4091     -- checking version id
4092     IF (IBC_VALIDATE_PVT.isValidCitemVer(p_citem_ver_id) = FND_API.g_false) THEN
4093         --DBMS_OUTPUT.put_line('EX - p_citem_ver_id');
4094         x_return_status := FND_API.G_RET_STS_ERROR;
4095         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
4096         FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
4097         FND_MSG_PUB.ADD;
4098         RAISE FND_API.G_EXC_ERROR;
4099     END IF;
4100 
4101     -- checking if valid status
4102     IF (IBC_VALIDATE_PVT.isValidStatus(p_new_status) = FND_API.g_false) THEN
4103         --DBMS_OUTPUT.put_line('EX - p_status');
4104         x_return_status := FND_API.G_RET_STS_ERROR;
4105         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
4106         FND_MESSAGE.Set_Token('INPUT', 'p_status', FALSE);
4107         FND_MSG_PUB.ADD;
4108         RAISE FND_API.G_EXC_ERROR;
4109     END IF;
4110 
4111      IF (IBC_VALIDATE_PVT.isApproved(p_citem_ver_id) = FND_API.g_true) THEN
4112       x_return_status := FND_API.G_RET_STS_ERROR;
4113       FND_MESSAGE.Set_Name('IBC', 'UPDATE_APPROVED_ITEM_ERROR');
4114       FND_MSG_PUB.ADD;
4115       RAISE FND_API.G_EXC_ERROR;
4116     END IF;
4117 
4118     content_item_id := getCitemId(p_citem_ver_id);
4119     ctype_code := getContentType(content_item_id);
4120     dir_id := getDirectoryNodeId(content_item_id);
4121 
4122     -- ***************PERMISSION CHECK*********************************************************************
4123     IF (hasPermission(content_item_id) = FND_API.g_false) THEN                                         --|*|
4124         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
4125         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
4126        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                        --|*|
4127         FND_MSG_PUB.ADD;                                                                               --|*|
4128         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
4129     ELSIF(isItemAdmin(content_item_id) = FND_API.g_false) THEN                                         --|*|
4130        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
4131                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
4132                   ,p_instance_pk1_value    => content_item_id                                          --|*|
4133                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
4134                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
4135                   ,p_container_pk1_value   => dir_id                                                   --|*|
4136                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
4137                   ) = FND_API.g_false
4138             AND
4139             (p_new_status NOT IN (Ibc_Utilities_Pub.G_STV_APPROVED, IBC_UTILITIES_PUB.G_STV_REJECTED)
4140              OR
4141              IBC_DATA_SECURITY_PVT.has_permission(                                                     --|*|
4142                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
4143                   ,p_instance_pk1_value    => content_item_id                                          --|*|
4144                   ,p_permission_code       => 'CITEM_APPROVE'                                          --|*|
4145                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
4146                   ,p_container_pk1_value   => dir_id                                                   --|*|
4147                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
4148                   ) = FND_API.g_false                                                                              --|*|
4149              )
4150             ) THEN                                                                                     --|*|
4151            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
4152            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
4153          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
4154            FND_MSG_PUB.ADD;                                                                            --|*|
4155            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
4156       END IF;                                                                                          --|*|
4157     END IF;                                                                                            --|*|
4158     -- ***************PERMISSION CHECK*********************************************************************
4159 
4160 
4161     IF (p_new_status = Ibc_Utilities_Pub.G_STV_APPROVED ) THEN
4162         approve_item(
4163             p_citem_ver_id              => p_citem_ver_id
4164             ,p_api_version_number       => p_api_version_number
4165             ,px_object_version_number   => px_object_version_number
4166             ,x_return_status            => x_return_status
4167             ,x_msg_count                => x_msg_count
4168             ,x_msg_data                 => x_msg_data
4169         );
4170     ELSE
4171 
4172         --DBMS_OUTPUT.put_line('sending to update row with civid/ciid/stat/lang/ovn :'||p_citem_ver_id||' / '||content_item_id||' / '||p_new_status||' / '||p_language||' / '||px_object_version_number);
4173         -- update version status
4174         Ibc_Citem_Versions_Pkg.update_row(
4175             p_CITEM_VERSION_ID          => p_citem_ver_id
4176             ,p_content_item_id        => content_item_id
4177             ,p_CITEM_VERSION_STATUS   => p_new_status
4178             ,P_SOURCE_LANG            => p_language
4179             ,px_object_version_number => px_object_version_number
4180         );
4181 
4182 
4183                                    --***************************************************
4184                                    --************ADDING TO AUDIT LOG********************
4185                                    --***************************************************
4186                                    Ibc_Utilities_Pvt.log_action(
4187                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
4188                                        ,p_parent_value  => NULL
4189                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
4190                                        ,p_object_value1 => content_item_id
4191                                        ,p_object_value2 => NULL
4192                                        ,p_object_value3 => NULL
4193                                        ,p_object_value4 => NULL
4194                                        ,p_object_value5 => NULL
4195                                        ,p_description   => 'Updating version'
4196                                    );
4197 
4198                                    Ibc_Utilities_Pvt.log_action(
4199                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
4200                                        ,p_parent_value  => content_item_id
4201                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
4202                                        ,p_object_value1 => p_citem_ver_id
4203                                        ,p_object_value2 => NULL
4204                                        ,p_object_value3 => NULL
4205                                        ,p_object_value4 => NULL
4206                                        ,p_object_value5 => NULL
4207                                        ,p_description   => 'Updating version'
4208                                    );
4209                                    --***************************************************
4210         IF p_new_status = IBC_UTILITIES_PUB.G_STV_APPROVED THEN
4211           Ibc_Utilities_Pvt.log_action(
4212             p_activity       => Ibc_Utilities_Pvt.G_ALA_APPROVE
4213             ,p_parent_value  => content_item_id
4214             ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
4215             ,p_object_value1 => p_citem_ver_id
4216             ,p_object_value2 => NULL
4217             ,p_object_value3 => NULL
4218             ,p_object_value4 => NULL
4219             ,p_object_value5 => NULL
4220             ,p_description   => 'Approved'
4221           );
4222         ELSIF p_new_status = IBC_UTILITIES_PUB.G_STV_SUBMIT_FOR_APPROVAL THEN
4223           Ibc_Utilities_Pvt.log_action(
4224             p_activity       => Ibc_Utilities_Pvt.G_ALA_SUBMIT
4225             ,p_parent_value  => content_item_id
4226             ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
4227             ,p_object_value1 => p_citem_ver_id
4228             ,p_object_value2 => NULL
4229             ,p_object_value3 => NULL
4230             ,p_object_value4 => NULL
4231             ,p_object_value5 => NULL
4232             ,p_description   => 'Submitted for Approval'
4233           );
4234         ELSIF p_new_status = IBC_UTILITIES_PUB.G_STV_REJECTED THEN
4235           Ibc_Utilities_Pvt.log_action(
4236             p_activity       => Ibc_Utilities_Pvt.G_ALA_REJECT
4237             ,p_parent_value  => content_item_id
4238             ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
4239             ,p_object_value1 => p_citem_ver_id
4240             ,p_object_value2 => NULL
4241             ,p_object_value3 => NULL
4242             ,p_object_value4 => NULL
4243             ,p_object_value5 => NULL
4244             ,p_description   => 'Rejected'
4245           );
4246         ELSIF p_new_status = IBC_UTILITIES_PUB.G_STV_ARCHIVED THEN
4247           Ibc_Utilities_Pvt.log_action(
4248             p_activity       => Ibc_Utilities_Pvt.G_ALA_ARCHIVE
4249             ,p_parent_value  => content_item_id
4250             ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
4251             ,p_object_value1 => p_citem_ver_id
4252             ,p_object_value2 => NULL
4253             ,p_object_value3 => NULL
4254             ,p_object_value4 => NULL
4255             ,p_object_value5 => NULL
4256             ,p_description   => 'Archived'
4257           );
4258         END IF;
4259 
4260 
4261     END IF;
4262 
4263     -- COMMIT?
4264     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
4265         COMMIT;
4266     END IF;
4267 
4268     -- Standard call to get message count and if count is 1, get message info.
4269     FND_MSG_PUB.Count_And_Get(
4270         p_count           =>      x_msg_count,
4271         p_data            =>      x_msg_data
4272     );
4273 
4274     IF IBC_DEBUG_PVT.debug_enabled THEN
4275       IBC_DEBUG_PVT.end_process(
4276         IBC_DEBUG_PVT.make_parameter_list(
4277           p_tag    => 'OUTPUT',
4278           p_parms  => JTF_VARCHAR2_TABLE_4000(
4279                         'px_object_version_number', px_object_version_number,
4280                         'x_return_status', x_return_status,
4281                         'x_msg_count', x_msg_count,
4282                         'x_msg_data', x_msg_data
4283                       )
4284         )
4285       );
4286     END IF;
4287 
4288 EXCEPTION
4289     WHEN FND_API.G_EXC_ERROR THEN
4290       ROLLBACK TO svpt_change_status;
4291       --DBMS_OUTPUT.put_line('Expected Error');
4292       Ibc_Utilities_Pvt.handle_exceptions(
4293          p_api_name           => L_API_NAME
4294          ,p_pkg_name          => G_PKG_NAME
4295          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
4296          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
4297          ,p_sqlcode           => SQLCODE
4298          ,p_sqlerrm           => SQLERRM
4299          ,x_msg_count         => x_msg_count
4300          ,x_msg_data          => x_msg_data
4301          ,x_return_status     => x_return_status
4302       );
4303       IF IBC_DEBUG_PVT.debug_enabled THEN
4304         IBC_DEBUG_PVT.end_process(
4305           IBC_DEBUG_PVT.make_parameter_list(
4306             p_tag    => 'OUTPUT',
4307             p_parms  => JTF_VARCHAR2_TABLE_4000(
4308                           'px_object_version_number', px_object_version_number,
4309                           'x_return_status', x_return_status,
4310                           'x_msg_count', x_msg_count,
4311                           'x_msg_data', x_msg_data
4312                         )
4313           )
4314         );
4315       END IF;
4316   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4317       ROLLBACK TO svpt_change_status;
4318       --DBMS_OUTPUT.put_line('Unexpected error');
4319       Ibc_Utilities_Pvt.handle_exceptions(
4320          p_api_name           => L_API_NAME
4321          ,p_pkg_name          => G_PKG_NAME
4322          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
4323          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
4324          ,p_sqlcode           => SQLCODE
4325          ,p_sqlerrm           => SQLERRM
4326          ,x_msg_count         => x_msg_count
4327          ,x_msg_data          => x_msg_data
4328          ,x_return_status     => x_return_status
4329       );
4330       IF IBC_DEBUG_PVT.debug_enabled THEN
4331         IBC_DEBUG_PVT.end_process(
4332           IBC_DEBUG_PVT.make_parameter_list(
4333             p_tag    => 'OUTPUT',
4334             p_parms  => JTF_VARCHAR2_TABLE_4000(
4335                           'px_object_version_number', px_object_version_number,
4336                           'x_return_status', x_return_status,
4337                           'x_msg_count', x_msg_count,
4338                           'x_msg_data', x_msg_data
4339                         )
4340           )
4341         );
4342       END IF;
4343   WHEN OTHERS THEN
4344       ROLLBACK TO svpt_change_status;
4345       --DBMS_OUTPUT.put_line('Other error');
4346       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
4347          p_api_name           => L_API_NAME
4348          ,p_pkg_name          => G_PKG_NAME
4349          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
4350          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
4351          ,p_sqlcode           => SQLCODE
4352          ,p_sqlerrm           => SQLERRM
4353          ,x_msg_count         => x_msg_count
4354          ,x_msg_data          => x_msg_data
4355          ,x_return_status     => x_return_status
4356       );
4357       IF IBC_DEBUG_PVT.debug_enabled THEN
4358         IBC_DEBUG_PVT.end_process(
4359           IBC_DEBUG_PVT.make_parameter_list(
4360             p_tag    => 'OUTPUT',
4361             p_parms  => JTF_VARCHAR2_TABLE_4000(
4362                           'px_object_version_number', px_object_version_number,
4363                           'x_return_status', x_return_status,
4364                           'x_msg_count', x_msg_count,
4365                           'x_msg_data', x_msg_data,
4366                           'EXCEPTION', SQLERRM
4367                         )
4368           )
4369         );
4370       END IF;
4371  END;
4372 
4373 -- --------------------------------------------------------------
4374 -- COPY ITEM
4375 --
4376 -- Valid content item id or citem version id must be given.  If
4377 -- version id is given, a copy will be made of that version.  If version
4378 -- id is not given and valid content item id is given, a copy of the
4379 -- newest version of that item will be created.
4380 --
4381 -- Both in/out variables will be populated with the newly created info.
4382 --
4383 -- --------------------------------------------------------------
4384 -----------------------------------------------------------------
4385 -- 11.5.10 Requirement Content Item Name must be unique with in a Folder
4386 -- While Copying a Content Item accept the Name of the New Content Item as a
4387 -- parameter.
4388 ------------------------------------------------------------------
4389 PROCEDURE copy_item(
4390     p_item_reference_code       IN VARCHAR2
4391     ,p_new_citem_name   IN VARCHAR2
4392     ,p_directory_node_id        IN NUMBER
4393     ,p_language                 IN VARCHAR2
4394     ,p_commit                   IN VARCHAR2
4395     ,p_api_version_number       IN NUMBER
4396     ,p_init_msg_list            IN VARCHAR2
4397     ,px_content_item_id         IN OUT NOCOPY NUMBER
4398     ,px_citem_ver_id            IN OUT NOCOPY NUMBER
4399     ,px_object_version_number   IN OUT NOCOPY NUMBER
4400     ,x_return_status            OUT NOCOPY VARCHAR2
4401     ,x_msg_count                OUT NOCOPY NUMBER
4402     ,x_msg_data                 OUT NOCOPY VARCHAR2
4403 )
4404 IS
4405 --******************* BEGIN REQUIRED VARIABLES *************************
4406   l_api_name CONSTANT VARCHAR2(30) := 'copy_item';               --|**|
4407   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
4408 --******************* END REQUIRED VARIABLES ***************************
4409     row_id  VARCHAR2(250);  -- required for use with table handlers
4410     lang IBC_CITEM_VERSIONS_TL.LANGUAGE%TYPE;
4411     new_citem_id NUMBER;
4412     new_citem_ver_id NUMBER;
4413     l_new_citem_name  VARCHAR2(240) := p_new_citem_name;
4414 
4415     o_ctype_code IBC_CONTENT_ITEMS.content_type_code%TYPE;
4416     o_dir_node NUMBER;
4417     o_parent_id NUMBER;
4418     o_wd_flag IBC_CONTENT_ITEMS.wd_restricted_flag%TYPE;
4419     o_trans_flag IBC_CONTENT_ITEMS.translation_required_flag%TYPE;
4420 
4421     CURSOR c_old_item IS
4422         SELECT
4423             content_type_code
4424             ,directory_node_id
4425             ,parent_item_id
4426             ,wd_restricted_flag
4427             ,translation_required_flag
4428         FROM
4429             IBC_CONTENT_ITEMS
4430         WHERE
4431             content_item_id = px_content_item_id;
4432 
4433     /*
4434     -- sanshuma : 25-NOV-2004 : commenting out copy associations to fix bug#4020980.
4435 
4436     associations VARCHAR2(1000) := 'SELECT
4437                                         association_type_code
4438                                         ,associated_object_val1
4439                                         ,associated_object_val2
4440                                         ,associated_object_val3
4441                                         ,associated_object_val4
4442                                         ,associated_object_val5
4443                                         ,citem_version_id
4444                                     FROM
4445                                         IBC_ASSOCIATIONS
4446                                     WHERE
4447                                         content_item_id = :CID
4448                                       AND (
4449                                         (citem_version_id IS NULL) OR
4450                                         (citem_version_id = :CIVID)
4451                                           )
4452                                     ';
4453    cursor_id INTEGER;  -- dynamic sql variable
4454    cursor_return INTEGER; -- dynamic sql variable
4455 
4456    atc IBC_ASSOCIATIONS.association_type_code%TYPE; -- temp loop association type code
4457    aov1 IBC_ASSOCIATIONS.associated_object_val1%TYPE; -- temp loop associated object code
4458    aov2 IBC_ASSOCIATIONS.associated_object_val2%TYPE; -- temp loop associated object code
4459    aov3 IBC_ASSOCIATIONS.associated_object_val3%TYPE; -- temp loop associated object code
4460    aov4 IBC_ASSOCIATIONS.associated_object_val4%TYPE; -- temp loop associated object code
4461    aov5 IBC_ASSOCIATIONS.associated_object_val5%TYPE; -- temp loop associated object code
4462    civid IBC_ASSOCIATIONS.citem_version_id%TYPE; -- temp loop for citem version id
4463 
4464    assoc_id NUMBER; --temp holder of newly created association id
4465 
4466    */
4467 
4468 
4469     CURSOR c_keywords(p_content_item_id NUMBER) IS
4470       SELECT keyword
4471         FROM ibc_citem_keywords
4472        WHERE content_item_id = p_content_item_id;
4473 
4474 BEGIN
4475   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
4476 --******************* BEGIN REQUIRED AREA ******************************
4477       SAVEPOINT svpt_copy_item;                                   --|**|
4478       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
4479         FND_MSG_PUB.initialize;                                   --|**|
4480       END IF;                                                     --|**|
4481                                                                   --|**|
4482       -- Standard call to check for call compatibility.           --|**|
4483       IF NOT FND_API.Compatible_API_Call (                        --|**|
4484             l_api_version_number                                  --|**|
4485       ,p_api_version_number                                    --|**|
4486       ,l_api_name                                              --|**|
4487       ,G_PKG_NAME                                              --|**|
4488       )THEN                                                       --|**|
4489        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
4490       END IF;                                                     --|**|
4491                                                                   --|**|
4492       -- Initialize API return status to SUCCESS                  --|**|
4493       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
4494 --******************* END REQUIRED AREA ********************************
4495 
4496     IF IBC_DEBUG_PVT.debug_enabled THEN
4497       IBC_DEBUG_PVT.start_process(
4498          p_proc_type  => 'PROCEDURE',
4499          p_proc_name  => 'Copy_Item',
4500          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
4501                            p_tag     => 'PARAMETERS',
4502                            p_parms   => JTF_VARCHAR2_TABLE_4000(
4503                                           'p_item_reference_code', p_item_reference_code,
4504                                           'p_directory_node_id', p_directory_node_id,
4505                                           'p_language', p_language,
4506                                           'p_commit', p_commit,
4507                                           'p_api_version_number', p_api_version_number,
4508                                           'p_init_msg_list', p_init_msg_list,
4509                                           'px_content_item_id', px_content_item_id,
4510                                           'px_citem_ver_id', px_citem_ver_id,
4511                                           'px_object_version_number', px_object_version_number
4512                                         )
4513                            )
4514       );
4515     END IF;
4516 
4517    IF (px_object_version_number IS NULL) THEN
4518       px_object_version_number := 1;
4519    END IF;
4520 
4521    -- Filling in version id if non-existent
4522    IF ( (px_citem_ver_id IS NULL) OR (IBC_VALIDATE_PVT.isValidCitemVer(px_citem_ver_id) = FND_API.g_false) ) THEN
4523        IF (px_content_item_id IS NULL) THEN
4524          --DBMS_OUTPUT.put_line('EX - content_item_id');
4525          x_return_status := FND_API.G_RET_STS_ERROR;
4526          FND_MESSAGE.Set_Name('IBC', 'IBC_INPUT_REQUIRED');
4527          FND_MESSAGE.Set_Token('INPUT', 'px_content_item_id', FALSE);
4528          FND_MSG_PUB.ADD;
4529          RAISE FND_API.G_EXC_ERROR;
4530        END IF;
4531        -- getting item that needs to be copied
4532        IF (IBC_VALIDATE_PVT.isValidCitem(px_content_item_id) = FND_API.g_false) THEN
4533          --DBMS_OUTPUT.put_line('EX - content_item_id');
4534          x_return_status := FND_API.G_RET_STS_ERROR;
4535          FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
4536          FND_MESSAGE.Set_Token('INPUT', 'px_content_item_id', FALSE);
4537          FND_MSG_PUB.ADD;
4538          RAISE FND_API.G_EXC_ERROR;
4539        END IF;
4540        px_citem_ver_id := getMaxVersionId(px_content_item_id);
4541    ELSE
4542       -- using derived content item id to make sure that it is valid regardless if it were provided
4543       px_content_item_id := getCitemId(px_citem_ver_id);
4544    END IF;
4545 
4546 
4547    -- Validating uniqueness for item_reference_code
4548    IF exist_item_reference_code(p_item_reference_code, NULL) THEN
4549      x_return_status := FND_API.G_RET_STS_ERROR;
4550      FND_MESSAGE.Set_Name('IBC', 'IBC_DUPLICATE_ITEM_REF_CODE');
4551      FND_MSG_PUB.ADD;
4552      RAISE FND_API.G_EXC_ERROR;
4553    END IF;
4554 
4555     OPEN c_old_item;
4556 
4557     FETCH
4558         c_old_item
4559     INTO
4560         o_ctype_code
4561         ,o_dir_node
4562         ,o_parent_id
4563         ,o_wd_flag
4564         ,o_trans_flag;
4565 
4566     IF(c_old_item%NOTFOUND) THEN
4567         CLOSE c_old_item;
4568         --DBMS_OUTPUT.put_line('EX - content_item_id');
4569         x_return_status := FND_API.G_RET_STS_ERROR;
4570        FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
4571         FND_MESSAGE.Set_Token('INPUT', 'p_content_item_id', FALSE);
4572         FND_MSG_PUB.ADD;
4573         RAISE FND_API.G_EXC_ERROR;
4574     END IF;
4575 
4576     -- setting language variable
4577     IF (p_language IS NULL) THEN
4578         lang := USERENV('LANG');
4579     ELSE
4580         lang := p_language;
4581     END IF;
4582 
4583 --
4584 -- srrangar added this code to fix bug#3351929
4585 -- User should have Manage Item Privs on the Folder to be able to
4586 -- Copy the Item.
4587 --
4588 
4589              -- ***************PERMISSION CHECK*********************************************************************
4590              IF( IBC_DATA_SECURITY_PVT.has_permission(                                                          --|*|
4591                          p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')    --|*|
4592                          ,p_instance_pk1_value    => NULL                                                       --|*|
4593                          ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
4594                          ,p_container_pk1_value   => NVL(p_directory_node_id, o_dir_node)                                          --|*|
4595                          ,p_permission_code       => 'CITEM_EDIT'                                               --|*|
4596                          ,p_current_user_id       => FND_GLOBAL.user_id                                         --|*|
4597                          ) = FND_API.g_false                                                                    --|*|
4598                    ) THEN                                                                                       --|*|
4599                   --DBMS_OUTPUT.put_line('EX - no permissions');                                                --|*|
4600                   x_return_status := FND_API.G_RET_STS_ERROR;                                                   --|*|
4601                    FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                         --|*|
4602                   FND_MSG_PUB.ADD;                                                                              --|*|
4603                   RAISE FND_API.G_EXC_ERROR;                                                                    --|*|
4604                END IF;                                                                                            --|*|
4605                -- ***************PERMISSION CHECK*********************************************************************
4606 
4607 
4608     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4609     -- ******* GOT INFO, NOW CREATE! ************************************
4610         IBC_CONTENT_ITEMS_PKG.insert_row(
4611            x_rowid                      => row_id
4612            ,px_content_item_id          => new_citem_id
4613            ,p_content_type_code         => o_ctype_code
4614            ,p_item_reference_code       => p_item_reference_code
4615            ,p_directory_node_id         => NVL(p_directory_node_id, o_dir_node)
4616            ,p_live_citem_version_id     => NULL
4617            ,p_content_item_status       => IBC_UTILITIES_PUB.G_STI_PENDING
4618            ,p_locked_by_user_id         => NULL
4619            ,p_wd_restricted_flag        => o_wd_flag
4620            ,p_base_language             => lang
4621            ,p_translation_required_flag => o_trans_flag
4622            ,p_owner_resource_id         => FND_GLOBAL.USER_ID
4623            ,p_owner_resource_type       => 'USER'
4624            ,p_application_id            => NULL
4625            ,p_parent_item_id            => NULL
4626            ,p_request_id                => NULL
4627            ,p_object_version_number     => px_object_version_number
4628         );
4629 
4630      -- ******* COPY VERSION ********************************************
4631          copy_version_int(
4632             p_language                  => lang
4633       ,p_new_citem_name   => l_new_citem_name
4634             ,px_content_item_id         => new_citem_id
4635             ,px_citem_ver_id            => px_citem_ver_id
4636             ,px_object_version_number   => px_object_version_number
4637             ,x_return_status            => x_return_status
4638             ,x_msg_count                => x_msg_count
4639             ,x_msg_data                 => x_msg_data
4640          );
4641 
4642     -- ***** COPY KEYWORDS ********************************************
4643         FOR r_keyword IN c_keywords(px_content_item_id) LOOP
4644           IBC_CITEM_KEYWORDS_PKG.insert_row(
4645             x_rowid                  => row_id
4646             ,p_content_item_id       => new_citem_id
4647             ,p_keyword               => r_keyword.keyword
4648             ,p_object_version_number => 1
4649          );
4650         END LOOP;
4651 
4652 
4653     -- ******* COPY ASSOCIATIONS ********************************************
4654 
4655         /*
4656         -- sanshuma : 25-NOV-2004 : commenting out copy associations to fix bug#4020980.
4657 
4658         -- looping through all components of this attribute type
4659         cursor_id := DBMS_SQL.OPEN_CURSOR;
4660         DBMS_SQL.PARSE(cursor_id,associations, DBMS_SQL.V7);
4661         -- bind variables
4662         DBMS_SQL.BIND_VARIABLE(cursor_id,':CID',px_content_item_id);
4663         DBMS_SQL.BIND_VARIABLE(cursor_id,':CIVID',px_citem_ver_id);
4664         -- define output variables
4665         DBMS_SQL.DEFINE_COLUMN(cursor_id, 1, atc, 100);
4666         DBMS_SQL.DEFINE_COLUMN(cursor_id, 2, aov1, 254);
4667         DBMS_SQL.DEFINE_COLUMN(cursor_id, 3, aov2, 254);
4668         DBMS_SQL.DEFINE_COLUMN(cursor_id, 4, aov3, 254);
4669         DBMS_SQL.DEFINE_COLUMN(cursor_id, 5, aov4, 254);
4670         DBMS_SQL.DEFINE_COLUMN(cursor_id, 6, aov5, 254);
4671 
4672         -- executing cursor
4673         cursor_return := DBMS_SQL.EXECUTE(cursor_id);
4674 
4675         -- VALIDATION LOOP
4676         LOOP
4677             IF (DBMS_SQL.FETCH_ROWS(cursor_id) = 0) THEN
4678                 EXIT;
4679             END IF;
4680 
4681             --resetting id
4682             assoc_id := null;
4683 
4684             -- loading column values
4685             DBMS_SQL.COLUMN_VALUE(cursor_id, 1, atc);
4686             DBMS_SQL.COLUMN_VALUE(cursor_id, 2, aov1);
4687             DBMS_SQL.COLUMN_VALUE(cursor_id, 3, aov2);
4688             DBMS_SQL.COLUMN_VALUE(cursor_id, 4, aov3);
4689             DBMS_SQL.COLUMN_VALUE(cursor_id, 5, aov4);
4690             DBMS_SQL.COLUMN_VALUE(cursor_id, 6, aov5);
4691             DBMS_SQL.COLUMN_VALUE(cursor_id, 7, civid);
4692 
4693 
4694             IF civid IS NOT NULL THEN
4695               civid := px_citem_ver_id;
4696             END IF;
4697 
4698             -- copying every row
4699             Ibc_Associations_Pkg.insert_row (
4700                 px_association_id           => assoc_id
4701                 ,p_content_item_id          => new_citem_id
4702                 ,p_citem_version_id         => civid
4703                 ,p_association_type_code  => atc
4704                 ,p_associated_object_val1   => aov1
4705                 ,p_associated_object_val2   => aov2
4706                 ,p_associated_object_val3   => aov3
4707                 ,p_associated_object_val4   => aov4
4708                 ,p_associated_object_val5   => aov5
4709                 ,p_object_version_number  => G_OBJ_VERSION_DEFAULT
4710                 ,x_rowid            => row_id
4711             );
4712 
4713 
4714         END LOOP;
4715         -- clean up!
4716         DBMS_SQL.CLOSE_CURSOR(cursor_id);
4717 
4718         */
4719 
4720     END IF;  -- END ASSOCIATION COPYING
4721 
4722     -- setting value for return
4723     px_content_item_id := new_citem_id;
4724 
4725     -- COMMIT?
4726     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4727       IF (p_commit = FND_API.g_true) THEN
4728         COMMIT;
4729       END IF;
4730     ELSIF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
4731       RAISE FND_API.G_EXC_ERROR;
4732     ELSIF(x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4733       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4734     END IF;
4735 
4736     -- Standard call to get message count and if count is 1, get message info.
4737     FND_MSG_PUB.Count_And_Get(
4738         p_count           =>      x_msg_count,
4739         p_data            =>      x_msg_data
4740     );
4741 
4742   IF IBC_DEBUG_PVT.debug_enabled THEN
4743     IBC_DEBUG_PVT.end_process(
4744       IBC_DEBUG_PVT.make_parameter_list(
4745         p_tag    => 'OUTPUT',
4746         p_parms  => JTF_VARCHAR2_TABLE_4000(
4747                       'px_content_item_id', px_content_item_id,
4748                       'px_citem_ver_id', px_citem_ver_id,
4749                       'px_object_version_number', px_object_version_number,
4750                       'x_return_status', x_return_status,
4751                       'x_msg_count', x_msg_count,
4752                       'x_msg_data', x_msg_data
4753                     )
4754       )
4755     );
4756   END IF;
4757 
4758 EXCEPTION
4759     WHEN FND_API.G_EXC_ERROR THEN
4760       ROLLBACK TO svpt_copy_item;
4761       --DBMS_OUTPUT.put_line('Expected Error');
4762       Ibc_Utilities_Pvt.handle_exceptions(
4763          p_api_name           => L_API_NAME
4764          ,p_pkg_name          => G_PKG_NAME
4765          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
4766          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
4767          ,p_sqlcode           => SQLCODE
4768          ,p_sqlerrm           => SQLERRM
4769          ,x_msg_count         => x_msg_count
4770          ,x_msg_data          => x_msg_data
4771          ,x_return_status     => x_return_status
4772        );
4773       IF IBC_DEBUG_PVT.debug_enabled THEN
4774         IBC_DEBUG_PVT.end_process(
4775           IBC_DEBUG_PVT.make_parameter_list(
4776             p_tag    => 'OUTPUT',
4777             p_parms  => JTF_VARCHAR2_TABLE_4000(
4778                           'px_content_item_id', px_content_item_id,
4779                           'px_citem_ver_id', px_citem_ver_id,
4780                           'px_object_version_number', px_object_version_number,
4781                           'x_return_status', x_return_status,
4782                           'x_msg_count', x_msg_count,
4783                           'x_msg_data', x_msg_data
4784                         )
4785           )
4786         );
4787       END IF;
4788   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4789       ROLLBACK TO svpt_copy_item;
4790       --DBMS_OUTPUT.put_line('Unexpected error');
4791       Ibc_Utilities_Pvt.handle_exceptions(
4792          p_api_name           => L_API_NAME
4793          ,p_pkg_name          => G_PKG_NAME
4794          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
4795          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
4796          ,p_sqlcode           => SQLCODE
4797          ,p_sqlerrm           => SQLERRM
4798          ,x_msg_count         => x_msg_count
4799          ,x_msg_data          => x_msg_data
4800          ,x_return_status     => x_return_status
4801       );
4802       IF IBC_DEBUG_PVT.debug_enabled THEN
4803         IBC_DEBUG_PVT.end_process(
4804           IBC_DEBUG_PVT.make_parameter_list(
4805             p_tag    => 'OUTPUT',
4806             p_parms  => JTF_VARCHAR2_TABLE_4000(
4807                           'px_content_item_id', px_content_item_id,
4808                           'px_citem_ver_id', px_citem_ver_id,
4809                           'px_object_version_number', px_object_version_number,
4810                           'x_return_status', x_return_status,
4811                           'x_msg_count', x_msg_count,
4812                           'x_msg_data', x_msg_data
4813                         )
4814           )
4815         );
4816       END IF;
4817   WHEN OTHERS THEN
4818       ROLLBACK TO svpt_copy_item;
4819       --DBMS_OUTPUT.put_line('Other error');
4820       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
4821          p_api_name           => L_API_NAME
4822          ,p_pkg_name          => G_PKG_NAME
4823          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
4824          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
4825          ,p_sqlcode           => SQLCODE
4826          ,p_sqlerrm           => SQLERRM
4827          ,x_msg_count         => x_msg_count
4828          ,x_msg_data          => x_msg_data
4829          ,x_return_status     => x_return_status
4830       );
4831       IF IBC_DEBUG_PVT.debug_enabled THEN
4832         IBC_DEBUG_PVT.end_process(
4833           IBC_DEBUG_PVT.make_parameter_list(
4834             p_tag    => 'OUTPUT',
4835             p_parms  => JTF_VARCHAR2_TABLE_4000(
4836                           'px_content_item_id', px_content_item_id,
4837                           'px_citem_ver_id', px_citem_ver_id,
4838                           'px_object_version_number', px_object_version_number,
4839                           'x_return_status', x_return_status,
4840                           'x_msg_count', x_msg_count,
4841                           'x_msg_data', x_msg_data,
4842                           'EXCEPTION', SQLERRM
4843                         )
4844           )
4845         );
4846       END IF;
4847  END;
4848 
4849 -- --------------------------------------------------------------
4850 -- COPY ITEM
4851 -- --------------------------------------------------------------
4852 -- Overloaded New Content Item Name is not passed for backward compatibility
4853 --
4854 PROCEDURE copy_item(
4855     p_item_reference_code       IN VARCHAR2
4856     ,p_directory_node_id        IN NUMBER
4857     ,p_language                 IN VARCHAR2
4858     ,p_commit                   IN VARCHAR2
4859     ,p_api_version_number       IN NUMBER
4860     ,p_init_msg_list            IN VARCHAR2
4861     ,px_content_item_id         IN OUT NOCOPY NUMBER
4862     ,px_citem_ver_id            IN OUT NOCOPY NUMBER
4863     ,px_object_version_number   IN OUT NOCOPY NUMBER
4864     ,x_return_status            OUT NOCOPY VARCHAR2
4865     ,x_msg_count                OUT NOCOPY NUMBER
4866     ,x_msg_data                 OUT NOCOPY VARCHAR2
4867 )
4868 IS
4869 
4870 BEGIN
4871   copy_item(
4872     p_item_reference_code     => p_item_reference_code
4873     ,p_new_citem_name       => NULL
4874     ,p_directory_node_id      => p_directory_node_id
4875     ,p_language               => p_language
4876     ,p_commit                 => p_commit
4877     ,p_api_version_number     => p_api_version_number
4878     ,p_init_msg_list          => p_init_msg_list
4879     ,px_content_item_id       => px_content_item_id
4880     ,px_citem_ver_id          => px_citem_ver_id
4881     ,px_object_version_number => px_object_version_number
4882     ,x_return_status          => x_return_status
4883     ,x_msg_count              => x_msg_count
4884     ,x_msg_data               => x_msg_data
4885   );
4886 EXCEPTION
4887   WHEN OTHERS THEN
4888     RAISE;
4889 END;
4890 
4891 -- Overloaded: No directory node id passed
4892 PROCEDURE copy_item(
4893     p_item_reference_code       IN VARCHAR2
4894     ,p_language                 IN VARCHAR2
4895     ,p_commit                   IN VARCHAR2
4896     ,p_api_version_number       IN NUMBER
4897     ,p_init_msg_list            IN VARCHAR2
4898     ,px_content_item_id         IN OUT NOCOPY NUMBER
4899     ,px_citem_ver_id            IN OUT NOCOPY NUMBER
4900     ,px_object_version_number   IN OUT NOCOPY NUMBER
4901     ,x_return_status            OUT NOCOPY VARCHAR2
4902     ,x_msg_count                OUT NOCOPY NUMBER
4903     ,x_msg_data                 OUT NOCOPY VARCHAR2
4904 )
4905 IS
4906 BEGIN
4907   copy_item(
4908     p_item_reference_code     => p_item_reference_code
4909     ,p_directory_node_id      => NULL
4910     ,p_language               => p_language
4911     ,p_commit                 => p_commit
4912     ,p_api_version_number     => p_api_version_number
4913     ,p_init_msg_list          => p_init_msg_list
4914     ,px_content_item_id       => px_content_item_id
4915     ,px_citem_ver_id          => px_citem_ver_id
4916     ,px_object_version_number => px_object_version_number
4917     ,x_return_status          => x_return_status
4918     ,x_msg_count              => x_msg_count
4919     ,x_msg_data               => x_msg_data
4920   );
4921 EXCEPTION
4922   WHEN OTHERS THEN
4923     RAISE;
4924 END copy_item;
4925 
4926 -- --------------------------------------------------------------
4927 -- COPY VERSION
4928 --
4929 -- Valid content item id or citem version id must be given.  If
4930 -- version id is given, a copy will be made of that version.  If version
4931 -- id is not given and valid content item id is given, a copy of the
4932 -- newest version of that item will be created.
4933 --
4934 -- Both in/out variables will be populated with the newly created info.
4935 --
4936 -- If both variables are given, the content item id is assumed to be
4937 -- the new one for it...  in this case, object version number should
4938 -- be null.
4939 -- --------------------------------------------------------------
4940 PROCEDURE copy_version(
4941     p_language                  IN VARCHAR2
4942     ,p_commit                   IN VARCHAR2
4943     ,p_api_version_number       IN NUMBER
4944     ,p_init_msg_list            IN VARCHAR2
4945     ,px_content_item_id         IN OUT NOCOPY NUMBER
4946     ,px_citem_ver_id            IN OUT NOCOPY NUMBER
4947     ,px_object_version_number   IN OUT NOCOPY NUMBER
4948     ,x_return_status            OUT NOCOPY VARCHAR2
4949     ,x_msg_count                OUT NOCOPY NUMBER
4950     ,x_msg_data                 OUT NOCOPY VARCHAR2
4951 )
4952 IS
4953 --******************* BEGIN REQUIRED VARIABLES *************************
4954   l_api_name CONSTANT VARCHAR2(30) := 'copy_version';            --|**|
4955   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
4956 --******************* END REQUIRED VARIABLES ***************************
4957     lang IBC_CITEM_VERSIONS_TL.LANGUAGE%TYPE;
4958 
4959 BEGIN
4960   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
4961 --******************* BEGIN REQUIRED AREA ******************************
4962       SAVEPOINT svpt_copy_version;                                --|**|
4963       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
4964         FND_MSG_PUB.initialize;                                   --|**|
4965       END IF;                                                     --|**|
4966                                                                   --|**|
4967       -- Standard call to check for call compatibility.           --|**|
4968       IF NOT FND_API.Compatible_API_Call (                        --|**|
4969             l_api_version_number                                  --|**|
4970          ,p_api_version_number                                 --|**|
4971          ,l_api_name                                           --|**|
4972          ,G_PKG_NAME                                           --|**|
4973       )THEN                                                       --|**|
4974        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
4975       END IF;                                                     --|**|
4976                                                                   --|**|
4977       -- Initialize API return status to SUCCESS                  --|**|
4978       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
4979 --******************* END REQUIRED AREA ********************************
4980 
4981    IF IBC_DEBUG_PVT.debug_enabled THEN
4982      IBC_DEBUG_PVT.start_process(
4983         p_proc_type  => 'PROCEDURE',
4984         p_proc_name  => 'Copy_Version',
4985         p_parms      => IBC_DEBUG_PVT.make_parameter_list(
4986                           p_tag     => 'PARAMETERS',
4987                           p_parms   => JTF_VARCHAR2_TABLE_4000(
4988                                          'p_language', p_language,
4989                                          'p_commit', p_commit,
4990                                          'p_api_version_number', p_api_version_number,
4991                                          'p_init_msg_list', p_init_msg_list,
4992                                          'px_content_item_id', px_content_item_id,
4993                                          'px_citem_ver_id', px_citem_ver_id,
4994                                          'px_object_version_number', px_object_version_number
4995                                        )
4996                           )
4997      );
4998    END IF;
4999 
5000    -- Filling in version id if non-existent
5001    IF ( (px_citem_ver_id IS NULL) OR (IBC_VALIDATE_PVT.isValidCitemVer(px_citem_ver_id) = FND_API.g_false) ) THEN
5002        -- getting item that needs to be copied
5003        IF ( (px_content_item_id IS NULL) OR (IBC_VALIDATE_PVT.isValidCitem(px_content_item_id) = FND_API.g_false) ) THEN
5004          --DBMS_OUTPUT.put_line('EX - content_item_id');
5005          x_return_status := FND_API.G_RET_STS_ERROR;
5006          FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
5007          FND_MESSAGE.Set_Token('INPUT', 'px_content_item_id/px_citem_ver_id combination', FALSE);
5008          FND_MSG_PUB.ADD;
5009          RAISE FND_API.G_EXC_ERROR;
5010        ELSE
5011            px_citem_ver_id := getMaxVersionId(px_content_item_id);
5012        END IF;
5013    ELSE
5014       -- using derived content item id to make sure that it is valid regardless if it were provided
5015       px_content_item_id := getCitemId(px_citem_ver_id);
5016    END IF;
5017 
5018     -- setting language variable
5019     IF (p_language IS NULL) THEN
5020         lang := USERENV('LANG');
5021     ELSE
5022         lang := p_language;
5023     END IF;
5024 
5025    IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
5026       copy_version_int(
5027          p_language                  => lang
5028    ,p_new_citem_name       => NULL
5029          ,px_content_item_id         => px_content_item_id
5030          ,px_citem_ver_id            => px_citem_ver_id
5031          ,px_object_version_number   => px_object_version_number
5032          ,x_return_status            => x_return_status
5033          ,x_msg_count                => x_msg_count
5034          ,x_msg_data                 => x_msg_data
5035       );
5036    END IF;
5037 
5038     -- COMMIT?
5039     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
5040       IF (p_commit = FND_API.g_true) THEN
5041         COMMIT;
5042       END IF;
5043     ELSIF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
5044       RAISE FND_API.G_EXC_ERROR;
5045     ELSIF(x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5046       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5047     END IF;
5048 
5049     -- Standard call to get message count and if count is 1, get message info.
5050     FND_MSG_PUB.Count_And_Get(
5051         p_count           =>      x_msg_count,
5052         p_data            =>      x_msg_data
5053     );
5054 
5055     IF IBC_DEBUG_PVT.debug_enabled THEN
5056       IBC_DEBUG_PVT.end_process(
5057         IBC_DEBUG_PVT.make_parameter_list(
5058           p_tag    => 'OUTPUT',
5059           p_parms  => JTF_VARCHAR2_TABLE_4000(
5060                         'px_content_item_id', px_content_item_id,
5061                         'px_citem_ver_id', px_citem_ver_id,
5062                         'px_object_version_number', px_object_version_number,
5063                         'x_return_status', x_return_status,
5064                         'x_msg_count', x_msg_count,
5065                         'x_msg_data', x_msg_data
5066                       )
5067         )
5068       );
5069     END IF;
5070 
5071 EXCEPTION
5072     WHEN FND_API.G_EXC_ERROR THEN
5073       ROLLBACK TO svpt_copy_version;
5074       --DBMS_OUTPUT.put_line('Expected Error');
5075       Ibc_Utilities_Pvt.handle_exceptions(
5076          p_api_name           => L_API_NAME
5077          ,p_pkg_name          => G_PKG_NAME
5078          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
5079          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
5080          ,p_sqlcode           => SQLCODE
5081          ,p_sqlerrm           => SQLERRM
5082          ,x_msg_count         => x_msg_count
5083          ,x_msg_data          => x_msg_data
5084          ,x_return_status     => x_return_status
5085       );
5086       IF IBC_DEBUG_PVT.debug_enabled THEN
5087         IBC_DEBUG_PVT.end_process(
5088           IBC_DEBUG_PVT.make_parameter_list(
5089             p_tag    => 'OUTPUT',
5090             p_parms  => JTF_VARCHAR2_TABLE_4000(
5091                           'px_content_item_id', px_content_item_id,
5092                           'px_citem_ver_id', px_citem_ver_id,
5093                           'px_object_version_number', px_object_version_number,
5094                           'x_return_status', x_return_status,
5095                           'x_msg_count', x_msg_count,
5096                           'x_msg_data', x_msg_data
5097                         )
5098           )
5099         );
5100       END IF;
5101   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5102       ROLLBACK TO svpt_copy_version;
5103       --DBMS_OUTPUT.put_line('Unexpected error');
5104       Ibc_Utilities_Pvt.handle_exceptions(
5105          p_api_name           => L_API_NAME
5106          ,p_pkg_name          => G_PKG_NAME
5107          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
5108          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
5109          ,p_sqlcode           => SQLCODE
5110          ,p_sqlerrm           => SQLERRM
5111          ,x_msg_count         => x_msg_count
5112          ,x_msg_data          => x_msg_data
5113          ,x_return_status     => x_return_status
5114       );
5115       IF IBC_DEBUG_PVT.debug_enabled THEN
5116         IBC_DEBUG_PVT.end_process(
5117           IBC_DEBUG_PVT.make_parameter_list(
5118             p_tag    => 'OUTPUT',
5119             p_parms  => JTF_VARCHAR2_TABLE_4000(
5120                           'px_content_item_id', px_content_item_id,
5121                           'px_citem_ver_id', px_citem_ver_id,
5122                           'px_object_version_number', px_object_version_number,
5123                           'x_return_status', x_return_status,
5124                           'x_msg_count', x_msg_count,
5125                           'x_msg_data', x_msg_data
5126                         )
5127           )
5128         );
5129       END IF;
5130   WHEN OTHERS THEN
5131       ROLLBACK TO svpt_copy_version;
5132       --DBMS_OUTPUT.put_line('Other error');
5133       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
5134          p_api_name           => L_API_NAME
5135          ,p_pkg_name          => G_PKG_NAME
5136          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
5137          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
5138          ,p_sqlcode           => SQLCODE
5139          ,p_sqlerrm           => SQLERRM
5140          ,x_msg_count         => x_msg_count
5141          ,x_msg_data          => x_msg_data
5142          ,x_return_status     => x_return_status
5143       );
5144       IF IBC_DEBUG_PVT.debug_enabled THEN
5145         IBC_DEBUG_PVT.end_process(
5146           IBC_DEBUG_PVT.make_parameter_list(
5147             p_tag    => 'OUTPUT',
5148             p_parms  => JTF_VARCHAR2_TABLE_4000(
5149                           'px_content_item_id', px_content_item_id,
5150                           'px_citem_ver_id', px_citem_ver_id,
5151                           'px_object_version_number', px_object_version_number,
5152                           'x_return_status', x_return_status,
5153                           'x_msg_count', x_msg_count,
5154                           'x_msg_data', x_msg_data,
5155                           'EXCEPTION', SQLERRM
5156                         )
5157           )
5158         );
5159       END IF;
5160  END;
5161 
5162 -- --------------------------------------------------------------
5163 -- DELETE COMPONENT
5164 --
5165 -- Used to remove a component item from a content item.
5166 --
5167 --
5168 --
5169 -- --------------------------------------------------------------
5170 PROCEDURE delete_component(
5171     p_attribute_type_code       IN VARCHAR2
5172     ,p_citem_ver_id             IN NUMBER
5173     ,p_content_item_id          IN NUMBER
5174     ,p_commit                   IN VARCHAR2
5175     ,p_api_version_number       IN NUMBER
5176     ,p_init_msg_list            IN VARCHAR2
5177     ,x_return_status            OUT NOCOPY VARCHAR2
5178     ,x_msg_count                OUT NOCOPY NUMBER
5179     ,x_msg_data                 OUT NOCOPY VARCHAR2
5180 )
5181 IS
5182 --******************* BEGIN REQUIRED VARIABLES *************************
5183   l_api_name CONSTANT VARCHAR2(30) := 'update_citem_association';--|**|
5184   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
5185 --******************* END REQUIRED VARIABLES ***************************
5186    temp NUMBER;
5187    content_item_id NUMBER;
5188    ctype_code IBC_CONTENT_TYPES_B.content_type_code%TYPE;
5189    dir_id NUMBER;
5190 BEGIN
5191   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
5192 --******************* BEGIN REQUIRED AREA ******************************
5193       SAVEPOINT svpt_delete_component;                            --|**|
5194       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
5195         FND_MSG_PUB.initialize;                                   --|**|
5196       END IF;                                                     --|**|
5197                                                                   --|**|
5198       -- Standard call to check for call compatibility.           --|**|
5199       IF NOT FND_API.Compatible_API_Call (                        --|**|
5200             l_api_version_number                                  --|**|
5201          ,p_api_version_number                                 --|**|
5202          ,l_api_name                                           --|**|
5203          ,G_PKG_NAME                                           --|**|
5204       )THEN                                                       --|**|
5205        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
5206       END IF;                                                     --|**|
5207                                                                   --|**|
5208       -- Initialize API return status to SUCCESS                  --|**|
5209       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
5210 --******************* END REQUIRED AREA ********************************
5211 
5212     IF IBC_DEBUG_PVT.debug_enabled THEN
5213       IBC_DEBUG_PVT.start_process(
5214          p_proc_type  => 'PROCEDURE',
5215          p_proc_name  => 'Delete_Component',
5216          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
5217                            p_tag     => 'PARAMETERS',
5218                            p_parms   => JTF_VARCHAR2_TABLE_4000(
5219                                           'p_attribute_type_code', p_attribute_type_code,
5220                                           'p_citem_ver_id', p_citem_ver_id,
5221                                           'p_content_item_id', p_content_item_id,
5222                                           'p_commit', p_commit,
5223                                           'p_api_version_number', p_api_version_number,
5224                                           'p_init_msg_list', p_init_msg_list
5225                                         )
5226                            )
5227       );
5228     END IF;
5229 
5230 -- *** VALIDATION OF VALUES ******
5231    -- version id
5232    IF (IBC_VALIDATE_PVT.isValidCitemVer(p_citem_ver_id) = FND_API.g_false) THEN
5233      --DBMS_OUTPUT.put_line('EX - citem_ver_id');
5234      x_return_status := FND_API.G_RET_STS_ERROR;
5235       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
5236      FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
5237      FND_MSG_PUB.ADD;
5238      RAISE FND_API.G_EXC_ERROR;
5239    END IF;
5240 
5241    -- citem
5242    IF (IBC_VALIDATE_PVT.isValidCitem(p_content_item_id) = FND_API.g_false ) THEN
5243      --DBMS_OUTPUT.put_line('EX - content_item_id');
5244      x_return_status := FND_API.G_RET_STS_ERROR;
5245      FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
5246      FND_MESSAGE.Set_Token('INPUT', 'p_content_item_id', FALSE);
5247      FND_MSG_PUB.ADD;
5248      RAISE FND_API.G_EXC_ERROR;
5249    END IF;
5250 
5251    content_item_id := getCitemId(p_citem_ver_id);
5252    ctype_code := getContentType(content_item_id);
5253    dir_id := getDirectoryNodeId(content_item_id);
5254 
5255     -- ***************PERMISSION CHECK*********************************************************************
5256     IF (hasPermission(content_item_id) = FND_API.g_false) THEN                                         --|*|
5257         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
5258         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
5259        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                        --|*|
5260         FND_MSG_PUB.ADD;                                                                               --|*|
5261         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
5262     ELSIF(isItemAdmin(p_content_item_id) = FND_API.g_false) THEN                                       --|*|
5263        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
5264                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
5265                   ,p_instance_pk1_value    => content_item_id                                          --|*|
5266                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
5267                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
5268                   ,p_container_pk1_value   => dir_id                                                   --|*|
5269                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
5270                   ) = FND_API.g_false                                                                  --|*|
5271             ) THEN                                                                                     --|*|
5272            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
5273            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
5274          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
5275            FND_MSG_PUB.ADD;                                                                            --|*|
5276            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
5277       END IF;                                                                                          --|*|
5278     END IF;                                                                                            --|*|
5279     -- ***************PERMISSION CHECK*********************************************************************
5280 
5281     SELECT
5282       MIN(compound_relation_id)
5283     INTO
5284       temp
5285     FROM
5286       ibc_compound_relations
5287     WHERE
5288       content_item_id = content_item_id
5289     AND
5290       content_type_code = ctype_code
5291     AND
5292       attribute_type_code = p_attribute_type_code
5293     AND
5294       content_item_id = p_content_item_id
5295     AND
5296       citem_version_id = p_citem_ver_id;
5297 
5298     IF (temp IS NULL) THEN
5299       --DBMS_OUTPUT.put_line('EX - unable to find compound relationship');
5300       x_return_status := FND_API.G_RET_STS_ERROR;
5301      FND_MESSAGE.Set_Name('IBC', 'INVALID_COMPOUND_RELATIONSHIP');
5302       FND_MSG_PUB.ADD;
5303       RAISE FND_API.G_EXC_ERROR;
5304     ELSE
5305       Ibc_Compound_Relations_Pkg.delete_row(temp);
5306                                    --***************************************************
5307                                    --************ADDING TO AUDIT LOG********************
5308                                    --***************************************************
5309                                    Ibc_Utilities_Pvt.log_action(
5310                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
5311                                        ,p_parent_value  => NULL
5312                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
5313                                        ,p_object_value1 => content_item_id
5314                                        ,p_object_value2 => NULL
5315                                        ,p_object_value3 => NULL
5316                                        ,p_object_value4 => NULL
5317                                        ,p_object_value5 => NULL
5318                                        ,p_description   => 'Updating version'
5319                                    );
5320                                    Ibc_Utilities_Pvt.log_action(
5321                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
5322                                        ,p_parent_value  => content_item_id
5323                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
5324                                        ,p_object_value1 => p_citem_ver_id
5325                                        ,p_object_value2 => NULL
5326                                        ,p_object_value3 => NULL
5327                                        ,p_object_value4 => NULL
5328                                        ,p_object_value5 => NULL
5329                                        ,p_description   => 'Removing component'
5330                                    );
5331                                    Ibc_Utilities_Pvt.log_action(
5332                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_REMOVE
5333                                        ,p_parent_value  => p_citem_ver_id
5334                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_COMPONENT
5335                                        ,p_object_value1 => p_attribute_type_code
5336                                        ,p_object_value2 => ctype_code
5337                                        ,p_object_value3 => content_item_id
5338                                        ,p_object_value4 => NULL
5339                                        ,p_object_value5 => NULL
5340                                        ,p_description   => 'Removing component: '|| p_content_item_id
5341                                    );
5342                                    --***************************************************
5343     END IF;
5344 
5345     -- COMMIT?
5346     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
5347         COMMIT;
5348     END IF;
5349 
5350     -- Standard call to get message count and if count is 1, get message info.
5351     FND_MSG_PUB.Count_And_Get(
5352         p_count           =>      x_msg_count,
5353         p_data            =>      x_msg_data
5354     );
5355 
5356   IF IBC_DEBUG_PVT.debug_enabled THEN
5357     IBC_DEBUG_PVT.end_process(
5358       IBC_DEBUG_PVT.make_parameter_list(
5359         p_tag    => 'OUTPUT',
5360         p_parms  => JTF_VARCHAR2_TABLE_4000(
5361                       'x_return_status', x_return_status,
5362                       'x_msg_count', x_msg_count,
5363                       'x_msg_data', x_msg_data
5364                     )
5365       )
5366     );
5367   END IF;
5368 
5369 EXCEPTION
5370     WHEN FND_API.G_EXC_ERROR THEN
5371       ROLLBACK TO svpt_delete_component;
5372       --DBMS_OUTPUT.put_line('Expected Error');
5373       Ibc_Utilities_Pvt.handle_exceptions(
5374          p_api_name           => L_API_NAME
5375          ,p_pkg_name          => G_PKG_NAME
5376          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
5377          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
5378          ,p_sqlcode           => SQLCODE
5379          ,p_sqlerrm           => SQLERRM
5380          ,x_msg_count         => x_msg_count
5381          ,x_msg_data          => x_msg_data
5382          ,x_return_status     => x_return_status
5383        );
5384       IF IBC_DEBUG_PVT.debug_enabled THEN
5385         IBC_DEBUG_PVT.end_process(
5386           IBC_DEBUG_PVT.make_parameter_list(
5387             p_tag    => 'OUTPUT',
5388             p_parms  => JTF_VARCHAR2_TABLE_4000(
5389                           'x_return_status', x_return_status,
5390                           'x_msg_count', x_msg_count,
5391                           'x_msg_data', x_msg_data
5392                         )
5393           )
5394         );
5395       END IF;
5396   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5397       ROLLBACK TO svpt_delete_component;
5398       --DBMS_OUTPUT.put_line('Unexpected error');
5399       Ibc_Utilities_Pvt.handle_exceptions(
5400          p_api_name           => L_API_NAME
5401          ,p_pkg_name          => G_PKG_NAME
5402          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
5403          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
5404          ,p_sqlcode           => SQLCODE
5405          ,p_sqlerrm           => SQLERRM
5406          ,x_msg_count         => x_msg_count
5407          ,x_msg_data          => x_msg_data
5408          ,x_return_status     => x_return_status
5409       );
5410       IF IBC_DEBUG_PVT.debug_enabled THEN
5411         IBC_DEBUG_PVT.end_process(
5412           IBC_DEBUG_PVT.make_parameter_list(
5413             p_tag    => 'OUTPUT',
5414             p_parms  => JTF_VARCHAR2_TABLE_4000(
5415                           'x_return_status', x_return_status,
5416                           'x_msg_count', x_msg_count,
5417                           'x_msg_data', x_msg_data
5418                         )
5419           )
5420         );
5421       END IF;
5422   WHEN OTHERS THEN
5423       ROLLBACK TO svpt_delete_component;
5424       --DBMS_OUTPUT.put_line('Other error');
5425       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
5426          p_api_name           => L_API_NAME
5427          ,p_pkg_name          => G_PKG_NAME
5428          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
5429          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
5430          ,p_sqlcode           => SQLCODE
5431          ,p_sqlerrm           => SQLERRM
5432          ,x_msg_count         => x_msg_count
5433          ,x_msg_data          => x_msg_data
5434          ,x_return_status     => x_return_status
5435       );
5436       IF IBC_DEBUG_PVT.debug_enabled THEN
5437         IBC_DEBUG_PVT.end_process(
5438           IBC_DEBUG_PVT.make_parameter_list(
5439             p_tag    => 'OUTPUT',
5440             p_parms  => JTF_VARCHAR2_TABLE_4000(
5441                           'x_return_status', x_return_status,
5442                           'x_msg_count', x_msg_count,
5443                           'x_msg_data', x_msg_data,
5444                           'EXCEPTION', SQLERRM
5445                         )
5446           )
5447         );
5448       END IF;
5449  END;
5450 
5451 -- --------------------------------------------------------------
5452 -- DELETE ASSOCIATION
5453 --
5454 --
5455 -- --------------------------------------------------------------
5456 PROCEDURE delete_association(
5457     p_content_item_id           IN NUMBER
5458     ,p_association_type_code    IN VARCHAR2
5459     ,p_associated_object_val1   IN VARCHAR2
5460     ,p_associated_object_val2   IN VARCHAR2
5461     ,p_associated_object_val3   IN VARCHAR2
5462     ,p_associated_object_val4   IN VARCHAR2
5463     ,p_associated_object_val5   IN VARCHAR2
5464     ,p_commit                   IN VARCHAR2
5465     ,p_api_version_number       IN NUMBER
5466     ,p_init_msg_list            IN VARCHAR2
5467     ,x_return_status            OUT NOCOPY VARCHAR2
5468     ,x_msg_count                OUT NOCOPY NUMBER
5469     ,x_msg_data                 OUT NOCOPY VARCHAR2
5470 )
5471 IS
5472 --******************* BEGIN REQUIRED VARIABLES *************************
5473   l_api_name CONSTANT VARCHAR2(30) := 'delete_citem_association';--|**|
5474   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
5475 --******************* END REQUIRED VARIABLES ***************************
5476     -- used to loop through all the attributes
5477     A_LIST VARCHAR2(4000) := 'SELECT
5478                                 association_id
5479                             FROM
5480                                 ibc_associations
5481                             WHERE
5482                                 content_item_id = :CITEM
5483                             AND
5484                                 association_type_code = :ACODE
5485                             AND
5486                                 associated_object_val1 = :VAL1';
5487 
5488     cursor_id INTEGER;  -- dynamic sql variable
5489     cursor_return INTEGER; -- dynamic sql variable
5490     aid NUMBER;  -- temp variable to hold the association number
5491     counter NUMBER := 0;
5492     dir_id NUMBER;
5493 BEGIN
5494   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
5495 --******************* BEGIN REQUIRED AREA ******************************
5496       SAVEPOINT svpt_delete_association;                          --|**|
5497       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
5498         FND_MSG_PUB.initialize;                                   --|**|
5499       END IF;                                                     --|**|
5500                                                                   --|**|
5501       -- Standard call to check for call compatibility.           --|**|
5502       IF NOT FND_API.Compatible_API_Call (                        --|**|
5503             l_api_version_number                                  --|**|
5504          ,p_api_version_number                                 --|**|
5505          ,l_api_name                                           --|**|
5506          ,G_PKG_NAME                                           --|**|
5507       )THEN                                                       --|**|
5508        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
5509       END IF;                                                     --|**|
5510                                                                   --|**|
5511       -- Initialize API return status to SUCCESS                  --|**|
5512       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
5513 --******************* END REQUIRED AREA ********************************
5514 
5515     IF IBC_DEBUG_PVT.debug_enabled THEN
5516       IBC_DEBUG_PVT.start_process(
5517          p_proc_type  => 'PROCEDURE',
5518          p_proc_name  => 'Delete_Association',
5519          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
5520                            p_tag     => 'PARAMETERS',
5521                            p_parms   => JTF_VARCHAR2_TABLE_4000(
5522                                           'p_content_item_id', p_content_item_id,
5523                                           'p_association_type_code', p_association_type_code,
5524                                           'p_associated_object_val1', p_associated_object_val1,
5525                                           'p_associated_object_val2', p_associated_object_val2,
5526                                           'p_associated_object_val3', p_associated_object_val3,
5527                                           'p_associated_object_val4', p_associated_object_val4,
5528                                           'p_associated_object_val5', p_associated_object_val5,
5529                                           'p_commit', p_commit,
5530                                           'p_api_version_number', p_api_version_number,
5531                                           'p_init_msg_list', p_init_msg_list
5532                                         )
5533                            )
5534       );
5535     END IF;
5536 
5537     -- citem validation
5538     IF (IBC_VALIDATE_PVT.isValidCitem(p_content_item_id) = FND_API.g_false ) THEN
5539         --DBMS_OUTPUT.put_line('EX - content_item_id');
5540         x_return_status := FND_API.G_RET_STS_ERROR;
5541       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
5542         FND_MESSAGE.Set_Token('INPUT', 'p_content_item_id', FALSE);
5543         FND_MSG_PUB.ADD;
5544         RAISE FND_API.G_EXC_ERROR;
5545     END IF;
5546 
5547    dir_id := getDirectoryNodeId(p_content_item_id);
5548 
5549     -- ***************PERMISSION CHECK*********************************************************************
5550     IF (hasPermission(p_content_item_id) = FND_API.g_false) THEN                                       --|*|
5551         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
5552         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
5553        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                        --|*|
5554         FND_MSG_PUB.ADD;                                                                               --|*|
5555         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
5556     ELSIF(isItemAdmin(p_content_item_id) = FND_API.g_false) THEN                                       --|*|
5557        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
5558                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
5559                   ,p_instance_pk1_value    => p_content_item_id                                        --|*|
5560                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
5561                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
5562                   ,p_container_pk1_value   => dir_id                                                   --|*|
5563                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
5564                   ) = FND_API.g_false                                                                  --|*|
5565             ) THEN                                                                                     --|*|
5566            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
5567            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
5568          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
5569            FND_MSG_PUB.ADD;                                                                            --|*|
5570            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
5571       END IF;                                                                                          --|*|
5572     END IF;                                                                                            --|*|
5573     -- ***************PERMISSION CHECK*********************************************************************
5574 
5575       -- insert components --------------------------------
5576     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
5577 
5578         -- BUILDING QUERY
5579         IF (p_associated_object_val2 IS NOT NULL) THEN
5580             A_LIST := A_LIST || ' AND associated_object_val2 = :VAL2';
5581         ELSE
5582             A_LIST := A_LIST || ' AND associated_object_val2 is null';
5583         END IF;
5584 
5585         IF (p_associated_object_val3 IS NOT NULL) THEN
5586             A_LIST := A_LIST || ' AND associated_object_val3 = :VAL3';
5587         ELSE
5588             A_LIST := A_LIST || ' AND associated_object_val3 is null';
5589         END IF;
5590 
5591         IF (p_associated_object_val4 IS NOT NULL) THEN
5592             A_LIST := A_LIST || ' AND associated_object_val4 = :VAL4';
5593         ELSE
5594             A_LIST := A_LIST || ' AND associated_object_val4 is null';
5595         END IF;
5596 
5597         IF (p_associated_object_val5 IS NOT NULL) THEN
5598             A_LIST := A_LIST || ' AND associated_object_val5 = :VAL5';
5599         ELSE
5600             A_LIST := A_LIST || ' AND associated_object_val5 is null';
5601         END IF;
5602         -- FINISHED BUILDING QUERY
5603 
5604 
5605         -- OPENING CURSOR
5606         cursor_id := DBMS_SQL.OPEN_CURSOR;
5607         DBMS_SQL.PARSE(cursor_id, A_LIST, DBMS_SQL.V7);
5608 
5609         -- SETTING BIND VARIABLES
5610         DBMS_SQL.BIND_VARIABLE(cursor_id,':ACODE',p_association_type_code);
5611         DBMS_SQL.BIND_VARIABLE(cursor_id,':CITEM',p_content_item_id);
5612         DBMS_SQL.BIND_VARIABLE(cursor_id,':VAL1',p_associated_object_val1);
5613 
5614         -- SETTING REMAINING BIND VARIABLES ACCORDING TO IF THEY ARE USED OR NOT
5615         IF (p_associated_object_val2 IS NOT NULL) THEN
5616             DBMS_SQL.BIND_VARIABLE(cursor_id,':VAL2',p_associated_object_val2);
5617         END IF;
5618         IF (p_associated_object_val3 IS NOT NULL) THEN
5619             DBMS_SQL.BIND_VARIABLE(cursor_id,':VAL3',p_associated_object_val3);
5620         END IF;
5621         IF (p_associated_object_val4 IS NOT NULL) THEN
5622             DBMS_SQL.BIND_VARIABLE(cursor_id,':VAL4',p_associated_object_val4);
5623         END IF;
5624         IF (p_associated_object_val5 IS NOT NULL) THEN
5625             DBMS_SQL.BIND_VARIABLE(cursor_id,':VAL5',p_associated_object_val5);
5626         END IF;
5627 
5628         -- DEFINING OUTPUT VARIABLE
5629         DBMS_SQL.DEFINE_COLUMN(cursor_id, 1, aid);
5630 
5631         -- executing cursor
5632         cursor_return := DBMS_SQL.EXECUTE(cursor_id);
5633 
5634         -- LOOPING FOR EACH ASSOCIATION FOUND MATCHING CRITERIA
5635         LOOP
5636             IF (DBMS_SQL.FETCH_ROWS(cursor_id) = 0) THEN
5637                 EXIT;
5638             END IF;
5639 
5640             -- setting flag that at least one was found
5641             counter := counter+1;
5642 
5643             -- loading column values
5644             DBMS_SQL.COLUMN_VALUE(cursor_id, 1, aid);
5645 
5646              Ibc_Associations_Pkg.delete_row(
5647                  p_association_id           => aid
5648              );
5649 
5650                                    --***************************************************
5651                                    --************ADDING TO AUDIT LOG********************
5652                                    --***************************************************
5653                                    Ibc_Utilities_Pvt.log_action(
5654                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
5655                                        ,p_parent_value  => NULL
5656                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
5657                                        ,p_object_value1 => p_content_item_id
5658                                        ,p_object_value2 => NULL
5659                                        ,p_object_value3 => NULL
5660                                        ,p_object_value4 => NULL
5661                                        ,p_object_value5 => NULL
5662                                        ,p_description   => 'Updating item'
5663                                    );
5664                                    Ibc_Utilities_Pvt.log_action(
5665                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_REMOVE
5666                                        ,p_parent_value  => p_content_item_id
5667                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_ASSOCIATION
5668                                        ,p_object_value1 => p_associated_object_val1
5669                                        ,p_object_value2 => p_associated_object_val2
5670                                        ,p_object_value3 => p_associated_object_val3
5671                                        ,p_object_value4 => p_associated_object_val4
5672                                        ,p_object_value5 => p_associated_object_val5
5673                                        ,p_description   => 'Deleting association of type '|| p_association_type_code
5674                                    );
5675                                    --***************************************************
5676 
5677         END LOOP;
5678         -- clean up!
5679         DBMS_SQL.CLOSE_CURSOR(cursor_id);
5680 
5681     END IF;
5682 
5683     IF (counter = 0) THEN
5684         --DBMS_OUTPUT.put_line('EX - no association found to delete');
5685         x_return_status := FND_API.G_RET_STS_ERROR;
5686       FND_MESSAGE.Set_Name('IBC', 'NO_ASSOCIATION_FOUND');
5687         FND_MSG_PUB.ADD;
5688         RAISE FND_API.G_EXC_ERROR;
5689     END IF;
5690 
5691     --DBMS_OUTPUT.put_line(counter||' association(s) deleted');
5692 
5693     -- COMMIT?
5694     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
5695         COMMIT;
5696     END IF;
5697 
5698     -- Standard call to get message count and if count is 1, get message info.
5699     FND_MSG_PUB.Count_And_Get(
5700         p_count           =>      x_msg_count,
5701         p_data            =>      x_msg_data
5702     );
5703 
5704     IF IBC_DEBUG_PVT.debug_enabled THEN
5705       IBC_DEBUG_PVT.end_process(
5706         IBC_DEBUG_PVT.make_parameter_list(
5707           p_tag    => 'OUTPUT',
5708           p_parms  => JTF_VARCHAR2_TABLE_4000(
5709                         'x_return_status', x_return_status,
5710                         'x_msg_count', x_msg_count,
5711                         'x_msg_data', x_msg_data
5712                       )
5713         )
5714       );
5715     END IF;
5716 
5717 EXCEPTION
5718     WHEN FND_API.G_EXC_ERROR THEN
5719       ROLLBACK TO svpt_delete_association;
5720       --DBMS_OUTPUT.put_line('Expected Error');
5721       Ibc_Utilities_Pvt.handle_exceptions(
5722          p_api_name           => L_API_NAME
5723          ,p_pkg_name          => G_PKG_NAME
5724          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
5725          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
5726          ,p_sqlcode           => SQLCODE
5727          ,p_sqlerrm           => SQLERRM
5728          ,x_msg_count         => x_msg_count
5729          ,x_msg_data          => x_msg_data
5730          ,x_return_status     => x_return_status
5731        );
5732       IF IBC_DEBUG_PVT.debug_enabled THEN
5733         IBC_DEBUG_PVT.end_process(
5734           IBC_DEBUG_PVT.make_parameter_list(
5735             p_tag    => 'OUTPUT',
5736             p_parms  => JTF_VARCHAR2_TABLE_4000(
5737                           'x_return_status', x_return_status,
5738                           'x_msg_count', x_msg_count,
5739                           'x_msg_data', x_msg_data
5740                         )
5741           )
5742         );
5743       END IF;
5744   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5745       ROLLBACK TO svpt_delete_association;
5746       --DBMS_OUTPUT.put_line('Unexpected error');
5747       Ibc_Utilities_Pvt.handle_exceptions(
5748          p_api_name           => L_API_NAME
5749          ,p_pkg_name          => G_PKG_NAME
5750          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
5751          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
5752          ,p_sqlcode           => SQLCODE
5753          ,p_sqlerrm           => SQLERRM
5754          ,x_msg_count         => x_msg_count
5755          ,x_msg_data          => x_msg_data
5756          ,x_return_status     => x_return_status
5757       );
5758       IF IBC_DEBUG_PVT.debug_enabled THEN
5759         IBC_DEBUG_PVT.end_process(
5760           IBC_DEBUG_PVT.make_parameter_list(
5761             p_tag    => 'OUTPUT',
5762             p_parms  => JTF_VARCHAR2_TABLE_4000(
5763                           'x_return_status', x_return_status,
5764                           'x_msg_count', x_msg_count,
5765                           'x_msg_data', x_msg_data
5766                         )
5767           )
5768         );
5769       END IF;
5770   WHEN OTHERS THEN
5771       ROLLBACK TO svpt_delete_association;
5772       --DBMS_OUTPUT.put_line('Other error');
5773       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
5774          p_api_name           => L_API_NAME
5775          ,p_pkg_name          => G_PKG_NAME
5776          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
5777          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
5778          ,p_sqlcode           => SQLCODE
5779          ,p_sqlerrm           => SQLERRM
5780          ,x_msg_count         => x_msg_count
5781          ,x_msg_data          => x_msg_data
5782          ,x_return_status     => x_return_status
5783       );
5784       IF IBC_DEBUG_PVT.debug_enabled THEN
5785         IBC_DEBUG_PVT.end_process(
5786           IBC_DEBUG_PVT.make_parameter_list(
5787             p_tag    => 'OUTPUT',
5788             p_parms  => JTF_VARCHAR2_TABLE_4000(
5789                           'x_return_status', x_return_status,
5790                           'x_msg_count', x_msg_count,
5791                           'x_msg_data', x_msg_data,
5792                           'EXCEPTION', SQLERRM
5793                         )
5794           )
5795         );
5796       END IF;
5797  END;
5798 
5799 -- --------------------------------------------------------------
5800 -- GET ATTRIBUTE BUNDLE
5801 --
5802 -- Used to get the attribute bundle for updating/etc
5803 --
5804 -- --------------------------------------------------------------
5805 PROCEDURE get_attribute_bundle(
5806     p_citem_ver_id           IN NUMBER
5807     ,p_init_msg_list         IN VARCHAR2
5808     ,p_api_version_number    IN NUMBER
5809     ,x_attribute_type_codes  OUT NOCOPY JTF_VARCHAR2_TABLE_100
5810     ,x_attribute_type_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
5811     ,x_attributes            OUT NOCOPY JTF_VARCHAR2_TABLE_32767
5812     ,x_object_version_number OUT NOCOPY NUMBER
5813     ,x_return_status         OUT NOCOPY VARCHAR2
5814     ,x_msg_count             OUT NOCOPY NUMBER
5815     ,x_msg_data              OUT NOCOPY VARCHAR2
5816 )
5817 IS
5818 --******************* BEGIN REQUIRED VARIABLES *************************
5819   L_API_NAME CONSTANT VARCHAR2(30) := 'get_attribute_bundle';    --|**|
5820   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
5821 --******************* END REQUIRED VARIABLES ***************************
5822 
5823     attribute_fid NUMBER; --variable to returned attribute bundle id
5824     return_status CHAR(1); -- variable to check from returning procedures
5825     ctype_code IBC_CONTENT_TYPES_B.content_type_code%TYPE;
5826     content_item_id NUMBER;
5827 BEGIN
5828   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
5829 --******************* BEGIN REQUIRED AREA ******************************
5830       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
5831         FND_MSG_PUB.initialize;                                   --|**|
5832       END IF;                                                     --|**|
5833                                                                   --|**|
5834       -- Standard call to check for call compatibility.           --|**|
5835       IF NOT FND_API.Compatible_API_Call (                        --|**|
5836             l_api_version_number                                  --|**|
5837          ,p_api_version_number                                 --|**|
5838          ,l_api_name                                           --|**|
5839          ,G_PKG_NAME                                           --|**|
5840       )THEN                                                       --|**|
5841        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
5842       END IF;                                                     --|**|
5843                                                                   --|**|
5844       -- Initialize API return status to SUCCESS                  --|**|
5845       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
5846 --******************* END REQUIRED AREA ********************************
5847 
5848     IF IBC_DEBUG_PVT.debug_enabled THEN
5849       IBC_DEBUG_PVT.start_process(
5850          p_proc_type  => 'PROCEDURE',
5851          p_proc_name  => 'Get_Attribute_Bundle',
5852          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
5853                            p_tag     => 'PARAMETERS',
5854                            p_parms   => JTF_VARCHAR2_TABLE_4000(
5855                                           'p_citem_ver_id', p_citem_ver_id,
5856                                           'p_init_msg_list', p_init_msg_list,
5857                                           'p_api_version_number', p_api_version_number
5858                                         )
5859                            )
5860       );
5861     END IF;
5862 
5863     -- checking for valid inputs and throwing exception if invalid
5864     IF (IBC_VALIDATE_PVT.isValidCitemVer(p_citem_ver_id) = FND_API.g_false) THEN
5865         --DBMS_OUTPUT.put_line('EX - CITEM_VER_ID');
5866         x_return_status := FND_API.G_RET_STS_ERROR;
5867         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
5868         FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
5869         FND_MSG_PUB.ADD;
5870         RAISE FND_API.G_EXC_ERROR;
5871     END IF;
5872 
5873     attribute_fid := getAttribFID(p_citem_ver_id);
5874     -- if there is no attribute bundle
5875     IF (attribute_fid IS NULL) THEN
5876         --DBMS_OUTPUT.put_line('EX - no attribute');
5877         x_return_status := FND_API.G_RET_STS_ERROR;
5878       FND_MESSAGE.Set_Name('IBC', 'IBC_BUNDLE_NOT_EXISTING');
5879         FND_MSG_PUB.ADD;
5880         x_return_status := FND_API.G_RET_STS_ERROR;
5881         RAISE FND_API.G_EXC_ERROR;
5882     END IF;
5883 
5884 
5885     get_citem_info(
5886         p_citem_ver_id          => p_citem_ver_id
5887         ,x_content_item_id      => content_item_id
5888         ,x_ctype_code           => ctype_code
5889         ,x_object_version_number=> x_object_version_number
5890     );
5891 
5892 
5893     -- if there is no content type code
5894     IF (ctype_code IS NULL) THEN
5895         --DBMS_OUTPUT.put_line('EX - getContentTypeV');
5896         x_return_status := FND_API.G_RET_STS_ERROR;
5897         FND_MESSAGE.Set_Name('IBC', 'UNABLE_TO_IDENTIFY_CTYPE');
5898         FND_MSG_PUB.ADD;
5899         x_return_status := FND_API.G_RET_STS_ERROR;
5900         RAISE FND_API.G_EXC_ERROR;
5901     END IF;
5902 
5903 
5904     IF(x_return_status <> FND_API.G_RET_STS_ERROR) THEN
5905         get_attribute_bundle_int(
5906             p_attrib_fid             => attribute_fid
5907             ,p_ctype_code            => ctype_code
5908             ,x_attribute_type_codes  => x_attribute_type_codes
5909             ,x_attribute_type_names  => x_attribute_type_names
5910             ,x_attributes            => x_attributes
5911             ,x_return_status       => x_return_status
5912         );
5913     END IF;
5914 
5915     IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
5916         --DBMS_OUTPUT.put_line('EX - get_attribute_bundle_int');
5917         x_return_status := FND_API.G_RET_STS_ERROR;
5918        FND_MESSAGE.Set_Name('IBC', 'A_BUNDLE_ERROR');
5919         FND_MESSAGE.Set_Token('SITUATION', 'get_attribute_bundle_int', FALSE);
5920         FND_MSG_PUB.ADD;
5921         RAISE FND_API.G_EXC_ERROR;
5922     END IF;
5923 
5924     -- Standard call to get message count and if count is 1, get message info.
5925     FND_MSG_PUB.Count_And_Get(
5926         p_count           =>      x_msg_count,
5927         p_data            =>      x_msg_data
5928     );
5929 
5930   IF IBC_DEBUG_PVT.debug_enabled THEN
5931     IBC_DEBUG_PVT.end_process(
5932       IBC_DEBUG_PVT.make_parameter_list(
5933         p_tag    => 'OUTPUT',
5934         p_parms  => JTF_VARCHAR2_TABLE_32767(
5935                       'x_attribute_type_codes', IBC_DEBUG_PVT.make_list(x_attribute_type_codes),
5936                       'x_attribute_type_names', IBC_DEBUG_PVT.make_list(x_attribute_type_names),
5937                       'x_attributes', IBC_DEBUG_PVT.make_list_VC32767(x_attributes),
5938                       'x_return_status', x_return_status,
5939                       'x_msg_count', x_msg_count,
5940                       'x_msg_data', x_msg_data
5941                     )
5942       )
5943     );
5944   END IF;
5945 
5946 EXCEPTION
5947     WHEN FND_API.G_EXC_ERROR THEN
5948       --DBMS_OUTPUT.put_line('Expected Error');
5949       Ibc_Utilities_Pvt.handle_exceptions(
5950          p_api_name           => L_API_NAME
5951          ,p_pkg_name          => G_PKG_NAME
5952          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
5953          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
5954          ,p_sqlcode           => SQLCODE
5955          ,p_sqlerrm           => SQLERRM
5956          ,x_msg_count         => x_msg_count
5957          ,x_msg_data          => x_msg_data
5958          ,x_return_status     => x_return_status
5959       );
5960       IF IBC_DEBUG_PVT.debug_enabled THEN
5961         IBC_DEBUG_PVT.end_process(
5962           IBC_DEBUG_PVT.make_parameter_list(
5963             p_tag    => 'OUTPUT',
5964             p_parms  => JTF_VARCHAR2_TABLE_32767(
5965                           'x_attribute_type_codes', IBC_DEBUG_PVT.make_list(x_attribute_type_codes),
5966                           'x_attribute_type_names', IBC_DEBUG_PVT.make_list(x_attribute_type_names),
5967                           'x_attributes', IBC_DEBUG_PVT.make_list_VC32767(x_attributes),
5968                           'x_return_status', x_return_status,
5969                           'x_msg_count', x_msg_count,
5970                           'x_msg_data', x_msg_data
5971                         )
5972           )
5973         );
5974       END IF;
5975   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5976       --DBMS_OUTPUT.put_line('Unexpected error');
5977       Ibc_Utilities_Pvt.handle_exceptions(
5978          p_api_name           => L_API_NAME
5979          ,p_pkg_name          => G_PKG_NAME
5980          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
5981          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
5982          ,p_sqlcode           => SQLCODE
5983          ,p_sqlerrm           => SQLERRM
5984          ,x_msg_count         => x_msg_count
5985          ,x_msg_data          => x_msg_data
5986          ,x_return_status     => x_return_status
5987       );
5988       IF IBC_DEBUG_PVT.debug_enabled THEN
5989         IBC_DEBUG_PVT.end_process(
5990           IBC_DEBUG_PVT.make_parameter_list(
5991             p_tag    => 'OUTPUT',
5992             p_parms  => JTF_VARCHAR2_TABLE_32767(
5993                           'x_attribute_type_codes', IBC_DEBUG_PVT.make_list(x_attribute_type_codes),
5994                           'x_attribute_type_names', IBC_DEBUG_PVT.make_list(x_attribute_type_names),
5995                           'x_attributes', IBC_DEBUG_PVT.make_list_VC32767(x_attributes),
5996                           'x_return_status', x_return_status,
5997                           'x_msg_count', x_msg_count,
5998                           'x_msg_data', x_msg_data
5999                         )
6000           )
6001         );
6002       END IF;
6003   WHEN OTHERS THEN
6004       --DBMS_OUTPUT.put_line('Other error');
6005       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
6006          p_api_name           => L_API_NAME
6007          ,p_pkg_name          => G_PKG_NAME
6008          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
6009          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
6010          ,p_sqlcode           => SQLCODE
6011          ,p_sqlerrm           => SQLERRM
6012          ,x_msg_count         => x_msg_count
6013          ,x_msg_data          => x_msg_data
6014          ,x_return_status     => x_return_status
6015       );
6016       IF IBC_DEBUG_PVT.debug_enabled THEN
6017         IBC_DEBUG_PVT.end_process(
6018           IBC_DEBUG_PVT.make_parameter_list(
6019             p_tag    => 'OUTPUT',
6020             p_parms  => JTF_VARCHAR2_TABLE_32767(
6021                           'x_attribute_type_codes', IBC_DEBUG_PVT.make_list(x_attribute_type_codes),
6022                           'x_attribute_type_names', IBC_DEBUG_PVT.make_list(x_attribute_type_names),
6023                           'x_attributes', IBC_DEBUG_PVT.make_list_VC32767(x_attributes),
6024                           'x_return_status', x_return_status,
6025                           'x_msg_count', x_msg_count,
6026                           'x_msg_data', x_msg_data,
6027                           'EXCEPTION', SQLERRM
6028                         )
6029           )
6030         );
6031       END IF;
6032  END;
6033 
6034 -- --------------------------------------------------------------
6035 -- GET ATTRIBUTE BUNDLE
6036 --
6037 -- Overloaded to support old 4k limit for attribute values
6038 --
6039 -- --------------------------------------------------------------
6040 PROCEDURE get_attribute_bundle(
6041     p_citem_ver_id           IN NUMBER
6042     ,p_init_msg_list         IN VARCHAR2
6043     ,p_api_version_number    IN NUMBER
6044     ,x_attribute_type_codes  OUT NOCOPY JTF_VARCHAR2_TABLE_100
6045     ,x_attribute_type_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
6046     ,x_attributes            OUT NOCOPY JTF_VARCHAR2_TABLE_4000
6047     ,x_object_version_number OUT NOCOPY NUMBER
6048     ,x_return_status         OUT NOCOPY VARCHAR2
6049     ,x_msg_count             OUT NOCOPY NUMBER
6050     ,x_msg_data              OUT NOCOPY VARCHAR2
6051 )
6052 IS
6053   l_tmp_attributes      JTF_VARCHAR2_TABLE_32767;
6054 BEGIN
6055 
6056   get_attribute_bundle(
6057     p_citem_ver_id           => p_citem_ver_id
6058     ,p_init_msg_list         => p_init_msg_list
6059     ,p_api_version_number    => p_api_version_number
6060     ,x_attribute_type_codes  => x_attribute_type_codes
6061     ,x_attribute_type_names  => x_attribute_type_names
6062     ,x_attributes            => l_tmp_attributes
6063     ,x_object_version_number => x_object_version_number
6064     ,x_return_status         => x_return_status
6065     ,x_msg_count             => x_msg_count
6066     ,x_msg_data              => x_msg_data
6067   );
6068 
6069   IF l_tmp_attributes IS NOT NULL AND l_tmp_attributes.COUNT > 0 THEN
6070     x_attributes := JTF_VARCHAR2_TABLE_4000();
6071     x_attributes.extend(l_tmp_attributes.COUNT);
6072     FOR I IN 1..l_tmp_attributes.COUNT LOOP
6073       x_attributes(I) := l_tmp_attributes(I);
6074     END LOOP;
6075   END IF;
6076 
6077 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
6078 EXCEPTION
6079   WHEN OTHERS THEN
6080     RAISE;
6081 
6082 END get_attribute_bundle;
6083 
6084 -- --------------------------------------------------------------
6085 -- GET TRANSLATED CONTENT ITEM (FOR UPDATE)
6086 --
6087 -- Used to get info to display on update page
6088 --
6089 -- --------------------------------------------------------------
6090 PROCEDURE get_trans_item(
6091     p_citem_ver_id            IN NUMBER
6092     ,p_language               IN VARCHAR2
6093     ,p_skip_security          IN VARCHAR2
6094     ,p_init_msg_list          IN VARCHAR2
6095     ,p_api_version_number     IN NUMBER
6096     ,x_content_item_id        OUT NOCOPY NUMBER
6097     ,x_citem_name             OUT NOCOPY VARCHAR2
6098     ,x_citem_version          OUT NOCOPY NUMBER
6099     ,x_dir_node_id            OUT NOCOPY NUMBER
6100     ,x_dir_node_name          OUT NOCOPY VARCHAR2
6101     ,x_dir_node_code          OUT NOCOPY VARCHAR2
6102     ,x_item_status            OUT NOCOPY VARCHAR2
6103     ,x_version_status         OUT NOCOPY VARCHAR2
6104     ,x_citem_description      OUT NOCOPY VARCHAR2
6105     ,x_ctype_code             OUT NOCOPY VARCHAR2
6106     ,x_ctype_name             OUT NOCOPY VARCHAR2
6107     ,x_start_date             OUT NOCOPY DATE
6108     ,x_end_date               OUT NOCOPY DATE
6109     ,x_owner_resource_id      OUT NOCOPY NUMBER
6110     ,x_owner_resource_type    OUT NOCOPY VARCHAR2
6111     ,x_reference_code         OUT NOCOPY VARCHAR2
6112     ,x_trans_required         OUT NOCOPY VARCHAR2
6113     ,x_parent_item_id         OUT NOCOPY NUMBER
6114     ,x_locked_by              OUT NOCOPY NUMBER
6115     ,x_wd_restricted          OUT NOCOPY VARCHAR2
6116     ,x_attach_file_id         OUT NOCOPY NUMBER
6117     ,x_attach_file_name       OUT NOCOPY VARCHAR2
6118     ,x_attach_mime_type       OUT NOCOPY VARCHAR2
6119     ,x_attach_mime_name       OUT NOCOPY VARCHAR2
6120     ,x_rendition_file_ids     OUT NOCOPY JTF_NUMBER_TABLE
6121     ,x_rendition_file_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
6122     ,x_rendition_mime_types   OUT NOCOPY JTF_VARCHAR2_TABLE_100
6123     ,x_rendition_mime_names   OUT NOCOPY JTF_VARCHAR2_TABLE_100
6124     ,x_default_rendition      OUT NOCOPY NUMBER
6125     ,x_object_version_number  OUT NOCOPY NUMBER
6126     ,x_created_by             OUT NOCOPY NUMBER
6127     ,x_creation_date          OUT NOCOPY DATE
6128     ,x_last_updated_by        OUT NOCOPY NUMBER
6129     ,x_last_update_date       OUT NOCOPY DATE
6130     ,x_attribute_type_codes   OUT NOCOPY JTF_VARCHAR2_TABLE_100
6131     ,x_attribute_type_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
6132     ,x_attributes             OUT NOCOPY JTF_VARCHAR2_TABLE_32767
6133     ,x_component_citems       OUT NOCOPY JTF_NUMBER_TABLE
6134     ,x_component_citem_ver_ids OUT NOCOPY JTF_NUMBER_TABLE
6135     ,x_component_attrib_types OUT NOCOPY JTF_VARCHAR2_TABLE_100
6136     ,x_component_citem_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
6137     ,x_component_owner_ids    OUT NOCOPY JTF_NUMBER_TABLE
6138     ,x_component_owner_types  OUT NOCOPY JTF_VARCHAR2_TABLE_100
6139     ,x_component_sort_orders  OUT NOCOPY JTF_NUMBER_TABLE
6140     ,x_keywords               OUT NOCOPY JTF_VARCHAR2_TABLE_100
6141     ,x_return_status          OUT NOCOPY VARCHAR2
6142     ,x_msg_count              OUT NOCOPY NUMBER
6143     ,x_msg_data               OUT NOCOPY VARCHAR2
6144 )
6145 IS
6146 --******************* BEGIN REQUIRED VARIABLES *************************
6147   L_API_NAME CONSTANT VARCHAR2(30) := 'get_trans_item';         --|**|
6148   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
6149 --******************* END REQUIRED VARIABLES ***************************
6150 
6151     attribute_fid NUMBER; --variable to returned attribute bundle id
6152 
6153     l_default_rendition_mime_type VARCHAR2(80);
6154 
6155     l_index INTEGER := 1; -- counter for component loop
6156     return_status CHAR(1);
6157     lang IBC_CITEM_VERSIONS_TL.LANGUAGE%TYPE;
6158 
6159     CURSOR c_Rendition_Name(p_mime_type VARCHAR2, p_language VARCHAR2) IS
6160       SELECT MEANING
6161         FROM FND_LOOKUP_VALUES
6162         WHERE LOOKUP_TYPE = IBC_UTILITIES_PVT.G_REND_LOOKUP_TYPE
6163           AND LANGUAGE = p_language
6164           AND LOOKUP_CODE = p_mime_type;
6165 
6166 
6167     CURSOR c_components(p_citem_version_id NUMBER,
6168                         p_language         VARCHAR2)
6169     IS
6170       SELECT ibc_compound_relations.content_item_id      ciid
6171              ,ibc_content_items.owner_resource_id        orid
6172              ,ibc_content_items.owner_resource_type      ort
6173              ,ibc_compound_relations.attribute_type_code atc
6174              ,ibc_citem_versions_tl.content_item_name    cin
6175              ,ibc_compound_relations.sort_order          sor
6176              ,ibc_compound_relations.subitem_version_id  svid
6177         FROM ibc_compound_relations
6178              ,ibc_content_items
6179              ,ibc_citem_versions_b b1
6180              ,ibc_citem_versions_tl
6181        WHERE b1.citem_version_id = ibc_citem_versions_tl.citem_version_id
6182          AND b1.content_item_id = ibc_content_items.content_item_id
6183          AND ibc_content_items.content_item_id = ibc_compound_relations.content_item_id
6184          AND b1.version_number = (SELECT MAX(b2.version_number)
6185                                     FROM ibc_citem_versions_b b2
6186                                    WHERE b1.content_item_id = b2.content_item_id
6187                                  )
6188          AND ibc_citem_versions_tl.LANGUAGE = p_language
6189          AND ibc_compound_relations.citem_version_id = p_citem_version_id
6190        ORDER BY ibc_compound_relations.sort_order;
6191 
6192     CURSOR c_renditions(p_citem_version_id NUMBER,
6193                         p_language         VARCHAR2)
6194     IS
6195       SELECT file_id, file_name, mime_type
6196         FROM ibc_renditions
6197        WHERE citem_version_id = p_citem_version_id
6198          AND LANGUAGE = p_language;
6199 
6200     CURSOR c_keywords(p_content_item_id NUMBER) IS
6201       SELECT keyword
6202         FROM ibc_citem_keywords
6203        WHERE content_item_id = p_content_item_id;
6204 
6205     CURSOR c_lob(p_file_id NUMBER) IS
6206       SELECT file_name, file_content_type
6207         FROM fnd_lobs
6208        WHERE file_id = p_file_id;
6209 
6210 BEGIN
6211   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
6212 --******************* BEGIN REQUIRED AREA ******************************
6213       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
6214         FND_MSG_PUB.initialize;                                   --|**|
6215       END IF;                                                     --|**|
6216                                                                   --|**|
6217       -- Standard call to check for call compatibility.           --|**|
6218       IF NOT FND_API.Compatible_API_Call (                        --|**|
6219          L_API_VERSION_NUMBER                                     --|**|
6220       ,p_api_version_number                                    --|**|
6221       ,L_API_NAME                                              --|**|
6222       ,G_PKG_NAME                                              --|**|
6223       )THEN                                                       --|**|
6224        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
6225       END IF;                                                     --|**|
6226                                                                   --|**|
6227       -- Initialize API return status to SUCCESS                  --|**|
6228       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
6229 --******************* END REQUIRED AREA ********************************
6230 
6231     IF IBC_DEBUG_PVT.debug_enabled THEN
6232       IBC_DEBUG_PVT.start_process(
6233          p_proc_type  => 'PROCEDURE',
6234          p_proc_name  => 'Get_Trans_Item',
6235          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
6236                            p_tag     => 'PARAMETERS',
6237                            p_parms   => JTF_VARCHAR2_TABLE_4000(
6238                                           'p_citem_ver_id', p_citem_ver_id,
6239                                           'p_language', p_language,
6240                                           'p_skip_security', p_skip_security,
6241                                           'p_init_msg_list', p_init_msg_list,
6242                                           'p_api_version_number', p_api_version_number
6243                                         )
6244                            )
6245       );
6246     END IF;
6247 
6248     -- checking for valid inputs and throwing exception if invalid
6249      -- validating item information
6250     IF (IBC_VALIDATE_PVT.isValidCitemVer(p_citem_ver_id) = FND_API.g_false) THEN
6251         --DBMS_OUTPUT.put_line('EX - CITEM_VER_ID');
6252         x_return_status := FND_API.G_RET_STS_ERROR;
6253         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
6254         FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
6255         FND_MSG_PUB.ADD;
6256         RAISE FND_API.G_EXC_ERROR;
6257     END IF;
6258 
6259     IF (p_language IS NULL) THEN
6260         lang := USERENV('LANG');
6261     ELSE
6262         lang := p_language;
6263     END IF;
6264 
6265      -- validating language
6266     IF (IBC_VALIDATE_PVT.isValidLanguage(lang) = FND_API.g_false) THEN
6267         --DBMS_OUTPUT.put_line('EX - LANGUAGE');
6268         x_return_status := FND_API.G_RET_STS_ERROR;
6269       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
6270         FND_MESSAGE.Set_Token('INPUT', 'p_language', FALSE);
6271         FND_MSG_PUB.ADD;
6272         RAISE FND_API.G_EXC_ERROR;
6273     END IF;
6274 
6275 -- getting most items from a view
6276 
6277     SELECT
6278         citem_id
6279         ,name
6280         ,version
6281         ,dir_node_id
6282         ,dir_node_name
6283         ,dir_node_code
6284         ,item_status
6285         ,version_status
6286         ,description
6287         ,ctype_code
6288         ,ctype_name
6289         ,start_date
6290         ,end_date
6291         ,owner
6292         ,owner_type
6293         ,ref_code
6294         ,trans_required
6295         ,parent_id
6296         ,locked_by
6297         ,wd_restricted
6298         ,attrib_fid
6299         ,attach_fid
6300         ,attach_file_name
6301         ,default_rendition_mime_type
6302         ,object_version_number
6303         ,created_by
6304         ,creation_date
6305         ,last_updated_by
6306         ,last_update_date
6307     INTO
6308         x_content_item_id
6309         ,x_citem_name
6310         ,x_citem_version
6311         ,x_dir_node_id
6312         ,x_dir_node_name
6313         ,x_dir_node_code
6314         ,x_item_status
6315         ,x_version_status
6316         ,x_citem_description
6317         ,x_ctype_code
6318         ,x_ctype_name
6319         ,x_start_date
6320         ,x_end_date
6321         ,x_owner_resource_id
6322         ,x_owner_resource_type
6323         ,x_reference_code
6324         ,x_trans_required
6325         ,x_parent_item_id
6326         ,x_locked_by
6327         ,x_wd_restricted
6328         ,attribute_fid
6329         ,x_attach_file_id
6330         ,x_attach_file_name
6331         ,l_default_rendition_mime_type
6332         ,x_object_version_number
6333         ,x_created_by
6334         ,x_creation_date
6335         ,x_last_updated_by
6336         ,x_last_update_date
6337     FROM
6338         IBC_CITEMS_V
6339     WHERE
6340         citem_ver_id = p_citem_ver_id
6341     AND
6342         LANGUAGE = lang;
6343 
6344     IF( NVL(p_skip_security, FND_API.g_false) = FND_API.g_false AND
6345         IBC_DATA_SECURITY_PVT.has_permission(                                                        --|*|
6346                 p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
6347                 ,p_instance_pk1_value    => x_content_item_id                                        --|*|
6348                 ,p_permission_code       => 'CITEM_READ'                                             --|*|
6349                 ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
6350                 ,p_container_pk1_value   => x_dir_node_id                                            --|*|
6351                 ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
6352                 ) = FND_API.g_false                                                                  --|*|
6353        ) THEN IF                                                                                     --|*|
6354 
6355   IBC_DATA_SECURITY_PVT.has_permission(
6356     p_instance_object_id  => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')
6357     ,p_instance_pk1_value    => x_content_item_id
6358     ,p_permission_code      => 'CITEM_EDIT'
6359     ,p_container_object_id  =>
6360     IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE'),
6361     p_container_pk1_value  => x_dir_node_id,
6362     p_current_user_id      => FND_GLOBAL.user_id ) = FND_API.g_false  THEN
6363 
6364           --DBMS_OUTPUT.put_line('EX - no permissions');                                       --|*|
6365           x_return_status := FND_API.G_RET_STS_ERROR;                                          --|*|
6366           FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                              --|*|
6367           FND_MSG_PUB.ADD;                                                                     --|*|
6368           RAISE FND_API.G_EXC_ERROR;                                                           --|*|
6369         END IF;                                                                                      --|*|
6370     END IF;                                                                                          --|*|
6371 
6372 
6373     IF(attribute_fid IS NOT NULL) THEN
6374         --getting attribute bundle
6375         get_attribute_bundle_int(
6376              p_attrib_fid             => attribute_fid
6377             ,p_language              => lang -- p_language Bug Fix: 3848499
6378             ,p_ctype_code            => x_ctype_code
6379             ,x_attribute_type_codes  => x_attribute_type_codes
6380             ,x_attribute_type_names  => x_attribute_type_names
6381             ,x_attributes            => x_attributes
6382             ,x_return_status       => return_status
6383         );
6384         -- checking to see if there was an error
6385         IF(return_status = FND_API.G_RET_STS_ERROR) THEN
6386             --DBMS_OUTPUT.put_line('EX - get_attribute_bundle_int');
6387             x_return_status := FND_API.G_RET_STS_ERROR;
6388           FND_MESSAGE.Set_Name('IBC', 'A_BUNDLE_ERROR');
6389             FND_MESSAGE.Set_Token('SITUATION', 'get_attribute_bundle_int', FALSE);
6390             FND_MSG_PUB.ADD;
6391             RAISE FND_API.G_EXC_ERROR;
6392         END IF;
6393     END IF;
6394 
6395     -- Attachment Information
6396     OPEN c_lob(x_attach_file_id);
6397     FETCH c_lob INTO x_attach_file_name, x_attach_mime_type;
6398     CLOSE c_lob;
6399     x_attach_mime_type := GET_MIME_TYPE(x_attach_mime_type);
6400 
6401     OPEN c_Rendition_Name(x_attach_mime_type, lang);
6402     FETCH c_Rendition_Name INTO x_attach_mime_name;
6403     IF c_Rendition_Name%NOTFOUND THEN
6404       CLOSE c_Rendition_Name;
6405       OPEN c_Rendition_Name(IBC_UTILITIES_PVT.G_REND_UNKNOWN_MIME, lang);
6406       FETCH c_Rendition_Name INTO x_attach_mime_name;
6407     END IF;
6408     CLOSE c_Rendition_Name;
6409 
6410 
6411     -- Loading renditions information
6412     FOR r_rendition IN c_renditions(p_citem_ver_id, lang) LOOP
6413       l_index := c_renditions%ROWCOUNT;
6414       -- Allocate
6415       IF l_index = 1 THEN
6416         x_rendition_file_ids   := JTF_NUMBER_TABLE();
6417         x_rendition_file_names := JTF_VARCHAR2_TABLE_300();
6418         x_rendition_mime_types := JTF_VARCHAR2_TABLE_100();
6419         x_rendition_mime_names := JTF_VARCHAR2_TABLE_100();
6420       END IF;
6421 
6422       -- Extend
6423       x_rendition_file_ids.extend;
6424       x_rendition_file_names.extend;
6425       x_rendition_mime_types.extend;
6426       x_rendition_mime_names.extend;
6427 
6428       -- Assign
6429       x_rendition_file_ids(l_index)   := r_rendition.file_id;
6430       x_rendition_file_names(l_index) := r_rendition.file_name;
6431       x_rendition_mime_types(l_index) := r_rendition.mime_type;
6432 
6433       OPEN c_Rendition_Name(r_rendition.mime_type, lang);
6434       FETCH c_Rendition_Name INTO x_rendition_mime_names(l_index);
6435       IF c_Rendition_Name%NOTFOUND THEN
6436         CLOSE c_Rendition_Name;
6437         OPEN c_Rendition_Name(IBC_UTILITIES_PVT.G_REND_UNKNOWN_MIME, lang);
6438         FETCH c_Rendition_Name INTO x_rendition_mime_names(l_index);
6439       END IF;
6440       CLOSE c_Rendition_Name;
6441 
6442       -- Default Rendition logic  -- it now should be based on MIME_TYPE
6443       IF r_rendition.mime_type = l_default_rendition_mime_type THEN
6444         x_default_rendition := l_index;
6445       END IF;
6446 
6447     END LOOP;
6448 
6449     -- If not default rendition defaulting it to first in the list
6450     IF x_default_rendition IS NULL AND x_rendition_file_ids IS NOT NULL
6451     THEN
6452       x_default_rendition := 1;
6453     END IF;
6454 
6455 
6456 
6457     -- Loading component information
6458     FOR r_component IN c_components(p_citem_ver_id, lang) LOOP
6459       l_index := c_components%ROWCOUNT;
6460       -- Allocate
6461       IF l_index = 1 THEN
6462         x_component_citems       := JTF_NUMBER_TABLE();
6463         x_component_citem_ver_ids := JTF_NUMBER_TABLE();
6464         x_component_attrib_types := JTF_VARCHAR2_TABLE_100();
6465         x_component_citem_names  := JTF_VARCHAR2_TABLE_300();
6466         x_component_sort_orders  := JTF_NUMBER_TABLE();
6467         x_component_owner_ids    := JTF_NUMBER_TABLE();
6468         x_component_owner_types  := JTF_VARCHAR2_TABLE_100();
6469       END IF;
6470 
6471       -- Extend
6472       x_component_citems.extend;
6473       x_component_citem_ver_ids.extend;
6474       x_component_owner_ids.extend;
6475       x_component_owner_types.extend;
6476       x_component_attrib_types.extend;
6477       x_component_citem_names.extend;
6478       x_component_sort_orders.extend;
6479 
6480       -- Assign
6481       x_component_citems(l_index)       := r_component.ciid;
6482       x_component_citem_ver_ids(l_index) := r_component.svid;
6483       x_component_owner_ids(l_index)    := r_component.orid;
6484       x_component_owner_types(l_index)  := r_component.ort;
6485       x_component_attrib_types(l_index) := r_component.atc;
6486       x_component_citem_names(l_index)  := r_component.cin;
6487       x_component_sort_orders(l_index)  := r_component.sor;
6488 
6489     END LOOP;
6490 
6491     -- Keywords loading
6492     FOR r_keyword IN c_keywords(x_content_item_id) LOOP
6493       l_index := c_keywords%ROWCOUNT;
6494       IF l_index = 1 THEN
6495         x_keywords := JTF_VARCHAR2_TABLE_100();
6496       END IF;
6497       x_keywords.extend;
6498       x_keywords(l_index) := r_keyword.keyword;
6499     END LOOP;
6500 
6501     -- Standard call to get message count and if count is 1, get message info.
6502     FND_MSG_PUB.Count_And_Get(
6503         p_count           =>      x_msg_count,
6504         p_data            =>      x_msg_data
6505     );
6506 
6507     IF IBC_DEBUG_PVT.debug_enabled THEN
6508       IBC_DEBUG_PVT.end_process(
6509         IBC_DEBUG_PVT.make_parameter_list(
6510           p_tag    => 'OUTPUT',
6511           p_parms  => JTF_VARCHAR2_TABLE_32767(
6512                         'x_content_item_id', x_content_item_id,
6513                         'x_citem_name', x_citem_name,
6514                         'x_citem_version', x_citem_version,
6515                         'x_dir_node_id', x_dir_node_id,
6516                         'x_dir_node_name', x_dir_node_name,
6517                         'x_dir_node_code', x_dir_node_code,
6518                         'x_item_status', x_item_status,
6519                         'x_version_status', x_version_status,
6520                         'x_citem_description', x_citem_description,
6521                         'x_ctype_code', x_ctype_code,
6522                         'x_ctype_name', x_ctype_name,
6523                         'x_start_date', TO_CHAR(x_start_date, 'YYYYMMDD HH24:MI:SS'),
6524                         'x_end_date', TO_CHAR(x_end_date, 'YYYYMMDD HH24:MI:SS'),
6525                         'x_owner_resource_id', x_owner_resource_id,
6526                         'x_owner_resource_type', x_owner_resource_type,
6527                         'x_reference_code', x_reference_code,
6528                         'x_trans_required', x_trans_required,
6529                         'x_parent_item_id', x_parent_item_id,
6530                         'x_locked_by', x_locked_by,
6531                         'x_wd_restricted', x_wd_restricted,
6532                         'x_attach_file_id', x_attach_file_id,
6533                         'x_attach_file_name', x_attach_file_name,
6534                         'x_attach_mime_type', x_attach_mime_type,
6535                         'x_attach_mime_name', x_attach_mime_name,
6536                         'x_rendition_file_ids', IBC_DEBUG_PVT.make_list(x_rendition_file_ids),
6537                         'x_rendition_file_names', IBC_DEBUG_PVT.make_list(x_rendition_file_names),
6538                         'x_rendition_mime_types', IBC_DEBUG_PVT.make_list(x_rendition_mime_types),
6539                         'x_rendition_mime_names', IBC_DEBUG_PVT.make_list(x_rendition_mime_names),
6540                         'x_default_rendition', x_default_rendition,
6541                         'x_object_version_number', x_object_version_number,
6542                         'x_created_by', x_created_by,
6543                         'x_creation_date', TO_CHAR(x_creation_date, 'YYYYMMDD HH24:MI:SS'),
6544                         'x_last_updated_by', x_last_updated_by,
6545                         'x_attribute_type_codes', IBC_DEBUG_PVT.make_list(x_attribute_type_codes),
6546                         'x_attribute_type_names', IBC_DEBUG_PVT.make_list(x_attribute_type_names),
6547                         'x_attributes', IBC_DEBUG_PVT.make_list_VC32767(x_attributes),
6548                         'x_component_citems', IBC_DEBUG_PVT.make_list(x_component_citems),
6549                         'x_component_citem_ver_ids', IBC_DEBUG_PVT.make_list(x_component_citem_ver_ids),
6550                         'x_component_attrib_types', IBC_DEBUG_PVT.make_list(x_component_attrib_types),
6551                         'x_component_citem_names', IBC_DEBUG_PVT.make_list(x_component_citem_names),
6552                         'x_component_owner_ids', IBC_DEBUG_PVT.make_list(x_component_owner_ids),
6553                         'x_component_owner_types', IBC_DEBUG_PVT.make_list(x_component_owner_types),
6554                         'x_component_sort_orders', IBC_DEBUG_PVT.make_list(x_component_sort_orders),
6555                         'x_keywords', IBC_DEBUG_PVT.make_list(x_keywords),
6556                         'x_return_status', x_return_status,
6557                         'x_msg_count', x_msg_count,
6558                         'x_msg_data', x_msg_data
6559                       )
6560         )
6561       );
6562     END IF;
6563 
6564 EXCEPTION
6565     WHEN FND_API.G_EXC_ERROR THEN
6566       --DBMS_OUTPUT.put_line('Expected Error');
6567       Ibc_Utilities_Pvt.handle_exceptions(
6568          p_api_name           => L_API_NAME
6569          ,p_pkg_name          => G_PKG_NAME
6570          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
6571          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
6572          ,p_sqlcode           => SQLCODE
6573          ,p_sqlerrm           => SQLERRM
6574          ,x_msg_count         => x_msg_count
6575          ,x_msg_data          => x_msg_data
6576          ,x_return_status     => x_return_status
6577        );
6578       IF IBC_DEBUG_PVT.debug_enabled THEN
6579         IBC_DEBUG_PVT.end_process(
6580           IBC_DEBUG_PVT.make_parameter_list(
6581             p_tag    => 'OUTPUT',
6582             p_parms  => JTF_VARCHAR2_TABLE_4000(
6583                           'x_return_status', x_return_status,
6584                           'x_msg_count', x_msg_count,
6585                           'x_msg_data', x_msg_data
6586                         )
6587           )
6588         );
6589       END IF;
6590   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6591       --DBMS_OUTPUT.put_line('Unexpected error');
6592       Ibc_Utilities_Pvt.handle_exceptions(
6593          p_api_name           => L_API_NAME
6594          ,p_pkg_name          => G_PKG_NAME
6595          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
6596          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
6597          ,p_sqlcode           => SQLCODE
6598          ,p_sqlerrm           => SQLERRM
6599          ,x_msg_count         => x_msg_count
6600          ,x_msg_data          => x_msg_data
6601          ,x_return_status     => x_return_status
6602       );
6603       IF IBC_DEBUG_PVT.debug_enabled THEN
6604         IBC_DEBUG_PVT.end_process(
6605           IBC_DEBUG_PVT.make_parameter_list(
6606             p_tag    => 'OUTPUT',
6607             p_parms  => JTF_VARCHAR2_TABLE_4000(
6608                           'x_return_status', x_return_status,
6609                           'x_msg_count', x_msg_count,
6610                           'x_msg_data', x_msg_data
6611                         )
6612           )
6613         );
6614       END IF;
6615   WHEN OTHERS THEN
6616       --DBMS_OUTPUT.put_line('Other error');
6617       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
6618          p_api_name           => L_API_NAME
6619          ,p_pkg_name          => G_PKG_NAME
6620          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
6621          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
6622          ,p_sqlcode           => SQLCODE
6623          ,p_sqlerrm           => SQLERRM
6624          ,x_msg_count         => x_msg_count
6625          ,x_msg_data          => x_msg_data
6626          ,x_return_status     => x_return_status
6627       );
6628       IF IBC_DEBUG_PVT.debug_enabled THEN
6629         IBC_DEBUG_PVT.end_process(
6630           IBC_DEBUG_PVT.make_parameter_list(
6631             p_tag    => 'OUTPUT',
6632             p_parms  => JTF_VARCHAR2_TABLE_4000(
6633                           'x_return_status', x_return_status,
6634                           'x_msg_count', x_msg_count,
6635                           'x_msg_data', x_msg_data,
6636                           'EXCEPTION', SQLERRM
6637                         )
6638           )
6639         );
6640       END IF;
6641  END get_trans_item;
6642 
6643 -- Overloaded to support the addition of skip_security
6644 PROCEDURE get_trans_item(
6645     p_citem_ver_id            IN NUMBER
6646     ,p_language               IN VARCHAR2
6647     ,p_init_msg_list          IN VARCHAR2
6648     ,p_api_version_number     IN NUMBER
6649     ,x_content_item_id        OUT NOCOPY NUMBER
6650     ,x_citem_name             OUT NOCOPY VARCHAR2
6651     ,x_citem_version          OUT NOCOPY NUMBER
6652     ,x_dir_node_id            OUT NOCOPY NUMBER
6653     ,x_dir_node_name          OUT NOCOPY VARCHAR2
6654     ,x_dir_node_code          OUT NOCOPY VARCHAR2
6655     ,x_item_status            OUT NOCOPY VARCHAR2
6656     ,x_version_status         OUT NOCOPY VARCHAR2
6657     ,x_citem_description      OUT NOCOPY VARCHAR2
6658     ,x_ctype_code             OUT NOCOPY VARCHAR2
6659     ,x_ctype_name             OUT NOCOPY VARCHAR2
6660     ,x_start_date             OUT NOCOPY DATE
6661     ,x_end_date               OUT NOCOPY DATE
6662     ,x_owner_resource_id      OUT NOCOPY NUMBER
6663     ,x_owner_resource_type    OUT NOCOPY VARCHAR2
6664     ,x_reference_code         OUT NOCOPY VARCHAR2
6665     ,x_trans_required         OUT NOCOPY VARCHAR2
6666     ,x_parent_item_id         OUT NOCOPY NUMBER
6667     ,x_locked_by              OUT NOCOPY NUMBER
6668     ,x_wd_restricted          OUT NOCOPY VARCHAR2
6669     ,x_attach_file_id         OUT NOCOPY NUMBER
6670     ,x_attach_file_name       OUT NOCOPY VARCHAR2
6671     ,x_attach_mime_type       OUT NOCOPY VARCHAR2
6672     ,x_attach_mime_name       OUT NOCOPY VARCHAR2
6673     ,x_rendition_file_ids     OUT NOCOPY JTF_NUMBER_TABLE
6674     ,x_rendition_file_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
6675     ,x_rendition_mime_types   OUT NOCOPY JTF_VARCHAR2_TABLE_100
6676     ,x_rendition_mime_names   OUT NOCOPY JTF_VARCHAR2_TABLE_100
6677     ,x_default_rendition      OUT NOCOPY NUMBER
6678     ,x_object_version_number  OUT NOCOPY NUMBER
6679     ,x_created_by             OUT NOCOPY NUMBER
6680     ,x_creation_date          OUT NOCOPY DATE
6681     ,x_last_updated_by        OUT NOCOPY NUMBER
6682     ,x_last_update_date       OUT NOCOPY DATE
6683     ,x_attribute_type_codes   OUT NOCOPY JTF_VARCHAR2_TABLE_100
6684     ,x_attribute_type_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
6685     ,x_attributes             OUT NOCOPY JTF_VARCHAR2_TABLE_32767
6686     ,x_component_citems       OUT NOCOPY JTF_NUMBER_TABLE
6687     ,x_component_citem_ver_ids OUT NOCOPY JTF_NUMBER_TABLE
6688     ,x_component_attrib_types OUT NOCOPY JTF_VARCHAR2_TABLE_100
6689     ,x_component_citem_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
6690     ,x_component_owner_ids    OUT NOCOPY JTF_NUMBER_TABLE
6691     ,x_component_owner_types  OUT NOCOPY JTF_VARCHAR2_TABLE_100
6692     ,x_component_sort_orders  OUT NOCOPY JTF_NUMBER_TABLE
6693     ,x_keywords               OUT NOCOPY JTF_VARCHAR2_TABLE_100
6694     ,x_return_status          OUT NOCOPY VARCHAR2
6695     ,x_msg_count              OUT NOCOPY NUMBER
6696     ,x_msg_data               OUT NOCOPY VARCHAR2
6697 )
6698 IS
6699 BEGIN
6700   get_trans_item(
6701     p_citem_ver_id            => p_citem_ver_id
6702     ,p_language               => p_language
6703     ,p_init_msg_list          => p_init_msg_list
6704     ,p_skip_security          => FND_API.g_false
6705     ,p_api_version_number     => p_api_version_number
6706     ,x_content_item_id        => x_content_item_id
6707     ,x_citem_name             => x_citem_name
6708     ,x_citem_version          => x_citem_version
6709     ,x_dir_node_id            => x_dir_node_id
6710     ,x_dir_node_name          => x_dir_node_name
6711     ,x_dir_node_code          => x_dir_node_code
6712     ,x_item_status            => x_item_status
6713     ,x_version_status         => x_version_status
6714     ,x_citem_description      => x_citem_description
6715     ,x_ctype_code             => x_ctype_code
6716     ,x_ctype_name             => x_ctype_name
6717     ,x_start_date             => x_start_date
6718     ,x_end_date               => x_end_date
6719     ,x_owner_resource_id      => x_owner_resource_id
6720     ,x_owner_resource_type    => x_owner_resource_type
6721     ,x_reference_code         => x_reference_code
6722     ,x_trans_required         => x_trans_required
6723     ,x_parent_item_id         => x_parent_item_id
6724     ,x_locked_by              => x_locked_by
6725     ,x_wd_restricted          => x_wd_restricted
6726     ,x_attach_file_id         => x_attach_file_id
6727     ,x_attach_file_name       => x_attach_file_name
6728     ,x_attach_mime_type       => x_attach_mime_type
6729     ,x_attach_mime_name       => x_attach_mime_name
6730     ,x_rendition_file_ids     => x_rendition_file_ids
6731     ,x_rendition_file_names   => x_rendition_file_names
6732     ,x_rendition_mime_types   => x_rendition_mime_types
6733     ,x_rendition_mime_names   => x_rendition_mime_names
6734     ,x_default_rendition      => x_default_rendition
6735     ,x_object_version_number  => x_object_version_number
6736     ,x_created_by             => x_created_by
6737     ,x_creation_date          => x_creation_date
6738     ,x_last_updated_by        => x_last_updated_by
6739     ,x_last_update_date       => x_last_update_date
6740     ,x_attribute_type_codes   => x_attribute_type_codes
6741     ,x_attribute_type_names   => x_attribute_type_names
6742     ,x_attributes             => x_attributes
6743     ,x_component_citems       => x_component_citems
6744     ,x_component_citem_ver_ids => x_component_citem_ver_ids
6745     ,x_component_attrib_types => x_component_attrib_types
6746     ,x_component_citem_names  => x_component_citem_names
6747     ,x_component_owner_ids    => x_component_owner_ids
6748     ,x_component_owner_types  => x_component_owner_types
6749     ,x_component_sort_orders  => x_component_sort_orders
6750     ,x_keywords               => x_keywords
6751     ,x_return_status          => x_return_status
6752     ,x_msg_count              => x_msg_count
6753     ,x_msg_data               => x_msg_data
6754   );
6755 
6756 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
6757 EXCEPTION
6758   WHEN OTHERS THEN
6759     RAISE;
6760 END get_trans_item;
6761 
6762 -- Overloaded to support old 4K limit for attribute values
6763 PROCEDURE get_trans_item(
6764     p_citem_ver_id            IN NUMBER
6765     ,p_language               IN VARCHAR2
6766     ,p_init_msg_list          IN VARCHAR2
6767     ,p_api_version_number     IN NUMBER
6768     ,x_content_item_id        OUT NOCOPY NUMBER
6769     ,x_citem_name             OUT NOCOPY VARCHAR2
6770     ,x_citem_version          OUT NOCOPY NUMBER
6771     ,x_dir_node_id            OUT NOCOPY NUMBER
6772     ,x_dir_node_name          OUT NOCOPY VARCHAR2
6773     ,x_dir_node_code          OUT NOCOPY VARCHAR2
6774     ,x_item_status            OUT NOCOPY VARCHAR2
6775     ,x_version_status         OUT NOCOPY VARCHAR2
6776     ,x_citem_description      OUT NOCOPY VARCHAR2
6777     ,x_ctype_code             OUT NOCOPY VARCHAR2
6778     ,x_ctype_name             OUT NOCOPY VARCHAR2
6779     ,x_start_date             OUT NOCOPY DATE
6780     ,x_end_date               OUT NOCOPY DATE
6781     ,x_owner_resource_id      OUT NOCOPY NUMBER
6782     ,x_owner_resource_type    OUT NOCOPY VARCHAR2
6783     ,x_reference_code         OUT NOCOPY VARCHAR2
6784     ,x_trans_required         OUT NOCOPY VARCHAR2
6785     ,x_parent_item_id         OUT NOCOPY NUMBER
6786     ,x_locked_by              OUT NOCOPY NUMBER
6787     ,x_wd_restricted          OUT NOCOPY VARCHAR2
6788     ,x_attach_file_id         OUT NOCOPY NUMBER
6789     ,x_attach_file_name       OUT NOCOPY VARCHAR2
6790     ,x_attach_mime_type       OUT NOCOPY VARCHAR2
6791     ,x_attach_mime_name       OUT NOCOPY VARCHAR2
6792     ,x_rendition_file_ids     OUT NOCOPY JTF_NUMBER_TABLE
6793     ,x_rendition_file_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
6794     ,x_rendition_mime_types   OUT NOCOPY JTF_VARCHAR2_TABLE_100
6795     ,x_rendition_mime_names   OUT NOCOPY JTF_VARCHAR2_TABLE_100
6796     ,x_default_rendition      OUT NOCOPY NUMBER
6797     ,x_object_version_number  OUT NOCOPY NUMBER
6798     ,x_created_by             OUT NOCOPY NUMBER
6799     ,x_creation_date          OUT NOCOPY DATE
6800     ,x_last_updated_by        OUT NOCOPY NUMBER
6801     ,x_last_update_date       OUT NOCOPY DATE
6802     ,x_attribute_type_codes   OUT NOCOPY JTF_VARCHAR2_TABLE_100
6803     ,x_attribute_type_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
6804     ,x_attributes             OUT NOCOPY JTF_VARCHAR2_TABLE_4000
6805     ,x_component_citems       OUT NOCOPY JTF_NUMBER_TABLE
6806     ,x_component_citem_ver_ids OUT NOCOPY JTF_NUMBER_TABLE
6807     ,x_component_attrib_types OUT NOCOPY JTF_VARCHAR2_TABLE_100
6808     ,x_component_citem_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
6809     ,x_component_owner_ids    OUT NOCOPY JTF_NUMBER_TABLE
6810     ,x_component_owner_types  OUT NOCOPY JTF_VARCHAR2_TABLE_100
6811     ,x_component_sort_orders  OUT NOCOPY JTF_NUMBER_TABLE
6812     ,x_keywords               OUT NOCOPY JTF_VARCHAR2_TABLE_100
6813     ,x_return_status          OUT NOCOPY VARCHAR2
6814     ,x_msg_count              OUT NOCOPY NUMBER
6815     ,x_msg_data               OUT NOCOPY VARCHAR2
6816 )
6817 IS
6818   l_tmp_attributes    JTF_VARCHAR2_TABLE_32767;
6819 BEGIN
6820   get_trans_item(
6821     p_citem_ver_id            => p_citem_ver_id
6822     ,p_language               => p_language
6823     ,p_init_msg_list          => p_init_msg_list
6824     ,p_api_version_number     => p_api_version_number
6825     ,x_content_item_id        => x_content_item_id
6826     ,x_citem_name             => x_citem_name
6827     ,x_citem_version          => x_citem_version
6828     ,x_dir_node_id            => x_dir_node_id
6829     ,x_dir_node_name          => x_dir_node_name
6830     ,x_dir_node_code          => x_dir_node_code
6831     ,x_item_status            => x_item_status
6832     ,x_version_status         => x_version_status
6833     ,x_citem_description      => x_citem_description
6834     ,x_ctype_code             => x_ctype_code
6835     ,x_ctype_name             => x_ctype_name
6836     ,x_start_date             => x_start_date
6837     ,x_end_date               => x_end_date
6838     ,x_owner_resource_id      => x_owner_resource_id
6839     ,x_owner_resource_type    => x_owner_resource_type
6840     ,x_reference_code         => x_reference_code
6841     ,x_trans_required         => x_trans_required
6842     ,x_parent_item_id         => x_parent_item_id
6843     ,x_locked_by              => x_locked_by
6844     ,x_wd_restricted          => x_wd_restricted
6845     ,x_attach_file_id         => x_attach_file_id
6846     ,x_attach_file_name       => x_attach_file_name
6847     ,x_attach_mime_type       => x_attach_mime_type
6848     ,x_attach_mime_name       => x_attach_mime_name
6849     ,x_rendition_file_ids     => x_rendition_file_ids
6850     ,x_rendition_file_names   => x_rendition_file_names
6851     ,x_rendition_mime_types   => x_rendition_mime_types
6852     ,x_rendition_mime_names   => x_rendition_mime_names
6853     ,x_default_rendition      => x_default_rendition
6854     ,x_object_version_number  => x_object_version_number
6855     ,x_created_by             => x_created_by
6856     ,x_creation_date          => x_creation_date
6857     ,x_last_updated_by        => x_last_updated_by
6858     ,x_last_update_date       => x_last_update_date
6859     ,x_attribute_type_codes   => x_attribute_type_codes
6860     ,x_attribute_type_names   => x_attribute_type_names
6861     ,x_attributes             => l_tmp_attributes
6862     ,x_component_citems       => x_component_citems
6863     ,x_component_citem_ver_ids => x_component_citem_ver_ids
6864     ,x_component_attrib_types => x_component_attrib_types
6865     ,x_component_citem_names  => x_component_citem_names
6866     ,x_component_owner_ids    => x_component_owner_ids
6867     ,x_component_owner_types  => x_component_owner_types
6868     ,x_component_sort_orders  => x_component_sort_orders
6869     ,x_keywords               => x_keywords
6870     ,x_return_status          => x_return_status
6871     ,x_msg_count              => x_msg_count
6872     ,x_msg_data               => x_msg_data
6873   );
6874 
6875   IF l_tmp_attributes IS NOT NULL AND l_tmp_attributes.COUNT > 0 THEN
6876     x_attributes := JTF_VARCHAR2_TABLE_4000();
6877     x_attributes.extend(l_tmp_attributes.COUNT);
6878     FOR I IN 1..l_tmp_attributes.COUNT LOOP
6879       x_attributes(I) := l_tmp_attributes(I);
6880     END LOOP;
6881   END IF;
6882 
6883 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
6884 EXCEPTION
6885   WHEN OTHERS THEN
6886     RAISE;
6887 
6888 END get_trans_item;
6889 
6890 
6891 -- --------------------------------------------------------------
6892 -- GET TRANSLATED CONTENT ITEM (FOR UPDATE)
6893 --
6894 -- Used to get info to display on update page
6895 --
6896 -- --------------------------------------------------------------
6897 PROCEDURE get_trans_item(
6898     p_citem_ver_id            IN NUMBER
6899     ,p_language               IN VARCHAR2
6900     ,p_init_msg_list          IN VARCHAR2
6901     ,p_api_version_number     IN NUMBER
6902     ,x_content_item_id        OUT NOCOPY NUMBER
6903     ,x_citem_name             OUT NOCOPY VARCHAR2
6904     ,x_citem_version          OUT NOCOPY NUMBER
6905     ,x_dir_node_id            OUT NOCOPY NUMBER
6906     ,x_dir_node_name          OUT NOCOPY VARCHAR2
6907     ,x_dir_node_code          OUT NOCOPY VARCHAR2
6908     ,x_item_status            OUT NOCOPY VARCHAR2
6909     ,x_version_status         OUT NOCOPY VARCHAR2
6910     ,x_citem_description      OUT NOCOPY VARCHAR2
6911     ,x_ctype_code             OUT NOCOPY VARCHAR2
6912     ,x_ctype_name             OUT NOCOPY VARCHAR2
6913     ,x_start_date             OUT NOCOPY DATE
6914     ,x_end_date               OUT NOCOPY DATE
6915     ,x_owner_resource_id      OUT NOCOPY NUMBER
6916     ,x_owner_resource_type    OUT NOCOPY VARCHAR2
6917     ,x_reference_code         OUT NOCOPY VARCHAR2
6918     ,x_trans_required         OUT NOCOPY VARCHAR2
6919     ,x_parent_item_id         OUT NOCOPY NUMBER
6920     ,x_locked_by              OUT NOCOPY NUMBER
6921     ,x_wd_restricted          OUT NOCOPY VARCHAR2
6922     ,x_attach_file_ids        OUT NOCOPY JTF_NUMBER_TABLE
6923     ,x_attach_file_names      OUT NOCOPY JTF_VARCHAR2_TABLE_300
6924     ,x_attach_mime_types      OUT NOCOPY JTF_VARCHAR2_TABLE_100
6925     ,x_attach_mime_names      OUT NOCOPY JTF_VARCHAR2_TABLE_100
6926     ,x_default_rendition      OUT NOCOPY NUMBER
6927     ,x_object_version_number  OUT NOCOPY NUMBER
6928     ,x_created_by             OUT NOCOPY NUMBER
6929     ,x_creation_date          OUT NOCOPY DATE
6930     ,x_last_updated_by        OUT NOCOPY NUMBER
6931     ,x_last_update_date       OUT NOCOPY DATE
6932     ,x_attribute_type_codes   OUT NOCOPY JTF_VARCHAR2_TABLE_100
6933     ,x_attribute_type_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
6934     ,x_attributes             OUT NOCOPY JTF_VARCHAR2_TABLE_4000
6935     ,x_component_citems       OUT NOCOPY JTF_NUMBER_TABLE
6936     ,x_component_citem_ver_ids OUT NOCOPY JTF_NUMBER_TABLE
6937     ,x_component_attrib_types OUT NOCOPY JTF_VARCHAR2_TABLE_100
6938     ,x_component_citem_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
6939     ,x_component_owner_ids    OUT NOCOPY JTF_NUMBER_TABLE
6940     ,x_component_owner_types  OUT NOCOPY JTF_VARCHAR2_TABLE_100
6941     ,x_component_sort_orders  OUT NOCOPY JTF_NUMBER_TABLE
6942     ,x_keywords               OUT NOCOPY JTF_VARCHAR2_TABLE_100
6943     ,x_return_status          OUT NOCOPY VARCHAR2
6944     ,x_msg_count              OUT NOCOPY NUMBER
6945     ,x_msg_data               OUT NOCOPY VARCHAR2
6946 )
6947 IS
6948   l_attach_file_id   NUMBER;
6949   l_attach_file_name VARCHAR2(240);
6950   l_attach_mime_type VARCHAR2(80);
6951   l_attach_mime_name VARCHAR2(80);
6952 
6953   l_norend_file_ids   JTF_NUMBER_TABLE;
6954   l_norend_file_names JTF_VARCHAR2_TABLE_300;
6955   l_norend_mime_types JTF_VARCHAR2_TABLE_100;
6956   l_norend_mime_names JTF_VARCHAR2_TABLE_100;
6957 BEGIN
6958   get_trans_item(
6959     p_citem_ver_id            => p_citem_ver_id
6960     ,p_language               => p_language
6961     ,p_init_msg_list          => p_init_msg_list
6962     ,p_api_version_number     => p_api_version_number
6963     ,x_content_item_id        => x_content_item_id
6964     ,x_citem_name             => x_citem_name
6965     ,x_citem_version          => x_citem_version
6966     ,x_dir_node_id            => x_dir_node_id
6967     ,x_dir_node_name          => x_dir_node_name
6968     ,x_dir_node_code          => x_dir_node_code
6969     ,x_item_status            => x_item_status
6970     ,x_version_status         => x_version_status
6971     ,x_citem_description      => x_citem_description
6972     ,x_ctype_code             => x_ctype_code
6973     ,x_ctype_name             => x_ctype_name
6974     ,x_start_date             => x_start_date
6975     ,x_end_date               => x_end_date
6976     ,x_owner_resource_id      => x_owner_resource_id
6977     ,x_owner_resource_type    => x_owner_resource_type
6978     ,x_reference_code         => x_reference_code
6979     ,x_trans_required         => x_trans_required
6980     ,x_parent_item_id         => x_parent_item_id
6981     ,x_locked_by              => x_locked_by
6982     ,x_wd_restricted          => x_wd_restricted
6983     ,x_attach_file_id         => l_attach_file_id
6984     ,x_attach_file_name       => l_attach_file_name
6985     ,x_attach_mime_type       => l_attach_mime_type
6986     ,x_attach_mime_name       => l_attach_mime_name
6987     ,x_rendition_file_ids     => l_norend_file_ids
6988     ,x_rendition_file_names   => l_norend_file_names
6989     ,x_rendition_mime_types   => l_norend_mime_types
6990     ,x_rendition_mime_names   => l_norend_mime_names
6991     ,x_default_rendition      => x_default_rendition
6992     ,x_object_version_number  => x_object_version_number
6993     ,x_created_by             => x_created_by
6994     ,x_creation_date          => x_creation_date
6995     ,x_last_updated_by        => x_last_updated_by
6996     ,x_last_update_date       => x_last_update_date
6997     ,x_attribute_type_codes   => x_attribute_type_codes
6998     ,x_attribute_type_names   => x_attribute_type_names
6999     ,x_attributes             => x_attributes
7000     ,x_component_citems       => x_component_citems
7001     ,x_component_citem_ver_ids => x_component_citem_ver_ids
7002     ,x_component_attrib_types => x_component_attrib_types
7003     ,x_component_citem_names  => x_component_citem_names
7004     ,x_component_owner_ids    => x_component_owner_ids
7005     ,x_component_owner_types  => x_component_owner_types
7006     ,x_component_sort_orders  => x_component_sort_orders
7007     ,x_keywords               => x_keywords
7008     ,x_return_status          => x_return_status
7009     ,x_msg_count              => x_msg_count
7010     ,x_msg_data               => x_msg_data
7011   );
7012 
7013   IF l_attach_file_id IS NOT NULL THEN
7014     x_attach_file_ids   := JTF_NUMBER_TABLE();
7015     x_attach_file_names := JTF_VARCHAR2_TABLE_300();
7016     x_attach_mime_types := JTF_VARCHAR2_TABLE_100();
7017     x_attach_mime_names := JTF_VARCHAR2_TABLE_100();
7018 
7019     x_attach_file_ids.extend();
7020     x_attach_file_names.extend();
7021     x_attach_mime_types.extend();
7022     x_attach_mime_names.extend();
7023 
7024     x_attach_file_ids(1)   := l_attach_file_id;
7025     x_attach_file_names(1) := l_attach_file_name;
7026     x_attach_mime_types(1) := l_attach_mime_type;
7027     x_attach_mime_names(1) := l_attach_mime_name;
7028   END IF;
7029 
7030 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
7031 EXCEPTION
7032   WHEN OTHERS THEN
7033     RAISE;
7034 END get_trans_item;
7035 
7036 PROCEDURE get_trans_item(
7037     p_citem_ver_id            IN NUMBER
7038     ,p_language               IN VARCHAR2
7039     ,p_init_msg_list          IN VARCHAR2
7040     ,p_api_version_number     IN NUMBER
7041     ,x_content_item_id        OUT NOCOPY NUMBER
7042     ,x_citem_name             OUT NOCOPY VARCHAR2
7043     ,x_citem_version          OUT NOCOPY NUMBER
7044     ,x_dir_node_id            OUT NOCOPY NUMBER
7045     ,x_dir_node_name          OUT NOCOPY VARCHAR2
7046     ,x_dir_node_code          OUT NOCOPY VARCHAR2
7047     ,x_item_status            OUT NOCOPY VARCHAR2
7048     ,x_version_status         OUT NOCOPY VARCHAR2
7049     ,x_citem_description      OUT NOCOPY VARCHAR2
7050     ,x_ctype_code             OUT NOCOPY VARCHAR2
7051     ,x_ctype_name             OUT NOCOPY VARCHAR2
7052     ,x_start_date             OUT NOCOPY DATE
7053     ,x_end_date               OUT NOCOPY DATE
7054     ,x_owner_resource_id      OUT NOCOPY NUMBER
7055     ,x_owner_resource_type    OUT NOCOPY VARCHAR2
7056     ,x_reference_code         OUT NOCOPY VARCHAR2
7057     ,x_trans_required         OUT NOCOPY VARCHAR2
7058     ,x_parent_item_id         OUT NOCOPY NUMBER
7059     ,x_locked_by              OUT NOCOPY NUMBER
7060     ,x_wd_restricted          OUT NOCOPY VARCHAR2
7061     ,x_attach_file_ids        OUT NOCOPY JTF_NUMBER_TABLE
7062     ,x_attach_file_names      OUT NOCOPY JTF_VARCHAR2_TABLE_300
7063     ,x_attach_mime_types      OUT NOCOPY JTF_VARCHAR2_TABLE_100
7064     ,x_attach_mime_names      OUT NOCOPY JTF_VARCHAR2_TABLE_100
7065     ,x_default_rendition      OUT NOCOPY NUMBER
7066     ,x_object_version_number  OUT NOCOPY NUMBER
7067     ,x_created_by             OUT NOCOPY NUMBER
7068     ,x_creation_date          OUT NOCOPY DATE
7069     ,x_last_updated_by        OUT NOCOPY NUMBER
7070     ,x_last_update_date       OUT NOCOPY DATE
7071     ,x_attribute_type_codes   OUT NOCOPY JTF_VARCHAR2_TABLE_100
7072     ,x_attribute_type_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
7073     ,x_attributes             OUT NOCOPY JTF_VARCHAR2_TABLE_4000
7074     ,x_component_citems       OUT NOCOPY JTF_NUMBER_TABLE
7075     ,x_component_attrib_types OUT NOCOPY JTF_VARCHAR2_TABLE_100
7076     ,x_component_citem_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
7077     ,x_component_owner_ids    OUT NOCOPY JTF_NUMBER_TABLE
7078     ,x_component_owner_types  OUT NOCOPY JTF_VARCHAR2_TABLE_100
7079     ,x_component_sort_orders  OUT NOCOPY JTF_NUMBER_TABLE
7080     ,x_return_status          OUT NOCOPY VARCHAR2
7081     ,x_msg_count              OUT NOCOPY NUMBER
7082     ,x_msg_data               OUT NOCOPY VARCHAR2
7083 )
7084 IS
7085   l_component_citem_ver_ids JTF_NUMBER_TABLE;
7086 BEGIN
7087 
7088   get_trans_item(
7089     p_citem_ver_id            => p_citem_ver_id
7090     ,p_language               => p_language
7091     ,p_init_msg_list          => p_init_msg_list
7092     ,p_api_version_number     => p_api_version_number
7093     ,x_content_item_id        => x_content_item_id
7094     ,x_citem_name             => x_citem_name
7095     ,x_citem_version          => x_citem_version
7096     ,x_dir_node_id            => x_dir_node_id
7097     ,x_dir_node_name          => x_dir_node_name
7098     ,x_dir_node_code          => x_dir_node_code
7099     ,x_item_status            => x_item_status
7100     ,x_version_status         => x_version_status
7101     ,x_citem_description      => x_citem_description
7102     ,x_ctype_code             => x_ctype_code
7103     ,x_ctype_name             => x_ctype_name
7104     ,x_start_date             => x_start_date
7105     ,x_end_date               => x_end_date
7106     ,x_owner_resource_id      => x_owner_resource_id
7107     ,x_owner_resource_type    => x_owner_resource_type
7108     ,x_reference_code         => x_reference_code
7109     ,x_trans_required         => x_trans_required
7110     ,x_parent_item_id         => x_parent_item_id
7111     ,x_locked_by              => x_locked_by
7112     ,x_wd_restricted          => x_wd_restricted
7113     ,x_attach_file_ids        => x_attach_file_ids
7114     ,x_attach_file_names      => x_attach_file_names
7115     ,x_attach_mime_types      => x_attach_mime_types
7116     ,x_attach_mime_names      => x_attach_mime_names
7117     ,x_default_rendition      => x_default_rendition
7118     ,x_object_version_number  => x_object_version_number
7119     ,x_created_by             => x_created_by
7120     ,x_creation_date          => x_creation_date
7121     ,x_last_updated_by        => x_last_updated_by
7122     ,x_last_update_date       => x_last_update_date
7123     ,x_attribute_type_codes   => x_attribute_type_codes
7124     ,x_attribute_type_names   => x_attribute_type_names
7125     ,x_attributes             => x_attributes
7126     ,x_component_citems       => x_component_citems
7127     ,x_component_citem_ver_ids => l_component_citem_ver_ids
7128     ,x_component_attrib_types => x_component_attrib_types
7129     ,x_component_citem_names  => x_component_citem_names
7130     ,x_component_owner_ids    => x_component_owner_ids
7131     ,x_component_owner_types  => x_component_owner_types
7132     ,x_component_sort_orders  => x_component_sort_orders
7133     ,x_return_status          => x_return_status
7134     ,x_msg_count              => x_msg_count
7135     ,x_msg_data               => x_msg_data
7136   );
7137 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
7138 EXCEPTION
7139   WHEN OTHERS THEN
7140     RAISE;
7141 END Get_Trans_Item;
7142 
7143 PROCEDURE get_trans_item(
7144     p_citem_ver_id            IN NUMBER
7145     ,p_language               IN VARCHAR2
7146     ,p_init_msg_list          IN VARCHAR2
7147     ,p_api_version_number     IN NUMBER
7148     ,x_content_item_id        OUT NOCOPY NUMBER
7149     ,x_citem_name             OUT NOCOPY VARCHAR2
7150     ,x_citem_version          OUT NOCOPY NUMBER
7151     ,x_dir_node_id            OUT NOCOPY NUMBER
7152     ,x_dir_node_name          OUT NOCOPY VARCHAR2
7153     ,x_dir_node_code          OUT NOCOPY VARCHAR2
7154     ,x_item_status            OUT NOCOPY VARCHAR2
7155     ,x_version_status         OUT NOCOPY VARCHAR2
7156     ,x_citem_description      OUT NOCOPY VARCHAR2
7157     ,x_ctype_code             OUT NOCOPY VARCHAR2
7158     ,x_ctype_name             OUT NOCOPY VARCHAR2
7159     ,x_start_date             OUT NOCOPY DATE
7160     ,x_end_date               OUT NOCOPY DATE
7161     ,x_owner_resource_id      OUT NOCOPY NUMBER
7162     ,x_owner_resource_type    OUT NOCOPY VARCHAR2
7163     ,x_reference_code         OUT NOCOPY VARCHAR2
7164     ,x_trans_required         OUT NOCOPY VARCHAR2
7165     ,x_parent_item_id         OUT NOCOPY NUMBER
7166     ,x_locked_by              OUT NOCOPY NUMBER
7167     ,x_wd_restricted          OUT NOCOPY VARCHAR2
7168     ,x_attach_file_ids        OUT NOCOPY JTF_NUMBER_TABLE
7169     ,x_attach_file_names      OUT NOCOPY JTF_VARCHAR2_TABLE_300
7170     ,x_attach_mime_types      OUT NOCOPY JTF_VARCHAR2_TABLE_100
7171     ,x_attach_mime_names      OUT NOCOPY JTF_VARCHAR2_TABLE_100
7172     ,x_default_rendition      OUT NOCOPY NUMBER
7173     ,x_object_version_number  OUT NOCOPY NUMBER
7174     ,x_created_by             OUT NOCOPY NUMBER
7175     ,x_creation_date          OUT NOCOPY DATE
7176     ,x_last_updated_by        OUT NOCOPY NUMBER
7177     ,x_last_update_date       OUT NOCOPY DATE
7178     ,x_attribute_type_codes   OUT NOCOPY JTF_VARCHAR2_TABLE_100
7179     ,x_attribute_type_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
7180     ,x_attributes             OUT NOCOPY JTF_VARCHAR2_TABLE_4000
7181     ,x_component_citems       OUT NOCOPY JTF_NUMBER_TABLE
7182     ,x_component_citem_ver_ids OUT NOCOPY JTF_NUMBER_TABLE
7183     ,x_component_attrib_types OUT NOCOPY JTF_VARCHAR2_TABLE_100
7184     ,x_component_citem_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
7185     ,x_component_owner_ids    OUT NOCOPY JTF_NUMBER_TABLE
7186     ,x_component_owner_types  OUT NOCOPY JTF_VARCHAR2_TABLE_100
7187     ,x_component_sort_orders  OUT NOCOPY JTF_NUMBER_TABLE
7188     ,x_return_status          OUT NOCOPY VARCHAR2
7189     ,x_msg_count              OUT NOCOPY NUMBER
7190     ,x_msg_data               OUT NOCOPY VARCHAR2
7191 )
7192 IS
7193   l_keywords JTF_VARCHAR2_TABLE_100;
7194 BEGIN
7195 
7196   get_trans_item(
7197     p_citem_ver_id            => p_citem_ver_id
7198     ,p_language               => p_language
7199     ,p_init_msg_list          => p_init_msg_list
7200     ,p_api_version_number     => p_api_version_number
7201     ,x_content_item_id        => x_content_item_id
7202     ,x_citem_name             => x_citem_name
7203     ,x_citem_version          => x_citem_version
7204     ,x_dir_node_id            => x_dir_node_id
7205     ,x_dir_node_name          => x_dir_node_name
7206     ,x_dir_node_code          => x_dir_node_code
7207     ,x_item_status            => x_item_status
7208     ,x_version_status         => x_version_status
7209     ,x_citem_description      => x_citem_description
7210     ,x_ctype_code             => x_ctype_code
7211     ,x_ctype_name             => x_ctype_name
7212     ,x_start_date             => x_start_date
7213     ,x_end_date               => x_end_date
7214     ,x_owner_resource_id      => x_owner_resource_id
7215     ,x_owner_resource_type    => x_owner_resource_type
7216     ,x_reference_code         => x_reference_code
7217     ,x_trans_required         => x_trans_required
7218     ,x_parent_item_id         => x_parent_item_id
7219     ,x_locked_by              => x_locked_by
7220     ,x_wd_restricted          => x_wd_restricted
7221     ,x_attach_file_ids        => x_attach_file_ids
7222     ,x_attach_file_names      => x_attach_file_names
7223     ,x_attach_mime_types      => x_attach_mime_types
7224     ,x_attach_mime_names      => x_attach_mime_names
7225     ,x_default_rendition      => x_default_rendition
7226     ,x_object_version_number  => x_object_version_number
7227     ,x_created_by             => x_created_by
7228     ,x_creation_date          => x_creation_date
7229     ,x_last_updated_by        => x_last_updated_by
7230     ,x_last_update_date       => x_last_update_date
7231     ,x_attribute_type_codes   => x_attribute_type_codes
7232     ,x_attribute_type_names   => x_attribute_type_names
7233     ,x_attributes             => x_attributes
7234     ,x_component_citems       => x_component_citems
7235     ,x_component_citem_ver_ids => x_component_citem_ver_ids
7236     ,x_component_attrib_types => x_component_attrib_types
7237     ,x_component_citem_names  => x_component_citem_names
7238     ,x_component_owner_ids    => x_component_owner_ids
7239     ,x_component_owner_types  => x_component_owner_types
7240     ,x_component_sort_orders  => x_component_sort_orders
7241     ,x_keywords               => l_keywords
7242     ,x_return_status          => x_return_status
7243     ,x_msg_count              => x_msg_count
7244     ,x_msg_data               => x_msg_data
7245   );
7246 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
7247 EXCEPTION
7248   WHEN OTHERS THEN
7249     RAISE;
7250 END Get_Trans_Item;
7251 
7252 -- --------------------------------------------------------------
7253 -- GET TRANSLATED CONTENT ITEM (FOR UPDATE)
7254 --
7255 -- Used to get info to display on update page
7256 --
7257 -- --------------------------------------------------------------
7258 PROCEDURE get_trans_item(
7259     p_citem_ver_id            IN NUMBER
7260     ,p_language               IN VARCHAR2
7261     ,p_init_msg_list          IN VARCHAR2
7262     ,p_api_version_number     IN NUMBER
7263     ,x_content_item_id        OUT NOCOPY NUMBER
7264     ,x_citem_name             OUT NOCOPY VARCHAR2
7265     ,x_citem_version          OUT NOCOPY NUMBER
7266     ,x_dir_node_id            OUT NOCOPY NUMBER
7267     ,x_dir_node_name          OUT NOCOPY VARCHAR2
7268     ,x_dir_node_code          OUT NOCOPY VARCHAR2
7269     ,x_item_status            OUT NOCOPY VARCHAR2
7270     ,x_version_status         OUT NOCOPY VARCHAR2
7271     ,x_citem_description      OUT NOCOPY VARCHAR2
7272     ,x_ctype_code             OUT NOCOPY VARCHAR2
7273     ,x_ctype_name             OUT NOCOPY VARCHAR2
7274     ,x_start_date             OUT NOCOPY DATE
7275     ,x_end_date               OUT NOCOPY DATE
7276     ,x_owner_resource_id      OUT NOCOPY NUMBER
7277     ,x_owner_resource_type    OUT NOCOPY VARCHAR2
7278     ,x_reference_code         OUT NOCOPY VARCHAR2
7279     ,x_trans_required         OUT NOCOPY VARCHAR2
7280     ,x_parent_item_id         OUT NOCOPY NUMBER
7281     ,x_locked_by              OUT NOCOPY NUMBER
7282     ,x_wd_restricted          OUT NOCOPY VARCHAR2
7283     ,x_attach_file_id         OUT NOCOPY NUMBER
7284     ,x_attach_file_name       OUT NOCOPY VARCHAR2
7285     ,x_object_version_number  OUT NOCOPY NUMBER
7286     ,x_created_by             OUT NOCOPY NUMBER
7287     ,x_creation_date          OUT NOCOPY DATE
7288     ,x_last_updated_by        OUT NOCOPY NUMBER
7289     ,x_last_update_date       OUT NOCOPY DATE
7290     ,x_attribute_type_codes   OUT NOCOPY JTF_VARCHAR2_TABLE_100
7291     ,x_attribute_type_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
7292     ,x_attributes             OUT NOCOPY JTF_VARCHAR2_TABLE_4000
7293     ,x_component_citems       OUT NOCOPY JTF_NUMBER_TABLE
7294     ,x_component_attrib_types OUT NOCOPY JTF_VARCHAR2_TABLE_100
7295     ,x_component_citem_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
7296     ,x_component_owner_ids    OUT NOCOPY JTF_NUMBER_TABLE
7297     ,x_component_owner_types  OUT NOCOPY JTF_VARCHAR2_TABLE_100
7298     ,x_component_sort_orders  OUT NOCOPY JTF_NUMBER_TABLE
7299     ,x_return_status          OUT NOCOPY VARCHAR2
7300     ,x_msg_count              OUT NOCOPY NUMBER
7301     ,x_msg_data               OUT NOCOPY VARCHAR2
7302 )
7303 IS
7304   l_attach_file_ids        JTF_NUMBER_TABLE;
7305   l_attach_file_names      JTF_VARCHAR2_TABLE_300;
7306   l_attach_mime_types      JTF_VARCHAR2_TABLE_100;
7307   l_attach_mime_names      JTF_VARCHAR2_TABLE_100;
7308   l_default_rendition      NUMBER;
7309 BEGIN
7310    get_trans_item(
7311        p_citem_ver_id            => p_citem_ver_id
7312        ,p_language               => p_language           -- Changed on Nov-22 during tests with Mona.
7313        ,p_init_msg_list          => p_init_msg_list
7314        ,p_api_version_number     => p_api_version_number
7315        ,x_content_item_id        => x_content_item_id
7316        ,x_citem_name             =>x_citem_name
7317        ,x_citem_version          =>x_citem_version
7318        ,x_dir_node_id            =>x_dir_node_id
7319        ,x_dir_node_name          =>x_dir_node_name
7320        ,x_dir_node_code          =>x_dir_node_code
7321        ,x_item_status            =>x_item_status
7322        ,x_version_status         =>x_version_status
7323        ,x_citem_description      =>x_citem_description
7324        ,x_ctype_code             =>x_ctype_code
7325        ,x_ctype_name             =>x_ctype_name
7326        ,x_start_date             =>x_start_date
7327        ,x_end_date               =>x_end_date
7328        ,x_owner_resource_id      =>x_owner_resource_id
7329        ,x_owner_resource_type    =>x_owner_resource_type
7330        ,x_reference_code         =>x_reference_code
7331        ,x_trans_required         =>x_trans_required
7332        ,x_parent_item_id         =>x_parent_item_id
7333        ,x_locked_by              =>x_locked_by
7334        ,x_wd_restricted          =>x_wd_restricted
7335        ,x_attach_file_ids        =>l_attach_file_ids
7336        ,x_attach_file_names      =>l_attach_file_names
7337        ,x_attach_mime_types      =>l_attach_mime_types
7338        ,x_attach_mime_names      =>l_attach_mime_names
7339        ,x_default_rendition      =>l_default_rendition
7340        ,x_object_version_number  =>x_object_version_number
7341        ,x_created_by             =>x_created_by
7342        ,x_creation_date          =>x_creation_date
7343        ,x_last_updated_by        =>x_last_updated_by
7344        ,x_last_update_date       =>x_last_update_date
7345        ,x_attribute_type_codes   =>x_attribute_type_codes
7346        ,x_attribute_type_names   =>x_attribute_type_names
7347        ,x_attributes             =>x_attributes
7348        ,x_component_citems       =>x_component_citems
7349        ,x_component_attrib_types =>x_component_attrib_types
7350        ,x_component_citem_names  =>x_component_citem_names
7351        ,x_component_owner_ids    =>x_component_owner_ids
7352        ,x_component_owner_types  =>x_component_owner_types
7353        ,x_component_sort_orders  =>x_component_sort_orders
7354        ,x_return_status          =>x_return_status
7355        ,x_msg_count              =>x_msg_count
7356        ,x_msg_data               =>x_msg_data
7357    );
7358    IF l_attach_file_ids IS NOT NULL THEN
7359      x_attach_file_id   := l_attach_file_ids(l_default_rendition);
7360      x_attach_file_name := l_attach_file_names(l_default_rendition);
7361    END IF;
7362 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
7363 EXCEPTION
7364   WHEN OTHERS THEN
7365     RAISE;
7366 END get_trans_item;
7367 
7368 -- --------------------------------------------------------------
7369 -- GET CONTENT ITEM (FOR UPDATE)
7370 --
7371 -- Used to get info to display on update page
7372 --
7373 -- --------------------------------------------------------------
7374 PROCEDURE get_item(
7375     p_citem_ver_id            IN NUMBER
7376     ,p_init_msg_list          IN VARCHAR2
7377     ,p_api_version_number     IN NUMBER
7378     ,x_content_item_id        OUT NOCOPY NUMBER
7379     ,x_citem_name             OUT NOCOPY VARCHAR2
7380     ,x_citem_version          OUT NOCOPY NUMBER
7381     ,x_dir_node_id            OUT NOCOPY NUMBER
7382     ,x_dir_node_name          OUT NOCOPY VARCHAR2
7383     ,x_dir_node_code          OUT NOCOPY VARCHAR2
7384     ,x_item_status            OUT NOCOPY VARCHAR2
7385     ,x_version_status         OUT NOCOPY VARCHAR2
7386     ,x_citem_description      OUT NOCOPY VARCHAR2
7387     ,x_ctype_code             OUT NOCOPY VARCHAR2
7388     ,x_ctype_name             OUT NOCOPY VARCHAR2
7389     ,x_start_date             OUT NOCOPY DATE
7390     ,x_end_date               OUT NOCOPY DATE
7391     ,x_owner_resource_id      OUT NOCOPY NUMBER
7392     ,x_owner_resource_type    OUT NOCOPY VARCHAR2
7393     ,x_reference_code         OUT NOCOPY VARCHAR2
7394     ,x_trans_required         OUT NOCOPY VARCHAR2
7395     ,x_parent_item_id         OUT NOCOPY NUMBER
7396     ,x_locked_by              OUT NOCOPY NUMBER
7397     ,x_wd_restricted          OUT NOCOPY VARCHAR2
7398     ,x_attach_file_id         OUT NOCOPY NUMBER
7399     ,x_attach_file_name       OUT NOCOPY VARCHAR2
7400     ,x_object_version_number  OUT NOCOPY NUMBER
7401     ,x_created_by             OUT NOCOPY NUMBER
7402     ,x_creation_date          OUT NOCOPY DATE
7403     ,x_last_updated_by        OUT NOCOPY NUMBER
7404     ,x_last_update_date       OUT NOCOPY DATE
7405     ,x_attribute_type_codes   OUT NOCOPY JTF_VARCHAR2_TABLE_100
7406     ,x_attribute_type_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
7407     ,x_attributes             OUT NOCOPY JTF_VARCHAR2_TABLE_4000
7408     ,x_component_citems       OUT NOCOPY JTF_NUMBER_TABLE
7409     ,x_component_attrib_types OUT NOCOPY JTF_VARCHAR2_TABLE_100
7410     ,x_component_citem_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
7411     ,x_component_owner_ids    OUT NOCOPY JTF_NUMBER_TABLE
7412     ,x_component_owner_types  OUT NOCOPY JTF_VARCHAR2_TABLE_100
7413     ,x_component_sort_orders  OUT NOCOPY JTF_NUMBER_TABLE
7414     ,x_return_status          OUT NOCOPY VARCHAR2
7415     ,x_msg_count              OUT NOCOPY NUMBER
7416     ,x_msg_data               OUT NOCOPY VARCHAR2
7417 )
7418 IS
7419 BEGIN
7420                                                                     --DBMS_OUTPUT.put_line('----- get_item -----');
7421    get_trans_item(
7422        p_citem_ver_id            => p_citem_ver_id
7423        ,p_language               => NULL
7424        ,p_init_msg_list          => p_init_msg_list
7425        ,p_api_version_number     => p_api_version_number
7426        ,x_content_item_id        => x_content_item_id
7427        ,x_citem_name             =>x_citem_name
7428        ,x_citem_version          =>x_citem_version
7429        ,x_dir_node_id            =>x_dir_node_id
7430        ,x_dir_node_name          =>x_dir_node_name
7431        ,x_dir_node_code          =>x_dir_node_code
7432        ,x_item_status            =>x_item_status
7433        ,x_version_status         =>x_version_status
7434        ,x_citem_description      =>x_citem_description
7435        ,x_ctype_code             =>x_ctype_code
7436        ,x_ctype_name             =>x_ctype_name
7437        ,x_start_date             =>x_start_date
7438        ,x_end_date               =>x_end_date
7439        ,x_owner_resource_id      =>x_owner_resource_id
7440        ,x_owner_resource_type    =>x_owner_resource_type
7441        ,x_reference_code         =>x_reference_code
7442        ,x_trans_required         =>x_trans_required
7443        ,x_parent_item_id         =>x_parent_item_id
7444        ,x_locked_by              =>x_locked_by
7445        ,x_wd_restricted          =>x_wd_restricted
7446        ,x_attach_file_id         =>x_attach_file_id
7447        ,x_attach_file_name       =>x_attach_file_name
7448        ,x_object_version_number  =>x_object_version_number
7449        ,x_created_by             =>x_created_by
7450        ,x_creation_date          =>x_creation_date
7451        ,x_last_updated_by        =>x_last_updated_by
7452        ,x_last_update_date       =>x_last_update_date
7453        ,x_attribute_type_codes   =>x_attribute_type_codes
7454        ,x_attribute_type_names   =>x_attribute_type_names
7455        ,x_attributes             =>x_attributes
7456        ,x_component_citems       =>x_component_citems
7457        ,x_component_attrib_types =>x_component_attrib_types
7458        ,x_component_citem_names  =>x_component_citem_names
7459        ,x_component_owner_ids    =>x_component_owner_ids
7460        ,x_component_owner_types  =>x_component_owner_types
7461        ,x_component_sort_orders  =>x_component_sort_orders
7462        ,x_return_status          =>x_return_status
7463        ,x_msg_count              =>x_msg_count
7464        ,x_msg_data               =>x_msg_data
7465    );
7466 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
7467 EXCEPTION
7468   WHEN OTHERS THEN
7469     RAISE;
7470 END get_item;
7471 
7472 PROCEDURE get_item(
7473     p_citem_ver_id            IN NUMBER
7474     ,p_init_msg_list          IN VARCHAR2
7475     ,p_api_version_number     IN NUMBER
7476     ,x_content_item_id        OUT NOCOPY NUMBER
7477     ,x_citem_name             OUT NOCOPY VARCHAR2
7478     ,x_citem_version          OUT NOCOPY NUMBER
7479     ,x_dir_node_id            OUT NOCOPY NUMBER
7480     ,x_dir_node_name          OUT NOCOPY VARCHAR2
7481     ,x_dir_node_code          OUT NOCOPY VARCHAR2
7482     ,x_item_status            OUT NOCOPY VARCHAR2
7483     ,x_version_status         OUT NOCOPY VARCHAR2
7484     ,x_citem_description      OUT NOCOPY VARCHAR2
7485     ,x_ctype_code             OUT NOCOPY VARCHAR2
7486     ,x_ctype_name             OUT NOCOPY VARCHAR2
7487     ,x_start_date             OUT NOCOPY DATE
7488     ,x_end_date               OUT NOCOPY DATE
7489     ,x_owner_resource_id      OUT NOCOPY NUMBER
7490     ,x_owner_resource_type    OUT NOCOPY VARCHAR2
7491     ,x_reference_code         OUT NOCOPY VARCHAR2
7492     ,x_trans_required         OUT NOCOPY VARCHAR2
7493     ,x_parent_item_id         OUT NOCOPY NUMBER
7494     ,x_locked_by              OUT NOCOPY NUMBER
7495     ,x_wd_restricted          OUT NOCOPY VARCHAR2
7496     ,x_attach_file_ids        OUT NOCOPY JTF_NUMBER_TABLE
7497     ,x_attach_file_names      OUT NOCOPY JTF_VARCHAR2_TABLE_300
7498     ,x_attach_mime_types      OUT NOCOPY JTF_VARCHAR2_TABLE_100
7499     ,x_attach_mime_names      OUT NOCOPY JTF_VARCHAR2_TABLE_100
7500     ,x_default_rendition      OUT NOCOPY NUMBER
7501     ,x_object_version_number  OUT NOCOPY NUMBER
7502     ,x_created_by             OUT NOCOPY NUMBER
7503     ,x_creation_date          OUT NOCOPY DATE
7504     ,x_last_updated_by        OUT NOCOPY NUMBER
7505     ,x_last_update_date       OUT NOCOPY DATE
7506     ,x_attribute_type_codes   OUT NOCOPY JTF_VARCHAR2_TABLE_100
7507     ,x_attribute_type_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
7508     ,x_attributes             OUT NOCOPY JTF_VARCHAR2_TABLE_4000
7509     ,x_component_citems       OUT NOCOPY JTF_NUMBER_TABLE
7510     ,x_component_attrib_types OUT NOCOPY JTF_VARCHAR2_TABLE_100
7511     ,x_component_citem_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
7512     ,x_component_owner_ids    OUT NOCOPY JTF_NUMBER_TABLE
7513     ,x_component_owner_types  OUT NOCOPY JTF_VARCHAR2_TABLE_100
7514     ,x_component_sort_orders  OUT NOCOPY JTF_NUMBER_TABLE
7515     ,x_return_status          OUT NOCOPY VARCHAR2
7516     ,x_msg_count              OUT NOCOPY NUMBER
7517     ,x_msg_data               OUT NOCOPY VARCHAR2
7518 )
7519 IS
7520 BEGIN
7521                                                                     --DBMS_OUTPUT.put_line('----- get_item -----');
7522    get_trans_item(
7523        p_citem_ver_id            => p_citem_ver_id
7524        ,p_language               => NULL
7525        ,p_init_msg_list          => p_init_msg_list
7526        ,p_api_version_number     => p_api_version_number
7527        ,x_content_item_id        => x_content_item_id
7528        ,x_citem_name             =>x_citem_name
7529        ,x_citem_version          =>x_citem_version
7530        ,x_dir_node_id            =>x_dir_node_id
7531        ,x_dir_node_name          =>x_dir_node_name
7532        ,x_dir_node_code          =>x_dir_node_code
7533        ,x_item_status            =>x_item_status
7534        ,x_version_status         =>x_version_status
7535        ,x_citem_description      =>x_citem_description
7536        ,x_ctype_code             =>x_ctype_code
7537        ,x_ctype_name             =>x_ctype_name
7538        ,x_start_date             =>x_start_date
7539        ,x_end_date               =>x_end_date
7540        ,x_owner_resource_id      =>x_owner_resource_id
7541        ,x_owner_resource_type    =>x_owner_resource_type
7542        ,x_reference_code         =>x_reference_code
7543        ,x_trans_required         =>x_trans_required
7544        ,x_parent_item_id         =>x_parent_item_id
7545        ,x_locked_by              =>x_locked_by
7546        ,x_wd_restricted          =>x_wd_restricted
7547        ,x_attach_file_ids        =>x_attach_file_ids
7548        ,x_attach_file_names      =>x_attach_file_names
7549        ,x_attach_mime_types      =>x_attach_mime_types
7550        ,x_attach_mime_names      =>x_attach_mime_names
7551        ,x_default_rendition      =>x_default_rendition
7552        ,x_object_version_number  =>x_object_version_number
7553        ,x_created_by             =>x_created_by
7554        ,x_creation_date          =>x_creation_date
7555        ,x_last_updated_by        =>x_last_updated_by
7556        ,x_last_update_date       =>x_last_update_date
7557        ,x_attribute_type_codes   =>x_attribute_type_codes
7558        ,x_attribute_type_names   =>x_attribute_type_names
7559        ,x_attributes             =>x_attributes
7560        ,x_component_citems       =>x_component_citems
7561        ,x_component_attrib_types =>x_component_attrib_types
7562        ,x_component_citem_names  =>x_component_citem_names
7563        ,x_component_owner_ids    =>x_component_owner_ids
7564        ,x_component_owner_types  =>x_component_owner_types
7565        ,x_component_sort_orders  =>x_component_sort_orders
7566        ,x_return_status          =>x_return_status
7567        ,x_msg_count              =>x_msg_count
7568        ,x_msg_data               =>x_msg_data
7569    );
7570 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
7571 EXCEPTION
7572   WHEN OTHERS THEN
7573     RAISE;
7574 END get_item;
7575 
7576 PROCEDURE get_item(
7577     p_citem_ver_id            IN NUMBER
7578     ,p_init_msg_list          IN VARCHAR2
7579     ,p_api_version_number     IN NUMBER
7580     ,x_content_item_id        OUT NOCOPY NUMBER
7581     ,x_citem_name             OUT NOCOPY VARCHAR2
7582     ,x_citem_version          OUT NOCOPY NUMBER
7583     ,x_dir_node_id            OUT NOCOPY NUMBER
7584     ,x_dir_node_name          OUT NOCOPY VARCHAR2
7585     ,x_dir_node_code          OUT NOCOPY VARCHAR2
7586     ,x_item_status            OUT NOCOPY VARCHAR2
7587     ,x_version_status         OUT NOCOPY VARCHAR2
7588     ,x_citem_description      OUT NOCOPY VARCHAR2
7589     ,x_ctype_code             OUT NOCOPY VARCHAR2
7590     ,x_ctype_name             OUT NOCOPY VARCHAR2
7591     ,x_start_date             OUT NOCOPY DATE
7592     ,x_end_date               OUT NOCOPY DATE
7593     ,x_owner_resource_id      OUT NOCOPY NUMBER
7594     ,x_owner_resource_type    OUT NOCOPY VARCHAR2
7595     ,x_reference_code         OUT NOCOPY VARCHAR2
7596     ,x_trans_required         OUT NOCOPY VARCHAR2
7597     ,x_parent_item_id         OUT NOCOPY NUMBER
7598     ,x_locked_by              OUT NOCOPY NUMBER
7599     ,x_wd_restricted          OUT NOCOPY VARCHAR2
7600     ,x_attach_file_ids        OUT NOCOPY JTF_NUMBER_TABLE
7601     ,x_attach_file_names      OUT NOCOPY JTF_VARCHAR2_TABLE_300
7602     ,x_attach_mime_types      OUT NOCOPY JTF_VARCHAR2_TABLE_100
7603     ,x_attach_mime_names      OUT NOCOPY JTF_VARCHAR2_TABLE_100
7604     ,x_default_rendition      OUT NOCOPY NUMBER
7605     ,x_object_version_number  OUT NOCOPY NUMBER
7606     ,x_created_by             OUT NOCOPY NUMBER
7607     ,x_creation_date          OUT NOCOPY DATE
7608     ,x_last_updated_by        OUT NOCOPY NUMBER
7609     ,x_last_update_date       OUT NOCOPY DATE
7610     ,x_attribute_type_codes   OUT NOCOPY JTF_VARCHAR2_TABLE_100
7611     ,x_attribute_type_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
7612     ,x_attributes             OUT NOCOPY JTF_VARCHAR2_TABLE_4000
7613     ,x_component_citems       OUT NOCOPY JTF_NUMBER_TABLE
7614     ,x_component_citem_ver_ids OUT NOCOPY JTF_NUMBER_TABLE
7615     ,x_component_attrib_types OUT NOCOPY JTF_VARCHAR2_TABLE_100
7616     ,x_component_citem_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
7617     ,x_component_owner_ids    OUT NOCOPY JTF_NUMBER_TABLE
7618     ,x_component_owner_types  OUT NOCOPY JTF_VARCHAR2_TABLE_100
7619     ,x_component_sort_orders  OUT NOCOPY JTF_NUMBER_TABLE
7620     ,x_return_status          OUT NOCOPY VARCHAR2
7621     ,x_msg_count              OUT NOCOPY NUMBER
7622     ,x_msg_data               OUT NOCOPY VARCHAR2
7623 )
7624 IS
7625 BEGIN
7626                                                                     --DBMS_OUTPUT.put_line('----- get_item -----');
7627    get_trans_item(
7628        p_citem_ver_id            => p_citem_ver_id
7629        ,p_language               => NULL
7630        ,p_init_msg_list          => p_init_msg_list
7631        ,p_api_version_number     => p_api_version_number
7632        ,x_content_item_id        => x_content_item_id
7633        ,x_citem_name             =>x_citem_name
7634        ,x_citem_version          =>x_citem_version
7635        ,x_dir_node_id            =>x_dir_node_id
7636        ,x_dir_node_name          =>x_dir_node_name
7637        ,x_dir_node_code          =>x_dir_node_code
7638        ,x_item_status            =>x_item_status
7639        ,x_version_status         =>x_version_status
7640        ,x_citem_description      =>x_citem_description
7641        ,x_ctype_code             =>x_ctype_code
7642        ,x_ctype_name             =>x_ctype_name
7643        ,x_start_date             =>x_start_date
7644        ,x_end_date               =>x_end_date
7645        ,x_owner_resource_id      =>x_owner_resource_id
7646        ,x_owner_resource_type    =>x_owner_resource_type
7647        ,x_reference_code         =>x_reference_code
7648        ,x_trans_required         =>x_trans_required
7649        ,x_parent_item_id         =>x_parent_item_id
7650        ,x_locked_by              =>x_locked_by
7651        ,x_wd_restricted          =>x_wd_restricted
7652        ,x_attach_file_ids        =>x_attach_file_ids
7653        ,x_attach_file_names      =>x_attach_file_names
7654        ,x_attach_mime_types      =>x_attach_mime_types
7655        ,x_attach_mime_names      =>x_attach_mime_names
7656        ,x_default_rendition      =>x_default_rendition
7657        ,x_object_version_number  =>x_object_version_number
7658        ,x_created_by             =>x_created_by
7659        ,x_creation_date          =>x_creation_date
7660        ,x_last_updated_by        =>x_last_updated_by
7661        ,x_last_update_date       =>x_last_update_date
7662        ,x_attribute_type_codes   =>x_attribute_type_codes
7663        ,x_attribute_type_names   =>x_attribute_type_names
7664        ,x_attributes             =>x_attributes
7665        ,x_component_citems       =>x_component_citems
7666        ,x_component_citem_ver_ids => x_component_citem_ver_ids
7667        ,x_component_attrib_types =>x_component_attrib_types
7668        ,x_component_citem_names  =>x_component_citem_names
7669        ,x_component_owner_ids    =>x_component_owner_ids
7670        ,x_component_owner_types  =>x_component_owner_types
7671        ,x_component_sort_orders  =>x_component_sort_orders
7672        ,x_return_status          =>x_return_status
7673        ,x_msg_count              =>x_msg_count
7674        ,x_msg_data               =>x_msg_data
7675    );
7676 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
7677 EXCEPTION
7678   WHEN OTHERS THEN
7679     RAISE;
7680 END get_item;
7681 
7682 PROCEDURE get_item(
7683     p_citem_ver_id            IN NUMBER
7684     ,p_init_msg_list          IN VARCHAR2
7685     ,p_api_version_number     IN NUMBER
7686     ,x_content_item_id        OUT NOCOPY NUMBER
7687     ,x_citem_name             OUT NOCOPY VARCHAR2
7688     ,x_citem_version          OUT NOCOPY NUMBER
7689     ,x_dir_node_id            OUT NOCOPY NUMBER
7690     ,x_dir_node_name          OUT NOCOPY VARCHAR2
7691     ,x_dir_node_code          OUT NOCOPY VARCHAR2
7692     ,x_item_status            OUT NOCOPY VARCHAR2
7693     ,x_version_status         OUT NOCOPY VARCHAR2
7694     ,x_citem_description      OUT NOCOPY VARCHAR2
7695     ,x_ctype_code             OUT NOCOPY VARCHAR2
7696     ,x_ctype_name             OUT NOCOPY VARCHAR2
7697     ,x_start_date             OUT NOCOPY DATE
7698     ,x_end_date               OUT NOCOPY DATE
7699     ,x_owner_resource_id      OUT NOCOPY NUMBER
7700     ,x_owner_resource_type    OUT NOCOPY VARCHAR2
7701     ,x_reference_code         OUT NOCOPY VARCHAR2
7702     ,x_trans_required         OUT NOCOPY VARCHAR2
7703     ,x_parent_item_id         OUT NOCOPY NUMBER
7704     ,x_locked_by              OUT NOCOPY NUMBER
7705     ,x_wd_restricted          OUT NOCOPY VARCHAR2
7706     ,x_attach_file_ids        OUT NOCOPY JTF_NUMBER_TABLE
7707     ,x_attach_file_names      OUT NOCOPY JTF_VARCHAR2_TABLE_300
7708     ,x_attach_mime_types      OUT NOCOPY JTF_VARCHAR2_TABLE_100
7709     ,x_attach_mime_names      OUT NOCOPY JTF_VARCHAR2_TABLE_100
7710     ,x_default_rendition      OUT NOCOPY NUMBER
7711     ,x_object_version_number  OUT NOCOPY NUMBER
7712     ,x_created_by             OUT NOCOPY NUMBER
7713     ,x_creation_date          OUT NOCOPY DATE
7714     ,x_last_updated_by        OUT NOCOPY NUMBER
7715     ,x_last_update_date       OUT NOCOPY DATE
7716     ,x_attribute_type_codes   OUT NOCOPY JTF_VARCHAR2_TABLE_100
7717     ,x_attribute_type_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
7718     ,x_attributes             OUT NOCOPY JTF_VARCHAR2_TABLE_4000
7719     ,x_component_citems       OUT NOCOPY JTF_NUMBER_TABLE
7720     ,x_component_citem_ver_ids OUT NOCOPY JTF_NUMBER_TABLE
7721     ,x_component_attrib_types OUT NOCOPY JTF_VARCHAR2_TABLE_100
7722     ,x_component_citem_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
7723     ,x_component_owner_ids    OUT NOCOPY JTF_NUMBER_TABLE
7724     ,x_component_owner_types  OUT NOCOPY JTF_VARCHAR2_TABLE_100
7725     ,x_component_sort_orders  OUT NOCOPY JTF_NUMBER_TABLE
7726     ,x_keywords               OUT NOCOPY JTF_VARCHAR2_TABLE_100
7727     ,x_return_status          OUT NOCOPY VARCHAR2
7728     ,x_msg_count              OUT NOCOPY NUMBER
7729     ,x_msg_data               OUT NOCOPY VARCHAR2
7730 )
7731 IS
7732 BEGIN
7733                                                                     --DBMS_OUTPUT.put_line('----- get_item -----');
7734    get_trans_item(
7735        p_citem_ver_id            => p_citem_ver_id
7736        ,p_language               => NULL
7737        ,p_init_msg_list          => p_init_msg_list
7738        ,p_api_version_number     => p_api_version_number
7739        ,x_content_item_id        => x_content_item_id
7740        ,x_citem_name             =>x_citem_name
7741        ,x_citem_version          =>x_citem_version
7742        ,x_dir_node_id            =>x_dir_node_id
7743        ,x_dir_node_name          =>x_dir_node_name
7744        ,x_dir_node_code          =>x_dir_node_code
7745        ,x_item_status            =>x_item_status
7746        ,x_version_status         =>x_version_status
7747        ,x_citem_description      =>x_citem_description
7748        ,x_ctype_code             =>x_ctype_code
7749        ,x_ctype_name             =>x_ctype_name
7750        ,x_start_date             =>x_start_date
7751        ,x_end_date               =>x_end_date
7752        ,x_owner_resource_id      =>x_owner_resource_id
7753        ,x_owner_resource_type    =>x_owner_resource_type
7754        ,x_reference_code         =>x_reference_code
7755        ,x_trans_required         =>x_trans_required
7756        ,x_parent_item_id         =>x_parent_item_id
7757        ,x_locked_by              =>x_locked_by
7758        ,x_wd_restricted          =>x_wd_restricted
7759        ,x_attach_file_ids        =>x_attach_file_ids
7760        ,x_attach_file_names      =>x_attach_file_names
7761        ,x_attach_mime_types      =>x_attach_mime_types
7762        ,x_attach_mime_names      =>x_attach_mime_names
7763        ,x_default_rendition      =>x_default_rendition
7764        ,x_object_version_number  =>x_object_version_number
7765        ,x_created_by             =>x_created_by
7766        ,x_creation_date          =>x_creation_date
7767        ,x_last_updated_by        =>x_last_updated_by
7768        ,x_last_update_date       =>x_last_update_date
7769        ,x_attribute_type_codes   =>x_attribute_type_codes
7770        ,x_attribute_type_names   =>x_attribute_type_names
7771        ,x_attributes             =>x_attributes
7772        ,x_component_citems       =>x_component_citems
7773        ,x_component_citem_ver_ids => x_component_citem_ver_ids
7774        ,x_component_attrib_types =>x_component_attrib_types
7775        ,x_component_citem_names  =>x_component_citem_names
7776        ,x_component_owner_ids    =>x_component_owner_ids
7777        ,x_component_owner_types  =>x_component_owner_types
7778        ,x_component_sort_orders  =>x_component_sort_orders
7779        ,x_keywords               => x_keywords
7780        ,x_return_status          =>x_return_status
7781        ,x_msg_count              =>x_msg_count
7782        ,x_msg_data               =>x_msg_data
7783    );
7784 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
7785 EXCEPTION
7786   WHEN OTHERS THEN
7787     RAISE;
7788 END get_item;
7789 
7790 
7791 PROCEDURE get_item(
7792     p_citem_ver_id            IN NUMBER
7793     ,p_init_msg_list          IN VARCHAR2
7794     ,p_api_version_number     IN NUMBER
7795     ,x_content_item_id        OUT NOCOPY NUMBER
7796     ,x_citem_name             OUT NOCOPY VARCHAR2
7797     ,x_citem_version          OUT NOCOPY NUMBER
7798     ,x_dir_node_id            OUT NOCOPY NUMBER
7799     ,x_dir_node_name          OUT NOCOPY VARCHAR2
7800     ,x_dir_node_code          OUT NOCOPY VARCHAR2
7801     ,x_item_status            OUT NOCOPY VARCHAR2
7802     ,x_version_status         OUT NOCOPY VARCHAR2
7803     ,x_citem_description      OUT NOCOPY VARCHAR2
7804     ,x_ctype_code             OUT NOCOPY VARCHAR2
7805     ,x_ctype_name             OUT NOCOPY VARCHAR2
7806     ,x_start_date             OUT NOCOPY DATE
7807     ,x_end_date               OUT NOCOPY DATE
7808     ,x_owner_resource_id      OUT NOCOPY NUMBER
7809     ,x_owner_resource_type    OUT NOCOPY VARCHAR2
7810     ,x_reference_code         OUT NOCOPY VARCHAR2
7811     ,x_trans_required         OUT NOCOPY VARCHAR2
7812     ,x_parent_item_id         OUT NOCOPY NUMBER
7813     ,x_locked_by              OUT NOCOPY NUMBER
7814     ,x_wd_restricted          OUT NOCOPY VARCHAR2
7815     ,x_attach_file_id         OUT NOCOPY NUMBER
7816     ,x_attach_file_name       OUT NOCOPY VARCHAR2
7817     ,x_attach_mime_type       OUT NOCOPY VARCHAR2
7818     ,x_attach_mime_name       OUT NOCOPY VARCHAR2
7819     ,x_rendition_file_ids     OUT NOCOPY JTF_NUMBER_TABLE
7820     ,x_rendition_file_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
7821     ,x_rendition_mime_types   OUT NOCOPY JTF_VARCHAR2_TABLE_100
7822     ,x_rendition_mime_names   OUT NOCOPY JTF_VARCHAR2_TABLE_100
7823     ,x_default_rendition      OUT NOCOPY NUMBER
7824     ,x_object_version_number  OUT NOCOPY NUMBER
7825     ,x_created_by             OUT NOCOPY NUMBER
7826     ,x_creation_date          OUT NOCOPY DATE
7827     ,x_last_updated_by        OUT NOCOPY NUMBER
7828     ,x_last_update_date       OUT NOCOPY DATE
7829     ,x_attribute_type_codes   OUT NOCOPY JTF_VARCHAR2_TABLE_100
7830     ,x_attribute_type_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
7831     ,x_attributes             OUT NOCOPY JTF_VARCHAR2_TABLE_4000
7832     ,x_component_citems       OUT NOCOPY JTF_NUMBER_TABLE
7833     ,x_component_citem_ver_ids OUT NOCOPY JTF_NUMBER_TABLE
7834     ,x_component_attrib_types OUT NOCOPY JTF_VARCHAR2_TABLE_100
7835     ,x_component_citem_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
7836     ,x_component_owner_ids    OUT NOCOPY JTF_NUMBER_TABLE
7837     ,x_component_owner_types  OUT NOCOPY JTF_VARCHAR2_TABLE_100
7838     ,x_component_sort_orders  OUT NOCOPY JTF_NUMBER_TABLE
7839     ,x_keywords               OUT NOCOPY JTF_VARCHAR2_TABLE_100
7840     ,x_return_status          OUT NOCOPY VARCHAR2
7841     ,x_msg_count              OUT NOCOPY NUMBER
7842     ,x_msg_data               OUT NOCOPY VARCHAR2
7843 ) IS
7844 BEGIN
7845   get_trans_item(
7846     p_citem_ver_id            => p_citem_ver_id
7847     ,p_language               => NULL
7848     ,p_init_msg_list          => p_init_msg_list
7849     ,p_api_version_number     => p_api_version_number
7850     ,x_content_item_id        => x_content_item_id
7851     ,x_citem_name             => x_citem_name
7852     ,x_citem_version          => x_citem_version
7853     ,x_dir_node_id            => x_dir_node_id
7854     ,x_dir_node_name          => x_dir_node_name
7855     ,x_dir_node_code          => x_dir_node_code
7856     ,x_item_status            => x_item_status
7857     ,x_version_status         => x_version_status
7858     ,x_citem_description      => x_citem_description
7859     ,x_ctype_code             => x_ctype_code
7860     ,x_ctype_name             => x_ctype_name
7861     ,x_start_date             => x_start_date
7862     ,x_end_date               => x_end_date
7863     ,x_owner_resource_id      => x_owner_resource_id
7864     ,x_owner_resource_type    => x_owner_resource_type
7865     ,x_reference_code         => x_reference_code
7866     ,x_trans_required         => x_trans_required
7867     ,x_parent_item_id         => x_parent_item_id
7868     ,x_locked_by              => x_locked_by
7869     ,x_wd_restricted          => x_wd_restricted
7870     ,x_attach_file_id         => x_attach_file_id
7871     ,x_attach_file_name       => x_attach_file_name
7872     ,x_attach_mime_type       => x_attach_mime_type
7873     ,x_attach_mime_name       => x_attach_mime_name
7874     ,x_rendition_file_ids     => x_rendition_file_ids
7875     ,x_rendition_file_names   => x_rendition_file_names
7876     ,x_rendition_mime_types   => x_rendition_mime_types
7877     ,x_rendition_mime_names   => x_rendition_mime_names
7878     ,x_default_rendition      => x_default_rendition
7879     ,x_object_version_number  => x_object_version_number
7880     ,x_created_by             => x_created_by
7881     ,x_creation_date          => x_creation_date
7882     ,x_last_updated_by        => x_last_updated_by
7883     ,x_last_update_date       => x_last_update_date
7884     ,x_attribute_type_codes   => x_attribute_type_codes
7885     ,x_attribute_type_names   => x_attribute_type_names
7886     ,x_attributes             => x_attributes
7887     ,x_component_citems       => x_component_citems
7888     ,x_component_citem_ver_ids => x_component_citem_ver_ids
7889     ,x_component_attrib_types => x_component_attrib_types
7890     ,x_component_citem_names  => x_component_citem_names
7891     ,x_component_owner_ids    => x_component_owner_ids
7892     ,x_component_owner_types  => x_component_owner_types
7893     ,x_component_sort_orders  => x_component_sort_orders
7894     ,x_keywords               => x_keywords
7895     ,x_return_status          => x_return_status
7896     ,x_msg_count              => x_msg_count
7897     ,x_msg_data               => x_msg_data
7898   );
7899 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
7900 EXCEPTION
7901   WHEN OTHERS THEN
7902     RAISE;
7903 END get_item;
7904 
7905 
7906 PROCEDURE get_item(
7907     p_citem_ver_id            IN NUMBER
7908     ,p_init_msg_list          IN VARCHAR2
7909     ,p_api_version_number     IN NUMBER
7910     ,x_content_item_id        OUT NOCOPY NUMBER
7911     ,x_citem_name             OUT NOCOPY VARCHAR2
7912     ,x_citem_version          OUT NOCOPY NUMBER
7913     ,x_dir_node_id            OUT NOCOPY NUMBER
7914     ,x_dir_node_name          OUT NOCOPY VARCHAR2
7915     ,x_dir_node_code          OUT NOCOPY VARCHAR2
7916     ,x_item_status            OUT NOCOPY VARCHAR2
7917     ,x_version_status         OUT NOCOPY VARCHAR2
7918     ,x_citem_description      OUT NOCOPY VARCHAR2
7919     ,x_ctype_code             OUT NOCOPY VARCHAR2
7920     ,x_ctype_name             OUT NOCOPY VARCHAR2
7921     ,x_start_date             OUT NOCOPY DATE
7922     ,x_end_date               OUT NOCOPY DATE
7923     ,x_owner_resource_id      OUT NOCOPY NUMBER
7924     ,x_owner_resource_type    OUT NOCOPY VARCHAR2
7925     ,x_reference_code         OUT NOCOPY VARCHAR2
7926     ,x_trans_required         OUT NOCOPY VARCHAR2
7927     ,x_parent_item_id         OUT NOCOPY NUMBER
7928     ,x_locked_by              OUT NOCOPY NUMBER
7929     ,x_wd_restricted          OUT NOCOPY VARCHAR2
7930     ,x_attach_file_id         OUT NOCOPY NUMBER
7931     ,x_attach_file_name       OUT NOCOPY VARCHAR2
7932     ,x_attach_mime_type       OUT NOCOPY VARCHAR2
7933     ,x_attach_mime_name       OUT NOCOPY VARCHAR2
7934     ,x_rendition_file_ids     OUT NOCOPY JTF_NUMBER_TABLE
7935     ,x_rendition_file_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
7936     ,x_rendition_mime_types   OUT NOCOPY JTF_VARCHAR2_TABLE_100
7937     ,x_rendition_mime_names   OUT NOCOPY JTF_VARCHAR2_TABLE_100
7938     ,x_default_rendition      OUT NOCOPY NUMBER
7939     ,x_object_version_number  OUT NOCOPY NUMBER
7940     ,x_created_by             OUT NOCOPY NUMBER
7941     ,x_creation_date          OUT NOCOPY DATE
7942     ,x_last_updated_by        OUT NOCOPY NUMBER
7943     ,x_last_update_date       OUT NOCOPY DATE
7944     ,x_attribute_type_codes   OUT NOCOPY JTF_VARCHAR2_TABLE_100
7945     ,x_attribute_type_names   OUT NOCOPY JTF_VARCHAR2_TABLE_300
7946     ,x_attributes             OUT NOCOPY JTF_VARCHAR2_TABLE_32767
7947     ,x_component_citems       OUT NOCOPY JTF_NUMBER_TABLE
7948     ,x_component_citem_ver_ids OUT NOCOPY JTF_NUMBER_TABLE
7949     ,x_component_attrib_types OUT NOCOPY JTF_VARCHAR2_TABLE_100
7950     ,x_component_citem_names  OUT NOCOPY JTF_VARCHAR2_TABLE_300
7951     ,x_component_owner_ids    OUT NOCOPY JTF_NUMBER_TABLE
7952     ,x_component_owner_types  OUT NOCOPY JTF_VARCHAR2_TABLE_100
7953     ,x_component_sort_orders  OUT NOCOPY JTF_NUMBER_TABLE
7954     ,x_keywords               OUT NOCOPY JTF_VARCHAR2_TABLE_100
7955     ,x_return_status          OUT NOCOPY VARCHAR2
7956     ,x_msg_count              OUT NOCOPY NUMBER
7957     ,x_msg_data               OUT NOCOPY VARCHAR2
7958 ) IS
7959 BEGIN
7960   get_trans_item(
7961     p_citem_ver_id            => p_citem_ver_id
7962     ,p_language               => NULL
7963     ,p_init_msg_list          => p_init_msg_list
7964     ,p_api_version_number     => p_api_version_number
7965     ,x_content_item_id        => x_content_item_id
7966     ,x_citem_name             => x_citem_name
7967     ,x_citem_version          => x_citem_version
7968     ,x_dir_node_id            => x_dir_node_id
7969     ,x_dir_node_name          => x_dir_node_name
7970     ,x_dir_node_code          => x_dir_node_code
7971     ,x_item_status            => x_item_status
7972     ,x_version_status         => x_version_status
7973     ,x_citem_description      => x_citem_description
7974     ,x_ctype_code             => x_ctype_code
7975     ,x_ctype_name             => x_ctype_name
7976     ,x_start_date             => x_start_date
7977     ,x_end_date               => x_end_date
7978     ,x_owner_resource_id      => x_owner_resource_id
7979     ,x_owner_resource_type    => x_owner_resource_type
7980     ,x_reference_code         => x_reference_code
7981     ,x_trans_required         => x_trans_required
7982     ,x_parent_item_id         => x_parent_item_id
7983     ,x_locked_by              => x_locked_by
7984     ,x_wd_restricted          => x_wd_restricted
7985     ,x_attach_file_id         => x_attach_file_id
7986     ,x_attach_file_name       => x_attach_file_name
7987     ,x_attach_mime_type       => x_attach_mime_type
7988     ,x_attach_mime_name       => x_attach_mime_name
7989     ,x_rendition_file_ids     => x_rendition_file_ids
7990     ,x_rendition_file_names   => x_rendition_file_names
7991     ,x_rendition_mime_types   => x_rendition_mime_types
7992     ,x_rendition_mime_names   => x_rendition_mime_names
7993     ,x_default_rendition      => x_default_rendition
7994     ,x_object_version_number  => x_object_version_number
7995     ,x_created_by             => x_created_by
7996     ,x_creation_date          => x_creation_date
7997     ,x_last_updated_by        => x_last_updated_by
7998     ,x_last_update_date       => x_last_update_date
7999     ,x_attribute_type_codes   => x_attribute_type_codes
8000     ,x_attribute_type_names   => x_attribute_type_names
8001     ,x_attributes             => x_attributes
8002     ,x_component_citems       => x_component_citems
8003     ,x_component_citem_ver_ids => x_component_citem_ver_ids
8004     ,x_component_attrib_types => x_component_attrib_types
8005     ,x_component_citem_names  => x_component_citem_names
8006     ,x_component_owner_ids    => x_component_owner_ids
8007     ,x_component_owner_types  => x_component_owner_types
8008     ,x_component_sort_orders  => x_component_sort_orders
8009     ,x_keywords               => x_keywords
8010     ,x_return_status          => x_return_status
8011     ,x_msg_count              => x_msg_count
8012     ,x_msg_data               => x_msg_data
8013   );
8014 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
8015 EXCEPTION
8016   WHEN OTHERS THEN
8017     RAISE;
8018 END get_item;
8019 
8020 
8021 
8022 
8023 -- --------------------------------------------------------------
8024 -- INSERT component ITEMS
8025 --
8026 -- Used to populate component content type information
8027 --
8028 -- --------------------------------------------------------------
8029 PROCEDURE insert_components(
8030     p_citem_ver_id              IN NUMBER
8031     ,p_content_item_ids         IN JTF_NUMBER_TABLE
8032     ,p_citem_ver_ids            IN JTF_NUMBER_TABLE
8033     ,p_attribute_type_codes     IN JTF_VARCHAR2_TABLE_100
8034     ,p_sort_order               IN JTF_NUMBER_TABLE
8035     ,p_commit                   IN VARCHAR2
8036     ,p_api_version_number       IN NUMBER
8037     ,p_init_msg_list            IN VARCHAR2
8038     ,x_return_status            OUT NOCOPY VARCHAR2
8039     ,x_msg_count                OUT NOCOPY NUMBER
8040     ,x_msg_data                 OUT NOCOPY VARCHAR2
8041 )
8042 IS
8043 --******************* BEGIN REQUIRED VARIABLES *************************
8044   l_api_name CONSTANT VARCHAR2(30) := 'insert_component_items';  --|**|
8045   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
8046 --******************* END REQUIRED VARIABLES ***************************
8047 
8048     qty_codes NUMBER;
8049     row_id  VARCHAR2(250);  -- required for use with table handlers
8050     -- flag to denote whether errors were found with this compound item
8051     insert_data CHAR(1);
8052     counter NUMBER := 1;
8053     sort_order NUMBER;
8054     content_item_id NUMBER;
8055     ctype_code IBC_CONTENT_TYPES_B.content_type_code%TYPE;
8056     dir_id NUMBER;
8057 BEGIN
8058   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
8059   SAVEPOINT svpt_insert_components;
8060 --******************* BEGIN REQUIRED AREA ******************************
8061       SAVEPOINT svpt_insert_components;                           --|**|
8062       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
8063         FND_MSG_PUB.initialize;                                   --|**|
8064       END IF;                                                     --|**|
8065                                                                   --|**|
8066       -- Standard call to check for call compatibility.           --|**|
8067       IF NOT FND_API.Compatible_API_Call (                        --|**|
8068             l_api_version_number                                  --|**|
8069          ,p_api_version_number                                 --|**|
8070          ,l_api_name                                           --|**|
8071          ,G_PKG_NAME                                           --|**|
8072       )THEN                                                       --|**|
8073        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
8074       END IF;                                                     --|**|
8075                                                                   --|**|
8076       -- Initialize API return status to SUCCESS                  --|**|
8077       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
8078 --******************* END REQUIRED AREA ********************************
8079 
8080     IF IBC_DEBUG_PVT.debug_enabled THEN
8081       IBC_DEBUG_PVT.start_process(
8082          p_proc_type  => 'PROCEDURE',
8083          p_proc_name  => 'Insert_Components',
8084          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
8085                            p_tag     => 'PARAMETERS',
8086                            p_parms   => JTF_VARCHAR2_TABLE_4000(
8087                                           'p_citem_ver_id', p_citem_ver_id,
8088                                           'p_content_item_ids', IBC_DEBUG_PVT.make_list(p_content_item_ids),
8089                                           'p_attribute_type_codes', IBC_DEBUG_PVT.make_list(p_attribute_type_codes),
8090                                           'p_sort_order', IBC_DEBUG_PVT.make_list(p_sort_order),
8091                                           'p_commit', p_commit,
8092                                           'p_api_version_number', p_api_version_number,
8093                                           'p_init_msg_list', p_init_msg_list
8094                                         )
8095                            )
8096       );
8097     END IF;
8098 
8099 -- *** VALIDATION OF VALUES ******
8100      -- version id
8101     IF (IBC_VALIDATE_PVT.isValidCitemVer(p_citem_ver_id) = FND_API.g_false) THEN
8102         --DBMS_OUTPUT.put_line('EX - citem_ver_id');
8103         x_return_status := FND_API.G_RET_STS_ERROR;
8104       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
8105         FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
8106         FND_MSG_PUB.ADD;
8107         RAISE FND_API.G_EXC_ERROR;
8108     END IF;
8109 
8110     content_item_id := getCitemId(p_citem_ver_id);
8111     dir_id := getDirectoryNodeId(content_item_id);
8112 
8113     -- ***************PERMISSION CHECK*********************************************************************
8114     IF (hasPermission(content_item_id) = FND_API.g_false) THEN                                         --|*|
8115         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
8116         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
8117        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                        --|*|
8118         FND_MSG_PUB.ADD;                                                                               --|*|
8119         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
8120     ELSIF(isItemAdmin(content_item_id) = FND_API.g_false) THEN                                         --|*|
8121        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
8122                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
8123                   ,p_instance_pk1_value    => content_item_id                                          --|*|
8124                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
8125                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
8126                   ,p_container_pk1_value   => dir_id                                                   --|*|
8127                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
8128                   ) = FND_API.g_false                                                                  --|*|
8129             ) THEN                                                                                     --|*|
8130            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
8131            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
8132          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
8133            FND_MSG_PUB.ADD;                                                                            --|*|
8134            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
8135       END IF;                                                                                          --|*|
8136     END IF;                                                                                            --|*|
8137     -- ***************PERMISSION CHECK*********************************************************************
8138 
8139     ctype_code := getContentType(content_item_id);
8140     -- if there is no content type code
8141     IF (ctype_code IS NULL) THEN
8142         --DBMS_OUTPUT.put_line('EX - getContentTypeV');
8143         x_return_status := FND_API.G_RET_STS_ERROR;
8144       FND_MESSAGE.Set_Name('IBC', 'UNABLE_TO_IDENTIFY_CTYPE');
8145         FND_MSG_PUB.ADD;
8146         x_return_status := FND_API.G_RET_STS_ERROR;
8147     END IF;
8148 
8149     -- ACTUAL INSERTION OF COMPONENTS
8150     insert_component_items_int(
8151        p_citem_ver_id              => p_citem_ver_id
8152        ,p_content_item_id          => content_item_id
8153        ,p_content_item_ids         => p_content_item_ids
8154        ,p_citem_ver_ids            => p_citem_ver_ids
8155        ,p_attribute_type_codes     => p_attribute_type_codes
8156        ,p_ctype_code               => ctype_code
8157        ,p_sort_order               => p_sort_order
8158        ,p_log_action               => FND_API.g_true
8159        ,x_return_status            => x_return_status
8160     );
8161 
8162     IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
8163         --DBMS_OUTPUT.put_line('EX - inserting component items');
8164         -- raise errors from inner procedure
8165         RAISE FND_API.G_EXC_ERROR;
8166     END IF;
8167 
8168     -- COMMIT?
8169     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
8170         COMMIT;
8171     END IF;
8172 
8173     -- Standard call to get message count and if count is 1, get message info.
8174     FND_MSG_PUB.Count_And_Get(
8175         p_count           =>      x_msg_count,
8176         p_data            =>      x_msg_data
8177     );
8178 
8179     IF IBC_DEBUG_PVT.debug_enabled THEN
8180       IBC_DEBUG_PVT.end_process(
8181         IBC_DEBUG_PVT.make_parameter_list(
8182           p_tag    => 'OUTPUT',
8183           p_parms  => JTF_VARCHAR2_TABLE_4000(
8184                         'x_return_status', x_return_status,
8185                         'x_msg_count', x_msg_count,
8186                         'x_msg_data', x_msg_data
8187                       )
8188         )
8189       );
8190     END IF;
8191 
8192 EXCEPTION
8193     WHEN FND_API.G_EXC_ERROR THEN
8194       ROLLBACK TO svpt_insert_components;
8195       --DBMS_OUTPUT.put_line('Expected Error');
8196        Ibc_Utilities_Pvt.handle_exceptions(
8197          p_api_name           => L_API_NAME
8198          ,p_pkg_name          => G_PKG_NAME
8199          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
8200          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
8201          ,p_sqlcode           => SQLCODE
8202          ,p_sqlerrm           => SQLERRM
8203          ,x_msg_count         => x_msg_count
8204          ,x_msg_data          => x_msg_data
8205          ,x_return_status     => x_return_status
8206        );
8207     IF IBC_DEBUG_PVT.debug_enabled THEN
8208       IBC_DEBUG_PVT.end_process(
8209         IBC_DEBUG_PVT.make_parameter_list(
8210           p_tag    => 'OUTPUT',
8211           p_parms  => JTF_VARCHAR2_TABLE_4000(
8212                         'x_return_status', x_return_status,
8213                         'x_msg_count', x_msg_count,
8214                         'x_msg_data', x_msg_data
8215                       )
8216         )
8217       );
8218     END IF;
8219   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8220       ROLLBACK TO svpt_insert_components;
8221       --DBMS_OUTPUT.put_line('Unexpected error');
8222       Ibc_Utilities_Pvt.handle_exceptions(
8223          p_api_name           => L_API_NAME
8224          ,p_pkg_name          => G_PKG_NAME
8225          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
8226          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
8227          ,p_sqlcode           => SQLCODE
8228          ,p_sqlerrm           => SQLERRM
8229          ,x_msg_count         => x_msg_count
8230          ,x_msg_data          => x_msg_data
8231          ,x_return_status     => x_return_status
8232       );
8233     IF IBC_DEBUG_PVT.debug_enabled THEN
8234       IBC_DEBUG_PVT.end_process(
8235         IBC_DEBUG_PVT.make_parameter_list(
8236           p_tag    => 'OUTPUT',
8237           p_parms  => JTF_VARCHAR2_TABLE_4000(
8238                         'x_return_status', x_return_status,
8239                         'x_msg_count', x_msg_count,
8240                         'x_msg_data', x_msg_data
8241                       )
8242         )
8243       );
8244     END IF;
8245   WHEN OTHERS THEN
8246       ROLLBACK TO svpt_insert_components;
8247       --DBMS_OUTPUT.put_line('Other error');
8248       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
8249          p_api_name           => L_API_NAME
8250          ,p_pkg_name          => G_PKG_NAME
8251          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
8252          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
8253          ,p_sqlcode           => SQLCODE
8254          ,p_sqlerrm           => SQLERRM
8255          ,x_msg_count         => x_msg_count
8256          ,x_msg_data          => x_msg_data
8257          ,x_return_status     => x_return_status
8258       );
8259     IF IBC_DEBUG_PVT.debug_enabled THEN
8260       IBC_DEBUG_PVT.end_process(
8261         IBC_DEBUG_PVT.make_parameter_list(
8262           p_tag    => 'OUTPUT',
8263           p_parms  => JTF_VARCHAR2_TABLE_4000(
8264                         'x_return_status', x_return_status,
8265                         'x_msg_count', x_msg_count,
8266                         'x_msg_data', x_msg_data,
8267                         'EXCEPTION', SQLERRM
8268                       )
8269         )
8270       );
8271     END IF;
8272  END;
8273 
8274 -- --------------------------------------------------------------
8275 -- INSERT component ITEMS
8276 --
8277 -- Used to populate component content type information
8278 -- Overloaded - no subitem citem_ver_ids
8279 -- --------------------------------------------------------------
8280 PROCEDURE insert_components(
8281     p_citem_ver_id              IN NUMBER
8282     ,p_content_item_ids         IN JTF_NUMBER_TABLE
8283     ,p_attribute_type_codes     IN JTF_VARCHAR2_TABLE_100
8284     ,p_sort_order               IN JTF_NUMBER_TABLE
8285     ,p_commit                   IN VARCHAR2
8286     ,p_api_version_number       IN NUMBER
8287     ,p_init_msg_list            IN VARCHAR2
8288     ,x_return_status            OUT NOCOPY VARCHAR2
8289     ,x_msg_count                OUT NOCOPY NUMBER
8290     ,x_msg_data                 OUT NOCOPY VARCHAR2
8291 )
8292 IS
8293 BEGIN
8294   insert_components(
8295     p_citem_ver_id              => p_citem_ver_id
8296     ,p_content_item_ids         => p_content_item_ids
8297     ,p_citem_ver_ids            => NULL
8298     ,p_attribute_type_codes     => p_attribute_type_codes
8299     ,p_sort_order               => p_sort_order
8300     ,p_commit                   => p_commit
8301     ,p_api_version_number       => p_api_version_number
8302     ,p_init_msg_list            => p_init_msg_list
8303     ,x_return_status            => x_return_status
8304     ,x_msg_count                => x_msg_count
8305     ,x_msg_data                 => x_msg_data
8306   );
8307 EXCEPTION
8308   WHEN OTHERS THEN
8309     RAISE;
8310 END insert_components;
8311 
8312 -- --------------------------------------------------------------
8313 -- INSERT ASSOCIATIONS
8314 --
8315 -- Used to populate tables containing association information/Links
8316 --
8317 -- --------------------------------------------------------------
8318 
8319 PROCEDURE insert_associations(
8320     p_content_item_id           IN NUMBER
8321     ,p_assoc_type_codes         IN JTF_VARCHAR2_TABLE_100
8322     ,p_assoc_objects1           IN JTF_VARCHAR2_TABLE_300
8323     ,p_assoc_objects2           IN JTF_VARCHAR2_TABLE_300
8324     ,p_assoc_objects3           IN JTF_VARCHAR2_TABLE_300
8325     ,p_assoc_objects4           IN JTF_VARCHAR2_TABLE_300
8326     ,p_assoc_objects5           IN JTF_VARCHAR2_TABLE_300
8327     ,p_commit                   IN VARCHAR2
8328     ,p_api_version_number       IN NUMBER
8329     ,p_init_msg_list            IN VARCHAR2
8330     ,x_return_status            OUT NOCOPY VARCHAR2
8331     ,x_msg_count                OUT NOCOPY NUMBER
8332     ,x_msg_data                 OUT NOCOPY VARCHAR2
8333 )
8334 IS
8335 BEGIN
8336   insert_associations(
8337     p_content_item_id           => p_content_item_id
8338     ,p_citem_version_id         => NULL
8339     ,p_assoc_type_codes         => p_assoc_type_codes
8340     ,p_assoc_objects1           => p_assoc_objects1
8341     ,p_assoc_objects2           => p_assoc_objects2
8342     ,p_assoc_objects3           => p_assoc_objects3
8343     ,p_assoc_objects4           => p_assoc_objects4
8344     ,p_assoc_objects5           => p_assoc_objects5
8345     ,p_commit                   => p_commit
8346     ,p_api_version_number       => p_api_version_number
8347     ,p_init_msg_list            => p_init_msg_list
8348     ,x_return_status            => x_return_status
8349     ,x_msg_count                => x_msg_count
8350     ,x_msg_data                 => x_msg_data
8351   );
8352 END insert_associations;
8353 
8354 PROCEDURE insert_associations(
8355     p_content_item_id           IN NUMBER
8356     ,p_citem_version_id         IN NUMBER
8357     ,p_assoc_type_codes         IN JTF_VARCHAR2_TABLE_100
8358     ,p_assoc_objects1           IN JTF_VARCHAR2_TABLE_300
8359     ,p_assoc_objects2           IN JTF_VARCHAR2_TABLE_300
8360     ,p_assoc_objects3           IN JTF_VARCHAR2_TABLE_300
8361     ,p_assoc_objects4           IN JTF_VARCHAR2_TABLE_300
8362     ,p_assoc_objects5           IN JTF_VARCHAR2_TABLE_300
8363     ,p_commit                   IN VARCHAR2
8364     ,p_api_version_number       IN NUMBER
8365     ,p_init_msg_list            IN VARCHAR2
8366     ,x_return_status            OUT NOCOPY VARCHAR2
8367     ,x_msg_count                OUT NOCOPY NUMBER
8368     ,x_msg_data                 OUT NOCOPY VARCHAR2
8369 )
8370 IS
8371 --******************* BEGIN REQUIRED VARIABLES *************************
8372   l_api_name CONSTANT VARCHAR2(30) := 'insert_citem_association';--|**|
8373   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
8374 --******************* END REQUIRED VARIABLES ***************************
8375 
8376    dir_id NUMBER;
8377 
8378 BEGIN
8379   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
8380 --******************* BEGIN REQUIRED AREA ******************************
8381       SAVEPOINT svpt_insert_associations;                         --|**|
8382       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
8383         FND_MSG_PUB.initialize;                                   --|**|
8384       END IF;                                                     --|**|
8385                                                                   --|**|
8386       -- Standard call to check for call compatibility.           --|**|
8387       IF NOT FND_API.Compatible_API_Call (                        --|**|
8388             l_api_version_number                                  --|**|
8389          ,p_api_version_number                                 --|**|
8390          ,l_api_name                                           --|**|
8391          ,G_PKG_NAME                                           --|**|
8392       )THEN                                                       --|**|
8393        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
8394       END IF;                                                     --|**|
8395                                                                   --|**|
8396       -- Initialize API return status to SUCCESS                  --|**|
8397       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
8398 --******************* END REQUIRED AREA ********************************
8399 
8400     IF IBC_DEBUG_PVT.debug_enabled THEN
8401       IBC_DEBUG_PVT.start_process(
8402          p_proc_type  => 'PROCEDURE',
8403          p_proc_name  => 'Insert_Associations',
8404          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
8405                            p_tag     => 'PARAMETERS',
8406                            p_parms   => JTF_VARCHAR2_TABLE_4000(
8407                                           'p_content_item_id', p_content_item_id,
8408                                           'p_citem_version_id', p_citem_version_id,
8409                                           'p_assoc_type_codes', IBC_DEBUG_PVT.make_list(p_assoc_type_codes),
8410                                           'p_assoc_objects1', IBC_DEBUG_PVT.make_list(p_assoc_objects1),
8411                                           'p_assoc_objects2', IBC_DEBUG_PVT.make_list(p_assoc_objects2),
8412                                           'p_assoc_objects3', IBC_DEBUG_PVT.make_list(p_assoc_objects3),
8413                                           'p_assoc_objects4', IBC_DEBUG_PVT.make_list(p_assoc_objects4),
8414                                           'p_assoc_objects5', IBC_DEBUG_PVT.make_list(p_assoc_objects5),
8415                                           'p_commit', p_commit,
8416                                           'p_api_version_number', p_api_version_number,
8417                                           'p_init_msg_list', p_init_msg_list
8418                                         )
8419                            )
8420       );
8421     END IF;
8422 
8423     -- citem
8424     IF (IBC_VALIDATE_PVT.isValidCitem(p_content_item_id) = FND_API.g_false ) THEN
8425         --DBMS_OUTPUT.put_line('EX - content_item_id');
8426         x_return_status := FND_API.G_RET_STS_ERROR;
8427       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
8428         FND_MESSAGE.Set_Token('INPUT', 'p_content_item_id', FALSE);
8429         FND_MSG_PUB.ADD;
8430         RAISE FND_API.G_EXC_ERROR;
8431     END IF;
8432 
8433     IF (p_citem_version_id IS NOT NULL AND
8434         IBC_VALIDATE_PVT.isValidCitemVerForCitem(p_content_item_id, p_citem_version_id) = FND_API.g_false)
8435     THEN
8436         --DBMS_OUTPUT.put_line('EX - content_item_id');
8437         x_return_status := FND_API.G_RET_STS_ERROR;
8438       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
8439         FND_MESSAGE.Set_Token('INPUT', 'p_content_item_id/p_citem_version_id', FALSE);
8440         FND_MSG_PUB.ADD;
8441         RAISE FND_API.G_EXC_ERROR;
8442     END IF;
8443 
8444     -- assoc type
8445     IF (p_assoc_type_codes IS NULL) THEN
8446         --DBMS_OUTPUT.put_line('EX - assoc type');
8447         x_return_status := FND_API.G_RET_STS_ERROR;
8448         FND_MESSAGE.Set_Name('IBC', 'IBC_INPUT_REQUIRED');
8449         FND_MESSAGE.Set_Token('INPUT', 'p_assoc_type_code', FALSE);
8450         FND_MSG_PUB.ADD;
8451         RAISE FND_API.G_EXC_ERROR;
8452     END IF;
8453 
8454     -- associated object 1
8455     IF (p_assoc_objects1 IS NULL) THEN
8456         --DBMS_OUTPUT.put_line('EX - p_assoc_object1');
8457         x_return_status := FND_API.G_RET_STS_ERROR;
8458         FND_MESSAGE.Set_Name('IBC', 'IBC_INPUT_REQUIRED');
8459         FND_MESSAGE.Set_Token('INPUT', 'p_assoc_object1', FALSE);
8460         FND_MSG_PUB.ADD;
8461         RAISE FND_API.G_EXC_ERROR;
8462     END IF;
8463 
8464 
8465    dir_id := getDirectoryNodeId(p_content_item_id);
8466 
8467     -- ***************PERMISSION CHECK*********************************************************************
8468     IF (hasPermission(p_content_item_id) = FND_API.g_false) THEN                                       --|*|
8469         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
8470         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
8471        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                        --|*|
8472         FND_MSG_PUB.ADD;                                                                               --|*|
8473         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
8474     ELSIF(isItemAdmin(p_content_item_id) = FND_API.g_false) THEN                                       --|*|
8475        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
8476                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
8477                   ,p_instance_pk1_value    => p_content_item_id                                        --|*|
8478                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
8479                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
8480                   ,p_container_pk1_value   => dir_id                                                   --|*|
8481                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
8482                   ) = FND_API.g_false                                                                  --|*|
8483             ) THEN                                                                                     --|*|
8484            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
8485            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
8486          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
8487            FND_MSG_PUB.ADD;                                                                            --|*|
8488            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
8489       END IF;                                                                                          --|*|
8490     END IF;                                                                                            --|*|
8491     -- ***************PERMISSION CHECK*********************************************************************
8492 
8493     -- only attempt insert if no errors were found
8494     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
8495         insert_citem_associations_int(
8496            p_content_item_id    => p_content_item_id
8497            ,p_citem_version_id  => p_citem_version_id
8498            ,p_assoc_type_codes  => p_assoc_type_codes
8499            ,p_assoc_objects1    => p_assoc_objects1
8500            ,p_assoc_objects2    => p_assoc_objects2
8501            ,p_assoc_objects3    => p_assoc_objects3
8502            ,p_assoc_objects4    => p_assoc_objects4
8503            ,p_assoc_objects5    => p_assoc_objects5
8504            ,p_log_action        => FND_API.g_true
8505            ,x_return_status     => x_return_status
8506         );
8507     END IF;
8508 
8509 
8510     -- COMMIT?
8511     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
8512         COMMIT;
8513     END IF;
8514 
8515     -- Standard call to get message count and if count is 1, get message info.
8516     FND_MSG_PUB.Count_And_Get(
8517         p_count           =>      x_msg_count,
8518         p_data            =>      x_msg_data
8519     );
8520 
8521     IF IBC_DEBUG_PVT.debug_enabled THEN
8522       IBC_DEBUG_PVT.end_process(
8523         IBC_DEBUG_PVT.make_parameter_list(
8524           p_tag    => 'OUTPUT',
8525           p_parms  => JTF_VARCHAR2_TABLE_4000(
8526                         'x_return_status', x_return_status,
8527                         'x_msg_count', x_msg_count,
8528                         'x_msg_data', x_msg_data
8529                       )
8530         )
8531       );
8532     END IF;
8533 
8534 EXCEPTION
8535     WHEN FND_API.G_EXC_ERROR THEN
8536       ROLLBACK TO svpt_insert_associations;
8537       --DBMS_OUTPUT.put_line('Expected Error');
8538       Ibc_Utilities_Pvt.handle_exceptions(
8539          p_api_name           => L_API_NAME
8540          ,p_pkg_name          => G_PKG_NAME
8541          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
8542          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
8543          ,p_sqlcode           => SQLCODE
8544          ,p_sqlerrm           => SQLERRM
8545          ,x_msg_count         => x_msg_count
8546          ,x_msg_data          => x_msg_data
8547          ,x_return_status     => x_return_status
8548        );
8549     IF IBC_DEBUG_PVT.debug_enabled THEN
8550       IBC_DEBUG_PVT.end_process(
8551         IBC_DEBUG_PVT.make_parameter_list(
8552           p_tag    => 'OUTPUT',
8553           p_parms  => JTF_VARCHAR2_TABLE_4000(
8554                         'x_return_status', x_return_status,
8555                         'x_msg_count', x_msg_count,
8556                         'x_msg_data', x_msg_data
8557                       )
8558         )
8559       );
8560     END IF;
8561   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8562       ROLLBACK TO svpt_insert_associations;
8563       --DBMS_OUTPUT.put_line('Unexpected error');
8564       Ibc_Utilities_Pvt.handle_exceptions(
8565          p_api_name           => L_API_NAME
8566          ,p_pkg_name          => G_PKG_NAME
8567          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
8568          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
8569          ,p_sqlcode           => SQLCODE
8570          ,p_sqlerrm           => SQLERRM
8571          ,x_msg_count         => x_msg_count
8572          ,x_msg_data          => x_msg_data
8573          ,x_return_status     => x_return_status
8574       );
8575     IF IBC_DEBUG_PVT.debug_enabled THEN
8576       IBC_DEBUG_PVT.end_process(
8577         IBC_DEBUG_PVT.make_parameter_list(
8578           p_tag    => 'OUTPUT',
8579           p_parms  => JTF_VARCHAR2_TABLE_4000(
8580                         'x_return_status', x_return_status,
8581                         'x_msg_count', x_msg_count,
8582                         'x_msg_data', x_msg_data
8583                       )
8584         )
8585       );
8586     END IF;
8587   WHEN OTHERS THEN
8588       ROLLBACK TO svpt_insert_associations;
8589       --DBMS_OUTPUT.put_line('Other error');
8590       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
8591          p_api_name           => L_API_NAME
8592          ,p_pkg_name          => G_PKG_NAME
8593          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
8594          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
8595          ,p_sqlcode           => SQLCODE
8596          ,p_sqlerrm           => SQLERRM
8597          ,x_msg_count         => x_msg_count
8598          ,x_msg_data          => x_msg_data
8599          ,x_return_status     => x_return_status
8600       );
8601     IF IBC_DEBUG_PVT.debug_enabled THEN
8602       IBC_DEBUG_PVT.end_process(
8603         IBC_DEBUG_PVT.make_parameter_list(
8604           p_tag    => 'OUTPUT',
8605           p_parms  => JTF_VARCHAR2_TABLE_4000(
8606                         'x_return_status', x_return_status,
8607                         'x_msg_count', x_msg_count,
8608                         'x_msg_data', x_msg_data,
8609                         'EXCEPTION', SQLERRM
8610                       )
8611         )
8612       );
8613     END IF;
8614  END;
8615 
8616 -- --------------------------------------------------------------
8617 -- INSERT CONTENT ITEM (MINIMUM)
8618 --
8619 -- Used for the creation of a new content item.
8620 --
8621 -- --------------------------------------------------------------
8622 PROCEDURE insert_minimum_item(
8623     p_ctype_code              IN VARCHAR2
8624     ,p_citem_name             IN VARCHAR2
8625     ,p_citem_description      IN VARCHAR2
8626     ,p_lock_flag              IN VARCHAR2
8627     ,p_dir_node_id            IN NUMBER
8628     ,p_commit                 IN VARCHAR2
8629     ,p_api_version_number     IN NUMBER
8630     ,p_init_msg_list          IN VARCHAR2
8631     ,px_content_item_id       IN OUT NOCOPY NUMBER
8632     ,px_object_version_number IN OUT NOCOPY NUMBER
8633     ,x_citem_ver_id           OUT NOCOPY NUMBER
8634     ,x_return_status          OUT NOCOPY VARCHAR2
8635     ,x_msg_count              OUT NOCOPY NUMBER
8636     ,x_msg_data               OUT NOCOPY VARCHAR2
8637 )
8638 IS
8639 --******************* BEGIN REQUIRED VARIABLES *************************
8640   l_api_name CONSTANT VARCHAR2(30) := 'insert_minimum_item';      --|**|
8641   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
8642 --******************* END REQUIRED VARIABLES ***************************
8643     row_id  VARCHAR2(250);  -- required for use with table handlers
8644     locked_by NUMBER;  -- variable used to set locked_by column (logic needed)
8645     status IBC_CONTENT_ITEMS.content_item_status%TYPE := Ibc_Utilities_Pub.G_STI_PENDING;
8646     current_version NUMBER;
8647 BEGIN
8648   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
8649 --******************* BEGIN REQUIRED AREA ******************************
8650       SAVEPOINT svpt_insert_minimum_item;                         --|**|
8651       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
8652         FND_MSG_PUB.initialize;                                   --|**|
8653       END IF;                                                     --|**|
8654                                                                   --|**|
8655       -- Standard call to check for call compatibility.           --|**|
8656       IF NOT FND_API.Compatible_API_Call (                        --|**|
8657             l_api_version_number                                  --|**|
8658          ,p_api_version_number                                 --|**|
8659          ,l_api_name                                           --|**|
8660          ,G_PKG_NAME                                           --|**|
8661       )THEN                                                       --|**|
8662        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
8663       END IF;                                                     --|**|
8664                                                                   --|**|
8665       -- Initialize API return status to SUCCESS                  --|**|
8666       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
8667 --******************* END REQUIRED AREA ********************************
8668 
8669     IF IBC_DEBUG_PVT.debug_enabled THEN
8670       IBC_DEBUG_PVT.start_process(
8671          p_proc_type  => 'PROCEDURE',
8672          p_proc_name  => 'Insert_Minimum_Item',
8673          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
8674                            p_tag     => 'PARAMETERS',
8675                            p_parms   => JTF_VARCHAR2_TABLE_4000(
8676                                           'p_ctype_code', p_ctype_code,
8677                                           'p_citem_name', p_citem_name,
8678                                           'p_citem_description', p_citem_description,
8679                                           'p_lock_flag', p_lock_flag,
8680                                           'p_dir_node_id', p_dir_node_id,
8681                                           'p_commit', p_commit,
8682                                           'p_api_version_number', p_api_version_number,
8683                                           'p_init_msg_list', p_init_msg_list,
8684                                           'px_content_item_id', px_content_item_id,
8685                                           'px_object_version_number', px_object_version_number
8686                                         )
8687                            )
8688       );
8689     END IF;
8690 
8691     IF(px_object_version_number IS NULL) THEN
8692         px_object_version_number := 1;
8693     END IF;
8694 
8695     -- checking for valid inputs and throwing exception if invalid
8696     -- content item name
8697     IF (p_citem_name IS NULL) THEN
8698         --DBMS_OUTPUT.put_line('EX - citem name');
8699         x_return_status := FND_API.G_RET_STS_ERROR;
8700         FND_MESSAGE.Set_Name('IBC', 'IBC_INPUT_REQUIRED');
8701         FND_MESSAGE.Set_Token('INPUT', 'p_citem_name', FALSE);
8702         FND_MSG_PUB.ADD;
8703         RAISE FND_API.G_EXC_ERROR;
8704     END IF;
8705     IF (LENGTH(p_citem_name) > 240) THEN
8706         --DBMS_OUTPUT.put_line('EX - citem name');
8707         x_return_status := FND_API.G_RET_STS_ERROR;
8708         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
8709         FND_MESSAGE.Set_Token('INPUT', 'p_citem_name', FALSE);
8710         FND_MSG_PUB.ADD;
8711         RAISE FND_API.G_EXC_ERROR;
8712     END IF;
8713     -- content item description
8714     IF ( (p_citem_description IS NOT NULL) AND (LENGTH(p_citem_description) > 2000) )THEN
8715         --DBMS_OUTPUT.put_line('EX - citem description');
8716         x_return_status := FND_API.G_RET_STS_ERROR;
8717        FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
8718         FND_MESSAGE.Set_Token('INPUT', 'p_citem_description', FALSE);
8719         FND_MSG_PUB.ADD;
8720         RAISE FND_API.G_EXC_ERROR;
8721     END IF;
8722     -- content type
8723     IF (IBC_VALIDATE_PVT.isValidCType(p_ctype_code) = FND_API.g_false) THEN
8724         --DBMS_OUTPUT.put_line('EX - ctype code');
8725         x_return_status := FND_API.G_RET_STS_ERROR;
8726       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
8727         FND_MESSAGE.Set_Token('INPUT', 'p_ctype_code', FALSE);
8728         FND_MSG_PUB.ADD;
8729         RAISE FND_API.G_EXC_ERROR;
8730     END IF;
8731     -- directory nodes
8732     IF ( (p_dir_node_id <> Ibc_Utilities_Pub.G_COMMON_DIR_NODE) AND (IBC_VALIDATE_PVT.isValidDirNode(p_dir_node_id) = FND_API.g_false) ) THEN
8733         --DBMS_OUTPUT.put_line('EX - dir_node_id');
8734         x_return_status := FND_API.G_RET_STS_ERROR;
8735         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
8736         FND_MESSAGE.Set_Token('INPUT', 'p_dir_node_id', FALSE);
8737         FND_MSG_PUB.ADD;
8738         RAISE FND_API.G_EXC_ERROR;
8739     END IF;
8740     -- checking if versioning is necessary
8741     IF (px_content_item_id IS NOT NULL) THEN
8742         IF (IBC_VALIDATE_PVT.isValidCitem(px_content_item_id) = FND_API.g_false)  THEN
8743             --DBMS_OUTPUT.put_line('EX - content_item_id');
8744             x_return_status := FND_API.G_RET_STS_ERROR;
8745             FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
8746             FND_MESSAGE.Set_Token('INPUT', 'px_content_item_id', FALSE);
8747             FND_MSG_PUB.ADD;
8748             RAISE FND_API.G_EXC_ERROR;
8749         ELSE
8750             -- NEW VERSION NEEDS TO BE CREATED!!
8751 
8752           -- ***************PERMISSION CHECK*********************************************************************
8753           IF (hasPermission(px_content_item_id) = FND_API.g_false) THEN                                      --|*|
8754               --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
8755               x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
8756              FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                        --|*|
8757               FND_MSG_PUB.ADD;                                                                               --|*|
8758               RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
8759           ELSIF(isItemAdmin(px_content_item_id) = FND_API.g_false) THEN                                      --|*|
8760              IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
8761                         p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
8762                         ,p_instance_pk1_value    => px_content_item_id                                       --|*|
8763                         ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
8764                         ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
8765                         ,p_container_pk1_value   => p_dir_node_id                                            --|*|
8766                         ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
8767                         ) = FND_API.g_false                                                                  --|*|
8768                   ) THEN                                                                                     --|*|
8769                  --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
8770                  x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
8771                FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
8772                  FND_MSG_PUB.ADD;                                                                            --|*|
8773                  RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
8774             END IF;                                                                                          --|*|
8775           END IF;                                                                                            --|*|
8776           -- ***************PERMISSION CHECK*********************************************************************
8777 
8778             current_version := getMaxVersion(px_content_item_id) + 1;
8779         END IF;
8780     ELSE
8781         -- CREATING BRAND SPANKING NEW ITEM!!!!!!!!
8782        -- ***************PERMISSION CHECK*********************************************************************
8783       IF( IBC_DATA_SECURITY_PVT.has_permission(                                                          --|*|
8784                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')    --|*|
8785                   ,p_instance_pk1_value    => NULL                                                       --|*|
8786                   ,p_container_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
8787                   ,p_container_pk1_value    => p_dir_node_id                                             --|*|
8788                   ,p_permission_code       => 'CITEM_EDIT'                                               --|*|
8789                   ,p_current_user_id       => FND_GLOBAL.user_id                                         --|*|
8790                   ) = FND_API.g_false                                                                    --|*|
8791             ) THEN                                                                                       --|*|
8792            --DBMS_OUTPUT.put_line('EX - no permissions');                                                --|*|
8793            x_return_status := FND_API.G_RET_STS_ERROR;                                                   --|*|
8794          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                         --|*|
8795            FND_MSG_PUB.ADD;                                                                              --|*|
8796            RAISE FND_API.G_EXC_ERROR;                                                                    --|*|
8797        END IF;                                                                                           --|*|
8798        -- ***************PERMISSION CHECK*********************************************************************
8799         current_version := 1;
8800     END IF;
8801 
8802     -- setting locked_by info
8803     IF (p_lock_flag = FND_API.g_true) THEN
8804         locked_by := FND_GLOBAL.user_id;
8805     ELSE
8806         locked_by := NULL;
8807     END IF;
8808 
8809     IF (px_content_item_id IS NULL) THEN
8810         -- create new content item
8811         -- inserting new row into ibc_content_items
8812         Ibc_Content_Items_Pkg.insert_row(
8813             x_rowid                      => row_id
8814             ,px_content_item_id          => px_content_item_id
8815             ,p_content_type_code         => p_ctype_code
8816             ,p_item_reference_code       => NULL
8817             ,p_directory_node_id         => p_dir_node_id
8818             ,p_live_citem_version_id     => NULL
8819             ,p_content_item_status       => status
8820             ,p_locked_by_user_id         => locked_by
8821             ,p_wd_restricted_flag        => FND_API.g_false
8822             ,p_base_language             => USERENV('LANG')
8823             ,p_translation_required_flag => FND_API.g_false
8824             ,p_owner_resource_id         => FND_GLOBAL.USER_ID
8825             ,p_owner_resource_type       => 'USER'
8826             ,p_application_id            => NULL
8827             ,p_parent_item_id            => NULL
8828             ,p_request_id                => NULL
8829             ,p_object_version_number     => G_OBJ_VERSION_DEFAULT
8830          );
8831 
8832                                    --***************************************************
8833                                    --************ADDING TO AUDIT LOG********************
8834                                    --***************************************************
8835                                    Ibc_Utilities_Pvt.log_action(
8836                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_CREATE
8837                                        ,p_parent_value  => NULL
8838                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
8839                                        ,p_object_value1 => px_content_item_id
8840                                        ,p_object_value2 => NULL
8841                                        ,p_object_value3 => NULL
8842                                        ,p_object_value4 => NULL
8843                                        ,p_object_value5 => NULL
8844                                        ,p_description   => NULL
8845                                    );
8846                                    --***************************************************
8847                                    --***************************************************
8848     END IF;
8849 
8850 
8851     -- inserting new row into ibc_citem_versions
8852     Ibc_Citem_Versions_Pkg.insert_base_lang(
8853         x_rowid                      => row_id
8854         ,px_citem_version_id         => x_citem_ver_id
8855         ,p_content_item_id           => px_content_item_id
8856         ,p_version_number            => current_version
8857         ,p_citem_version_status      => status
8858         ,p_start_date                => NULL
8859         ,p_end_date                  => NULL
8860         ,px_object_version_number    => px_object_version_number
8861         ,p_attribute_file_id         => NULL
8862         ,p_attachment_file_id        => NULL
8863         ,p_attachment_attribute_code => NULL
8864         ,p_content_item_name         => p_citem_name
8865         ,p_attachment_file_name      => NULL
8866         ,p_description               => p_citem_description
8867      );
8868 
8869     -- adding item heading if the log was skipped earlier
8870      IF (current_version <> 1) THEN
8871                                    --***************************************************
8872                                    --************ADDING TO AUDIT LOG********************
8873                                    --***************************************************
8874                                    Ibc_Utilities_Pvt.log_action(
8875                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_CREATE
8876                                        ,p_parent_value  => NULL
8877                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
8878                                        ,p_object_value1 => px_content_item_id
8879                                        ,p_object_value2 => NULL
8880                                        ,p_object_value3 => NULL
8881                                        ,p_object_value4 => NULL
8882                                        ,p_object_value5 => NULL
8883                                        ,p_description   => NULL
8884                                    );
8885                                    --***************************************************
8886                                    --***************************************************
8887     END IF;
8888                                    --***************************************************
8889                                    --************ADDING TO AUDIT LOG********************
8890                                    --***************************************************
8891                                    Ibc_Utilities_Pvt.log_action(
8892                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_CREATE
8893                                        ,p_parent_value  => px_content_item_id
8894                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
8895                                        ,p_object_value1 => x_citem_ver_id
8896                                        ,p_object_value2 => USERENV('LANG')
8897                                        ,p_object_value3 => NULL
8898                                        ,p_object_value4 => NULL
8899                                        ,p_object_value5 => NULL
8900                                        ,p_description   => NULL
8901                                    );
8902                                    --***************************************************
8903                                    --***************************************************
8904     -- COMMIT?
8905     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
8906         COMMIT;
8907     END IF;
8908 
8909     -- Standard call to get message count and if count is 1, get message info.
8910     FND_MSG_PUB.Count_And_Get(
8911         p_count           =>      x_msg_count,
8912         p_data            =>      x_msg_data
8913     );
8914 
8915     IF IBC_DEBUG_PVT.debug_enabled THEN
8916       IBC_DEBUG_PVT.end_process(
8917         IBC_DEBUG_PVT.make_parameter_list(
8918           p_tag    => 'OUTPUT',
8919           p_parms  => JTF_VARCHAR2_TABLE_4000(
8920                         'px_content_item_id', px_content_item_id,
8921                         'px_object_version_number', px_object_version_number,
8922                         'x_return_status', x_return_status,
8923                         'x_msg_count', x_msg_count,
8924                         'x_msg_data', x_msg_data
8925                       )
8926         )
8927       );
8928     END IF;
8929 
8930 EXCEPTION
8931     WHEN FND_API.G_EXC_ERROR THEN
8932       --DBMS_OUTPUT.put_line('Expected Error');
8933       ROLLBACK TO svpt_insert_minimum_item;
8934       Ibc_Utilities_Pvt.handle_exceptions(
8935          p_api_name           => L_API_NAME
8936          ,p_pkg_name          => G_PKG_NAME
8937          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
8938          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
8939          ,p_sqlcode           => SQLCODE
8940          ,p_sqlerrm           => SQLERRM
8941          ,x_msg_count         => x_msg_count
8942          ,x_msg_data          => x_msg_data
8943          ,x_return_status     => x_return_status
8944        );
8945       IF IBC_DEBUG_PVT.debug_enabled THEN
8946         IBC_DEBUG_PVT.end_process(
8947           IBC_DEBUG_PVT.make_parameter_list(
8948             p_tag    => 'OUTPUT',
8949             p_parms  => JTF_VARCHAR2_TABLE_4000(
8950                           'x_return_status', x_return_status,
8951                           'x_msg_count', x_msg_count,
8952                           'x_msg_data', x_msg_data
8953                         )
8954           )
8955         );
8956       END IF;
8957   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8958       --DBMS_OUTPUT.put_line('Unexpected error');
8959       ROLLBACK TO svpt_insert_minimum_item;
8960       Ibc_Utilities_Pvt.handle_exceptions(
8961          p_api_name           => L_API_NAME
8962          ,p_pkg_name          => G_PKG_NAME
8963          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
8964          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
8965          ,p_sqlcode           => SQLCODE
8966          ,p_sqlerrm           => SQLERRM
8967          ,x_msg_count         => x_msg_count
8968          ,x_msg_data          => x_msg_data
8969          ,x_return_status     => x_return_status
8970       );
8971       IF IBC_DEBUG_PVT.debug_enabled THEN
8972         IBC_DEBUG_PVT.end_process(
8973           IBC_DEBUG_PVT.make_parameter_list(
8974             p_tag    => 'OUTPUT',
8975             p_parms  => JTF_VARCHAR2_TABLE_4000(
8976                           'x_return_status', x_return_status,
8977                           'x_msg_count', x_msg_count,
8978                           'x_msg_data', x_msg_data
8979                         )
8980           )
8981         );
8982       END IF;
8983   WHEN OTHERS THEN
8984       --DBMS_OUTPUT.put_line('Other error');
8985       ROLLBACK TO svpt_insert_minimum_item;
8986       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
8987          p_api_name           => L_API_NAME
8988          ,p_pkg_name          => G_PKG_NAME
8989          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
8990          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
8991          ,p_sqlcode           => SQLCODE
8992          ,p_sqlerrm           => SQLERRM
8993          ,x_msg_count         => x_msg_count
8994          ,x_msg_data          => x_msg_data
8995          ,x_return_status     => x_return_status
8996       );
8997       IF IBC_DEBUG_PVT.debug_enabled THEN
8998         IBC_DEBUG_PVT.end_process(
8999           IBC_DEBUG_PVT.make_parameter_list(
9000             p_tag    => 'OUTPUT',
9001             p_parms  => JTF_VARCHAR2_TABLE_4000(
9002                           'x_return_status', x_return_status,
9003                           'x_msg_count', x_msg_count,
9004                           'x_msg_data', x_msg_data,
9005                           'EXCEPTION', SQLERRM
9006                         )
9007           )
9008         );
9009       END IF;
9010  END;
9011 
9012 -- --------------------------------------------------------------
9013 -- LOCK CONTENT ITEM
9014 --
9015 --
9016 -- --------------------------------------------------------------
9017 PROCEDURE lock_item(
9018     p_content_item_id           IN NUMBER
9019     ,p_commit                   IN VARCHAR2
9020     ,p_api_version_number       IN NUMBER
9021     ,p_init_msg_list            IN VARCHAR2
9022     ,x_citem_version_id         OUT NOCOPY NUMBER
9023     ,x_object_version_number    OUT NOCOPY NUMBER
9024     ,x_return_status            OUT NOCOPY VARCHAR2
9025     ,x_msg_count                OUT NOCOPY NUMBER
9026     ,x_msg_data                 OUT NOCOPY VARCHAR2
9027 )
9028 IS
9029 --******************* BEGIN REQUIRED VARIABLES *************************
9030   l_api_name CONSTANT VARCHAR2(30) := 'lock_content_item';       --|**|
9031   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
9032 --******************* END REQUIRED VARIABLES ***************************
9033    dir_id NUMBER;
9034 BEGIN
9035   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
9036 --******************* BEGIN REQUIRED AREA ******************************
9037       SAVEPOINT svpt_lock_item;                                 --|**|
9038       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
9039         FND_MSG_PUB.initialize;                                   --|**|
9040       END IF;                                                     --|**|
9041                                                                   --|**|
9042       -- Standard call to check for call compatibility.           --|**|
9043       IF NOT FND_API.Compatible_API_Call (                        --|**|
9044             l_api_version_number                                  --|**|
9045          ,p_api_version_number                                 --|**|
9046          ,l_api_name                                           --|**|
9047          ,G_PKG_NAME                                           --|**|
9048       )THEN                                                       --|**|
9049        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
9050       END IF;                                                     --|**|
9051                                                                   --|**|
9052       -- Initialize API return status to SUCCESS                  --|**|
9053       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
9054 --******************* END REQUIRED AREA ********************************
9055 
9056     IF IBC_DEBUG_PVT.debug_enabled THEN
9057       IBC_DEBUG_PVT.start_process(
9058          p_proc_type  => 'PROCEDURE',
9059          p_proc_name  => 'Lock_Item',
9060          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
9061                            p_tag     => 'PARAMETERS',
9062                            p_parms   => JTF_VARCHAR2_TABLE_4000(
9063                                           'p_content_item_id', p_content_item_id,
9064                                           'p_commit', p_commit,
9065                                           'p_api_version_number', p_api_version_number,
9066                                           'p_init_msg_list', p_init_msg_list
9067                                         )
9068                            )
9069       );
9070     END IF;
9071 
9072     -- citem validation
9073     IF (IBC_VALIDATE_PVT.isValidCitem(p_content_item_id) = FND_API.g_false ) THEN
9074         --DBMS_OUTPUT.put_line('EX - content_item_id');
9075         x_return_status := FND_API.G_RET_STS_ERROR;
9076        FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
9077         FND_MESSAGE.Set_Token('INPUT', 'p_content_item_id', FALSE);
9078         FND_MSG_PUB.ADD;
9079         RAISE FND_API.G_EXC_ERROR;
9080     END IF;
9081 
9082     dir_id := getDirectoryNodeId(p_content_item_id);
9083 
9084     -- ***************PERMISSION CHECK*********************************************************************
9085     IF (hasPermission(p_content_item_id) = FND_API.g_false) THEN                                       --|*|
9086         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
9087         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
9088        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                        --|*|
9089         FND_MSG_PUB.ADD;                                                                               --|*|
9090         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
9091     ELSIF(isItemAdmin(p_content_item_id) = FND_API.g_false) THEN                                       --|*|
9092        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
9093                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
9094                   ,p_instance_pk1_value    => p_content_item_id                                        --|*|
9095                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
9096                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
9097                   ,p_container_pk1_value   => dir_id                                                   --|*|
9098                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
9099                   ) = FND_API.g_false                                                                  --|*|
9100             ) THEN                                                                                     --|*|
9101            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
9102            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
9103          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
9104            FND_MSG_PUB.ADD;                                                                            --|*|
9105            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
9106       END IF;                                                                                          --|*|
9107     END IF;                                                                                            --|*|
9108     -- ***************PERMISSION CHECK*********************************************************************
9109 
9110     changeLock(p_content_item_id,FND_GLOBAL.user_id);
9111 
9112     -- getting object version number
9113     x_object_version_number := getObjVerNum(p_content_item_id);
9114 
9115     x_citem_version_id := getMaxVersionId(p_content_item_id);
9116 
9117 
9118     -- COMMIT?
9119     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
9120         COMMIT;
9121     END IF;
9122 
9123     -- Standard call to get message count and if count is 1, get message info.
9124     FND_MSG_PUB.Count_And_Get(
9125         p_count           =>      x_msg_count,
9126         p_data            =>      x_msg_data
9127     );
9128 
9129     IF IBC_DEBUG_PVT.debug_enabled THEN
9130       IBC_DEBUG_PVT.end_process(
9131         IBC_DEBUG_PVT.make_parameter_list(
9132           p_tag    => 'OUTPUT',
9133           p_parms  => JTF_VARCHAR2_TABLE_4000(
9134                         'x_citem_version_id', x_citem_version_id,
9135                         'x_object_version_number', x_object_version_number,
9136                         'x_return_status', x_return_status,
9137                         'x_msg_count', x_msg_count,
9138                         'x_msg_data', x_msg_data
9139                       )
9140         )
9141       );
9142     END IF;
9143 
9144 EXCEPTION
9145     WHEN FND_API.G_EXC_ERROR THEN
9146       --DBMS_OUTPUT.put_line('Expected Error');
9147       ROLLBACK TO svpt_lock_item;
9148       Ibc_Utilities_Pvt.handle_exceptions(
9149          p_api_name           => L_API_NAME
9150          ,p_pkg_name          => G_PKG_NAME
9151          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
9152          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
9153          ,p_sqlcode           => SQLCODE
9154          ,p_sqlerrm           => SQLERRM
9155          ,x_msg_count         => x_msg_count
9156          ,x_msg_data          => x_msg_data
9157          ,x_return_status     => x_return_status
9158        );
9159       IF IBC_DEBUG_PVT.debug_enabled THEN
9160         IBC_DEBUG_PVT.end_process(
9161           IBC_DEBUG_PVT.make_parameter_list(
9162             p_tag    => 'OUTPUT',
9163             p_parms  => JTF_VARCHAR2_TABLE_4000(
9164                           'x_return_status', x_return_status,
9165                           'x_msg_count', x_msg_count,
9166                           'x_msg_data', x_msg_data
9167                         )
9168           )
9169         );
9170      END IF;
9171   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9172       --DBMS_OUTPUT.put_line('Unexpected error');
9173       ROLLBACK TO svpt_lock_item;
9174       Ibc_Utilities_Pvt.handle_exceptions(
9175          p_api_name           => L_API_NAME
9176          ,p_pkg_name          => G_PKG_NAME
9177          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
9178          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
9179          ,p_sqlcode           => SQLCODE
9180          ,p_sqlerrm           => SQLERRM
9181          ,x_msg_count         => x_msg_count
9182          ,x_msg_data          => x_msg_data
9183          ,x_return_status     => x_return_status
9184       );
9185       IF IBC_DEBUG_PVT.debug_enabled THEN
9186         IBC_DEBUG_PVT.end_process(
9187           IBC_DEBUG_PVT.make_parameter_list(
9188             p_tag    => 'OUTPUT',
9189             p_parms  => JTF_VARCHAR2_TABLE_4000(
9190                           'x_return_status', x_return_status,
9191                           'x_msg_count', x_msg_count,
9192                           'x_msg_data', x_msg_data
9193                         )
9194           )
9195         );
9196      END IF;
9197   WHEN OTHERS THEN
9198       --DBMS_OUTPUT.put_line('Other error');
9199       ROLLBACK TO svpt_lock_item;
9200       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
9201          p_api_name           => L_API_NAME
9202          ,p_pkg_name          => G_PKG_NAME
9203          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
9204          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
9205          ,p_sqlcode           => SQLCODE
9206          ,p_sqlerrm           => SQLERRM
9207          ,x_msg_count         => x_msg_count
9208          ,x_msg_data          => x_msg_data
9209          ,x_return_status     => x_return_status
9210       );
9211       IF IBC_DEBUG_PVT.debug_enabled THEN
9212         IBC_DEBUG_PVT.end_process(
9213           IBC_DEBUG_PVT.make_parameter_list(
9214             p_tag    => 'OUTPUT',
9215             p_parms  => JTF_VARCHAR2_TABLE_4000(
9216                           'x_return_status', x_return_status,
9217                           'x_msg_count', x_msg_count,
9218                           'x_msg_data', x_msg_data,
9219                           'EXCEPTION', SQLERRM
9220                         )
9221           )
9222         );
9223      END IF;
9224  END;
9225 
9226 -- --------------------------------------------------------------
9227 -- PRE VALIDATE ITEM
9228 --
9229 -- Used to validate an item before it is ready to be approved.
9230 --
9231 -- --------------------------------------------------------------
9232 PROCEDURE pre_validate_item(
9233     p_citem_ver_id              IN NUMBER
9234     ,x_return_status            OUT NOCOPY VARCHAR2
9235     ,x_msg_count                OUT NOCOPY NUMBER
9236     ,x_msg_data                 OUT NOCOPY VARCHAR2
9237 )
9238 IS
9239 --******************* BEGIN REQUIRED VARIABLES *************************
9240   l_api_name CONSTANT VARCHAR2(30) := 'pre_validate_item';--|**|
9241 --******************* END REQUIRED VARIABLES ***************************
9242     file_id NUMBER;
9243     base_language VARCHAR2(30);
9244     -- temporary clob used to hold attribute bundle while it is being validated
9245     temp_bundle CLOB;
9246 BEGIN
9247 
9248     IF IBC_DEBUG_PVT.debug_enabled THEN
9249       IBC_DEBUG_PVT.start_process(
9250          p_proc_type  => 'PROCEDURE',
9251          p_proc_name  => 'Pre_Validate_Item',
9252          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
9253                            p_tag     => 'PARAMETERS',
9254                            p_parms   => JTF_VARCHAR2_TABLE_4000(
9255                                           'p_citem_ver_id', p_citem_ver_id
9256                                         )
9257                            )
9258       );
9259     END IF;
9260 
9261      --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
9262      x_return_status := FND_API.G_RET_STS_SUCCESS;
9263 
9264     -- CREATING TEMP ATTRIBUTE BUNDLE
9265     DBMS_LOB.createtemporary(temp_bundle, TRUE, 2);
9266 
9267     -- getting file_id of actual attribute bundle
9268     SELECT
9269         MIN(civtl.attribute_file_id), ci.base_language
9270     INTO
9271         file_id,
9272         base_language
9273     FROM
9274         ibc_citem_versions_tl civtl,
9275         ibc_citem_versions_b civb,
9276         ibc_content_items    ci
9277     WHERE
9278         civb.content_item_id = ci.content_item_id
9279     AND
9280         civb.citem_version_id = p_citem_ver_id
9281     AND
9282         civtl.citem_version_id = civb.citem_version_id
9283     AND
9284         civtl.LANGUAGE = ci.base_language -- Updated by Edward to fix bug# 3405512 re: USERENV('LANG');
9285     GROUP BY ci.base_language;
9286 
9287   -- building full XML  if the bundle is present
9288     IF (file_id IS NOT NULL) THEN
9289         Ibc_Utilities_Pvt.build_attribute_bundle (
9290            p_file_id       => file_id
9291           ,p_xml_clob_loc => temp_bundle
9292         );
9293     END IF;
9294 
9295     -- VALIDATION
9296     validate_attribute_bundle(
9297         p_attribute_bundle  => temp_bundle
9298         ,p_citem_ver_id     => p_citem_ver_id
9299         ,p_language         => base_language
9300         ,x_return_status    => x_return_status
9301     );
9302     IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
9303         RAISE FND_API.G_EXC_ERROR;
9304     END IF;
9305 
9306     -- Standard call to get message count and if count is 1, get message info.
9307     FND_MSG_PUB.Count_And_Get(
9308         p_count           =>      x_msg_count,
9309         p_data            =>      x_msg_data
9310     );
9311 
9312     IF IBC_DEBUG_PVT.debug_enabled THEN
9313       IBC_DEBUG_PVT.end_process(
9314         IBC_DEBUG_PVT.make_parameter_list(
9315           p_tag    => 'OUTPUT',
9316           p_parms  => JTF_VARCHAR2_TABLE_4000(
9317                         'x_return_status', x_return_status,
9318                         'x_msg_count', x_msg_count,
9319                         'x_msg_data', x_msg_data
9320                       )
9321         )
9322       );
9323     END IF;
9324 
9325 EXCEPTION
9326     WHEN FND_API.G_EXC_ERROR THEN
9327       --DBMS_OUTPUT.put_line('Expected Error');
9328       Ibc_Utilities_Pvt.handle_exceptions(
9329          p_api_name           => L_API_NAME
9330          ,p_pkg_name          => G_PKG_NAME
9331          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
9332          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
9333          ,p_sqlcode           => SQLCODE
9334          ,p_sqlerrm           => SQLERRM
9335          ,x_msg_count         => x_msg_count
9336          ,x_msg_data          => x_msg_data
9337          ,x_return_status     => x_return_status
9338        );
9339       IF IBC_DEBUG_PVT.debug_enabled THEN
9340         IBC_DEBUG_PVT.end_process(
9341           IBC_DEBUG_PVT.make_parameter_list(
9342             p_tag    => 'OUTPUT',
9343             p_parms  => JTF_VARCHAR2_TABLE_4000(
9344                           'x_return_status', x_return_status,
9345                           'x_msg_count', x_msg_count,
9346                           'x_msg_data', x_msg_data
9347                         )
9348           )
9349         );
9350       END IF;
9351   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9352       --DBMS_OUTPUT.put_line('Unexpected error');
9353       Ibc_Utilities_Pvt.handle_exceptions(
9354          p_api_name           => L_API_NAME
9355          ,p_pkg_name          => G_PKG_NAME
9356          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
9357          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
9358          ,p_sqlcode           => SQLCODE
9359          ,p_sqlerrm           => SQLERRM
9360          ,x_msg_count         => x_msg_count
9361          ,x_msg_data          => x_msg_data
9362          ,x_return_status     => x_return_status
9363       );
9364       IF IBC_DEBUG_PVT.debug_enabled THEN
9365         IBC_DEBUG_PVT.end_process(
9366           IBC_DEBUG_PVT.make_parameter_list(
9367             p_tag    => 'OUTPUT',
9368             p_parms  => JTF_VARCHAR2_TABLE_4000(
9369                           'x_return_status', x_return_status,
9370                           'x_msg_count', x_msg_count,
9371                           'x_msg_data', x_msg_data
9372                         )
9373           )
9374         );
9375       END IF;
9376   WHEN OTHERS THEN
9377       --DBMS_OUTPUT.put_line('Other error');
9378       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
9379          p_api_name           => L_API_NAME
9380          ,p_pkg_name          => G_PKG_NAME
9381          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
9382          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
9383          ,p_sqlcode           => SQLCODE
9384          ,p_sqlerrm           => SQLERRM
9385          ,x_msg_count         => x_msg_count
9386          ,x_msg_data          => x_msg_data
9387          ,x_return_status     => x_return_status
9388       );
9389       IF IBC_DEBUG_PVT.debug_enabled THEN
9390         IBC_DEBUG_PVT.end_process(
9391           IBC_DEBUG_PVT.make_parameter_list(
9392             p_tag    => 'OUTPUT',
9393             p_parms  => JTF_VARCHAR2_TABLE_4000(
9394                           'x_return_status', x_return_status,
9395                           'x_msg_count', x_msg_count,
9396                           'x_msg_data', x_msg_data,
9397                           'EXCEPTION', SQLERRM
9398                         )
9399           )
9400         );
9401       END IF;
9402  END;
9403 
9404 -- --------------------------------------------------------------
9405 -- SET CONTENT ITEM (ATTRIBUTE BUNDLE)
9406 --
9407 -- Used for the creation of a new content item attributes or updating
9408 -- the existing attributes.  Updating is actually replacement unless
9409 -- it is a new version.
9410 --
9411 -- --------------------------------------------------------------
9412 PROCEDURE set_attribute_bundle(
9413     p_citem_ver_id              IN NUMBER
9414     ,p_attribute_type_codes     IN JTF_VARCHAR2_TABLE_100
9415     ,p_attributes               IN JTF_VARCHAR2_TABLE_32767
9416     ,p_remove_old               IN VARCHAR2
9417     ,p_commit                   IN VARCHAR2
9418     ,p_api_version_number       IN NUMBER
9419     ,p_init_msg_list            IN VARCHAR2
9420     ,px_object_version_number   IN OUT NOCOPY NUMBER
9421     ,x_return_status            OUT NOCOPY VARCHAR2
9422     ,x_msg_count                OUT NOCOPY NUMBER
9423     ,x_msg_data                 OUT NOCOPY VARCHAR2
9424 )
9425 IS
9426 --******************* BEGIN REQUIRED VARIABLES *************************
9427   l_api_name CONSTANT VARCHAR2(30) := 'set_citem_att_bundle';    --|**|
9428   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
9429 --******************* END REQUIRED VARIABLES ***************************
9430     ctype_code IBC_CONTENT_TYPES_B.content_type_code%TYPE; -- content type code
9431     bundle_text CLOB; -- tempory blob
9432     file_id NUMBER; -- pointer to actual FND_LOB location
9433     old_file_id NUMBER;
9434     return_status CHAR(1);
9435     content_item_id NUMBER;
9436     dir_id NUMBER;
9437 BEGIN
9438   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
9439 --******************* BEGIN REQUIRED AREA ******************************
9440       SAVEPOINT svpt_set_attribute_bundle;                        --|**|
9441       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
9442         FND_MSG_PUB.initialize;                                   --|**|
9443       END IF;                                                     --|**|
9444                                                                   --|**|
9445       -- Standard call to check for call compatibility.           --|**|
9446       IF NOT FND_API.Compatible_API_Call (                        --|**|
9447             l_api_version_number                                  --|**|
9448          ,p_api_version_number                                 --|**|
9449          ,l_api_name                                           --|**|
9450          ,G_PKG_NAME                                           --|**|
9451       )THEN                                                       --|**|
9452        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
9453       END IF;                                                     --|**|
9454                                                                   --|**|
9455       -- Initialize API return status to SUCCESS                  --|**|
9456       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
9457 --******************* END REQUIRED AREA ********************************
9458 
9459     IF IBC_DEBUG_PVT.debug_enabled THEN
9460       IBC_DEBUG_PVT.start_process(
9461          p_proc_type  => 'PROCEDURE',
9462          p_proc_name  => 'Set_Attribute_Bundle',
9463          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
9464                            p_tag     => 'PARAMETERS',
9465                            p_parms   => JTF_VARCHAR2_TABLE_32767(
9466                                           'p_citem_ver_id', p_citem_ver_id,
9467                                           'p_attribute_type_codes', IBC_DEBUG_PVT.make_list(p_attribute_type_codes),
9468                                           'p_attributes', IBC_DEBUG_PVT.make_list_VC32767(p_attributes),
9469                                           'p_remove_old', p_remove_old,
9470                                           'p_commit', p_commit,
9471                                           'p_api_version_number', p_api_version_number,
9472                                           'p_init_msg_list', p_init_msg_list,
9473                                           'px_object_version_number', px_object_version_number
9474                                         )
9475                            )
9476       );
9477     END IF;
9478 
9479 --******************* INPUT VALIDATION ************
9480      -- validating item information
9481     IF (IBC_VALIDATE_PVT.isValidCitemVer(p_citem_ver_id) = FND_API.g_false) THEN
9482         --DBMS_OUTPUT.put_line('EX - citem_ver_id');
9483         x_return_status := FND_API.G_RET_STS_ERROR;
9484       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
9485         FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
9486         FND_MSG_PUB.ADD;
9487         RAISE FND_API.G_EXC_ERROR;
9488     END IF;
9489 
9490     IF (IBC_VALIDATE_PVT.isApproved(p_citem_ver_id) = FND_API.g_true) THEN
9491         --DBMS_OUTPUT.put_line('EX - updating approved');
9492         x_return_status := FND_API.G_RET_STS_ERROR;
9493       FND_MESSAGE.Set_Name('IBC', 'UPDATE_APPROVED_ITEM_ERROR');
9494         FND_MSG_PUB.ADD;
9495         RAISE FND_API.G_EXC_ERROR;
9496     END IF;
9497 
9498     content_item_id := getCitemId(p_citem_ver_id);
9499 
9500     dir_id := getDirectoryNodeId(content_item_id);
9501 
9502     -- ***************PERMISSION CHECK*********************************************************************
9503     IF (hasPermission(content_item_id) = FND_API.g_false) THEN                                         --|*|
9504         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
9505         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
9506        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                        --|*|
9507         FND_MSG_PUB.ADD;                                                                               --|*|
9508         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
9509     ELSIF(isItemAdmin(content_item_id) = FND_API.g_false) THEN                                         --|*|
9510        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
9511                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
9512                   ,p_instance_pk1_value    => content_item_id                                          --|*|
9513                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
9514                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
9515                   ,p_container_pk1_value   => dir_id                                                   --|*|
9516                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
9517                   ) = FND_API.g_false                                                                  --|*|
9518             ) THEN                                                                                     --|*|
9519            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
9520            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
9521          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
9522            FND_MSG_PUB.ADD;                                                                            --|*|
9523            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
9524       END IF;                                                                                          --|*|
9525     END IF;                                                                                            --|*|
9526     -- ***************PERMISSION CHECK*********************************************************************
9527 
9528     ctype_code := getContentType(getCitemId(p_citem_ver_id));
9529 
9530 
9531     -- creating temporary lob
9532     DBMS_LOB.createtemporary(bundle_text, TRUE, 2);
9533 
9534     create_attribute_bundle(
9535         px_attribute_bundle      => bundle_text
9536         ,p_attribute_type_codes  => p_attribute_type_codes
9537         ,p_attributes            => p_attributes
9538         ,p_ctype_code            => ctype_code
9539         ,x_return_status         => return_status
9540     );
9541 
9542 --**************** STORING INFO TO DB ***********
9543     -- Inserting temp lob into fnd_lobs
9544     IF (return_status = FND_API.G_RET_STS_SUCCESS) THEN
9545         -- removing old bundle if requested (this is fine because no sharing
9546         -- has occured yet due to fact that the item is not published.
9547         IF (p_remove_old = FND_API.g_true) THEN
9548             return_status := deleteAttributeBundle(p_citem_ver_id);
9549         END IF;
9550 
9551         -- adding data to fnd_lobs
9552       Ibc_Utilities_Pvt.insert_attribute_bundle(
9553          x_lob_file_id           => file_id
9554          ,p_new_bundle           => bundle_text
9555          ,x_return_status        => return_status
9556         );
9557 
9558         -- raise exception if error occured while in utilities procedure
9559       IF (return_status = FND_API.G_RET_STS_ERROR) THEN
9560          --DBMS_OUTPUT.put_line('EX - inserting attribute bundle');
9561          x_return_status := FND_API.G_RET_STS_ERROR;
9562        FND_MESSAGE.Set_Name('IBC', 'A_BUNDLE_INSERT_ERROR');
9563          FND_MSG_PUB.ADD;
9564          RAISE FND_API.G_EXC_ERROR;
9565       ELSE
9566          -- adding attribute bundle file id to citem version if bundle went in correctly
9567          Ibc_Citem_Versions_Pkg.update_row(
9568             p_citem_version_id         => p_citem_ver_id
9569             ,p_content_item_id         => content_item_id
9570             ,p_attribute_file_id       => file_id
9571             ,px_object_version_number  => px_object_version_number
9572          );
9573 
9574                                    --***************************************************
9575                                    --************ADDING TO AUDIT LOG********************
9576                                    --***************************************************
9577                                    Ibc_Utilities_Pvt.log_action(
9578                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
9579                                        ,p_parent_value  => NULL
9580                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
9581                                        ,p_object_value1 => content_item_id
9582                                        ,p_object_value2 => NULL
9583                                        ,p_object_value3 => NULL
9584                                        ,p_object_value4 => NULL
9585                                        ,p_object_value5 => NULL
9586                                        ,p_description   => 'Altering content item version'
9587                                    );
9588                                    Ibc_Utilities_Pvt.log_action(
9589                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
9590                                        ,p_parent_value  => content_item_id
9591                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
9592                                        ,p_object_value1 => p_citem_ver_id
9593                                        ,p_object_value2 => USERENV('LANG')
9594                                        ,p_object_value3 => NULL
9595                                        ,p_object_value4 => NULL
9596                                        ,p_object_value5 => NULL
9597                                        ,p_description   => 'Altering attribute bundle'
9598                                    );
9599                                    Ibc_Utilities_Pvt.log_action(
9600                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_CREATE
9601                                        ,p_parent_value  => p_citem_ver_id
9602                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_ATTRIBUTE_BUNDLE
9603                                        ,p_object_value1 => file_id
9604                                        ,p_object_value2 => NULL
9605                                        ,p_object_value3 => NULL
9606                                        ,p_object_value4 => NULL
9607                                        ,p_object_value5 => NULL
9608                                        ,p_description   => NULL
9609                                    );
9610                                    --***************************************************
9611                                    --***************************************************
9612       END IF;
9613     ELSE
9614         --DBMS_OUTPUT.put_line('EX - creating attribute bundle');
9615         x_return_status := FND_API.G_RET_STS_ERROR;
9616       FND_MESSAGE.Set_Name('IBC', 'A_BUNDLE_CREATION_ERROR');
9617         FND_MSG_PUB.ADD;
9618         RAISE FND_API.G_EXC_ERROR;
9619     END IF;
9620 
9621     -- COMMIT?
9622     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
9623         COMMIT;
9624     END IF;
9625 
9626     -- Standard call to get message count and if count is 1, get message info.
9627     FND_MSG_PUB.Count_And_Get(
9628         p_count           =>      x_msg_count,
9629         p_data            =>      x_msg_data
9630     );
9631 
9632   IF IBC_DEBUG_PVT.debug_enabled THEN
9633     IBC_DEBUG_PVT.end_process(
9634       IBC_DEBUG_PVT.make_parameter_list(
9635         p_tag    => 'OUTPUT',
9636         p_parms  => JTF_VARCHAR2_TABLE_4000(
9637                       'px_object_version_number', px_object_version_number,
9638                       'x_return_status', x_return_status,
9639                       'x_msg_count', x_msg_count,
9640                       'x_msg_data', x_msg_data
9641                     )
9642       )
9643     );
9644   END IF;
9645 
9646 EXCEPTION
9647     WHEN FND_API.G_EXC_ERROR THEN
9648       --DBMS_OUTPUT.put_line('Expected Error');
9649       ROLLBACK TO svpt_set_attribute_bundle;
9650       Ibc_Utilities_Pvt.handle_exceptions(
9651          p_api_name           => L_API_NAME
9652          ,p_pkg_name          => G_PKG_NAME
9653          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
9654          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
9655          ,p_sqlcode           => SQLCODE
9656          ,p_sqlerrm           => SQLERRM
9657          ,x_msg_count         => x_msg_count
9658          ,x_msg_data          => x_msg_data
9659          ,x_return_status     => x_return_status
9660        );
9661       IF IBC_DEBUG_PVT.debug_enabled THEN
9662         IBC_DEBUG_PVT.end_process(
9663           IBC_DEBUG_PVT.make_parameter_list(
9664             p_tag    => 'OUTPUT',
9665             p_parms  => JTF_VARCHAR2_TABLE_4000(
9666                           'x_return_status', x_return_status,
9667                           'x_msg_count', x_msg_count,
9668                           'x_msg_data', x_msg_data
9669                         )
9670           )
9671         );
9672       END IF;
9673   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9674       --DBMS_OUTPUT.put_line('Unexpected error');
9675       ROLLBACK TO svpt_set_attribute_bundle;
9676       Ibc_Utilities_Pvt.handle_exceptions(
9677          p_api_name           => L_API_NAME
9678          ,p_pkg_name          => G_PKG_NAME
9679          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
9680          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
9681          ,p_sqlcode           => SQLCODE
9682          ,p_sqlerrm           => SQLERRM
9683          ,x_msg_count         => x_msg_count
9684          ,x_msg_data          => x_msg_data
9685          ,x_return_status     => x_return_status
9686       );
9687       IF IBC_DEBUG_PVT.debug_enabled THEN
9688         IBC_DEBUG_PVT.end_process(
9689           IBC_DEBUG_PVT.make_parameter_list(
9690             p_tag    => 'OUTPUT',
9691             p_parms  => JTF_VARCHAR2_TABLE_4000(
9692                           'x_return_status', x_return_status,
9693                           'x_msg_count', x_msg_count,
9694                           'x_msg_data', x_msg_data
9695                         )
9696           )
9697         );
9698       END IF;
9699   WHEN OTHERS THEN
9700       --DBMS_OUTPUT.put_line('Other error');
9701       ROLLBACK TO svpt_set_attribute_bundle;
9702       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
9703          p_api_name           => L_API_NAME
9704          ,p_pkg_name          => G_PKG_NAME
9705          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
9706          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
9707          ,p_sqlcode           => SQLCODE
9708          ,p_sqlerrm           => SQLERRM
9709          ,x_msg_count         => x_msg_count
9710          ,x_msg_data          => x_msg_data
9711          ,x_return_status     => x_return_status
9712       );
9713       IF IBC_DEBUG_PVT.debug_enabled THEN
9714         IBC_DEBUG_PVT.end_process(
9715           IBC_DEBUG_PVT.make_parameter_list(
9716             p_tag    => 'OUTPUT',
9717             p_parms  => JTF_VARCHAR2_TABLE_4000(
9718                           'x_return_status', x_return_status,
9719                           'x_msg_count', x_msg_count,
9720                           'x_msg_data', x_msg_data,
9721                           'EXCEPTION', SQLERRM
9722                         )
9723           )
9724         );
9725       END IF;
9726  END;
9727 
9728 -- Overloaded to support old 4K limit on attribute values
9729 PROCEDURE set_attribute_bundle(
9730     p_citem_ver_id              IN NUMBER
9731     ,p_attribute_type_codes     IN JTF_VARCHAR2_TABLE_100
9732     ,p_attributes               IN JTF_VARCHAR2_TABLE_4000
9733     ,p_remove_old               IN VARCHAR2
9734     ,p_commit                   IN VARCHAR2
9735     ,p_api_version_number       IN NUMBER
9736     ,p_init_msg_list            IN VARCHAR2
9737     ,px_object_version_number   IN OUT NOCOPY NUMBER
9738     ,x_return_status            OUT NOCOPY VARCHAR2
9739     ,x_msg_count                OUT NOCOPY NUMBER
9740     ,x_msg_data                 OUT NOCOPY VARCHAR2
9741 )
9742 IS
9743   l_tmp_attributes JTF_VARCHAR2_TABLE_32767;
9744 BEGIN
9745 
9746   IF p_attributes IS NOT NULL AND p_attributes.COUNT > 0 THEN
9747     l_tmp_attributes := JTF_VARCHAR2_TABLE_32767();
9748     l_tmp_attributes.extend(p_attributes.COUNT);
9749     FOR I IN 1..p_attributes.COUNT LOOP
9750       l_tmp_attributes(I) := p_attributes(I);
9751     END LOOP;
9752   ELSE
9753     l_tmp_attributes := NULL;
9754   END IF;
9755 
9756   set_attribute_bundle(
9757     p_citem_ver_id              => p_citem_ver_id
9758     ,p_attribute_type_codes     => p_attribute_type_codes
9759     ,p_attributes               => l_tmp_attributes
9760     ,p_remove_old               => p_remove_old
9761     ,p_commit                   => p_commit
9762     ,p_api_version_number       => p_api_version_number
9763     ,p_init_msg_list            => p_init_msg_list
9764     ,px_object_version_number   => px_object_version_number
9765     ,x_return_status            => x_return_status
9766     ,x_msg_count                => x_msg_count
9767     ,x_msg_data                 => x_msg_data
9768   );
9769 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
9770 EXCEPTION
9771   WHEN OTHERS THEN
9772     RAISE;
9773 
9774 END set_attribute_bundle;
9775 
9776 -- --------------------------------------------------------------
9777 -- SET CONTENT ITEM (ATTACHMENT)
9778 --
9779 -- Used to add/remove an attachment to existing content_item
9780 -- This only works for default rendition.
9781 --
9782 -- --------------------------------------------------------------
9783 PROCEDURE set_attachment(
9784     p_citem_ver_id              IN NUMBER
9785     ,p_attach_file_id           IN NUMBER
9786     ,p_language                 IN VARCHAR2
9787     ,p_commit                   IN VARCHAR2
9788     ,p_api_version_number       IN NUMBER
9789     ,p_init_msg_list            IN VARCHAR2
9790     ,px_object_version_number   IN OUT NOCOPY NUMBER
9791     ,x_return_status            OUT NOCOPY VARCHAR2
9792     ,x_msg_count                OUT NOCOPY NUMBER
9793     ,x_msg_data                 OUT NOCOPY VARCHAR2
9794 )
9795 IS
9796 --******************* BEGIN REQUIRED VARIABLES *************************
9797   l_api_name CONSTANT VARCHAR2(30) := 'set_citem_attachment';    --|**|
9798   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
9799 --******************* END REQUIRED VARIABLES ***************************
9800     att_file_name IBC_CITEM_VERSIONS_TL.attachment_file_name%TYPE;
9801     att_type_code IBC_ATTRIBUTE_TYPES_B.data_type_code%TYPE;
9802     l_attach_rendition_mtype FND_LOBS.file_content_type%TYPE;
9803     l_current_attachment_file_id NUMBER;
9804     content_item_id NUMBER;
9805     dir_id NUMBER;
9806     l_row_id       ROWID;
9807     l_rendition_id NUMBER;
9808 
9809     CURSOR c_lob(p_file_id NUMBER) IS
9810       SELECT file_name, file_content_type
9811         FROM fnd_lobs
9812        WHERE file_id = p_file_id;
9813 
9814 BEGIN
9815   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
9816 --******************* BEGIN REQUIRED AREA ******************************
9817       SAVEPOINT svpt_set_attachment;                              --|**|
9818       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
9819         FND_MSG_PUB.initialize;                                   --|**|
9820       END IF;                                                     --|**|
9821                                                                   --|**|
9822       -- Standard call to check for call compatibility.           --|**|
9823       IF NOT FND_API.Compatible_API_Call (                        --|**|
9824             l_api_version_number                                  --|**|
9825          ,p_api_version_number                                 --|**|
9826          ,l_api_name                                           --|**|
9827          ,G_PKG_NAME                                           --|**|
9828       )THEN                                                       --|**|
9829        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
9830       END IF;                                                     --|**|
9831                                                                   --|**|
9832       -- Initialize API return status to SUCCESS                  --|**|
9833       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
9834 --******************* END REQUIRED AREA ********************************
9835 
9836     IF IBC_DEBUG_PVT.debug_enabled THEN
9837       IBC_DEBUG_PVT.start_process(
9838          p_proc_type  => 'PROCEDURE',
9839          p_proc_name  => 'Set_Attachment',
9840          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
9841                            p_tag     => 'PARAMETERS',
9842                            p_parms   => JTF_VARCHAR2_TABLE_4000(
9843                                           'p_citem_ver_id', p_citem_ver_id,
9844                                           'p_attach_file_id', p_attach_file_id,
9845                                           'p_language', p_language,
9846                                           'p_commit', p_commit,
9847                                           'p_api_version_number', p_api_version_number,
9848                                           'p_init_msg_list', p_init_msg_list,
9849                                           'px_object_version_number', px_object_version_number
9850                                         )
9851                            )
9852       );
9853     END IF;
9854 
9855 -- *** VALIDATION OF VALUES ******
9856      -- version id
9857     IF ( (p_citem_ver_id IS NULL) OR (IBC_VALIDATE_PVT.isValidCitemVer(p_citem_ver_id) = FND_API.g_false) ) THEN
9858         --DBMS_OUTPUT.put_line('EX - citem_ver_id');
9859         x_return_status := FND_API.G_RET_STS_ERROR;
9860        FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
9861         FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
9862         FND_MSG_PUB.ADD;
9863         RAISE FND_API.G_EXC_ERROR;
9864     END IF;
9865 
9866      -- validating language
9867     IF (IBC_VALIDATE_PVT.isValidLanguage(p_language) = FND_API.g_false) THEN
9868         --DBMS_OUTPUT.put_line('EX - LANGUAGE');
9869         x_return_status := FND_API.G_RET_STS_ERROR;
9870         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
9871         FND_MESSAGE.Set_Token('INPUT', 'p_language', FALSE);
9872         FND_MSG_PUB.ADD;
9873         RAISE FND_API.G_EXC_ERROR;
9874     END IF;
9875 
9876     IF ((IBC_VALIDATE_PVT.getItemBaseLanguage(getCitemId(p_citem_ver_id))) = p_language) THEN
9877       IF (IBC_VALIDATE_PVT.isApproved(p_citem_ver_id) = FND_API.g_true) THEN
9878         --DBMS_OUTPUT.put_line('EX - updating approved');
9879         x_return_status := FND_API.G_RET_STS_ERROR;
9880         FND_MESSAGE.Set_Name('IBC', 'UPDATE_APPROVED_ITEM_ERROR');
9881         FND_MSG_PUB.ADD;
9882         RAISE FND_API.G_EXC_ERROR;
9883       END IF;
9884     ELSE
9885       IF (IBC_VALIDATE_PVT.isTranslationApproved(p_citem_ver_id,p_language) = FND_API.g_true) THEN
9886         --DBMS_OUTPUT.put_line('EX - updating approved translation');
9887         x_return_status := FND_API.G_RET_STS_ERROR;
9888         FND_MESSAGE.Set_Name('IBC', 'UPDATE_APPROVED_ITEM_ERROR');
9889         FND_MSG_PUB.ADD;
9890         RAISE FND_API.G_EXC_ERROR;
9891       END IF;
9892     END IF;
9893 
9894 
9895 
9896    content_item_id := getCitemId(p_citem_ver_id);
9897 
9898    SELECT attachment_file_id
9899      INTO l_current_attachment_file_id
9900      FROM ibc_citem_versions_tl
9901     WHERE citem_version_id = p_citem_ver_id;
9902 
9903     -- attachment
9904     -- if attachment given
9905     IF (p_attach_file_id IS NOT NULL) THEN
9906         -- check to see if attachment is valid
9907         IF (IBC_VALIDATE_PVT.isValidAttachment(p_attach_file_id) = FND_API.g_false)  THEN
9908             --DBMS_OUTPUT.put_line('EX - p_attach_file_id');
9909             x_return_status := FND_API.G_RET_STS_ERROR;
9910             FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
9911             FND_MESSAGE.Set_Token('INPUT', 'p_attach_file_id', FALSE);
9912             FND_MSG_PUB.ADD;
9913             RAISE FND_API.G_EXC_ERROR;
9914         -- if valid then get additional attachment info
9915         ELSE
9916             OPEN c_lob(p_attach_file_id);
9917             FETCH c_lob INTO att_file_name, l_attach_rendition_mtype;
9918             CLOSE c_lob;
9919             l_attach_rendition_mtype := GET_MIME_TYPE(l_attach_rendition_mtype);
9920             att_type_code := getAttachAttribCode(content_item_id);
9921 
9922             -- check to see if code is valid since it is required for runtime
9923             IF(att_type_code IS NULL) THEN
9924                 --DBMS_OUTPUT.put_line('EX - attachment attcode does not exist');
9925                 x_return_status := FND_API.G_RET_STS_ERROR;
9926                 FND_MESSAGE.Set_Name('IBC', 'INVALID_ATTACH_ATTR_TYPE');
9927                 FND_MSG_PUB.ADD;
9928                 RAISE FND_API.G_EXC_ERROR;
9929             END IF;
9930 
9931         -- Delete default rendition
9932         DELETE FROM ibc_renditions
9933          WHERE citem_version_id = p_citem_ver_id
9934            AND LANGUAGE = p_language
9935            AND file_id = l_current_attachment_file_id;
9936 
9937         END IF;
9938     ELSE
9939         -- if no valid attachment given then give null values for other attachment attributes
9940         att_file_name := NULL;
9941         att_type_code := NULL;
9942         l_attach_rendition_mtype := NULL;
9943         -- Delete all renditions for particular language
9944         DELETE FROM ibc_renditions
9945          WHERE citem_version_id = p_citem_ver_id
9946            AND LANGUAGE = p_language;
9947     END IF;
9948 
9949     dir_id := getDirectoryNodeId(content_item_id);
9950 
9951     -- ***************PERMISSION CHECK*********************************************************************
9952     IF (hasPermission(content_item_id) = FND_API.g_false) THEN                                         --|*|
9953         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
9954         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
9955        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                          --|*|
9956         FND_MSG_PUB.ADD;                                                                               --|*|
9957         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
9958     ELSIF(isItemAdmin(content_item_id) = FND_API.g_false) THEN                                         --|*|
9959        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
9960                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
9961                   ,p_instance_pk1_value    => content_item_id                                          --|*|
9962                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
9963                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
9964                   ,p_container_pk1_value   => dir_id                                                   --|*|
9965                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
9966                   ) = FND_API.g_false                                                                  --|*|
9967             ) THEN                                                                                     --|*|
9968            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
9969            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
9970          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                       --|*|
9971            FND_MSG_PUB.ADD;                                                                            --|*|
9972            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
9973       END IF;                                                                                          --|*|
9974     END IF;                                                                                            --|*|
9975     -- ***************PERMISSION CHECK*********************************************************************
9976 
9977     -- Adding data
9978         -- ****RENDITIONS_WORK****
9979     Ibc_Citem_Versions_Pkg.update_row (
9980         p_citem_version_id             => p_citem_ver_id
9981         ,p_content_item_id             => content_item_id
9982         ,p_attachment_file_id          => Conv_To_TblHandler(p_attach_file_id) -- Updated for STANDARD/perf change of G_MISS_xxx
9983         ,p_attachment_file_name        => Conv_To_TblHandler(att_file_name) -- Updated for STANDARD/perf change of G_MISS_xxx
9984         ,p_attachment_attribute_code   => Conv_To_TblHandler(att_type_code) -- Updated for STANDARD/perf change of G_MISS_xxx
9985         ,p_default_rendition_mime_type => Conv_To_TblHandler(l_attach_rendition_mtype) -- Updated for STANDARD/perf change of G_MISS_xxx
9986         ,px_object_version_number      => px_object_version_number
9987     );
9988 
9989                                    --***************************************************
9990                                    --************ADDING TO AUDIT LOG********************
9991                                    --***************************************************
9992                                    Ibc_Utilities_Pvt.log_action(
9993                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
9994                                        ,p_parent_value  => NULL
9995                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
9996                                        ,p_object_value1 => content_item_id
9997                                        ,p_object_value2 => NULL
9998                                        ,p_object_value3 => NULL
9999                                        ,p_object_value4 => NULL
10000                                        ,p_object_value5 => NULL
10001                                        ,p_description   => 'Altering content item version'
10002                                    );
10003                                    Ibc_Utilities_Pvt.log_action(
10004                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
10005                                        ,p_parent_value  => content_item_id
10006                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
10007                                        ,p_object_value1 => p_citem_ver_id
10008                                        ,p_object_value2 => USERENV('LANG')
10009                                        ,p_object_value3 => NULL
10010                                        ,p_object_value4 => NULL
10011                                        ,p_object_value5 => NULL
10012                                        ,p_description   => 'Altering attachment:'||p_attach_file_id
10013                                    );
10014                                    --***************************************************
10015                                    --***************************************************
10016 
10017      IF p_attach_file_id IS NOT NULL THEN
10018       l_rendition_id := NULL;
10019       IBC_RENDITIONS_PKG.insert_row(
10020         Px_rowid                   => l_row_id
10021         ,Px_RENDITION_ID          => l_rendition_id
10022         ,p_object_version_number => G_OBJ_VERSION_DEFAULT
10023         ,P_LANGUAGE                 => p_language
10024         ,P_FILE_ID                 => Conv_To_TblHandler(p_attach_file_id) -- Updated for STANDARD/perf change of G_MISS_xxx
10025         ,P_FILE_NAME               => Conv_To_TblHandler(att_file_name) -- Updated for STANDARD/perf change of G_MISS_xxx
10026         ,P_CITEM_VERSION_ID       => p_citem_ver_id
10027         ,P_MIME_TYPE                => Conv_To_TblHandler(l_attach_rendition_mtype) -- Updated for STANDARD/perf change of G_MISS_xxx
10028       );
10029     END IF;
10030 
10031 
10032     -- COMMIT?
10033     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
10034         COMMIT;
10035     END IF;
10036 
10037     -- Standard call to get message count and if count is 1, get message info.
10038     FND_MSG_PUB.Count_And_Get(
10039         p_count           =>      x_msg_count,
10040         p_data            =>      x_msg_data
10041     );
10042 
10043     IF IBC_DEBUG_PVT.debug_enabled THEN
10044       IBC_DEBUG_PVT.end_process(
10045         IBC_DEBUG_PVT.make_parameter_list(
10046           p_tag    => 'OUTPUT',
10047           p_parms  => JTF_VARCHAR2_TABLE_4000(
10048                         'px_object_version_number', px_object_version_number,
10049                         'x_return_status', x_return_status,
10050                         'x_msg_count', x_msg_count,
10051                         'x_msg_data', x_msg_data
10052                       )
10053         )
10054       );
10055     END IF;
10056 
10057 EXCEPTION
10058     WHEN FND_API.G_EXC_ERROR THEN
10059       --DBMS_OUTPUT.put_line('Expected Error');
10060       ROLLBACK TO svpt_set_attachment;
10061       Ibc_Utilities_Pvt.handle_exceptions(
10062          p_api_name           => L_API_NAME
10063          ,p_pkg_name          => G_PKG_NAME
10064          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
10065          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
10066          ,p_sqlcode           => SQLCODE
10067          ,p_sqlerrm           => SQLERRM
10068          ,x_msg_count         => x_msg_count
10069          ,x_msg_data          => x_msg_data
10070          ,x_return_status     => x_return_status
10071       );
10072       IF IBC_DEBUG_PVT.debug_enabled THEN
10073         IBC_DEBUG_PVT.end_process(
10074           IBC_DEBUG_PVT.make_parameter_list(
10075             p_tag    => 'OUTPUT',
10076             p_parms  => JTF_VARCHAR2_TABLE_4000(
10077                           'x_return_status', x_return_status,
10078                           'x_msg_count', x_msg_count,
10079                           'x_msg_data', x_msg_data
10080                         )
10081           )
10082         );
10083       END IF;
10084   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10085       --DBMS_OUTPUT.put_line('Unexpected error');
10086       ROLLBACK TO svpt_set_attachment;
10087       Ibc_Utilities_Pvt.handle_exceptions(
10088          p_api_name           => L_API_NAME
10089          ,p_pkg_name          => G_PKG_NAME
10090          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
10091          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
10092          ,p_sqlcode           => SQLCODE
10093          ,p_sqlerrm           => SQLERRM
10094          ,x_msg_count         => x_msg_count
10095          ,x_msg_data          => x_msg_data
10096          ,x_return_status     => x_return_status
10097       );
10098       IF IBC_DEBUG_PVT.debug_enabled THEN
10099         IBC_DEBUG_PVT.end_process(
10100           IBC_DEBUG_PVT.make_parameter_list(
10101             p_tag    => 'OUTPUT',
10102             p_parms  => JTF_VARCHAR2_TABLE_4000(
10103                           'x_return_status', x_return_status,
10104                           'x_msg_count', x_msg_count,
10105                           'x_msg_data', x_msg_data
10106                         )
10107           )
10108         );
10109       END IF;
10110   WHEN OTHERS THEN
10111       --DBMS_OUTPUT.put_line('Other error');
10112       ROLLBACK TO svpt_set_attachment;
10113       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
10114          p_api_name           => L_API_NAME
10115          ,p_pkg_name          => G_PKG_NAME
10116          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
10117          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
10118          ,p_sqlcode           => SQLCODE
10119          ,p_sqlerrm           => SQLERRM
10120          ,x_msg_count         => x_msg_count
10121          ,x_msg_data          => x_msg_data
10122          ,x_return_status     => x_return_status
10123       );
10124       IF IBC_DEBUG_PVT.debug_enabled THEN
10125         IBC_DEBUG_PVT.end_process(
10126           IBC_DEBUG_PVT.make_parameter_list(
10127             p_tag    => 'OUTPUT',
10128             p_parms  => JTF_VARCHAR2_TABLE_4000(
10129                           'x_return_status', x_return_status,
10130                           'x_msg_count', x_msg_count,
10131                           'x_msg_data', x_msg_data,
10132                           'EXCEPTION', SQLERRM
10133                         )
10134           )
10135         );
10136       END IF;
10137  END;
10138 
10139 -- --------------------------------------------------------------
10140 -- SET CONTENT ITEM (META)
10141 --
10142 --
10143 -- --------------------------------------------------------------
10144 PROCEDURE set_citem_meta(
10145     p_content_item_id           IN NUMBER
10146     ,p_dir_node_id              IN NUMBER
10147     ,p_trans_required           IN VARCHAR2
10148     ,p_owner_resource_id        IN NUMBER
10149     ,p_owner_resource_type      IN VARCHAR2
10150     ,p_parent_item_id           IN NUMBER
10151     ,p_wd_restricted            IN VARCHAR2
10152     ,p_commit                   IN VARCHAR2
10153     ,p_init_msg_list            IN VARCHAR2
10154     ,p_api_version_number       IN NUMBER
10155     ,px_object_version_number   IN OUT NOCOPY NUMBER
10156     ,x_return_status            OUT NOCOPY VARCHAR2
10157     ,x_msg_count                OUT NOCOPY NUMBER
10158     ,x_msg_data                 OUT NOCOPY VARCHAR2
10159 )
10160 IS
10161 --******************* BEGIN REQUIRED VARIABLES *************************
10162   l_api_name CONSTANT VARCHAR2(30) := 'set_citem_meta';          --|**|
10163   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
10164 --******************* END REQUIRED VARIABLES ***************************
10165     directory_node              NUMBER;
10166     p_new_owner_resource_type   VARCHAR2(11);
10167     p_new_owner_resource_id     NUMBER;
10168 
10169 BEGIN
10170    --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
10171 --******************* BEGIN REQUIRED AREA ******************************
10172       SAVEPOINT svpt_set_citem_meta;                              --|**|
10173       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
10174         FND_MSG_PUB.initialize;                                   --|**|
10175       END IF;                                                     --|**|
10176                                                                   --|**|
10177       -- Standard call to check for call compatibility.           --|**|
10178       IF NOT FND_API.Compatible_API_Call (                        --|**|
10179             l_api_version_number                                  --|**|
10180          ,p_api_version_number                                 --|**|
10181          ,l_api_name                                           --|**|
10182          ,G_PKG_NAME                                           --|**|
10183       )THEN                                                       --|**|
10184        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
10185       END IF;                                                     --|**|
10186                                                                   --|**|
10187       -- Initialize API return status to SUCCESS                  --|**|
10188       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
10189 --******************* END REQUIRED AREA ********************************
10190 
10191     IF IBC_DEBUG_PVT.debug_enabled THEN
10192       IBC_DEBUG_PVT.start_process(
10193          p_proc_type  => 'PROCEDURE',
10194          p_proc_name  => 'Set_Citem_Meta',
10195          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
10196                            p_tag     => 'PARAMETERS',
10197                            p_parms   => JTF_VARCHAR2_TABLE_4000(
10198                                           'p_content_item_id', p_content_item_id,
10199                                           'p_dir_node_id', p_dir_node_id,
10200                                           'p_trans_required', p_trans_required,
10201                                           'p_owner_resource_id', p_owner_resource_id,
10202                                           'p_owner_resource_type', p_owner_resource_type,
10203                                           'p_parent_item_id', p_parent_item_id,
10204                                           'p_wd_restricted', p_wd_restricted,
10205                                           'p_commit', p_commit,
10206                                           'p_init_msg_list', p_init_msg_list,
10207                                           'p_api_version_number', p_api_version_number,
10208                                           'px_object_version_number', px_object_version_number
10209                                         )
10210                            )
10211       );
10212     END IF;
10213 
10214 -- *** VALIDATION OF VALUES ******
10215      -- item id
10216     IF (IBC_VALIDATE_PVT.isValidCitem(p_content_item_id) = FND_API.g_false) THEN
10217         --DBMS_OUTPUT.put_line('EX - citem_id');
10218         x_return_status := FND_API.G_RET_STS_ERROR;
10219       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
10220         FND_MESSAGE.Set_Token('INPUT', 'p_content_item_id', FALSE);
10221         FND_MSG_PUB.ADD;
10222         RAISE FND_API.G_EXC_ERROR;
10223     END IF;
10224 
10225     IF (IBC_VALIDATE_PVT.isApprovedItem(p_content_item_id) = FND_API.g_true) THEN
10226         --DBMS_OUTPUT.put_line('EX - updating approved');
10227         x_return_status := FND_API.G_RET_STS_ERROR;
10228         FND_MESSAGE.Set_Name('IBC', 'UPDATE_APPROVED_ITEM_ERROR');
10229         FND_MSG_PUB.ADD;
10230         RAISE FND_API.G_EXC_ERROR;
10231     END IF;
10232 
10233     IF (p_dir_node_id IS NOT NULL) THEN
10234         IF ( (p_dir_node_id <> FND_API.g_miss_num) AND (IBC_VALIDATE_PVT.isValidDirNode(p_dir_node_id) = FND_API.g_false) ) THEN
10235             --DBMS_OUTPUT.put_line('EX - dir_node_id');
10236             x_return_status := FND_API.G_RET_STS_ERROR;
10237             FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
10238             FND_MESSAGE.Set_Token('INPUT', 'p_dir_node_id', FALSE);
10239             FND_MSG_PUB.ADD;
10240             RAISE FND_API.G_EXC_ERROR;
10241         ELSE
10242             directory_node := p_dir_node_id;
10243         END IF;
10244     ELSE
10245         directory_node := Ibc_Utilities_Pub.G_COMMON_DIR_NODE;
10246     END IF;
10247 
10248     -- trans required
10249     IF ( (p_trans_required <> FND_API.g_false) AND (p_trans_required <> FND_API.g_true) AND (p_trans_required <> FND_API.g_miss_char) ) THEN
10250         --DBMS_OUTPUT.put_line('EX - trans_required');
10251         x_return_status := FND_API.G_RET_STS_ERROR;
10252       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
10253         FND_MESSAGE.Set_Token('INPUT', 'p_trans_required', FALSE);
10254         FND_MSG_PUB.ADD;
10255         RAISE FND_API.G_EXC_ERROR;
10256     END IF;
10257     -- parent item id
10258     IF ( (p_parent_item_id <> FND_API.g_miss_num) AND (IBC_VALIDATE_PVT.isValidCitem(p_parent_item_id) = FND_API.g_false)) THEN
10259         --DBMS_OUTPUT.put_line('EX - parent item id');
10260         x_return_status := FND_API.G_RET_STS_ERROR;
10261         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
10262         FND_MESSAGE.Set_Token('INPUT', 'p_parent_item_id', FALSE);
10263         FND_MSG_PUB.ADD;
10264         RAISE FND_API.G_EXC_ERROR;
10265     END IF;
10266     -- wd restricted
10267     IF ( (p_wd_restricted <> FND_API.g_miss_char) AND (IBC_VALIDATE_PVT.isBoolean(p_wd_restricted) = FND_API.g_false) ) THEN
10268         --DBMS_OUTPUT.put_line('EX - wd_restricted');
10269         x_return_status := FND_API.G_RET_STS_ERROR;
10270         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
10271         FND_MESSAGE.Set_Token('INPUT', 'p_wd_restricted', FALSE);
10272         FND_MSG_PUB.ADD;
10273         RAISE FND_API.G_EXC_ERROR;
10274     END IF;
10275     -- resource id
10276 
10277     IF ( (p_owner_resource_id IS NOT NULL) AND
10278          (p_owner_resource_id <> FND_API.G_MISS_NUM) )
10279     THEN
10280         p_new_owner_resource_id := p_owner_resource_id;
10281 
10282        IF (p_owner_resource_type IS NULL OR
10283            p_owner_resource_type = FND_API.G_MISS_CHAR) THEN
10284            p_new_owner_resource_type := 'USER';
10285        ELSE
10286            p_new_owner_resource_type := p_owner_resource_type;
10287        END IF;
10288     ELSE  -- user does not pass resource_id default to login user id
10289          p_new_owner_resource_id   := FND_GLOBAL.user_id;
10290          p_new_owner_resource_type := 'USER';
10291     END IF;
10292 
10293 
10294     IF (IBC_VALIDATE_PVT.isValidResource(p_new_owner_resource_id,p_new_owner_resource_type) = FND_API.g_false) THEN
10295           x_return_status := FND_API.G_RET_STS_ERROR;
10296           FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
10297           FND_MESSAGE.Set_Token('INPUT', 'p_owner_resource_id/p_owner_resource_type<' || p_new_owner_resource_id||':'||p_new_owner_resource_type||'>', FALSE);
10298           FND_MSG_PUB.ADD;
10299           RAISE FND_API.G_EXC_ERROR;
10300     END IF;
10301 
10302 
10303     -- ***************PERMISSION CHECK*********************************************************************
10304     IF (hasPermission(p_content_item_id) = FND_API.g_false) THEN                                      --|*|
10305         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                           --|*|
10306         x_return_status := FND_API.G_RET_STS_ERROR;                                                   --|*|
10307        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                       --|*|
10308         FND_MSG_PUB.ADD;                                                                              --|*|
10309         RAISE FND_API.G_EXC_ERROR;                                                                    --|*|
10310     ELSIF(isItemAdmin(p_content_item_id) = FND_API.g_false) THEN                                      --|*|
10311       IF (IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
10312                p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')    --|*|
10313                ,p_instance_pk1_value    => p_content_item_id                                          --|*|
10314                ,p_permission_code       => 'CITEM_EDIT'                                               --|*|
10315                ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')  --|*|
10316                ,p_container_pk1_value   => directory_node                                             --|*|
10317                ,p_current_user_id       => FND_GLOBAL.user_id                                         --|*|
10318                ) = FND_API.g_false                                                                    --|*|
10319           ) THEN                                                                                      --|*|
10320            --DBMS_OUTPUT.put_line('EX - no permissions');                                             --|*|
10321            x_return_status := FND_API.G_RET_STS_ERROR;                                                --|*|
10322          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                    --|*|
10323            FND_MSG_PUB.ADD;                                                                           --|*|
10324            RAISE FND_API.G_EXC_ERROR;                                                                 --|*|
10325       END IF;                                                                                         --|*|
10326     END IF;                                                                                           --|*|
10327     -- ***************PERMISSION CHECK*********************************************************************
10328 
10329 -- *** UPDATING DATA IN DB *********
10330 -- Updating Content Item
10331     Ibc_Content_Items_Pkg.update_row (
10332         p_content_item_id            => p_content_item_id
10333         ,p_directory_node_id         => Conv_To_TblHandler(directory_node) -- Update for STANDARD/perf change of G_MISS_xxx
10334         ,p_wd_restricted_flag        => Conv_To_TblHandler(p_wd_restricted) -- Updated for STANDARD/perf change of G_MISS_xxx
10335         ,p_translation_required_flag => Conv_To_TblHandler(p_trans_required) -- Updated for STANDARD/perf change of G_MISS_xxx
10336         ,p_owner_resource_id         => Conv_To_TblHandler(p_new_owner_resource_id) -- Updated for STANDARD/perf change of G_MISS_xxx
10337         ,p_owner_resource_type       => Conv_To_TblHandler(p_new_owner_resource_type) -- Updated for STANDARD/perf change of G_MISS_xxx
10338         ,p_parent_item_id            => Conv_To_TblHandler(p_parent_item_id) -- Updated for STANDARD/perf change of G_MISS_xxx
10339         ,px_object_version_number    => px_object_version_number
10340     );
10341                                    --***************************************************
10342                                    --************ADDING TO AUDIT LOG********************
10343                                    --***************************************************
10344                                    Ibc_Utilities_Pvt.log_action(
10345                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
10346                                        ,p_parent_value  => NULL
10347                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
10348                                        ,p_object_value1 => p_content_item_id
10349                                        ,p_object_value2 => NULL
10350                                        ,p_object_value3 => NULL
10351                                        ,p_object_value4 => NULL
10352                                        ,p_object_value5 => NULL
10353                                        ,p_description   => 'Altering content item meta data'
10354                                    );
10355                                    --***************************************************
10356                                    --***************************************************
10357 
10358     -- COMMIT?
10359     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
10360         COMMIT;
10361     END IF;
10362 
10363     -- Standard call to get message count and if count is 1, get message info.
10364     FND_MSG_PUB.Count_And_Get(
10365         p_count           =>      x_msg_count,
10366         p_data            =>      x_msg_data
10367     );
10368 
10369     IF IBC_DEBUG_PVT.debug_enabled THEN
10370       IBC_DEBUG_PVT.end_process(
10371         IBC_DEBUG_PVT.make_parameter_list(
10372           p_tag    => 'OUTPUT',
10373           p_parms  => JTF_VARCHAR2_TABLE_4000(
10374                         'px_object_version_number', px_object_version_number,
10375                         'x_return_status', x_return_status,
10376                         'x_msg_count', x_msg_count,
10377                         'x_msg_data', x_msg_data
10378                       )
10379         )
10380       );
10381     END IF;
10382 
10383 EXCEPTION
10384     WHEN FND_API.G_EXC_ERROR THEN
10385       --DBMS_OUTPUT.put_line('Expected Error');
10386       ROLLBACK TO svpt_set_citem_meta;
10387       Ibc_Utilities_Pvt.handle_exceptions(
10388          p_api_name           => L_API_NAME
10389          ,p_pkg_name          => G_PKG_NAME
10390          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
10391          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
10392          ,p_sqlcode           => SQLCODE
10393          ,p_sqlerrm           => SQLERRM
10394          ,x_msg_count         => x_msg_count
10395          ,x_msg_data          => x_msg_data
10396          ,x_return_status     => x_return_status
10397        );
10398       IF IBC_DEBUG_PVT.debug_enabled THEN
10399         IBC_DEBUG_PVT.end_process(
10400           IBC_DEBUG_PVT.make_parameter_list(
10401             p_tag    => 'OUTPUT',
10402             p_parms  => JTF_VARCHAR2_TABLE_4000(
10403                           'x_return_status', x_return_status,
10404                           'x_msg_count', x_msg_count,
10405                           'x_msg_data', x_msg_data
10406                         )
10407           )
10408         );
10409       END IF;
10410   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10411       --DBMS_OUTPUT.put_line('Unexpected error');
10412       ROLLBACK TO svpt_set_citem_meta;
10413       Ibc_Utilities_Pvt.handle_exceptions(
10414          p_api_name           => L_API_NAME
10415          ,p_pkg_name          => G_PKG_NAME
10416          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
10417          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
10418          ,p_sqlcode           => SQLCODE
10419          ,p_sqlerrm           => SQLERRM
10420          ,x_msg_count         => x_msg_count
10421          ,x_msg_data          => x_msg_data
10422          ,x_return_status     => x_return_status
10423       );
10424       IF IBC_DEBUG_PVT.debug_enabled THEN
10425         IBC_DEBUG_PVT.end_process(
10426           IBC_DEBUG_PVT.make_parameter_list(
10427             p_tag    => 'OUTPUT',
10428             p_parms  => JTF_VARCHAR2_TABLE_4000(
10429                           'x_return_status', x_return_status,
10430                           'x_msg_count', x_msg_count,
10431                           'x_msg_data', x_msg_data
10432                         )
10433           )
10434         );
10435       END IF;
10436   WHEN OTHERS THEN
10437       --DBMS_OUTPUT.put_line('Other error');
10438       ROLLBACK TO svpt_set_citem_meta;
10439       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
10440          p_api_name           => L_API_NAME
10441          ,p_pkg_name          => G_PKG_NAME
10442          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
10443          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
10444          ,p_sqlcode           => SQLCODE
10445          ,p_sqlerrm           => SQLERRM
10446          ,x_msg_count         => x_msg_count
10447          ,x_msg_data          => x_msg_data
10448          ,x_return_status     => x_return_status
10449       );
10450       IF IBC_DEBUG_PVT.debug_enabled THEN
10451         IBC_DEBUG_PVT.end_process(
10452           IBC_DEBUG_PVT.make_parameter_list(
10453             p_tag    => 'OUTPUT',
10454             p_parms  => JTF_VARCHAR2_TABLE_4000(
10455                           'x_return_status', x_return_status,
10456                           'x_msg_count', x_msg_count,
10457                           'x_msg_data', x_msg_data,
10458                           'EXCEPTION', SQLERRM
10459                         )
10460           )
10461         );
10462       END IF;
10463  END;
10464 
10465 -- --------------------------------------------------------------
10466 -- SET LIVE VERSION
10467 --
10468 -- Set Live Version
10469 --
10470 -- --------------------------------------------------------------
10471 PROCEDURE Set_Live_Version(
10472     p_content_item_id           IN NUMBER
10473     ,p_citem_ver_id             IN NUMBER
10474     ,p_commit                   IN VARCHAR2
10475     ,p_api_version_number       IN NUMBER
10476     ,p_init_msg_list            IN VARCHAR2
10477     ,px_object_version_number   IN OUT NOCOPY NUMBER
10478     ,x_return_status            OUT NOCOPY VARCHAR2
10479     ,x_msg_count                OUT NOCOPY NUMBER
10480     ,x_msg_data                 OUT NOCOPY VARCHAR2
10481 )
10482 IS
10483 
10484   --******************* BEGIN REQUIRED VARIABLES *************************
10485   l_api_name CONSTANT VARCHAR2(30) := 'Set_Live_Version';  --|**|
10486   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
10487   --******************* END REQUIRED VARIABLES ***************************
10488 
10489   l_dummy                    VARCHAR2(2);
10490   l_dir_id                   NUMBER;
10491 
10492   CURSOR c_chk_citem (p_content_item_id NUMBER,
10493                       p_citem_ver_id    NUMBER)
10494   IS
10495   SELECT 'X'
10496     FROM IBC_CONTENT_ITEMS CITEM,
10497          IBC_CITEM_VERSIONS_B CIVER
10498    WHERE CITEM.content_item_id = CIVER.content_item_id
10499      AND CITEM.content_item_id = p_content_item_id
10500      AND CIVER.citem_version_id = p_citem_ver_id;
10501 
10502 
10503 BEGIN
10504   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
10505 --******************* BEGIN REQUIRED AREA ******************************
10506       SAVEPOINT svpt_set_live_version;                            --|**|
10507       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
10508         FND_MSG_PUB.initialize;                                   --|**|
10509       END IF;                                                     --|**|
10510                                                                   --|**|
10511       -- Standard call to check for call compatibility.           --|**|
10512       IF NOT FND_API.Compatible_API_Call (                        --|**|
10513             l_api_version_number                                  --|**|
10514          ,p_api_version_number                                 --|**|
10515          ,l_api_name                                           --|**|
10516          ,G_PKG_NAME                                           --|**|
10517       )THEN                                                       --|**|
10518        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
10519       END IF;                                                     --|**|
10520                                                                   --|**|
10521       -- Initialize API return status to SUCCESS                  --|**|
10522       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
10523 --******************* END REQUIRED AREA ********************************
10524 
10525     IF IBC_DEBUG_PVT.debug_enabled THEN
10526       IBC_DEBUG_PVT.start_process(
10527          p_proc_type  => 'PROCEDURE',
10528          p_proc_name  => 'Set_Live_Version',
10529          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
10530                            p_tag     => 'PARAMETERS',
10531                            p_parms   => JTF_VARCHAR2_TABLE_4000(
10532                                           'p_content_item_id', p_content_item_id,
10533                                           'p_citem_ver_id', p_citem_ver_id,
10534                                           'p_commit', p_commit,
10535                                           'p_api_version_number', p_api_version_number,
10536                                           'p_init_msg_list', p_init_msg_list
10537                                         )
10538                            )
10539       );
10540     END IF;
10541 
10542 -- *** VALIDATION OF VALUES ******
10543 
10544      -- content item id
10545     IF (IBC_VALIDATE_PVT.isValidCitem(p_content_item_id) = FND_API.g_false) THEN
10546       x_return_status := FND_API.G_RET_STS_ERROR;
10547       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
10548       FND_MESSAGE.Set_Token('INPUT', 'p_content_item_id', FALSE);
10549       FND_MSG_PUB.ADD;
10550       RAISE FND_API.G_EXC_ERROR;
10551     END IF;
10552 
10553     IF (IBC_VALIDATE_PVT.isApprovedItem(p_content_item_id) = FND_API.g_false) THEN
10554       x_return_status := FND_API.G_RET_STS_ERROR;
10555       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
10556       FND_MESSAGE.Set_Token('INPUT', 'p_content_item_id', FALSE);
10557       FND_MSG_PUB.ADD;
10558       RAISE FND_API.G_EXC_ERROR;
10559     END IF;
10560 
10561     IF (IBC_VALIDATE_PVT.isapproved(p_citem_ver_id) = FND_API.g_false) THEN
10562       x_return_status := FND_API.G_RET_STS_ERROR;
10563       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
10564       FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
10565       FND_MSG_PUB.ADD;
10566       RAISE FND_API.G_EXC_ERROR;
10567     END IF;
10568 
10569     OPEN c_chk_citem(p_content_item_id, p_citem_ver_id);
10570     FETCH c_chk_citem INTO l_dummy;
10571     IF c_chk_citem%NOTFOUND THEN
10572       CLOSE c_chk_citem;
10573       x_return_status := FND_API.G_RET_STS_ERROR;
10574       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
10575       FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
10576       FND_MSG_PUB.ADD;
10577       RAISE FND_API.G_EXC_ERROR;
10578     ELSE
10579       CLOSE c_chk_citem;
10580     END IF;
10581 
10582     l_dir_id := getDirectoryNodeId(p_content_item_id);
10583 
10584     -- ***************PERMISSION CHECK*********************************************************************
10585     IF (hasPermission(p_content_item_id) = FND_API.g_false) THEN                                         --|*|
10586         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
10587         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
10588        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                        --|*|
10589         FND_MSG_PUB.ADD;                                                                               --|*|
10590         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
10591     ELSIF(isItemAdmin(p_content_item_id) = FND_API.g_false) THEN                                         --|*|
10592        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
10593                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
10594                   ,p_instance_pk1_value    => p_content_item_id                                          --|*|
10595                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
10596                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
10597                   ,p_container_pk1_value   => l_dir_id                                                   --|*|
10598                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
10599                   ) = FND_API.g_false                                                                  --|*|
10600             ) THEN                                                                                     --|*|
10601            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
10602            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
10603            FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
10604            FND_MSG_PUB.ADD;                                                                            --|*|
10605            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
10606       END IF;                                                                                          --|*|
10607     END IF;                                                                                            --|*|
10608     -- ***************PERMISSION CHECK*********************************************************************
10609 
10610     Ibc_Content_Items_Pkg.update_row (
10611       p_CONTENT_ITEM_ID     => p_content_item_id
10612       ,p_LIVE_CITEM_VERSION_ID  => p_citem_ver_id
10613       ,px_object_version_number => px_object_version_number
10614     );
10615 
10616     IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
10617         -- raise errors from inner procedure
10618         RAISE FND_API.G_EXC_ERROR;
10619     END IF;
10620 
10621     -- COMMIT?
10622     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
10623         COMMIT;
10624     END IF;
10625 
10626     -- Standard call to get message count and if count is 1, get message info.
10627     FND_MSG_PUB.Count_And_Get(
10628         p_count           =>      x_msg_count,
10629         p_data            =>      x_msg_data
10630     );
10631 
10632     IF IBC_DEBUG_PVT.debug_enabled THEN
10633       IBC_DEBUG_PVT.end_process(
10634         IBC_DEBUG_PVT.make_parameter_list(
10635           p_tag    => 'OUTPUT',
10636           p_parms  => JTF_VARCHAR2_TABLE_4000(
10637                         'x_return_status', x_return_status,
10638                         'x_msg_count', x_msg_count,
10639                         'x_msg_data', x_msg_data
10640                       )
10641         )
10642       );
10643     END IF;
10644 
10645 EXCEPTION
10646     WHEN FND_API.G_EXC_ERROR THEN
10647       ROLLBACK TO svpt_set_live_version;
10648       --DBMS_OUTPUT.put_line('Expected Error');
10649        Ibc_Utilities_Pvt.handle_exceptions(
10650          p_api_name           => L_API_NAME
10651          ,p_pkg_name          => G_PKG_NAME
10652          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
10653          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
10654          ,p_sqlcode           => SQLCODE
10655          ,p_sqlerrm           => SQLERRM
10656          ,x_msg_count         => x_msg_count
10657          ,x_msg_data          => x_msg_data
10658          ,x_return_status     => x_return_status
10659        );
10660     IF IBC_DEBUG_PVT.debug_enabled THEN
10661       IBC_DEBUG_PVT.end_process(
10662         IBC_DEBUG_PVT.make_parameter_list(
10663           p_tag    => 'OUTPUT',
10664           p_parms  => JTF_VARCHAR2_TABLE_4000(
10665                         'x_return_status', x_return_status,
10666                         'x_msg_count', x_msg_count,
10667                         'x_msg_data', x_msg_data
10668                       )
10669         )
10670       );
10671     END IF;
10672   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10673       ROLLBACK TO svpt_set_live_version;
10674       --DBMS_OUTPUT.put_line('Unexpected error');
10675       Ibc_Utilities_Pvt.handle_exceptions(
10676          p_api_name           => L_API_NAME
10677          ,p_pkg_name          => G_PKG_NAME
10678          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
10679          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
10680          ,p_sqlcode           => SQLCODE
10681          ,p_sqlerrm           => SQLERRM
10682          ,x_msg_count         => x_msg_count
10683          ,x_msg_data          => x_msg_data
10684          ,x_return_status     => x_return_status
10685       );
10686     IF IBC_DEBUG_PVT.debug_enabled THEN
10687       IBC_DEBUG_PVT.end_process(
10688         IBC_DEBUG_PVT.make_parameter_list(
10689           p_tag    => 'OUTPUT',
10690           p_parms  => JTF_VARCHAR2_TABLE_4000(
10691                         'x_return_status', x_return_status,
10692                         'x_msg_count', x_msg_count,
10693                         'x_msg_data', x_msg_data
10694                       )
10695         )
10696       );
10697     END IF;
10698   WHEN OTHERS THEN
10699       ROLLBACK TO svpt_set_live_version;
10700       --DBMS_OUTPUT.put_line('Other error');
10701       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
10702          p_api_name           => L_API_NAME
10703          ,p_pkg_name          => G_PKG_NAME
10704          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
10705          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
10706          ,p_sqlcode           => SQLCODE
10707          ,p_sqlerrm           => SQLERRM
10708          ,x_msg_count         => x_msg_count
10709          ,x_msg_data          => x_msg_data
10710          ,x_return_status     => x_return_status
10711       );
10712     IF IBC_DEBUG_PVT.debug_enabled THEN
10713       IBC_DEBUG_PVT.end_process(
10714         IBC_DEBUG_PVT.make_parameter_list(
10715           p_tag    => 'OUTPUT',
10716           p_parms  => JTF_VARCHAR2_TABLE_4000(
10717                         'x_return_status', x_return_status,
10718                         'x_msg_count', x_msg_count,
10719                         'x_msg_data', x_msg_data,
10720                         'EXCEPTION', SQLERRM
10721                       )
10722         )
10723       );
10724     END IF;
10725   END;
10726 
10727 -- --------------------------------------------------------------
10728 -- SET CONTENT ITEM VERSION (META)
10729 --
10730 --
10731 -- --------------------------------------------------------------
10732 PROCEDURE set_version_meta(
10733     p_citem_ver_id              IN NUMBER
10734     ,p_citem_name               IN VARCHAR2
10735     ,p_citem_description        IN VARCHAR2
10736     ,p_start_date               IN DATE
10737     ,p_end_date                 IN DATE
10738     ,p_commit                   IN VARCHAR2
10739     ,p_init_msg_list            IN VARCHAR2
10740     ,p_api_version_number       IN NUMBER
10741     ,px_object_version_number   IN OUT NOCOPY NUMBER
10742     ,x_return_status            OUT NOCOPY VARCHAR2
10743     ,x_msg_count                OUT NOCOPY NUMBER
10744     ,x_msg_data                 OUT NOCOPY VARCHAR2
10745 )
10746 IS
10747 --******************* BEGIN REQUIRED VARIABLES *************************
10748   l_api_name CONSTANT VARCHAR2(30) := 'set_citem_version_meta';  --|**|
10749   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
10750 --******************* END REQUIRED VARIABLES ***************************
10751     content_item_id    NUMBER;
10752     directory_node NUMBER;
10753 BEGIN
10754   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
10755 --******************* BEGIN REQUIRED AREA ******************************
10756       SAVEPOINT svpt_set_version_meta;                            --|**|
10757       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
10758         FND_MSG_PUB.initialize;                                   --|**|
10759       END IF;                                                     --|**|
10760                                                                   --|**|
10761       -- Standard call to check for call compatibility.           --|**|
10762       IF NOT FND_API.Compatible_API_Call (                        --|**|
10763             l_api_version_number                                  --|**|
10764          ,p_api_version_number                                 --|**|
10765          ,l_api_name                                           --|**|
10766          ,G_PKG_NAME                                           --|**|
10767       )THEN                                                       --|**|
10768        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
10769       END IF;                                                     --|**|
10770                                                                   --|**|
10771       -- Initialize API return status to SUCCESS                  --|**|
10772       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
10773 --******************* END REQUIRED AREA ********************************
10774 
10775     IF IBC_DEBUG_PVT.debug_enabled THEN
10776       IBC_DEBUG_PVT.start_process(
10777          p_proc_type  => 'PROCEDURE',
10778          p_proc_name  => 'Set_Version_Metal',
10779          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
10780                            p_tag     => 'PARAMETERS',
10781                            p_parms   => JTF_VARCHAR2_TABLE_4000(
10782                                           'p_citem_ver_id', p_citem_ver_id,
10783                                           'p_citem_name', p_citem_name,
10784                                           'p_citem_description', p_citem_description,
10785                                           'p_start_date', TO_CHAR(p_start_date, 'YYYYMMDD HH24:MI:SS'),
10786                                           'p_end_date', TO_CHAR(p_end_date, 'YYYYMMDD HH24:MI:SS'),
10787                                           'p_commit', p_commit,
10788                                           'p_init_msg_list', p_init_msg_list,
10789                                           'p_api_version_number', p_api_version_number,
10790                                           'px_object_version_number', px_object_version_number
10791                                         )
10792                            )
10793       );
10794     END IF;
10795 
10796 -- *** VALIDATION OF VALUES ******
10797      -- item id
10798     IF (IBC_VALIDATE_PVT.isValidCitemVer(p_citem_ver_id) = FND_API.g_false) THEN
10799         --DBMS_OUTPUT.put_line('EX - citem_ver_id');
10800         x_return_status := FND_API.G_RET_STS_ERROR;
10801       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
10802         FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
10803         FND_MSG_PUB.ADD;
10804         RAISE FND_API.G_EXC_ERROR;
10805     END IF;
10806 
10807     IF (IBC_VALIDATE_PVT.isApproved(p_citem_ver_id) = FND_API.g_true) THEN
10808         --DBMS_OUTPUT.put_line('EX - updating approved');
10809         x_return_status := FND_API.G_RET_STS_ERROR;
10810       FND_MESSAGE.Set_Name('IBC', 'UPDATE_APPROVED_ITEM_ERROR');
10811         FND_MSG_PUB.ADD;
10812         RAISE FND_API.G_EXC_ERROR;
10813     END IF;
10814 
10815     content_item_id := getCitemId(p_citem_ver_id);
10816 
10817     -- validating content item id
10818     IF (content_item_id IS NULL) THEN
10819        --DBMS_OUTPUT.put_line('EX - content_item_id');
10820         x_return_status := FND_API.G_RET_STS_ERROR;
10821         FND_MESSAGE.Set_Name('IBC', 'CONTENT_ITEM_NOT_FOUND');
10822         FND_MSG_PUB.ADD;
10823         RAISE FND_API.G_EXC_ERROR;
10824     END IF;
10825 
10826 
10827     -- checking for valid inputs and throwing exception if invalid
10828     -- content item name
10829     IF ( (p_citem_name IS NULL) OR (LENGTH(p_citem_name) > 240) )THEN
10830         --DBMS_OUTPUT.put_line('EX - citem name');
10831         x_return_status := FND_API.G_RET_STS_ERROR;
10832         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
10833         FND_MESSAGE.Set_Token('INPUT', 'p_citem_name', FALSE);
10834         FND_MSG_PUB.ADD;
10835         RAISE FND_API.G_EXC_ERROR;
10836     END IF;
10837     -- content item description
10838     IF ( (p_citem_description IS NOT NULL) AND (p_citem_description <> FND_API.G_MISS_CHAR) AND (LENGTH(p_citem_description) > 2000) )THEN
10839         --DBMS_OUTPUT.put_line('EX - citem description');
10840         x_return_status := FND_API.G_RET_STS_ERROR;
10841         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
10842         FND_MESSAGE.Set_Token('INPUT', 'p_citem_description', FALSE);
10843         FND_MSG_PUB.ADD;
10844         RAISE FND_API.G_EXC_ERROR;
10845     END IF;
10846 
10847     -- ***************PERMISSION CHECK*********************************************************************
10848     IF (hasPermission(content_item_id) = FND_API.g_false) THEN                                         --|*|
10849         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                           --|*|
10850         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
10851        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                        --|*|
10852         FND_MSG_PUB.ADD;                                                                               --|*|
10853         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
10854     ELSIF(isItemAdmin(content_item_id) = FND_API.g_false) THEN                                         --|*|
10855        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
10856                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
10857                   ,p_instance_pk1_value    => content_item_id                                          --|*|
10858                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
10859                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
10860                   ,p_container_pk1_value   => directory_node                                           --|*|
10861                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
10862                   ) = FND_API.g_false                                                                  --|*|
10863             ) THEN                                                                                     --|*|
10864            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
10865            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
10866          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
10867            FND_MSG_PUB.ADD;                                                                            --|*|
10868            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
10869       END IF;                                                                                          --|*|
10870     END IF;                                                                                            --|*|
10871     -- ***************PERMISSION CHECK*********************************************************************
10872 
10873 -- Updating Content Item Version
10874     Ibc_Citem_Versions_Pkg.update_row (
10875         p_citem_version_id           => p_citem_ver_id
10876         ,p_content_item_id           => content_item_id
10877         ,p_start_date                => Conv_To_TblHandler(p_start_date) -- Updated for STANDARD/perf change of G_MISS_xxx
10878         ,p_end_date                  => Conv_To_TblHandler(p_end_date) -- Updated for STANDARD/perf change of G_MISS_xxx
10879         ,p_content_item_name         => Conv_To_TblHandler(p_citem_name) -- Updated for STANDARD/perf change of G_MISS_xxx
10880         ,p_description               => Conv_To_TblHandler(p_citem_description) -- Updated for STANDARD/perf change of G_MISS_xxx
10881         ,px_object_version_number    => px_object_version_number
10882     );
10883 
10884 
10885                                    --***************************************************
10886                                    --************ADDING TO AUDIT LOG********************
10887                                    --***************************************************
10888                                    Ibc_Utilities_Pvt.log_action(
10889                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
10890                                        ,p_parent_value  => NULL
10891                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
10892                                        ,p_object_value1 => content_item_id
10893                                        ,p_object_value2 => NULL
10894                                        ,p_object_value3 => NULL
10895                                        ,p_object_value4 => NULL
10896                                        ,p_object_value5 => NULL
10897                                        ,p_description   => 'Altering content item version'
10898                                    );
10899 
10900                                    Ibc_Utilities_Pvt.log_action(
10901                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
10902                                        ,p_parent_value  => content_item_id
10903                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
10904                                        ,p_object_value1 => p_citem_ver_id
10905                                        ,p_object_value2 => USERENV('LANG')
10906                                        ,p_object_value3 => NULL
10907                                        ,p_object_value4 => NULL
10908                                        ,p_object_value5 => NULL
10909                                        ,p_description   => 'Altering version meta data'
10910                                    );
10911                                    --***************************************************
10912                                    --***************************************************
10913 
10914     -- COMMIT?
10915     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
10916         COMMIT;
10917     END IF;
10918 
10919     -- Standard call to get message count and if count is 1, get message info.
10920     FND_MSG_PUB.Count_And_Get(
10921         p_count           =>      x_msg_count,
10922         p_data            =>      x_msg_data
10923     );
10924 
10925     IF IBC_DEBUG_PVT.debug_enabled THEN
10926       IBC_DEBUG_PVT.end_process(
10927         IBC_DEBUG_PVT.make_parameter_list(
10928           p_tag    => 'OUTPUT',
10929           p_parms  => JTF_VARCHAR2_TABLE_4000(
10930                         'px_object_version_number', px_object_version_number,
10931                         'x_return_status', x_return_status,
10932                         'x_msg_count', x_msg_count,
10933                         'x_msg_data', x_msg_data
10934                       )
10935         )
10936       );
10937     END IF;
10938 
10939 EXCEPTION
10940     WHEN FND_API.G_EXC_ERROR THEN
10941       --DBMS_OUTPUT.put_line('Expected Error');
10942       ROLLBACK TO svpt_set_version_meta;
10943       Ibc_Utilities_Pvt.handle_exceptions(
10944          p_api_name           => L_API_NAME
10945          ,p_pkg_name          => G_PKG_NAME
10946          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
10947          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
10948          ,p_sqlcode           => SQLCODE
10949          ,p_sqlerrm           => SQLERRM
10950          ,x_msg_count         => x_msg_count
10951          ,x_msg_data          => x_msg_data
10952          ,x_return_status     => x_return_status
10953       );
10954       IF IBC_DEBUG_PVT.debug_enabled THEN
10955         IBC_DEBUG_PVT.end_process(
10956           IBC_DEBUG_PVT.make_parameter_list(
10957             p_tag    => 'OUTPUT',
10958             p_parms  => JTF_VARCHAR2_TABLE_4000(
10959                           'x_return_status', x_return_status,
10960                           'x_msg_count', x_msg_count,
10961                           'x_msg_data', x_msg_data
10962                         )
10963           )
10964         );
10965       END IF;
10966   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10967       --DBMS_OUTPUT.put_line('Unexpected error');
10968       ROLLBACK TO svpt_set_version_meta;
10969       Ibc_Utilities_Pvt.handle_exceptions(
10970          p_api_name           => L_API_NAME
10971          ,p_pkg_name          => G_PKG_NAME
10972          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
10973          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
10974          ,p_sqlcode           => SQLCODE
10975          ,p_sqlerrm           => SQLERRM
10976          ,x_msg_count         => x_msg_count
10977          ,x_msg_data          => x_msg_data
10978          ,x_return_status     => x_return_status
10979       );
10980       IF IBC_DEBUG_PVT.debug_enabled THEN
10981         IBC_DEBUG_PVT.end_process(
10982           IBC_DEBUG_PVT.make_parameter_list(
10983             p_tag    => 'OUTPUT',
10984             p_parms  => JTF_VARCHAR2_TABLE_4000(
10985                           'x_return_status', x_return_status,
10986                           'x_msg_count', x_msg_count,
10987                           'x_msg_data', x_msg_data
10988                         )
10989           )
10990         );
10991       END IF;
10992   WHEN OTHERS THEN
10993       --DBMS_OUTPUT.put_line('Other error');
10994       ROLLBACK TO svpt_set_version_meta;
10995       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
10996          p_api_name           => L_API_NAME
10997          ,p_pkg_name          => G_PKG_NAME
10998          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
10999          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
11000          ,p_sqlcode           => SQLCODE
11001          ,p_sqlerrm           => SQLERRM
11002          ,x_msg_count         => x_msg_count
11003          ,x_msg_data          => x_msg_data
11004          ,x_return_status     => x_return_status
11005       );
11006       IF IBC_DEBUG_PVT.debug_enabled THEN
11007         IBC_DEBUG_PVT.end_process(
11008           IBC_DEBUG_PVT.make_parameter_list(
11009             p_tag    => 'OUTPUT',
11010             p_parms  => JTF_VARCHAR2_TABLE_4000(
11011                           'x_return_status', x_return_status,
11012                           'x_msg_count', x_msg_count,
11013                           'x_msg_data', x_msg_data,
11014                           'EXCEPTION', SQLERRM
11015                         )
11016           )
11017         );
11018       END IF;
11019  END;
11020 
11021 -- --------------------------------------------------------------
11022 -- UNARCHIVE ITEM
11023 --
11024 --
11025 --
11026 -- --------------------------------------------------------------
11027 PROCEDURE unarchive_item(
11028     p_content_item_id           IN NUMBER
11029     ,p_commit                   IN VARCHAR2
11030     ,p_api_version_number       IN NUMBER
11031     ,p_init_msg_list            IN VARCHAR2
11032     ,px_object_version_number   IN OUT NOCOPY NUMBER
11033     ,x_return_status            OUT NOCOPY VARCHAR2
11034     ,x_msg_count                OUT NOCOPY NUMBER
11035     ,x_msg_data                 OUT NOCOPY VARCHAR2
11036 )
11037 IS
11038 --******************* BEGIN REQUIRED VARIABLES *************************
11039   l_api_name CONSTANT VARCHAR2(30) := 'unarchive_item';          --|**|
11040   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
11041 --******************* END REQUIRED VARIABLES ***************************
11042     new_status IBC_CONTENT_ITEMS.content_item_status%TYPE;
11043     base_lang IBC_CONTENT_ITEMS.base_language%TYPE;
11044     citem_version_id NUMBER;
11045     locked_by NUMBER;
11046     temp NUMBER;
11047     dir_id NUMBER;
11048 BEGIN
11049   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
11050 --******************* BEGIN REQUIRED AREA ******************************
11051       SAVEPOINT svpt_unarchive_item;                              --|**|
11052       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
11053         FND_MSG_PUB.initialize;                                   --|**|
11054       END IF;                                                     --|**|
11055                                                                   --|**|
11056       -- Standard call to check for call compatibility.           --|**|
11057       IF NOT FND_API.Compatible_API_Call (                        --|**|
11058             l_api_version_number                                  --|**|
11059          ,p_api_version_number                                 --|**|
11060          ,l_api_name                                           --|**|
11061          ,G_PKG_NAME                                           --|**|
11062       )THEN                                                       --|**|
11063        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
11064       END IF;                                                     --|**|
11065                                                                   --|**|
11066       -- Initialize API return status to SUCCESS                  --|**|
11067       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
11068 --******************* END REQUIRED AREA ********************************
11069 
11070     IF IBC_DEBUG_PVT.debug_enabled THEN
11071       IBC_DEBUG_PVT.start_process(
11072          p_proc_type  => 'PROCEDURE',
11073          p_proc_name  => 'Unarchive_Item',
11074          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
11075                            p_tag     => 'PARAMETERS',
11076                            p_parms   => JTF_VARCHAR2_TABLE_4000(
11077                                           'p_content_item_id', p_content_item_id,
11078                                           'p_commit', p_commit,
11079                                           'p_api_version_number', p_api_version_number,
11080                                           'p_init_msg_list', p_init_msg_list,
11081                                           'px_object_version_number', px_object_version_number
11082                                         )
11083                            )
11084       );
11085     END IF;
11086 
11087     -- citem validation
11088     IF (IBC_VALIDATE_PVT.isValidCitem(p_content_item_id) = FND_API.g_false ) THEN
11089         --DBMS_OUTPUT.put_line('EX - content_item_id');
11090         x_return_status := FND_API.G_RET_STS_ERROR;
11091          FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
11092         FND_MESSAGE.Set_Token('INPUT', 'p_content_item_id', FALSE);
11093         FND_MSG_PUB.ADD;
11094         RAISE FND_API.G_EXC_ERROR;
11095     END IF;
11096 
11097     IF (getContentItemStatus(p_content_item_id)
11098         NOT IN (IBC_UTILITIES_PUB.G_STI_ARCHIVED, IBC_UTILITIES_PUB.G_STI_ARCHIVED_CASCADE))
11099     THEN
11100         x_return_status := FND_API.G_RET_STS_ERROR;
11101          FND_MESSAGE.Set_Name('IBC', 'IBC_CITEM_NOT_ARCHIVED');
11102         FND_MSG_PUB.ADD;
11103         RAISE FND_API.G_EXC_ERROR;
11104     END IF;
11105 
11106     -- getting information about the given content item
11107     SELECT
11108         content_item_id
11109         ,live_citem_version_id
11110         ,base_language
11111         ,locked_by_user_id
11112         ,directory_node_id
11113     INTO
11114         temp
11115         ,citem_version_id
11116         ,base_lang
11117         ,locked_by
11118         ,dir_id
11119     FROM
11120         ibc_content_items
11121     WHERE
11122         content_item_id = p_content_item_id;
11123 
11124     -- ***************PERMISSION CHECK*********************************************************************
11125     IF (hasPermission(p_content_item_id) = FND_API.g_false) THEN                                       --|*|
11126         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
11127         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
11128        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                        --|*|
11129         FND_MSG_PUB.ADD;                                                                               --|*|
11130         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
11131     ELSIF(isItemAdmin(p_content_item_id) = FND_API.g_false) THEN                                       --|*|
11132        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
11133                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
11134                   ,p_instance_pk1_value    => p_content_item_id                                        --|*|
11135                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
11136                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
11137                   ,p_container_pk1_value   => dir_id                                                   --|*|
11138                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
11139                   ) = FND_API.g_false                                                                  --|*|
11140             ) THEN                                                                                     --|*|
11141            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
11142            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
11143          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
11144            FND_MSG_PUB.ADD;                                                                            --|*|
11145            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
11146       END IF;                                                                                          --|*|
11147     END IF;                                                                                            --|*|
11148     -- ***************PERMISSION CHECK*********************************************************************
11149 
11150     -- which status was it previously in?
11151     IF (citem_version_id IS NULL) THEN
11152         -- since there was no live version id, it was PENDING
11153         new_status := Ibc_Utilities_Pub.G_STI_PENDING;
11154     ELSE
11155         -- was approved
11156         new_status := Ibc_Utilities_Pub.G_STI_APPROVED;
11157 
11158         -- reapprove live version to make sure that is still valid
11159         approve_citem_version_int(
11160             p_citem_ver_id              => citem_version_id
11161             ,p_content_item_id          => p_content_item_id
11162             ,p_base_lang                => base_lang
11163             ,px_object_version_number   => px_object_version_number
11164             ,x_return_status            => x_return_status
11165         );
11166 
11167         IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
11168             --DBMS_OUTPUT.put_line('EX - no permissions');
11169             x_return_status := FND_API.G_RET_STS_ERROR;
11170           FND_MESSAGE.Set_Name('IBC', 'CANNOT_REVERT_STATUS');
11171             FND_MSG_PUB.ADD;
11172             RAISE FND_API.G_EXC_ERROR;
11173         END IF;
11174     END IF;
11175 
11176     -- Actual changing of status if made it to this point
11177     Ibc_Content_Items_Pkg.update_row (
11178         p_content_item_id         => p_content_item_id
11179         ,p_content_item_status    => new_status
11180         ,p_locked_by_user_id      => FND_API.G_MISS_NUM -- Updated for STANDARD/perf change of G_MISS_xxx
11181         ,px_object_version_number => px_object_version_number
11182     );
11183 
11184                                    --***************************************************
11185                                    --************ADDING TO AUDIT LOG********************
11186                                    --***************************************************
11187                                    Ibc_Utilities_Pvt.log_action(
11188                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UNARCHIVE
11189                                        ,p_parent_value  => NULL
11190                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
11191                                        ,p_object_value1 => p_content_item_id
11192                                        ,p_object_value2 => NULL
11193                                        ,p_object_value3 => NULL
11194                                        ,p_object_value4 => NULL
11195                                        ,p_object_value5 => NULL
11196                                        ,p_description   => 'Unarchiving item'
11197                                    );
11198                                    --***************************************************
11199 
11200 
11201     -- COMMIT?
11202     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
11203         COMMIT;
11204     END IF;
11205 
11206     -- Standard call to get message count and if count is 1, get message info.
11207     FND_MSG_PUB.Count_And_Get(
11208         p_count           =>      x_msg_count,
11209         p_data            =>      x_msg_data
11210     );
11211 
11212     IF IBC_DEBUG_PVT.debug_enabled THEN
11213       IBC_DEBUG_PVT.end_process(
11214         IBC_DEBUG_PVT.make_parameter_list(
11215           p_tag    => 'OUTPUT',
11216           p_parms  => JTF_VARCHAR2_TABLE_4000(
11217                         'px_object_version_number', px_object_version_number,
11218                         'x_return_status', x_return_status,
11219                         'x_msg_count', x_msg_count,
11220                         'x_msg_data', x_msg_data
11221                       )
11222         )
11223       );
11224     END IF;
11225 
11226 EXCEPTION
11227     WHEN FND_API.G_EXC_ERROR THEN
11228       --DBMS_OUTPUT.put_line('Expected Error');
11229       ROLLBACK TO svpt_unarchive_item;
11230       Ibc_Utilities_Pvt.handle_exceptions(
11231          p_api_name           => L_API_NAME
11232          ,p_pkg_name          => G_PKG_NAME
11233          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
11234          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
11235          ,p_sqlcode           => SQLCODE
11236          ,p_sqlerrm           => SQLERRM
11237          ,x_msg_count         => x_msg_count
11238          ,x_msg_data          => x_msg_data
11239          ,x_return_status     => x_return_status
11240       );
11241       IF IBC_DEBUG_PVT.debug_enabled THEN
11242         IBC_DEBUG_PVT.end_process(
11243           IBC_DEBUG_PVT.make_parameter_list(
11244             p_tag    => 'OUTPUT',
11245             p_parms  => JTF_VARCHAR2_TABLE_4000(
11246                           'x_return_status', x_return_status,
11247                           'x_msg_count', x_msg_count,
11248                           'x_msg_data', x_msg_data
11249                         )
11250           )
11251         );
11252       END IF;
11253   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
11254       --DBMS_OUTPUT.put_line('Unexpected error');
11255       ROLLBACK TO svpt_unarchive_item;
11256       Ibc_Utilities_Pvt.handle_exceptions(
11257          p_api_name           => L_API_NAME
11258          ,p_pkg_name          => G_PKG_NAME
11259          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
11260          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
11261          ,p_sqlcode           => SQLCODE
11262          ,p_sqlerrm           => SQLERRM
11263          ,x_msg_count         => x_msg_count
11264          ,x_msg_data          => x_msg_data
11265          ,x_return_status     => x_return_status
11266       );
11267       IF IBC_DEBUG_PVT.debug_enabled THEN
11268         IBC_DEBUG_PVT.end_process(
11269           IBC_DEBUG_PVT.make_parameter_list(
11270             p_tag    => 'OUTPUT',
11271             p_parms  => JTF_VARCHAR2_TABLE_4000(
11272                           'x_return_status', x_return_status,
11273                           'x_msg_count', x_msg_count,
11274                           'x_msg_data', x_msg_data
11275                         )
11276           )
11277         );
11278       END IF;
11279   WHEN OTHERS THEN
11280       --DBMS_OUTPUT.put_line('Other error');
11281       ROLLBACK TO svpt_unarchive_item;
11282       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
11283          p_api_name           => L_API_NAME
11284          ,p_pkg_name          => G_PKG_NAME
11285          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
11286          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
11287          ,p_sqlcode           => SQLCODE
11288          ,p_sqlerrm           => SQLERRM
11289          ,x_msg_count         => x_msg_count
11290          ,x_msg_data          => x_msg_data
11291          ,x_return_status     => x_return_status
11292       );
11293       IF IBC_DEBUG_PVT.debug_enabled THEN
11294         IBC_DEBUG_PVT.end_process(
11295           IBC_DEBUG_PVT.make_parameter_list(
11296             p_tag    => 'OUTPUT',
11297             p_parms  => JTF_VARCHAR2_TABLE_4000(
11298                           'x_return_status', x_return_status,
11299                           'x_msg_count', x_msg_count,
11300                           'x_msg_data', x_msg_data,
11301                           'EXCEPTION', SQLERRM
11302                         )
11303           )
11304         );
11305       END IF;
11306  END;
11307 
11308 -- --------------------------------------------------------------
11309 -- UNLOCK CONTENT ITEM
11310 --
11311 --
11312 -- --------------------------------------------------------------
11313 PROCEDURE unlock_item(
11314     p_content_item_id           IN NUMBER
11315     ,p_commit                   IN VARCHAR2
11316     ,p_api_version_number       IN NUMBER
11317     ,p_init_msg_list            IN VARCHAR2
11318     ,x_return_status            OUT NOCOPY VARCHAR2
11319     ,x_msg_count                OUT NOCOPY NUMBER
11320     ,x_msg_data                 OUT NOCOPY VARCHAR2
11321 )
11322 IS
11323 --******************* BEGIN REQUIRED VARIABLES *************************
11324   l_api_name CONSTANT VARCHAR2(30) := 'unlock_content_item';     --|**|
11325   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT; --|**|
11326 --******************* END REQUIRED VARIABLES ***************************
11327    dir_id NUMBER;
11328 BEGIN
11329   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
11330 --******************* BEGIN REQUIRED AREA ******************************
11331       SAVEPOINT svpt_unlock_item;                                 --|**|
11332       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
11333         FND_MSG_PUB.initialize;                                   --|**|
11334       END IF;                                                     --|**|
11335                                                                   --|**|
11336       -- Standard call to check for call compatibility.           --|**|
11337       IF NOT FND_API.Compatible_API_Call (                        --|**|
11338             l_api_version_number                                  --|**|
11339          ,p_api_version_number                                 --|**|
11340          ,l_api_name                                           --|**|
11341          ,G_PKG_NAME                                           --|**|
11342       )THEN                                                       --|**|
11343        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
11344       END IF;                                                     --|**|
11345                                                                   --|**|
11346       -- Initialize API return status to SUCCESS                  --|**|
11347       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
11348 --******************* END REQUIRED AREA ********************************
11349 
11350     IF IBC_DEBUG_PVT.debug_enabled THEN
11351       IBC_DEBUG_PVT.start_process(
11352          p_proc_type  => 'PROCEDURE',
11353          p_proc_name  => 'Unlock_Item',
11354          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
11355                            p_tag     => 'PARAMETERS',
11356                            p_parms   => JTF_VARCHAR2_TABLE_4000(
11357                                           'p_content_item_id', p_content_item_id,
11358                                           'p_commit', p_commit,
11359                                           'p_api_version_number', p_api_version_number,
11360                                           'p_init_msg_list', p_init_msg_list
11361                                         )
11362                            )
11363       );
11364     END IF;
11365 
11366     -- citem validation
11367     IF (IBC_VALIDATE_PVT.isValidCitem(p_content_item_id) = FND_API.g_false ) THEN
11368         --DBMS_OUTPUT.put_line('EX - content_item_id');
11369         x_return_status := FND_API.G_RET_STS_ERROR;
11370       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
11371         FND_MESSAGE.Set_Token('INPUT', 'p_content_item_id', FALSE);
11372         FND_MSG_PUB.ADD;
11373         RAISE FND_API.G_EXC_ERROR;
11374     END IF;
11375 
11376     dir_id := getDirectoryNodeId(p_content_item_id);
11377     -- ***************PERMISSION CHECK*********************************************************************
11378     IF (hasPermission(p_content_item_id) = FND_API.g_false) THEN                                       --|*|
11379         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
11380         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
11381        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                        --|*|
11382         FND_MSG_PUB.ADD;                                                                               --|*|
11383         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
11384     ELSIF(isItemAdmin(p_content_item_id) = FND_API.g_false) THEN                                       --|*|
11385        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
11386                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
11387                   ,p_instance_pk1_value    => p_content_item_id                                        --|*|
11388                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
11389                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
11390                   ,p_container_pk1_value   => dir_id                                                   --|*|
11391                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
11392                   ) = FND_API.g_false                                                                  --|*|
11393             ) THEN                                                                                     --|*|
11394            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
11395            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
11396          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
11397            FND_MSG_PUB.ADD;                                                                            --|*|
11398            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
11399       END IF;                                                                                          --|*|
11400     END IF;                                                                                            --|*|
11401     -- ***************PERMISSION CHECK*********************************************************************
11402 
11403     -- ACTUAL UNLOCKING!
11404     UPDATE
11405       ibc_content_items
11406     SET
11407       locked_by_user_id = NULL
11408     WHERE
11409       content_item_id = p_content_item_id;
11410 
11411     -- COMMIT?
11412     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
11413         COMMIT;
11414     END IF;
11415 
11416     -- Standard call to get message count and if count is 1, get message info.
11417     FND_MSG_PUB.Count_And_Get(
11418         p_count           =>      x_msg_count,
11419         p_data            =>      x_msg_data
11420     );
11421 
11422     IF IBC_DEBUG_PVT.debug_enabled THEN
11423       IBC_DEBUG_PVT.end_process(
11424         IBC_DEBUG_PVT.make_parameter_list(
11425           p_tag    => 'OUTPUT',
11426           p_parms  => JTF_VARCHAR2_TABLE_4000(
11427                         'x_return_status', x_return_status,
11428                         'x_msg_count', x_msg_count,
11429                         'x_msg_data', x_msg_data
11430                       )
11431         )
11432       );
11433     END IF;
11434 
11435 EXCEPTION
11436     WHEN FND_API.G_EXC_ERROR THEN
11437       --DBMS_OUTPUT.put_line('Expected Error');
11438       ROLLBACK TO svpt_unlock_item;
11439       Ibc_Utilities_Pvt.handle_exceptions(
11440          p_api_name           => L_API_NAME
11441          ,p_pkg_name          => G_PKG_NAME
11442          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
11443          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
11444          ,p_sqlcode           => SQLCODE
11445          ,p_sqlerrm           => SQLERRM
11446          ,x_msg_count         => x_msg_count
11447          ,x_msg_data          => x_msg_data
11448          ,x_return_status     => x_return_status
11449       );
11450       IF IBC_DEBUG_PVT.debug_enabled THEN
11451         IBC_DEBUG_PVT.end_process(
11452           IBC_DEBUG_PVT.make_parameter_list(
11453             p_tag    => 'OUTPUT',
11454             p_parms  => JTF_VARCHAR2_TABLE_4000(
11455                           'x_return_status', x_return_status,
11456                           'x_msg_count', x_msg_count,
11457                           'x_msg_data', x_msg_data
11458                         )
11459           )
11460         );
11461       END IF;
11462   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
11463       --DBMS_OUTPUT.put_line('Unexpected error');
11464       ROLLBACK TO svpt_unlock_item;
11465       Ibc_Utilities_Pvt.handle_exceptions(
11466          p_api_name           => L_API_NAME
11467          ,p_pkg_name          => G_PKG_NAME
11468          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
11469          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
11470          ,p_sqlcode           => SQLCODE
11471          ,p_sqlerrm           => SQLERRM
11472          ,x_msg_count         => x_msg_count
11473          ,x_msg_data          => x_msg_data
11474          ,x_return_status     => x_return_status
11475       );
11476       IF IBC_DEBUG_PVT.debug_enabled THEN
11477         IBC_DEBUG_PVT.end_process(
11478           IBC_DEBUG_PVT.make_parameter_list(
11479             p_tag    => 'OUTPUT',
11480             p_parms  => JTF_VARCHAR2_TABLE_4000(
11481                           'x_return_status', x_return_status,
11482                           'x_msg_count', x_msg_count,
11483                           'x_msg_data', x_msg_data
11484                         )
11485           )
11486         );
11487       END IF;
11488   WHEN OTHERS THEN
11489       --DBMS_OUTPUT.put_line('Other error');
11490       ROLLBACK TO svpt_unlock_item;
11491       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
11492          p_api_name           => L_API_NAME
11493          ,p_pkg_name          => G_PKG_NAME
11494          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
11495          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
11496          ,p_sqlcode           => SQLCODE
11497          ,p_sqlerrm           => SQLERRM
11498          ,x_msg_count         => x_msg_count
11499          ,x_msg_data          => x_msg_data
11500          ,x_return_status     => x_return_status
11501       );
11502       IF IBC_DEBUG_PVT.debug_enabled THEN
11503         IBC_DEBUG_PVT.end_process(
11504           IBC_DEBUG_PVT.make_parameter_list(
11505             p_tag    => 'OUTPUT',
11506             p_parms  => JTF_VARCHAR2_TABLE_4000(
11507                           'x_return_status', x_return_status,
11508                           'x_msg_count', x_msg_count,
11509                           'x_msg_data', x_msg_data,
11510                           'EXCEPTION', SQLERRM
11511                         )
11512           )
11513         );
11514       END IF;
11515  END;
11516 
11517 
11518 -- --------------------------------------------------------------
11519 -- UPSERT ITEM FULL
11520 --
11521 --
11522 -- --------------------------------------------------------------
11523 PROCEDURE upsert_item_full(
11524       p_ctype_code                 IN VARCHAR2
11525        ,p_citem_name                IN VARCHAR2
11526        ,p_citem_description         IN VARCHAR2
11527        ,p_dir_node_id               IN NUMBER
11528        ,p_owner_resource_id         IN NUMBER
11529        ,p_owner_resource_type       IN VARCHAR2
11530        ,p_reference_code            IN VARCHAR2
11531        ,p_trans_required            IN VARCHAR2
11532        ,p_parent_item_id            IN NUMBER
11533        ,p_lock_flag                 IN VARCHAR2
11534        ,p_wd_restricted             IN VARCHAR2
11535        ,p_start_date                IN DATE
11536        ,p_end_date                  IN DATE
11537        ,p_attribute_type_codes      IN JTF_VARCHAR2_TABLE_100
11538        ,p_attributes                IN JTF_VARCHAR2_TABLE_32767
11539        ,p_attach_file_id            IN NUMBER
11540        ,p_item_renditions           IN JTF_NUMBER_TABLE
11541        ,p_default_rendition         IN NUMBER
11542        ,p_component_citems          IN JTF_NUMBER_TABLE
11543        ,p_component_citem_ver_ids   IN JTF_NUMBER_TABLE
11544        ,p_component_atypes          IN JTF_VARCHAR2_TABLE_100
11545        ,p_sort_order                IN JTF_NUMBER_TABLE
11546        ,p_keywords                  IN JTF_VARCHAR2_TABLE_100
11547        ,p_status                    IN VARCHAR2
11548        ,p_log_action                IN VARCHAR2
11549        ,p_language                  IN VARCHAR2
11550        ,p_update                    IN VARCHAR2
11551        ,p_commit                    IN VARCHAR2
11552        ,p_api_version_number        IN NUMBER
11553        ,p_init_msg_list             IN VARCHAR2
11554        ,px_content_item_id          IN OUT NOCOPY NUMBER
11555        ,px_citem_ver_id             IN OUT NOCOPY NUMBER
11556        ,px_object_version_number    IN OUT NOCOPY NUMBER
11557        ,x_return_status             OUT NOCOPY VARCHAR2
11558        ,x_msg_count                 OUT NOCOPY NUMBER
11559        ,x_msg_data                  OUT NOCOPY VARCHAR2
11560 )IS
11561  --******************* BEGIN REQUIRED VARIABLES *************************
11562   l_api_name CONSTANT VARCHAR2(30) := 'upsert_item_full';         --|**|
11563   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT;  --|**|
11564 --******************* END REQUIRED VARIABLES ****************************
11565     row_id  VARCHAR2(250);  -- required for use with table handlers
11566     locked_by NUMBER; -- locked_by value to be determined from attributes and logic
11567     attach_code IBC_CITEM_VERSIONS_TL.attachment_attribute_code%TYPE;
11568     --fix for bug 11699833.
11569     l_attach_file_name        VARCHAR(32000);
11570     l_attach_rendition_mtype  VARCHAR(32000);
11571     l_dummy_attach_file_name        VARCHAR(32000);
11572     l_dummy_attach_rendition_mtype  VARCHAR(32000);
11573     p_object_ver_num NUMBER := 1; -- object version number (static since this is insert only)
11574     l_rendition_id  NUMBER;
11575     bundle_text CLOB; -- tempory blob
11576     bundle_file_id NUMBER; -- pointer to actual FND_LOB location
11577     -- status used when creating not using approved until it passes without any errors
11578     bulk_status IBC_CONTENT_ITEMS.content_item_status%TYPE;
11579     purge_old VARCHAR2(1) := FND_API.g_true;
11580     current_version NUMBER := 1;
11581     tempfid NUMBER;
11582     directory_node NUMBER;
11583     return_status CHAR(1);
11584     lang IBC_CITEM_VERSIONS_TL.LANGUAGE%TYPE;
11585     base_lang IBC_CITEM_VERSIONS_TL.LANGUAGE%TYPE;
11586     temp VARCHAR2(10); -- throw away variable
11587     do_item CHAR(1);
11588     do_version CHAR(1);
11589     perm_code  JTF_VARCHAR2_TABLE_100  := JTF_VARCHAR2_TABLE_100();
11590     p_new_owner_resource_type VARCHAR2(11);
11591     p_new_owner_resource_id   NUMBER;
11592 
11593 
11594     CURSOR c_lob(p_file_id NUMBER) IS
11595       SELECT file_name, file_content_type
11596         FROM fnd_lobs
11597        WHERE file_id = p_file_id;
11598 
11599 BEGIN
11600   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
11601 --******************* BEGIN REQUIRED AREA ******************************
11602       SAVEPOINT svpt_upsert_item;                                 --|**|
11603       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
11604         FND_MSG_PUB.initialize;                                   --|**|
11605       END IF;                                                     --|**|
11606                                                                   --|**|
11607       -- Standard call to check for call compatibility.           --|**|
11608       IF NOT FND_API.Compatible_API_Call (                        --|**|
11609          L_API_VERSION_NUMBER                                     --|**|
11610       ,p_api_version_number                                    --|**|
11611       ,L_API_NAME                                              --|**|
11612       ,G_PKG_NAME                                              --|**|
11613       )THEN                                                       --|**|
11614        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                     --|**|
11615       END IF;                                                     --|**|
11616                                                                   --|**|
11617       -- Initialize API return status to SUCCESS                  --|**|
11618       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
11619 --******************* END REQUIRED AREA ********************************
11620 
11621     IF IBC_DEBUG_PVT.debug_enabled THEN
11622       IBC_DEBUG_PVT.start_process(
11623          p_proc_type  => 'PROCEDURE',
11624          p_proc_name  => 'Begin Upsert_Item_Full',
11625          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
11626                            p_tag     => 'PARAMETERS',
11627                            p_parms   => JTF_VARCHAR2_TABLE_32767(
11628                                           'p_ctype_code', p_ctype_code,
11629                                           'p_citem_name', p_citem_name,
11630                                           'p_citem_description', p_citem_description,
11631                                           'p_dir_node_id', p_dir_node_id,
11632                                           'p_owner_resource_id', p_owner_resource_id,
11633                                           'p_owner_resource_type', p_owner_resource_type,
11634                                           'p_reference_code', p_reference_code,
11635                                           'p_trans_required', p_trans_required,
11636                                           'p_parent_item_id', p_parent_item_id,
11637                                           'p_lock_flag', p_lock_flag,
11638                                           'p_wd_restricted', p_wd_restricted,
11639                                           'p_start_date', TO_CHAR(p_start_date, 'YYYYMMDD HH24:MI:SS'),
11640                                           'p_end_date',   TO_CHAR(p_end_date, 'YYYYMMDD HH24:MI:SS'),
11641                                           'p_attribute_type_codes', IBC_DEBUG_PVT.make_list(p_attribute_type_codes),
11642                                           'p_attributes', IBC_DEBUG_PVT.make_list_VC32767(p_attributes),
11643                                           'p_attach_file_id', p_attach_file_id,
11644                                           'p_item_renditions', IBC_DEBUG_PVT.make_list(p_item_renditions),
11645                                           'p_default_rendition', p_default_rendition,
11646                                           'p_component_citems', IBC_DEBUG_PVT.make_list(p_component_citems),
11647                                           'p_component_citem_ver_ids', IBC_DEBUG_PVT.make_list(p_component_citem_Ver_ids),
11648                                           'p_component_atypes', IBC_DEBUG_PVT.make_list(p_component_atypes),
11649                                           'p_sort_order', IBC_DEBUG_PVT.make_list(p_sort_order),
11650                                           'p_keywords', IBC_DEBUG_PVT.make_list(p_keywords),
11651                                           'p_status', p_status,
11652                                           'p_log_action', p_log_action,
11653                                           'p_language', p_language,
11654                                           'p_update', p_update,
11655                                           'p_commit', p_commit,
11656                                           'p_api_version_number', p_api_version_number,
11657                                           'p_init_msg_list', p_init_msg_list,
11658                                           'px_content_item_id', px_content_item_id,
11659                                           'px_citem_ver_id', px_citem_ver_id,
11660                                           'px_object_version_number', px_object_version_number
11661                                         )
11662                            )
11663       );
11664     END IF;
11665 
11666 -- INITIALIZING DEFAULTS -----------------------------------------------
11667     IF (px_object_version_number IS NULL) THEN
11668         px_object_version_number := 1;
11669     END IF;
11670 
11671     IF (p_language IS NULL) THEN
11672         lang := USERENV('LANG');
11673     ELSE
11674         lang := p_language;
11675     END IF;
11676 
11677     -- setting temporary status
11678     IF (p_status = Ibc_Utilities_Pub.G_STV_APPROVED) THEN
11679         bulk_status := Ibc_Utilities_Pub.G_STV_SUBMIT_FOR_APPROVAL;
11680     ELSE
11681         bulk_status := p_status;
11682     END IF;
11683 
11684     IF (p_dir_node_id IS NULL) THEN
11685         directory_node := Ibc_Utilities_Pub.G_COMMON_DIR_NODE;
11686     ELSE
11687         directory_node := p_dir_node_id;
11688     END IF;
11689 -- --------------------------------------------------------------------
11690 
11691 
11692 
11693 -- DETERMINING WHAT NEEDS TO BE DONE ----------------------------------
11694 
11695     version_engine(
11696         px_content_item_id  => px_content_item_id
11697         ,p_citem_ver_id     => px_citem_ver_id
11698         ,p_ctype_code       => p_ctype_code
11699         ,p_language         => lang
11700         ,x_return_status    => x_return_status
11701         ,x_item_command     => do_item
11702         ,x_version_command  => do_version
11703         ,x_base_lang        => base_lang
11704     );
11705 -- --------------------------------------------------------------------
11706 
11707   --DBMS_OUTPUT.put_line('Item command = '|| do_item);
11708   --DBMS_OUTPUT.put_line('Version command = '|| do_version);
11709 
11710 
11711     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
11712 
11713 -- VALIDATION OF INPUT VALUES ------------------------------------------
11714 
11715       -------------------------------------
11716       -- VALIDATION -----------------------
11717       -------------------------------------
11718         -- content item name
11719         IF (p_citem_name IS NULL) THEN
11720             --DBMS_OUTPUT.put_line('EX - citem_name');
11721             x_return_status := FND_API.G_RET_STS_ERROR;
11722             FND_MESSAGE.Set_Name('IBC', 'IBC_INPUT_REQUIRED');
11723             FND_MESSAGE.Set_Token('INPUT', 'p_citem_name', FALSE);
11724             FND_MSG_PUB.ADD;
11725             RAISE FND_API.G_EXC_ERROR;
11726         END IF;
11727         IF (LENGTH(p_citem_name) > 240) THEN
11728             --DBMS_OUTPUT.put_line('EX - citem_name');
11729             x_return_status := FND_API.G_RET_STS_ERROR;
11730             FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
11731             FND_MESSAGE.Set_Token('INPUT', 'p_citem_name', FALSE);
11732             FND_MSG_PUB.ADD;
11733             RAISE FND_API.G_EXC_ERROR;
11734         END IF;
11735         -- directory nodes
11736         IF ( (p_dir_node_id <> Ibc_Utilities_Pub.G_COMMON_DIR_NODE) AND
11737              (p_dir_node_id <> FND_API.G_MISS_NUM) AND
11738              (IBC_VALIDATE_PVT.isValidDirNode(p_dir_node_id) = FND_API.g_false) ) THEN
11739             --DBMS_OUTPUT.put_line('EX - dir_node_id');
11740             x_return_status := FND_API.G_RET_STS_ERROR;
11741             FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
11742             FND_MESSAGE.Set_Token('INPUT', 'p_dir_node_id', FALSE);
11743             FND_MSG_PUB.ADD;
11744             RAISE FND_API.G_EXC_ERROR;
11745         END IF;
11746         -- p_status
11747         IF (IBC_VALIDATE_PVT.isValidStatus(p_status) = FND_API.g_false) THEN
11748             --DBMS_OUTPUT.put_line('EX - p_status');
11749             x_return_status := FND_API.G_RET_STS_ERROR;
11750             FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
11751             FND_MESSAGE.Set_Token('INPUT', 'p_status', FALSE);
11752             FND_MSG_PUB.ADD;
11753             RAISE FND_API.G_EXC_ERROR;
11754         END IF;
11755         -- content item description
11756         IF ( (p_citem_description IS NOT NULL) AND (p_citem_description <> FND_API.G_MISS_CHAR) AND (LENGTH(p_citem_description) > 2000) )THEN
11757             --DBMS_OUTPUT.put_line('EX - citem_description');
11758             x_return_status := FND_API.G_RET_STS_ERROR;
11759              FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
11760             FND_MESSAGE.Set_Token('INPUT', 'p_citem_description', FALSE);
11761             FND_MSG_PUB.ADD;
11762             RAISE FND_API.G_EXC_ERROR;
11763         END IF;
11764         -- reference code
11765         IF ( (p_reference_code <> FND_API.G_MISS_CHAR) AND (p_reference_code IS NOT NULL) AND (LENGTH(p_reference_code) > 100) )THEN
11766             --DBMS_OUTPUT.put_line('EX - reference_code');
11767             x_return_status := FND_API.G_RET_STS_ERROR;
11768              FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
11769             FND_MESSAGE.Set_Token('INPUT', 'p_reference_code', FALSE);
11770             FND_MSG_PUB.ADD;
11771             RAISE FND_API.G_EXC_ERROR;
11772         END IF;
11773         -- p_trans_required
11774         IF (IBC_VALIDATE_PVT.isBoolean(p_trans_required) = FND_API.g_false) THEN
11775             --DBMS_OUTPUT.put_line('EX - p_trans req');
11776             x_return_status := FND_API.G_RET_STS_ERROR;
11777             FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
11778             FND_MESSAGE.Set_Token('INPUT', 'p_trans_required', FALSE);
11779             FND_MSG_PUB.ADD;
11780             RAISE FND_API.G_EXC_ERROR;
11781         END IF;
11782         -- parent item id
11783         IF ( (p_parent_item_id <> FND_API.g_miss_num) AND (IBC_VALIDATE_PVT.isValidCitem(p_parent_item_id) = FND_API.g_false)) THEN
11784             --DBMS_OUTPUT.put_line('EX - parent item id');
11785             x_return_status := FND_API.G_RET_STS_ERROR;
11786           FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
11787             FND_MESSAGE.Set_Token('INPUT', 'p_parent_item_id', FALSE);
11788             FND_MSG_PUB.ADD;
11789             RAISE FND_API.G_EXC_ERROR;
11790         END IF;
11791         -- p_lock_flag
11792         IF (IBC_VALIDATE_PVT.isBoolean(p_lock_flag) = FND_API.g_false) THEN
11793             --DBMS_OUTPUT.put_line('EX - p_lock_flag');
11794             x_return_status := FND_API.G_RET_STS_ERROR;
11795             FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
11796             FND_MESSAGE.Set_Token('INPUT', 'p_lock_flag', FALSE);
11797             FND_MSG_PUB.ADD;
11798             RAISE FND_API.G_EXC_ERROR;
11799         END IF;
11800         -- p_wd_restricted
11801         IF (IBC_VALIDATE_PVT.isBoolean(p_wd_restricted) = FND_API.g_false) THEN
11802             --DBMS_OUTPUT.put_line('EX - p_wd_restricted');
11803             x_return_status := FND_API.G_RET_STS_ERROR;
11804             FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
11805             FND_MESSAGE.Set_Token('INPUT', 'p_wd_restricted', FALSE);
11806             FND_MSG_PUB.ADD;
11807             RAISE FND_API.G_EXC_ERROR;
11808         END IF;
11809         -- Validating uniqueness for item_reference_code
11810         IF exist_item_reference_code(p_reference_code, px_content_item_id) THEN
11811           x_return_status := FND_API.G_RET_STS_ERROR;
11812           FND_MESSAGE.Set_Name('IBC', 'IBC_DUPLICATE_ITEM_REF_CODE');
11813           FND_MSG_PUB.ADD;
11814           RAISE FND_API.G_EXC_ERROR;
11815         END IF;
11816 
11817             -- resource id
11818             IF ( (p_owner_resource_id IS NOT NULL) AND
11819                  (p_owner_resource_id <> FND_API.G_MISS_NUM) )
11820             THEN
11821                 p_new_owner_resource_id := p_owner_resource_id;
11822 
11823                IF (p_owner_resource_type IS NULL OR
11824                    p_owner_resource_type = FND_API.G_MISS_CHAR) THEN
11825                    p_new_owner_resource_type := 'USER';
11826                ELSE
11827                    p_new_owner_resource_type := p_owner_resource_type;
11828                END IF;
11829             ELSE  -- user does not pass resource_id default to login user id
11830                  p_new_owner_resource_id   := FND_GLOBAL.user_id;
11831                  p_new_owner_resource_type := 'USER';
11832             END IF;
11833 
11834 
11835            IF (IBC_VALIDATE_PVT.isValidResource(p_new_owner_resource_id,p_new_owner_resource_type) = FND_API.g_false) THEN
11836               --DBMS_OUTPUT.put_line('EX - invalid resource id');
11837               x_return_status := FND_API.G_RET_STS_ERROR;
11838               FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
11839               FND_MESSAGE.Set_Token('INPUT', 'p_owner_resource_id/p_owner_resource_type<' || p_new_owner_resource_id||':'||p_new_owner_resource_type||'>', FALSE);
11840               FND_MSG_PUB.ADD;
11841               RAISE FND_API.G_EXC_ERROR;
11842             END IF;
11843 
11844 
11845         -- Default rendition
11846         IF (p_default_rendition IS NOT NULL AND
11847             p_item_renditions IS NOT NULL AND
11848             p_default_rendition > p_item_renditions.COUNT)
11849             OR
11850             (p_default_rendition IS NOT NULL AND
11851              p_item_renditions IS NULL OR
11852              p_default_rendition < 1)
11853         THEN
11854           --DBMS_OUTPUT.put_line('EX - invalid default rendition');
11855           x_return_status := FND_API.G_RET_STS_ERROR;
11856           FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
11857           FND_MESSAGE.Set_Token('INPUT', 'p_default_rendition', FALSE);
11858           FND_MSG_PUB.ADD;
11859           RAISE FND_API.G_EXC_ERROR;
11860         END IF;
11861 
11862         -- setting locked_by info
11863         IF (p_lock_flag = FND_API.g_true) THEN
11864             locked_by := FND_GLOBAL.user_id;
11865         ELSE
11866             locked_by := NULL;
11867         END IF;
11868 
11869 -- --------------------------------------------------------------------
11870 
11871 
11872 
11873 -- MAIN CONTENT ITEM ADJUSTMENTS --------------------------------------
11874 
11875         -- INSERT -----------------------------------------------------
11876         IF (do_item = G_COMMAND_CREATE) THEN
11877              -- ***************PERMISSION CHECK*********************************************************************
11878              IF( IBC_DATA_SECURITY_PVT.has_permission(                                                          --|*|
11879                          p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')    --|*|
11880                          ,p_instance_pk1_value    => NULL                                                       --|*|
11881                          ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
11882                          ,p_container_pk1_value   => directory_node                                            --|*|
11883                          ,p_permission_code       => 'CITEM_EDIT'                                               --|*|
11884                          ,p_current_user_id       => FND_GLOBAL.user_id                                         --|*|
11885                          ) = FND_API.g_false                                                                    --|*|
11886                    ) THEN                                                                                       --|*|
11887                   --DBMS_OUTPUT.put_line('EX - no permissions');                                                --|*|
11888                   x_return_status := FND_API.G_RET_STS_ERROR;                                                   --|*|
11889                    FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                         --|*|
11890                   FND_MSG_PUB.ADD;                                                                              --|*|
11891                   RAISE FND_API.G_EXC_ERROR;                                                                    --|*|
11892                END IF;                                                                                            --|*|
11893                -- ***************PERMISSION CHECK*********************************************************************
11894 
11895             --DBMS_OUTPUT.put_line('ITEM - INSERT ROW');
11896              Ibc_Content_Items_Pkg.insert_row(
11897                 x_ROWID                 => row_id
11898                 ,px_CONTENT_ITEM_ID     => px_content_item_id
11899                 ,p_CONTENT_TYPE_CODE    => p_ctype_code
11900                 ,p_ITEM_REFERENCE_CODE  => p_reference_code
11901                 ,p_DIRECTORY_NODE_ID    => directory_node
11902                 ,p_LIVE_CITEM_VERSION_ID => NULL
11903                 ,p_CONTENT_ITEM_STATUS  => Ibc_Utilities_Pub.G_STI_PENDING
11904                 ,p_LOCKED_BY_USER_ID    => locked_by
11905                 ,p_WD_RESTRICTED_FLAG   => p_wd_restricted
11906                 ,p_BASE_LANGUAGE        => lang
11907                 ,p_TRANSLATION_REQUIRED_FLAG => p_trans_required
11908                 ,p_OWNER_RESOURCE_ID    => p_new_owner_resource_id
11909                 ,p_OWNER_RESOURCE_TYPE  => p_new_owner_resource_type
11910                 ,p_APPLICATION_ID       => NULL
11911                 ,p_PARENT_ITEM_ID       => p_parent_item_id
11912                 ,p_REQUEST_ID           => NULL
11913                 ,p_object_version_number => px_object_version_number
11914             );
11915 
11916             IF(p_log_action = FND_API.g_true) THEN
11917                                        --***************************************************
11918                                        --************ADDING TO AUDIT LOG********************
11919                                        --***************************************************
11920                                        Ibc_Utilities_Pvt.log_action(
11921                                            p_activity       => Ibc_Utilities_Pvt.G_ALA_CREATE
11922                                            ,p_parent_value  => NULL
11923                                            ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
11924                                            ,p_object_value1 => px_content_item_id
11925                                            ,p_object_value2 => NULL
11926                                            ,p_object_value3 => NULL
11927                                            ,p_object_value4 => NULL
11928                                            ,p_object_value5 => NULL
11929                                            ,p_description   => 'Creating new content item with upsert api'
11930                                        );
11931                                        --***************************************************
11932             END IF;
11933         END IF;
11934 
11935 
11936         -- UPDATE -----------------------------------------------------
11937         IF (do_item IN (G_COMMAND_UPDATE,G_COMMAND_POST_APPROVAL_UPDATE)) THEN
11938              -- ***************PERMISSION CHECK*********************************************************************
11939              IF (hasPermission(px_content_item_id) = FND_API.g_false) THEN                                     --|*|
11940                  --DBMS_OUTPUT.put_line('EX - no lock permissions');                                             --|*|
11941                  x_return_status := FND_API.G_RET_STS_ERROR;                                                   --|*|
11942                  FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                       --|*|
11943                  FND_MSG_PUB.ADD;                                                                              --|*|
11944                  RAISE FND_API.G_EXC_ERROR;                                                                    --|*|                                                                 --|*|
11945              END IF;                                                                                           --|*|
11946              -- ***************PERMISSION CHECK*********************************************************************
11947 
11948             --DBMS_OUTPUT.put_line('ITEM - UPDATE ROW');
11949             Ibc_Content_Items_Pkg.update_row(
11950                 p_CONTENT_ITEM_ID            => px_content_item_id
11951                 ,p_ITEM_REFERENCE_CODE       => Conv_To_TblHandler(p_reference_code) -- Updated for STANDARD/perf change of G_MISS_xxx
11952                 ,p_DIRECTORY_NODE_ID         => Conv_To_TblHandler(directory_node) -- Updated for STANDARD/perf change of G_MISS_xxx
11953                 ,p_LOCKED_BY_USER_ID         => Conv_To_TblHandler(locked_by) -- Updated for STANDARD/perf change of G_MISS_xxx
11954                 ,p_WD_RESTRICTED_FLAG        => Conv_To_TblHandler(p_wd_restricted) -- Updated for STANDARD/perf change of G_MISS_xxx
11955                 ,p_TRANSLATION_REQUIRED_FLAG => Conv_To_TblHandler(p_trans_required) -- Updated for STANDARD/perf change of G_MISS_xxx
11956                 ,p_OWNER_RESOURCE_ID         => Conv_To_TblHandler(p_new_owner_resource_id) -- Updated for STANDARD/perf change of G_MISS_xxx
11957                 ,p_OWNER_RESOURCE_TYPE        => Conv_To_TblHandler(p_new_owner_resource_type) -- Updated for STANDARD/perf change of G_MISS_xxx
11958                 ,p_PARENT_ITEM_ID            => Conv_To_TblHandler(p_parent_item_id) -- Updated for STANDARD/perf change of G_MISS_xxx
11959                 ,px_object_version_number    => px_object_version_number
11960               );
11961 
11962             --DBMS_OUTPUT.put_line('ITEM - ROW UPDATED');
11963 
11964             IF(p_log_action = FND_API.g_true) THEN
11965                                        --***************************************************
11966                                        --************ADDING TO AUDIT LOG********************
11967                                        --***************************************************
11968                                        Ibc_Utilities_Pvt.log_action(
11969                                            p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
11970                                            ,p_parent_value  => NULL
11971                                            ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
11972                                            ,p_object_value1 => px_content_item_id
11973                                            ,p_object_value2 => NULL
11974                                            ,p_object_value3 => NULL
11975                                            ,p_object_value4 => NULL
11976                                            ,p_object_value5 => NULL
11977                                            ,p_description   => 'Updating content item with upsert api'
11978                                        );
11979                                        --***************************************************
11980             END IF;
11981          END IF;
11982     END IF;
11983 -- --------------------------------------------------------------------
11984 
11985  --
11986  -- There is no way to delete all the renditions. This may not be the best way
11987  -- to achive this solution, when u pass a NULL all the renditions will be deleted
11988  -- If u don't want to do anything with the rendition then u must query and pass
11989  -- the rendition object back as it exists in the database.
11990  -- this was added to solve the Bug#
11991  -- Addition of this code snippet will not have any problem with our UI as we always
11992  -- requery and pass the same rendition object back.
11993  -- srrangar added
11994  --
11995   IF ((p_item_renditions IS NULL) AND
11996      (do_version <> G_COMMAND_POST_APPROVAL_UPDATE)) THEN
11997 
11998     -- Delete all existing renditions
11999     DELETE FROM ibc_renditions
12000     WHERE citem_version_id = px_citem_ver_id
12001     AND LANGUAGE = lang;
12002 
12003  END IF;
12004  --
12005  -- End of the code snippet.
12006  --
12007 
12008 
12009   -----------------------------------------------------------------
12010     -- Default Attachment/Rendition logic and Validation ------------
12011     -----------------------------------------------------------------
12012   IF ((p_item_renditions IS NOT NULL) AND
12013      (do_version <> G_COMMAND_POST_APPROVAL_UPDATE)) THEN
12014 
12015     -- Delete existing renditions
12016     DELETE FROM ibc_renditions
12017      WHERE citem_version_id = px_citem_ver_id
12018        AND LANGUAGE = lang;
12019 
12020     FOR I IN 1..p_item_renditions.COUNT LOOP
12021       IF (IBC_VALIDATE_PVT.isValidAttachment(p_item_renditions(I)) = FND_API.g_false) THEN
12022         x_return_status := FND_API.G_RET_STS_ERROR;
12023         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
12024         FND_MESSAGE.Set_Token('INPUT', 'p_item_renditions', FALSE);
12025         FND_MSG_PUB.ADD;
12026         RAISE FND_API.G_EXC_ERROR;
12027       END IF;
12028 
12029       IF I = NVL(p_default_rendition, 1) THEN
12030         OPEN c_lob(p_item_renditions(I));
12031         FETCH c_lob INTO l_dummy_attach_file_name, l_attach_rendition_mtype;
12032         CLOSE c_lob;
12033         l_attach_rendition_mtype := GET_MIME_TYPE(l_attach_rendition_mtype);
12034       END IF;
12035     END LOOP;
12036   END IF;
12037 
12038   IF ((p_attach_file_id IS NOT NULL) AND
12039       (do_version <> G_COMMAND_POST_APPROVAL_UPDATE)) THEN
12040 
12041     IF (IBC_VALIDATE_PVT.isValidAttachment(p_attach_file_id) = FND_API.g_false) THEN
12042       x_return_status := FND_API.G_RET_STS_ERROR;
12043       FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
12044       FND_MESSAGE.Set_Token('INPUT', 'p_attach_file_id', FALSE);
12045       FND_MSG_PUB.ADD;
12046       RAISE FND_API.G_EXC_ERROR;
12047     END IF;
12048 
12049     attach_code := getAttachAttribCode(px_content_item_id);
12050     IF ( attach_code IS NULL) THEN
12051       --DBMS_OUTPUT.put_line('EX - attachment attribute code');
12052       x_return_status := FND_API.G_RET_STS_ERROR;
12053       FND_MESSAGE.Set_Name('IBC', 'INVALID_ATTACH_ATTR_TYPE');
12054       FND_MSG_PUB.ADD;
12055       RAISE FND_API.G_EXC_ERROR;
12056     END IF;
12057 
12058     OPEN c_lob(p_attach_file_id);
12059     FETCH c_lob INTO l_attach_file_name, l_dummy_attach_rendition_mtype;
12060     CLOSE c_lob;
12061 
12062   END IF;
12063 
12064     -------------------------------------
12065     -- ATTRIBUTE BUNDLE -----------------
12066     -------------------------------------
12067     -- determine if there is an attribute bundle or not and if this action should be taken at all
12068     IF ( (p_attribute_type_codes IS NOT NULL) AND
12069          (p_attributes IS NOT NULL) AND
12070          (x_return_status = FND_API.G_RET_STS_SUCCESS) AND
12071          (do_version <> G_COMMAND_POST_APPROVAL_UPDATE) ) THEN
12072         -- creating temporary lob
12073         DBMS_LOB.createtemporary(bundle_text, TRUE, 2);
12074         create_attribute_bundle(
12075             px_attribute_bundle     => bundle_text
12076             ,p_attribute_type_codes => p_attribute_type_codes
12077             ,p_attributes           => p_attributes
12078             ,p_ctype_code           => p_ctype_code
12079             ,x_return_status        => x_return_status
12080         );
12081         --**************** STORING INFO TO DB ***********
12082         -- Inserting temp lob into fnd_lobs
12083         IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
12084 
12085             -- adding data to fnd_lobs
12086             Ibc_Utilities_Pvt.insert_attribute_bundle(
12087                 x_lob_file_id       => bundle_file_id
12088                 ,p_new_bundle         => bundle_text
12089                 ,x_return_status    => x_return_status
12090             );
12091 
12092             -- raise exception if error occured while in utilities procedure
12093             IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
12094                 --DBMS_OUTPUT.put_line('EX - inserting attribute bundle');
12095                 x_return_status := FND_API.G_RET_STS_ERROR;
12096               FND_MESSAGE.Set_Name('IBC', 'A_BUNDLE_ERROR');
12097                 FND_MESSAGE.set_token('SITUATION', 'Insertion');
12098                 FND_MSG_PUB.ADD;
12099             END IF;
12100         ELSE
12101             --DBMS_OUTPUT.put_line('EX - creating attribute bundle');
12102             x_return_status := FND_API.G_RET_STS_ERROR;
12103           FND_MESSAGE.Set_Name('IBC', 'A_BUNDLE_ERROR');
12104             FND_MESSAGE.set_token('SITUATION', 'Creation');
12105             FND_MSG_PUB.ADD;
12106         END IF;
12107     -- no attributes given
12108     ELSE
12109         bundle_file_id := NULL;
12110     END IF;
12111 
12112 
12113 IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
12114 
12115 
12116 -- MAIN VERSION ADJUSTMENTS -------------------------------------------
12117 
12118         -- INCREMENT -----------------------------------------------------
12119         IF (do_version = G_COMMAND_INCREMENT) THEN
12120             current_version := getMaxVersion(px_content_item_id) + 1;
12121         END IF;
12122 
12123 
12124         -- INSERT -----------------------------------------------------
12125         IF ( (do_version = G_COMMAND_CREATE) OR (do_version = G_COMMAND_INCREMENT) ) THEN
12126             -- inserting new row into ibc_citem_versions
12127 
12128             --DBMS_OUTPUT.put_line('VERSION - INSERT BASE LANG');
12129 
12130         -- ****RENDITIONS_WORK****
12131             Ibc_Citem_Versions_Pkg.insert_base_lang(
12132                 X_ROWID                        => row_id
12133                 ,PX_CITEM_VERSION_ID           => px_citem_ver_id
12134                 ,P_CONTENT_ITEM_ID             => px_content_item_id
12135                 ,P_VERSION_NUMBER              => current_version
12136                 ,P_CITEM_VERSION_STATUS        => bulk_status
12137                 ,P_START_DATE                  => p_start_date
12138                 ,P_END_DATE                    => p_end_date
12139                 ,P_ATTRIBUTE_FILE_ID           => bundle_file_id
12140                 ,P_ATTACHMENT_FILE_ID          => p_attach_file_id
12141                 ,P_ATTACHMENT_FILE_NAME        => l_attach_file_name
12142                 ,P_DEFAULT_RENDITION_MIME_TYPE => l_attach_rendition_mtype
12143                 ,P_ATTACHMENT_ATTRIBUTE_CODE   => attach_code
12144                 ,P_SOURCE_LANG                 => lang
12145                 ,P_CONTENT_ITEM_NAME           => p_citem_name
12146                 ,P_DESCRIPTION                 => p_citem_description
12147                 ,PX_OBJECT_VERSION_NUMBER      => px_object_version_number
12148             );
12149             IF(p_log_action = FND_API.g_true) THEN
12150                                    --***************************************************
12151                                    --************ADDING TO AUDIT LOG********************
12152                                    --***************************************************
12153                                    Ibc_Utilities_Pvt.log_action(
12154                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_CREATE
12155                                        ,p_parent_value  => px_content_item_id
12156                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
12157                                        ,p_object_value1 => px_citem_ver_id
12158                                        ,p_object_value2 => lang
12159                                        ,p_object_value3 => NULL
12160                                        ,p_object_value4 => NULL
12161                                        ,p_object_value5 => NULL
12162                                        ,p_description   => 'Creating new content item version with upsert api'
12163                                    );
12164                                    --***************************************************
12165             END IF;
12166         END IF;
12167 
12168         IF (do_version = G_COMMAND_TRANSLATE) AND
12169            getAttribFID(px_citem_ver_id, base_lang) <> getAttribFID(px_citem_ver_id, lang)
12170         THEN
12171             x_return_status := deleteAttributeBundle(
12172                                     f_citem_ver_id  => px_citem_ver_id
12173                                     ,f_language     => lang
12174                                     ,f_log_action   => p_log_action
12175                                );
12176         END IF;
12177 
12178 
12179         --
12180         -- BEGIN UPDATE OF CONTENT VERSION -----------------------------------------
12181         --
12182         IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND
12183              (do_version IN (G_COMMAND_UPDATE,G_COMMAND_TRANSLATE))) THEN
12184 
12185             -- set type of permission check
12186             IF (do_version = G_COMMAND_TRANSLATE) THEN
12187                 perm_code.extend;
12188                 perm_code(1) := 'CITEM_TRANSLATE';
12189                bulk_status := Fnd_Api.G_MISS_CHAR;
12190             ELSE
12191                perm_code.extend;
12192                perm_code(1) := 'CITEM_EDIT';
12193             END IF;
12194 
12195 
12196              -- ***************PERMISSION CHECK*********************************************************************
12197              IF(isItemAdmin(px_content_item_id) = FND_API.g_false) THEN                                         --|*|
12198                 IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
12199                            p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
12200                            ,p_instance_pk1_value    => px_content_item_id                                       --|*|
12201                            ,p_permission_code       => perm_code(1)                                                --|*|
12202                            ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
12203                            ,p_container_pk1_value   => directory_node                                           --|*|
12204                            ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
12205                            ) = FND_API.g_false                                                                  --|*|
12206                      ) THEN                                                                                     --|*|
12207                     --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
12208                     x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
12209                    FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
12210                     FND_MSG_PUB.ADD;                                                                            --|*|
12211                     RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
12212                END IF;                                                                                          --|*|
12213              END IF;                                                                                            --|*|
12214              -- ***************PERMISSION CHECK*********************************************************************
12215 
12216             --DBMS_OUTPUT.put_line('VERSION - UPDATE ROW');
12217             -- updating row in ibc_citem_versions
12218         -- ****RENDITIONS_WORK****
12219             Ibc_Citem_Versions_Pkg.update_row(
12220                 P_CITEM_VERSION_ID             => px_citem_ver_id
12221                 ,P_CONTENT_ITEM_ID             => px_content_item_id
12222                 ,P_SOURCE_LANG                 => lang
12223                 ,P_CITEM_VERSION_STATUS        => Conv_To_TblHandler(bulk_status) -- Updated for STANDARD/perf change of G_MISS_xxx
12224                 ,P_START_DATE                  => Conv_To_TblHandler(p_start_date) -- Updated for STANDARD/perf change of G_MISS_xxx
12225                 ,P_END_DATE                    => Conv_To_TblHandler(p_end_date) -- Updated for STANDARD/perf change of G_MISS_xxx
12226                 ,P_ATTRIBUTE_FILE_ID           => Conv_To_TblHandler(bundle_file_id) -- Updated for STANDARD/perf change of G_MISS_xxx
12227                 ,P_ATTACHMENT_FILE_ID          => Conv_To_TblHandler(p_attach_file_id) -- Updated for STANDARD/perf change of G_MISS_xxx
12228                 ,P_ATTACHMENT_FILE_NAME        => Conv_To_TblHandler(l_attach_file_name) -- Updated for STANDARD/perf change of G_MISS_xxx
12229                 ,P_DEFAULT_RENDITION_MIME_TYPE => Conv_To_TblHandler(l_attach_rendition_mtype) -- Updated for STANDARD/perf change of G_MISS_xxx
12230                 ,P_ATTACHMENT_ATTRIBUTE_CODE   => Conv_To_TblHandler(attach_code) -- Updated for STANDARD/perf change of G_MISS_xxx
12231                 ,P_CONTENT_ITEM_NAME           => Conv_To_TblHandler(p_citem_name) -- Updated for STANDARD/perf change of G_MISS_xxx
12232                 ,P_DESCRIPTION                 => Conv_To_TblHandler(p_citem_description) -- Updated for STANDARD/perf change of G_MISS_xxx
12233                 ,PX_OBJECT_VERSION_NUMBER      => px_object_version_number
12234             );
12235             IF(p_log_action = FND_API.g_true) THEN
12236                                    --***************************************************
12237                                    --************ADDING TO AUDIT LOG********************
12238                                    --***************************************************
12239                                    Ibc_Utilities_Pvt.log_action(
12240                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
12241                                        ,p_parent_value  => px_content_item_id
12242                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
12243                                        ,p_object_value1 => px_citem_ver_id
12244                                        ,p_object_value2 => lang
12245                                        ,p_object_value3 => NULL
12246                                        ,p_object_value4 => NULL
12247                                        ,p_object_value5 => NULL
12248                                        ,p_description   => 'Updating content item version with upsert api'
12249                                    );
12250                                    --***************************************************
12251             END IF;
12252         END IF; -- END UPDATE OF CONTENT VERSION -----------------------------------------
12253 
12254         --
12255         -- BEGIN UPDATE POST APPROVAL OF VERSION -----------------------------------------
12256         --
12257         IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND
12258              (do_version IN (G_COMMAND_POST_APPROVAL_UPDATE))) THEN
12259 
12260             -- set type of permission check
12261             IF (do_version = G_COMMAND_POST_APPROVAL_UPDATE) THEN
12262                perm_code.extend;
12263                perm_code(1) := 'CITEM_EDIT';
12264                perm_code.extend;
12265                perm_code(2) := 'CITEM_APPROVE';
12266             END IF;
12267 
12268 
12269              -- For Update post approval user must have Edit as well
12270              -- as approve permission
12271              --
12272              FOR i IN perm_code.FIRST..perm_code.LAST
12273              LOOP
12274              -- ***************PERMISSION CHECK*********************************************************************
12275             -- IF(isItemAdmin(px_content_item_id) = FND_API.g_false) THEN                                         --|*|
12276                 IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
12277                            p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
12278                            ,p_instance_pk1_value    => px_content_item_id                                       --|*|
12279                            ,p_permission_code       => perm_code(i)                                                --|*|
12280                            ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
12281                            ,p_container_pk1_value   => directory_node                                           --|*|
12282                            ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
12283                            ) = FND_API.g_false                                                                  --|*|
12284                      ) THEN                                                                                     --|*|
12285                     --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
12286                     x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
12287                     IF ( perm_code(i) = 'CITEM_EDIT')  THEN                                                     --|*|
12288                         FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                 --|*|
12289                     END IF;                                                                                     --|*|
12290                     IF ( perm_code(i) = 'CITEM_APPROVE')  THEN                                                  --|*|
12291                         FND_MESSAGE.Set_Name('IBC', 'NO_APPROVE_ITEM_PRIV');                                    --|*|
12292                     END IF;                                                                                     --|*|
12293                                                                                                                 --|*|
12294                     FND_MSG_PUB.ADD;                                                                            --|*|
12295                     RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
12296                END IF;                                                                                          --|*|
12297             -- END IF;                                                                                          --|*|
12298              -- ***************PERMISSION CHECK*********************************************************************
12299              END LOOP;
12300 
12301             --DBMS_OUTPUT.put_line('VERSION - UPDATE POST APPROVAL ROW');
12302             --updating row in ibc_citem_versions
12303             Ibc_Citem_Versions_Pkg.update_row(
12304                 P_CITEM_VERSION_ID             => px_citem_ver_id
12305                 ,P_CONTENT_ITEM_ID             => px_content_item_id
12306                 ,P_SOURCE_LANG                 => lang
12307                 ,P_CONTENT_ITEM_NAME           => Conv_To_TblHandler(p_citem_name) -- Updated for STANDARD/perf change of G_MISS_xxx
12308                 ,P_DESCRIPTION                 => Conv_To_TblHandler(p_citem_description) -- Updated for STANDARD/perf change of G_MISS_xxx
12309                 ,PX_OBJECT_VERSION_NUMBER      => px_object_version_number
12310             );
12311             IF(p_log_action = FND_API.g_true) THEN
12312                                    --***************************************************
12313                                    --************ADDING TO AUDIT LOG********************
12314                                    --***************************************************
12315                                    Ibc_Utilities_Pvt.log_action(
12316                                        p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
12317                                        ,p_parent_value  => px_content_item_id
12318                                        ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
12319                                        ,p_object_value1 => px_citem_ver_id
12320                                        ,p_object_value2 => lang
12321                                        ,p_object_value3 => NULL
12322                                        ,p_object_value4 => NULL
12323                                        ,p_object_value5 => NULL
12324                                        ,p_description   => 'Updating of content item version post approval with upsert api'
12325                                    );
12326                                    --***************************************************
12327             END IF;
12328         END IF; -- END UPDATE POST APPROVAL OF VERSION ----------------------------------
12329     END IF;
12330 -- --------------------------------------------------------------------
12331 
12332   -- Renditions -------
12333   IF (p_item_renditions IS NOT NULL AND
12334      do_version <> G_COMMAND_POST_APPROVAL_UPDATE) THEN
12335     -- Insert all renditions
12336     FOR I IN 1..p_item_renditions.COUNT LOOP
12337 
12338       -- The default rendition will be handle by IBC_CIEM_VERSIONS_PKG
12339       -- Here only the non-default renditions will be inserted.
12340       OPEN c_lob(p_item_renditions(I));
12341       FETCH c_lob INTO l_attach_file_name, l_attach_rendition_mtype;
12342       CLOSE c_lob;
12343       l_attach_rendition_mtype := GET_MIME_TYPE(l_attach_rendition_mtype);
12344 
12345       l_rendition_id := NULL;
12346       IBC_RENDITIONS_PKG.insert_row(
12347         Px_rowid                   => row_id
12348         ,Px_RENDITION_ID          => l_rendition_id
12349         ,p_object_version_number => G_OBJ_VERSION_DEFAULT
12350         ,P_LANGUAGE                 => lang
12351         ,P_FILE_ID                 => p_item_renditions(I)
12352         ,P_FILE_NAME               => l_attach_file_name
12353         ,P_CITEM_VERSION_ID       => px_citem_ver_id
12354         ,P_MIME_TYPE                => l_attach_rendition_mtype
12355       );
12356 
12357     END LOOP;
12358   END IF;
12359 
12360     ----------------------------------
12361     -- COMPONENT ITEMS ---------------
12362     ----------------------------------
12363    IF ( (p_component_citems IS NOT NULL) AND (p_component_atypes IS NOT NULL) AND
12364         (p_component_citems.COUNT > 0) AND (p_component_atypes.COUNT > 0) AND
12365         (x_return_status = FND_API.G_RET_STS_SUCCESS) ) THEN
12366       --DBMS_OUTPUT.put_line('COMPONENTS');
12367       IF ( (do_version = G_COMMAND_UPDATE) AND (p_update = FND_API.g_true) ) THEN
12368       --delete all components before adding new ones!
12369       --DBMS_OUTPUT.put_line('DELETING OLD COMPONENTS');
12370          DELETE FROM
12371             ibc_compound_relations
12372          WHERE
12373             citem_version_id = px_citem_ver_id;
12374       END IF;
12375 
12376       IF (do_version <> G_COMMAND_TRANSLATE AND
12377           do_version <> G_COMMAND_POST_APPROVAL_UPDATE  AND
12378           p_component_citems(1) <> 0) THEN
12379          -- translations cannot update components.
12380          insert_component_items_int(
12381             p_citem_ver_id          => px_citem_ver_id
12382             ,p_content_item_id      => px_content_item_id
12383             ,p_content_item_ids     => p_component_citems
12384             ,p_citem_ver_ids        => p_component_citem_ver_ids
12385             ,p_attribute_type_codes => p_component_atypes
12386             ,p_ctype_code           => p_ctype_code
12387             ,p_sort_order           => p_sort_order
12388             ,p_log_action           => p_log_action
12389             ,x_return_status      => x_return_status
12390          );
12391       END IF;
12392     END IF;
12393 
12394   ----------------------------------
12395   -- Content Item Keywords ---------
12396   ----------------------------------
12397   -- It will always remove the existing keywords and then insert the new ones
12398   -- On Update
12399   IF ((do_version IN (G_COMMAND_UPDATE,G_COMMAND_POST_APPROVAL_UPDATE)) AND
12400      (p_update = FND_API.g_true) ) THEN
12401     DELETE
12402       FROM ibc_citem_keywords
12403      WHERE content_item_id = px_content_item_id;
12404   END IF;
12405 
12406    IF ( (p_keywords IS NOT NULL)
12407          AND
12408          (x_return_status = FND_API.G_RET_STS_SUCCESS)
12409       )
12410       THEN
12411      FOR I IN 1..p_keywords.COUNT LOOP
12412        IBC_CITEM_KEYWORDS_PKG.insert_row(
12413          x_rowid                  => row_id
12414          ,p_content_item_id       => px_content_item_id
12415          ,p_keyword               => p_keywords(I)
12416          ,p_object_version_number => 1
12417        );
12418      END LOOP;
12419    END IF;
12420 
12421 
12422 
12423     -------------------------------------
12424     -- APPROVE --------------------------
12425     -------------------------------------
12426     IF ((x_return_status = FND_API.G_RET_STS_SUCCESS) AND
12427          (p_status = Ibc_Utilities_Pub.G_STV_APPROVED) AND
12428          (do_version NOT IN (G_COMMAND_TRANSLATE,G_COMMAND_POST_APPROVAL_UPDATE))) THEN
12429         approve_citem_version_int(
12430             p_citem_ver_id              => px_citem_ver_id
12431             ,p_content_item_id          => px_content_item_id
12432             ,p_base_lang                => base_lang
12433             ,p_log_action               => p_log_action
12434             ,px_object_version_number   => px_object_version_number
12435             ,x_return_status            => x_return_status
12436         );
12437     END IF;
12438 
12439     IF(x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
12440         RAISE FND_API.G_EXC_ERROR;
12441     END IF;
12442 
12443     -- COMMIT?
12444     IF (p_commit = FND_API.g_true) THEN
12445         COMMIT;
12446     END IF;
12447 
12448     -- Standard call to get message count and if count is 1, get message info.
12449     FND_MSG_PUB.Count_And_Get(
12450         p_count           =>      x_msg_count,
12451         p_data            =>      x_msg_data
12452     );
12453 
12454     ---------------------------------------
12455     -- SEND NOTIFICATIONS TO TRANSLATOR---
12456     ---------------------------------------
12457     IF ((p_trans_required = FND_API.g_true) AND (x_return_status = FND_API.G_RET_STS_SUCCESS) AND
12458          (do_version = G_COMMAND_POST_APPROVAL_UPDATE)) THEN
12459        IBC_CITEM_WORKFLOW_PVT.Notify_Translator(p_content_item_id  => px_content_item_id );
12460     END IF;
12461 
12462 
12463     IF(x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
12464         RAISE FND_API.G_EXC_ERROR;
12465     END IF;
12466 
12467     -- COMMIT?
12468     IF (p_commit = FND_API.g_true) THEN
12469         COMMIT;
12470     END IF;
12471 
12472     -- Standard call to get message count and if count is 1, get message info.
12473     FND_MSG_PUB.Count_And_Get(
12474         p_count           =>      x_msg_count,
12475         p_data            =>      x_msg_data
12476     );
12477 
12478 
12479 
12480 
12481     IF IBC_DEBUG_PVT.debug_enabled THEN
12482       IBC_DEBUG_PVT.start_process(
12483          p_proc_type  => 'PROCEDURE',
12484          p_proc_name  => 'End Upsert_Item_Full',
12485          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
12486                            p_tag     => 'PARAMETERS',
12487                            p_parms   => JTF_VARCHAR2_TABLE_32767(
12488                                           'p_ctype_code', p_ctype_code,
12489                                           'p_citem_name', p_citem_name,
12490                                           'p_citem_description', p_citem_description,
12491                                           'p_dir_node_id', p_dir_node_id,
12492                                           'p_owner_resource_id', p_owner_resource_id,
12493                                           'p_owner_resource_type', p_owner_resource_type,
12494                                           'p_reference_code', p_reference_code,
12495                                           'p_trans_required', p_trans_required,
12496                                           'p_parent_item_id', p_parent_item_id,
12497                                           'p_lock_flag', p_lock_flag,
12498                                           'p_wd_restricted', p_wd_restricted,
12499                                           'p_start_date', TO_CHAR(p_start_date, 'YYYYMMDD HH24:MI:SS'),
12500                                           'p_end_date',   TO_CHAR(p_end_date, 'YYYYMMDD HH24:MI:SS'),
12501                                           'p_attribute_type_codes', IBC_DEBUG_PVT.make_list(p_attribute_type_codes),
12502                                           'p_attributes', IBC_DEBUG_PVT.make_list_VC32767(p_attributes),
12503                                           'p_attach_file_id', p_attach_file_id,
12504                                           'p_item_renditions', IBC_DEBUG_PVT.make_list(p_item_renditions),
12505                                           'p_default_rendition', p_default_rendition,
12506                                           'p_component_citems', IBC_DEBUG_PVT.make_list(p_component_citems),
12507                                           'p_component_citem_ver_ids', IBC_DEBUG_PVT.make_list(p_component_citem_Ver_ids),
12508                                           'p_component_atypes', IBC_DEBUG_PVT.make_list(p_component_atypes),
12509                                           'p_sort_order', IBC_DEBUG_PVT.make_list(p_sort_order),
12510                                           'p_keywords', IBC_DEBUG_PVT.make_list(p_keywords),
12511                                           'p_status', p_status,
12512                                           'p_log_action', p_log_action,
12513                                           'p_language', p_language,
12514                                           'p_update', p_update,
12515                                           'p_commit', p_commit,
12516                                           'p_api_version_number', p_api_version_number,
12517                                           'p_init_msg_list', p_init_msg_list,
12518                                           'px_content_item_id', px_content_item_id,
12519                                           'px_citem_ver_id', px_citem_ver_id,
12520                                           'px_object_version_number', px_object_version_number
12521                                         )
12522                            )
12523       );
12524     END IF;
12525 
12526 
12527     IF IBC_DEBUG_PVT.debug_enabled THEN
12528       IBC_DEBUG_PVT.end_process(
12529         IBC_DEBUG_PVT.make_parameter_list(
12530           p_tag    => 'OUTPUT',
12531           p_parms  => JTF_VARCHAR2_TABLE_4000(
12532                         'px_content_item_id', px_content_item_id,
12533                         'px_citem_ver_id', px_citem_ver_id,
12534                         'px_object_version_number', px_object_version_number,
12535                         'x_return_status', x_return_status,
12536                         'x_msg_count', x_msg_count,
12537                         'x_msg_data', x_msg_data
12538                       )
12539         )
12540       );
12541     END IF;
12542 
12543 EXCEPTION
12544     WHEN FND_API.G_EXC_ERROR THEN
12545       --DBMS_OUTPUT.put_line('Expected Error');
12546       ROLLBACK TO svpt_upsert_item;
12547       Ibc_Utilities_Pvt.handle_exceptions(
12548          p_api_name           => L_API_NAME
12549          ,p_pkg_name          => G_PKG_NAME
12550          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
12551          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
12552          ,p_sqlcode           => SQLCODE
12553          ,p_sqlerrm           => SQLERRM
12554          ,x_msg_count         => x_msg_count
12555          ,x_msg_data          => x_msg_data
12556          ,x_return_status     => x_return_status
12557       );
12558       IF IBC_DEBUG_PVT.debug_enabled THEN
12559         IBC_DEBUG_PVT.end_process(
12560           IBC_DEBUG_PVT.make_parameter_list(
12561             p_tag    => 'OUTPUT',
12562             p_parms  => JTF_VARCHAR2_TABLE_4000(
12563                           'x_return_status', x_return_status,
12564                           'x_msg_count', x_msg_count,
12565                           'x_msg_data', x_msg_data
12566                         )
12567           )
12568         );
12569       END IF;
12570   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
12571       --DBMS_OUTPUT.put_line('Unexpected error');
12572       ROLLBACK TO svpt_upsert_item;
12573       Ibc_Utilities_Pvt.handle_exceptions(
12574          p_api_name           => L_API_NAME
12575          ,p_pkg_name          => G_PKG_NAME
12576          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
12577          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
12578          ,p_sqlcode           => SQLCODE
12579          ,p_sqlerrm           => SQLERRM
12580          ,x_msg_count         => x_msg_count
12581          ,x_msg_data          => x_msg_data
12582          ,x_return_status     => x_return_status
12583       );
12584       IF IBC_DEBUG_PVT.debug_enabled THEN
12585         IBC_DEBUG_PVT.end_process(
12586           IBC_DEBUG_PVT.make_parameter_list(
12587             p_tag    => 'OUTPUT',
12588             p_parms  => JTF_VARCHAR2_TABLE_4000(
12589                           'x_return_status', x_return_status,
12590                           'x_msg_count', x_msg_count,
12591                           'x_msg_data', x_msg_data
12592                         )
12593           )
12594         );
12595       END IF;
12596   WHEN OTHERS THEN
12597       --DBMS_OUTPUT.put_line('Other error');
12598       ROLLBACK TO svpt_upsert_item;
12599       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
12600          p_api_name           => L_API_NAME
12601          ,p_pkg_name          => G_PKG_NAME
12602          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
12603          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
12604          ,p_sqlcode           => SQLCODE
12605          ,p_sqlerrm           => SQLERRM
12606          ,x_msg_count         => x_msg_count
12607          ,x_msg_data          => x_msg_data
12608          ,x_return_status     => x_return_status
12609       );
12610       IF IBC_DEBUG_PVT.debug_enabled THEN
12611         IBC_DEBUG_PVT.end_process(
12612           IBC_DEBUG_PVT.make_parameter_list(
12613             p_tag    => 'OUTPUT',
12614             p_parms  => JTF_VARCHAR2_TABLE_4000(
12615                           'x_return_status', x_return_status,
12616                           'x_msg_count', x_msg_count,
12617                           'x_msg_data', x_msg_data,
12618                           'EXCEPTION', SQLERRM
12619                         )
12620           )
12621         );
12622       END IF;
12623  END upsert_item_full;
12624 
12625 -- --------------------------------------------------------------
12626 -- UPSERT ITEM FULL
12627 --
12628 --  Overloaded - for backwards compatibility support of 4K limit
12629 --               for attr values
12630 -- --------------------------------------------------------------
12631 PROCEDURE upsert_item_full(
12632       p_ctype_code                 IN VARCHAR2
12633        ,p_citem_name                IN VARCHAR2
12634        ,p_citem_description         IN VARCHAR2
12635        ,p_dir_node_id               IN NUMBER
12636        ,p_owner_resource_id         IN NUMBER
12637        ,p_owner_resource_type       IN VARCHAR2
12638        ,p_reference_code            IN VARCHAR2
12639        ,p_trans_required            IN VARCHAR2
12640        ,p_parent_item_id            IN NUMBER
12641        ,p_lock_flag                 IN VARCHAR2
12642        ,p_wd_restricted             IN VARCHAR2
12643        ,p_start_date                IN DATE
12644        ,p_end_date                  IN DATE
12645        ,p_attribute_type_codes      IN JTF_VARCHAR2_TABLE_100
12646        ,p_attributes                IN JTF_VARCHAR2_TABLE_4000
12647        ,p_attach_file_id            IN NUMBER
12648        ,p_item_renditions           IN JTF_NUMBER_TABLE
12649        ,p_default_rendition         IN NUMBER
12650        ,p_component_citems          IN JTF_NUMBER_TABLE
12651        ,p_component_citem_ver_ids   IN JTF_NUMBER_TABLE
12652        ,p_component_atypes          IN JTF_VARCHAR2_TABLE_100
12653        ,p_sort_order                IN JTF_NUMBER_TABLE
12654        ,p_keywords                  IN JTF_VARCHAR2_TABLE_100
12655        ,p_status                    IN VARCHAR2
12656        ,p_log_action                IN VARCHAR2
12657        ,p_language                  IN VARCHAR2
12658        ,p_update                    IN VARCHAR2
12659        ,p_commit                    IN VARCHAR2
12660        ,p_api_version_number        IN NUMBER
12661        ,p_init_msg_list             IN VARCHAR2
12662        ,px_content_item_id          IN OUT NOCOPY NUMBER
12663        ,px_citem_ver_id             IN OUT NOCOPY NUMBER
12664        ,px_object_version_number    IN OUT NOCOPY NUMBER
12665        ,x_return_status             OUT NOCOPY VARCHAR2
12666        ,x_msg_count                 OUT NOCOPY NUMBER
12667        ,x_msg_data                  OUT NOCOPY VARCHAR2
12668 )IS
12669   l_tmp_attributes   JTF_VARCHAR2_TABLE_32767;
12670 BEGIN
12671 
12672   IF p_attributes IS NOT NULL AND p_attributes.COUNT > 0 THEN
12673     l_tmp_attributes := JTF_VARCHAR2_TABLE_32767();
12674     l_tmp_attributes.extend(p_attributes.COUNT);
12675     FOR I IN 1..p_attributes.COUNT LOOP
12676       l_tmp_attributes(I) := p_attributes(I);
12677     END LOOP;
12678   END IF;
12679 
12680   upsert_item_full(
12681         p_ctype_code                => p_ctype_code
12682        ,p_citem_name                => p_citem_name
12683        ,p_citem_description         => p_citem_description
12684        ,p_dir_node_id               => p_dir_node_id
12685        ,p_owner_resource_id         => p_owner_resource_id
12686        ,p_owner_resource_type       => p_owner_resource_type
12687        ,p_reference_code            => p_reference_code
12688        ,p_trans_required            => p_trans_required
12689        ,p_parent_item_id            => p_parent_item_id
12690        ,p_lock_flag                 => p_lock_flag
12691        ,p_wd_restricted             => p_wd_restricted
12692        ,p_start_date                => p_start_date
12693        ,p_end_date                  => p_end_date
12694        ,p_attribute_type_codes      => p_attribute_type_codes
12695        ,p_attributes                => l_tmp_attributes
12696        ,p_attach_file_id            => p_attach_file_id
12697        ,p_item_renditions           => p_item_renditions
12698        ,p_default_rendition         => p_default_rendition
12699        ,p_component_citems          => p_component_citems
12700        ,p_component_citem_ver_ids   => p_component_citem_ver_ids
12701        ,p_component_atypes          => p_component_atypes
12702        ,p_sort_order                => p_sort_order
12703        ,p_keywords                  => p_keywords
12704        ,p_status                    => p_status
12705        ,p_log_action                => p_log_action
12706        ,p_language                  => p_language
12707        ,p_update                    => p_update
12708        ,p_commit                    => p_commit
12709        ,p_api_version_number        => p_api_version_number
12710        ,p_init_msg_list             => p_init_msg_list
12711        ,px_content_item_id          => px_content_item_id
12712        ,px_citem_ver_id             => px_citem_ver_id
12713        ,px_object_version_number    => px_object_version_number
12714        ,x_return_status             => x_return_status
12715        ,x_msg_count                 => x_msg_count
12716        ,x_msg_data                  => x_msg_data
12717   );
12718 
12719 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
12720 EXCEPTION
12721   WHEN OTHERS THEN
12722     RAISE;
12723 END upsert_item_full;
12724 
12725 -- --------------------------------------------------------------
12726 -- UPSERT ITEM FULL
12727 --
12728 --  Overloaded - Backwards compatible for "old" attachment renditions
12729 -- --------------------------------------------------------------
12730 PROCEDURE upsert_item_full(
12731       p_ctype_code                 IN VARCHAR2
12732        ,p_citem_name                IN VARCHAR2
12733        ,p_citem_description         IN VARCHAR2
12734        ,p_dir_node_id               IN NUMBER
12735        ,p_owner_resource_id         IN NUMBER
12736        ,p_owner_resource_type       IN VARCHAR2
12737        ,p_reference_code            IN VARCHAR2
12738        ,p_trans_required            IN VARCHAR2
12739        ,p_parent_item_id            IN NUMBER
12740        ,p_lock_flag                 IN VARCHAR2
12741        ,p_wd_restricted             IN VARCHAR2
12742        ,p_start_date                IN DATE
12743        ,p_end_date                  IN DATE
12744        ,p_attribute_type_codes      IN JTF_VARCHAR2_TABLE_100
12745        ,p_attributes                IN JTF_VARCHAR2_TABLE_4000
12746        ,p_attach_file_ids           IN JTF_NUMBER_TABLE
12747        ,p_default_rendition         IN NUMBER
12748        ,p_component_citems          IN JTF_NUMBER_TABLE
12749        ,p_component_citem_ver_ids   IN JTF_NUMBER_TABLE
12750        ,p_component_atypes          IN JTF_VARCHAR2_TABLE_100
12751        ,p_sort_order                IN JTF_NUMBER_TABLE
12752        ,p_keywords                  IN JTF_VARCHAR2_TABLE_100
12753        ,p_status                    IN VARCHAR2
12754        ,p_log_action                IN VARCHAR2
12755        ,p_language                  IN VARCHAR2
12756        ,p_update                    IN VARCHAR2
12757        ,p_commit                    IN VARCHAR2
12758        ,p_api_version_number        IN NUMBER
12759        ,p_init_msg_list             IN VARCHAR2
12760        ,px_content_item_id          IN OUT NOCOPY NUMBER
12761        ,px_citem_ver_id             IN OUT NOCOPY NUMBER
12762        ,px_object_version_number    IN OUT NOCOPY NUMBER
12763        ,x_return_status             OUT NOCOPY VARCHAR2
12764        ,x_msg_count                 OUT NOCOPY NUMBER
12765        ,x_msg_data                  OUT NOCOPY VARCHAR2
12766 ) IS
12767    l_attach_file_id  NUMBER;
12768 BEGIN
12769   IF p_attach_file_ids IS NOT NULL THEN
12770     l_attach_file_id := p_attach_file_ids(1);
12771   END IF;
12772   upsert_item_full(
12773      p_ctype_code                 => p_ctype_code
12774     ,p_citem_name                => p_citem_name
12775     ,p_citem_description         => p_citem_description
12776     ,p_dir_node_id               => p_dir_node_id
12777     ,p_owner_resource_id         => p_owner_resource_id
12778     ,p_owner_resource_type       => p_owner_resource_type
12779     ,p_reference_code            => p_reference_code
12780     ,p_trans_required            => p_trans_required
12781     ,p_parent_item_id            => p_parent_item_id
12782     ,p_lock_flag                 => p_lock_flag
12783     ,p_wd_restricted             => p_wd_restricted
12784     ,p_start_date                => p_start_date
12785     ,p_end_date                  => p_end_date
12786     ,p_attribute_type_codes      => p_attribute_type_codes
12787     ,p_attributes                => p_attributes
12788     ,p_attach_file_id            => l_attach_file_id
12789     ,p_item_renditions           => NULL
12790     ,p_default_rendition         => NULL
12791     ,p_component_citems          => p_component_citems
12792     ,p_component_citem_ver_ids   => p_component_citem_ver_ids
12793     ,p_component_atypes          => p_component_atypes
12794     ,p_sort_order                => p_sort_order
12795     ,p_keywords                  => p_keywords
12796     ,p_status                    => p_status
12797     ,p_log_action                => p_log_action
12798     ,p_language                  => p_language
12799     ,p_update                    => p_update
12800     ,p_commit                    => p_commit
12801     ,p_api_version_number        => p_api_version_number
12802     ,p_init_msg_list             => p_init_msg_list
12803     ,px_content_item_id          => px_content_item_id
12804     ,px_citem_ver_id             => px_citem_ver_id
12805     ,px_object_version_number    => px_object_version_number
12806     ,x_return_status             => x_return_status
12807     ,x_msg_count                 => x_msg_count
12808     ,x_msg_data                  => x_msg_data
12809   );
12810 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
12811 EXCEPTION
12812   WHEN OTHERS THEN
12813     RAISE;
12814 END upsert_item_full;
12815 
12816 -- --------------------------------------------------------------
12817 -- UPSERT ITEM FULL
12818 --
12819 -- Overloaded - No access to keywords
12820 -- --------------------------------------------------------------
12821 PROCEDURE upsert_item_full(
12822       p_ctype_code                 IN VARCHAR2
12823        ,p_citem_name                IN VARCHAR2
12824        ,p_citem_description         IN VARCHAR2
12825        ,p_dir_node_id               IN NUMBER
12826        ,p_owner_resource_id         IN NUMBER
12827        ,p_owner_resource_type       IN VARCHAR2
12828        ,p_reference_code            IN VARCHAR2
12829        ,p_trans_required            IN VARCHAR2
12830        ,p_parent_item_id            IN NUMBER
12831        ,p_lock_flag                 IN VARCHAR2
12832        ,p_wd_restricted             IN VARCHAR2
12833        ,p_start_date                IN DATE
12834        ,p_end_date                  IN DATE
12835        ,p_attribute_type_codes      IN JTF_VARCHAR2_TABLE_100
12836        ,p_attributes                IN JTF_VARCHAR2_TABLE_4000
12837        ,p_attach_file_ids           IN JTF_NUMBER_TABLE
12838        ,p_default_rendition         IN NUMBER
12839        ,p_component_citems          IN JTF_NUMBER_TABLE
12840        ,p_component_citem_ver_ids   IN JTF_NUMBER_TABLE
12841        ,p_component_atypes          IN JTF_VARCHAR2_TABLE_100
12842        ,p_sort_order                IN JTF_NUMBER_TABLE
12843        ,p_status                    IN VARCHAR2
12844        ,p_log_action                IN VARCHAR2
12845        ,p_language                  IN VARCHAR2
12846        ,p_update                    IN VARCHAR2
12847        ,p_commit                    IN VARCHAR2
12848        ,p_api_version_number        IN NUMBER
12849        ,p_init_msg_list             IN VARCHAR2
12850        ,px_content_item_id          IN OUT NOCOPY NUMBER
12851        ,px_citem_ver_id             IN OUT NOCOPY NUMBER
12852        ,px_object_version_number    IN OUT NOCOPY NUMBER
12853        ,x_return_status             OUT NOCOPY VARCHAR2
12854        ,x_msg_count                 OUT NOCOPY NUMBER
12855        ,x_msg_data                  OUT NOCOPY VARCHAR2
12856 )IS
12857 BEGIN
12858   upsert_item_full(
12859       p_ctype_code                 => p_ctype_code
12860      ,p_citem_name                => p_citem_name
12861      ,p_citem_description         => p_citem_description
12862      ,p_dir_node_id               => p_dir_node_id
12863      ,p_owner_resource_id         => p_owner_resource_id
12864      ,p_owner_resource_type       => p_owner_resource_type
12865      ,p_reference_code            => p_reference_code
12866      ,p_trans_required            => p_trans_required
12867      ,p_parent_item_id            => p_parent_item_id
12868      ,p_lock_flag                 => p_lock_flag
12869      ,p_wd_restricted             => p_wd_restricted
12870      ,p_start_date                => p_start_date
12871      ,p_end_date                  => p_end_date
12872      ,p_attribute_type_codes      => p_attribute_type_codes
12873      ,p_attributes                => p_attributes
12874      ,p_attach_file_ids           => p_attach_file_ids
12875      ,p_default_rendition         => p_default_rendition
12876      ,p_component_citems          => p_component_citems
12877      ,p_component_citem_ver_ids   => p_component_citem_ver_ids
12878      ,p_component_atypes          => p_component_atypes
12879      ,p_sort_order                => p_sort_order
12880      ,p_keywords                  => NULL
12881      ,p_status                    => p_status
12882      ,p_log_action                => p_log_action
12883      ,p_language                  => p_language
12884      ,p_update                    => p_update
12885      ,p_commit                    => p_commit
12886      ,p_api_version_number        => p_api_version_number
12887      ,p_init_msg_list             => p_init_msg_list
12888      ,px_content_item_id          => px_content_item_id
12889      ,px_citem_ver_id             => px_citem_ver_id
12890      ,px_object_version_number    => px_object_version_number
12891      ,x_return_status             => x_return_status
12892      ,x_msg_count                 => x_msg_count
12893      ,x_msg_data                  => x_msg_data
12894   );
12895 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
12896 EXCEPTION
12897   WHEN OTHERS THEN
12898     RAISE;
12899 END upsert_item_full;
12900 
12901 -- --------------------------------------------------------------
12902 -- UPSERT ITEM FULL
12903 --
12904 -- Overloaded - No access to component subitem versions
12905 -- --------------------------------------------------------------
12906 PROCEDURE upsert_item_full(
12907       p_ctype_code                 IN VARCHAR2
12908        ,p_citem_name                IN VARCHAR2
12909        ,p_citem_description         IN VARCHAR2
12910        ,p_dir_node_id               IN NUMBER
12911        ,p_owner_resource_id         IN NUMBER
12912        ,p_owner_resource_type       IN VARCHAR2
12913        ,p_reference_code            IN VARCHAR2
12914        ,p_trans_required            IN VARCHAR2
12915        ,p_parent_item_id            IN NUMBER
12916        ,p_lock_flag                 IN VARCHAR2
12917        ,p_wd_restricted             IN VARCHAR2
12918        ,p_start_date                IN DATE
12919        ,p_end_date                  IN DATE
12920        ,p_attribute_type_codes      IN JTF_VARCHAR2_TABLE_100
12921        ,p_attributes                IN JTF_VARCHAR2_TABLE_4000
12922        ,p_attach_file_ids           IN JTF_NUMBER_TABLE
12923        ,p_default_rendition         IN NUMBER
12924        ,p_component_citems          IN JTF_NUMBER_TABLE
12925        ,p_component_atypes          IN JTF_VARCHAR2_TABLE_100
12926        ,p_sort_order                IN JTF_NUMBER_TABLE
12927        ,p_status                    IN VARCHAR2
12928        ,p_log_action                IN VARCHAR2
12929        ,p_language                  IN VARCHAR2
12930        ,p_update                    IN VARCHAR2
12931        ,p_commit                    IN VARCHAR2
12932        ,p_api_version_number        IN NUMBER
12933        ,p_init_msg_list             IN VARCHAR2
12934        ,px_content_item_id          IN OUT NOCOPY NUMBER
12935        ,px_citem_ver_id             IN OUT NOCOPY NUMBER
12936        ,px_object_version_number    IN OUT NOCOPY NUMBER
12937        ,x_return_status             OUT NOCOPY VARCHAR2
12938        ,x_msg_count                 OUT NOCOPY NUMBER
12939        ,x_msg_data                  OUT NOCOPY VARCHAR2
12940 )IS
12941 BEGIN
12942   upsert_item_full(
12943       p_ctype_code                 => p_ctype_code
12944      ,p_citem_name                => p_citem_name
12945      ,p_citem_description         => p_citem_description
12946      ,p_dir_node_id               => p_dir_node_id
12947      ,p_owner_resource_id         => p_owner_resource_id
12948      ,p_owner_resource_type       => p_owner_resource_type
12949      ,p_reference_code            => p_reference_code
12950      ,p_trans_required            => p_trans_required
12951      ,p_parent_item_id            => p_parent_item_id
12952      ,p_lock_flag                 => p_lock_flag
12953      ,p_wd_restricted             => p_wd_restricted
12954      ,p_start_date                => p_start_date
12955      ,p_end_date                  => p_end_date
12956      ,p_attribute_type_codes      => p_attribute_type_codes
12957      ,p_attributes                => p_attributes
12958      ,p_attach_file_ids           => p_attach_file_ids
12959      ,p_default_rendition         => p_default_rendition
12960      ,p_component_citems          => p_component_citems
12961      ,p_component_citem_ver_ids   => NULL
12962      ,p_component_atypes          => p_component_atypes
12963      ,p_sort_order                => p_sort_order
12964      ,p_status                    => p_status
12965      ,p_log_action                => p_log_action
12966      ,p_language                  => p_language
12967      ,p_update                    => p_update
12968      ,p_commit                    => p_commit
12969      ,p_api_version_number        => p_api_version_number
12970      ,p_init_msg_list             => p_init_msg_list
12971      ,px_content_item_id          => px_content_item_id
12972      ,px_citem_ver_id             => px_citem_ver_id
12973      ,px_object_version_number    => px_object_version_number
12974      ,x_return_status             => x_return_status
12975      ,x_msg_count                 => x_msg_count
12976      ,x_msg_data                  => x_msg_data
12977   );
12978 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
12979 EXCEPTION
12980   WHEN OTHERS THEN
12981     RAISE;
12982 END upsert_item_full;
12983 
12984 -- --------------------------------------------------------------
12985 -- UPSERT ITEM FULL
12986 --  Wrapper - for no renditions use.
12987 -- --------------------------------------------------------------
12988 PROCEDURE upsert_item_full(
12989       p_ctype_code                 IN VARCHAR2
12990        ,p_citem_name                IN VARCHAR2
12991        ,p_citem_description         IN VARCHAR2
12992        ,p_dir_node_id               IN NUMBER
12993        ,p_owner_resource_id         IN NUMBER
12994        ,p_owner_resource_type       IN VARCHAR2
12995        ,p_reference_code            IN VARCHAR2
12996        ,p_trans_required            IN VARCHAR2
12997        ,p_parent_item_id            IN NUMBER
12998        ,p_lock_flag                 IN VARCHAR2
12999        ,p_wd_restricted             IN VARCHAR2
13000        ,p_start_date                IN DATE
13001        ,p_end_date                  IN DATE
13002        ,p_attribute_type_codes      IN JTF_VARCHAR2_TABLE_100
13003        ,p_attributes                IN JTF_VARCHAR2_TABLE_4000
13004        ,p_attach_file_id            IN NUMBER
13005        ,p_component_citems          IN JTF_NUMBER_TABLE
13006        ,p_component_atypes          IN JTF_VARCHAR2_TABLE_100
13007        ,p_sort_order                IN JTF_NUMBER_TABLE
13008        ,p_status                    IN VARCHAR2
13009        ,p_log_action                IN VARCHAR2
13010        ,p_language                  IN VARCHAR2
13011        ,p_update                    IN VARCHAR2
13012        ,p_commit                    IN VARCHAR2
13013        ,p_api_version_number        IN NUMBER
13014        ,p_init_msg_list             IN VARCHAR2
13015        ,px_content_item_id          IN OUT NOCOPY NUMBER
13016        ,px_citem_ver_id             IN OUT NOCOPY NUMBER
13017        ,px_object_version_number    IN OUT NOCOPY NUMBER
13018        ,x_return_status             OUT NOCOPY VARCHAR2
13019        ,x_msg_count                 OUT NOCOPY NUMBER
13020        ,x_msg_data                  OUT NOCOPY VARCHAR2
13021 ) IS
13022    l_attach_file_ids           JTF_NUMBER_TABLE;
13023    l_default_rendition         NUMBER;
13024 BEGIN
13025    --DBMS_OUTPUT.put_line('----- upsert_item -----');
13026    IF p_attach_file_id IS NOT NULL THEN
13027      l_attach_file_ids   := JTF_NUMBER_TABLE();
13028      l_attach_file_ids.extend;
13029      l_attach_file_ids(1) := p_attach_file_id;
13030      l_default_rendition := 1;
13031    END IF;
13032    upsert_item_full(
13033         p_ctype_code                 => p_ctype_code
13034        ,p_citem_name                => p_citem_name
13035        ,p_citem_description         => p_citem_description
13036        ,p_dir_node_id               => p_dir_node_id
13037        ,p_owner_resource_id         => p_owner_resource_id
13038        ,p_owner_resource_type       => p_owner_resource_type
13039        ,p_reference_code            => p_reference_code
13040        ,p_trans_required            => p_trans_required
13041        ,p_parent_item_id            => p_parent_item_id
13042        ,p_lock_flag                 => p_lock_flag
13043        ,p_wd_restricted             => p_wd_restricted
13044        ,p_start_date                => p_start_date
13045        ,p_end_date                  => p_end_date
13046        ,p_attribute_type_codes      => p_attribute_type_codes
13047        ,p_attributes                => p_attributes
13048        ,p_attach_file_ids           => l_attach_file_ids
13049        ,p_default_rendition         => l_default_rendition
13050        ,p_component_citems          => p_component_citems
13051        ,p_component_atypes          => p_component_atypes
13052        ,p_sort_order                => p_sort_order
13053        ,p_status                    => p_status
13054        ,p_log_action                => p_log_action
13055        ,p_language                  => p_language
13056        ,p_update                    => p_update
13057        ,p_commit                    => p_commit
13058        ,p_api_version_number        => p_api_version_number
13059        ,p_init_msg_list             => p_init_msg_list
13060        ,px_content_item_id          => px_content_item_id
13061        ,px_citem_ver_id             => px_citem_ver_id
13062        ,px_object_version_number    => px_object_version_number
13063        ,x_return_status             => x_return_status
13064        ,x_msg_count                 => x_msg_count
13065        ,x_msg_data                  => x_msg_data
13066    );
13067 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
13068 EXCEPTION
13069   WHEN OTHERS THEN
13070     RAISE;
13071 END;
13072 
13073 
13074 -- --------------------------------------------------------------
13075 -- UPSERT ITEM
13076 --
13077 -- Just a wrapper for upsert_item_full
13078 -- --------------------------------------------------------------
13079 PROCEDURE upsert_item(
13080         p_ctype_code                 IN VARCHAR2
13081        ,p_citem_name                IN VARCHAR2
13082        ,p_citem_description         IN VARCHAR2
13083        ,p_dir_node_id               IN NUMBER
13084        ,p_owner_resource_id         IN NUMBER
13085        ,p_owner_resource_type       IN VARCHAR2
13086        ,p_reference_code            IN VARCHAR2
13087        ,p_trans_required            IN VARCHAR2
13088        ,p_parent_item_id            IN NUMBER
13089        ,p_lock_flag                 IN VARCHAR2
13090        ,p_wd_restricted             IN VARCHAR2
13091        ,p_start_date                IN DATE
13092        ,p_end_date                  IN DATE
13093        ,p_attribute_type_codes      IN JTF_VARCHAR2_TABLE_100
13094        ,p_attributes                IN JTF_VARCHAR2_TABLE_4000
13095        ,p_attach_file_id            IN NUMBER
13096        ,p_component_citems          IN JTF_NUMBER_TABLE
13097        ,p_component_atypes          IN JTF_VARCHAR2_TABLE_100
13098        ,p_sort_order                IN JTF_NUMBER_TABLE
13099        ,p_status                    IN VARCHAR2
13100        ,p_log_action                IN VARCHAR2
13101        ,p_language                  IN VARCHAR2
13102        ,p_commit                    IN VARCHAR2
13103        ,p_api_version_number        IN NUMBER
13104        ,p_init_msg_list             IN VARCHAR2
13105        ,px_content_item_id          IN OUT NOCOPY NUMBER
13106        ,px_citem_ver_id             IN OUT NOCOPY NUMBER
13107        ,px_object_version_number    IN OUT NOCOPY NUMBER
13108        ,x_return_status             OUT NOCOPY VARCHAR2
13109        ,x_msg_count                 OUT NOCOPY NUMBER
13110        ,x_msg_data                  OUT NOCOPY VARCHAR2
13111 )IS
13112 BEGIN
13113                                                                     --DBMS_OUTPUT.put_line('----- upsert_item -----');
13114    upsert_item_full(
13115         p_ctype_code                 => p_ctype_code
13116        ,p_citem_name                => p_citem_name
13117        ,p_citem_description         => p_citem_description
13118        ,p_dir_node_id               => p_dir_node_id
13119        ,p_owner_resource_id         => p_owner_resource_id
13120        ,p_owner_resource_type       => p_owner_resource_type
13121        ,p_reference_code            => p_reference_code
13122        ,p_trans_required            => p_trans_required
13123        ,p_parent_item_id            => p_parent_item_id
13124        ,p_lock_flag                 => p_lock_flag
13125        ,p_wd_restricted             => p_wd_restricted
13126        ,p_start_date                => p_start_date
13127        ,p_end_date                  => p_end_date
13128        ,p_attribute_type_codes      => p_attribute_type_codes
13129        ,p_attributes                => p_attributes
13130        ,p_attach_file_id            => p_attach_file_id
13131        ,p_component_citems          => p_component_citems
13132        ,p_component_atypes          => p_component_atypes
13133        ,p_sort_order                => p_sort_order
13134        ,p_status                    => p_status
13135        ,p_log_action                => p_log_action
13136        ,p_language                  => p_language
13137        ,p_commit                    => p_commit
13138        ,p_api_version_number        => p_api_version_number
13139        ,p_init_msg_list             => p_init_msg_list
13140        ,px_content_item_id          => px_content_item_id
13141        ,px_citem_ver_id             => px_citem_ver_id
13142        ,px_object_version_number    => px_object_version_number
13143        ,x_return_status             => x_return_status
13144        ,x_msg_count                 => x_msg_count
13145        ,x_msg_data                  => x_msg_data
13146    );
13147 
13148 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
13149 EXCEPTION
13150   WHEN OTHERS THEN
13151    RAISE;
13152 END;
13153 
13154 -- --------------------------------------------------------------
13155 -- UPSERT ITEM
13156 --
13157 -- Just a wrapper for upsert_item_full
13158 -- --------------------------------------------------------------
13159 PROCEDURE upsert_item(
13160         p_ctype_code                 IN VARCHAR2
13161        ,p_citem_name                IN VARCHAR2
13162        ,p_citem_description         IN VARCHAR2
13163        ,p_dir_node_id               IN NUMBER
13164        ,p_owner_resource_id         IN NUMBER
13165        ,p_owner_resource_type       IN VARCHAR2
13166        ,p_reference_code            IN VARCHAR2
13167        ,p_trans_required            IN VARCHAR2
13168        ,p_parent_item_id            IN NUMBER
13169        ,p_lock_flag                 IN VARCHAR2
13170        ,p_wd_restricted             IN VARCHAR2
13171        ,p_start_date                IN DATE
13172        ,p_end_date                  IN DATE
13173        ,p_attribute_type_codes      IN JTF_VARCHAR2_TABLE_100
13174        ,p_attributes                IN JTF_VARCHAR2_TABLE_4000
13175        ,p_attach_file_ids           IN JTF_NUMBER_TABLE
13176        ,p_default_rendition         IN NUMBER
13177        ,p_component_citems          IN JTF_NUMBER_TABLE
13178        ,p_component_atypes          IN JTF_VARCHAR2_TABLE_100
13179        ,p_sort_order                IN JTF_NUMBER_TABLE
13180        ,p_status                    IN VARCHAR2
13181        ,p_log_action                IN VARCHAR2
13182        ,p_language                  IN VARCHAR2
13183        ,p_commit                    IN VARCHAR2
13184        ,p_api_version_number        IN NUMBER
13185        ,p_init_msg_list             IN VARCHAR2
13186        ,px_content_item_id          IN OUT NOCOPY NUMBER
13187        ,px_citem_ver_id             IN OUT NOCOPY NUMBER
13188        ,px_object_version_number    IN OUT NOCOPY NUMBER
13189        ,x_return_status             OUT NOCOPY VARCHAR2
13190        ,x_msg_count                 OUT NOCOPY NUMBER
13191        ,x_msg_data                  OUT NOCOPY VARCHAR2
13192 )IS
13193 BEGIN
13194                                                                     --DBMS_OUTPUT.put_line('----- upsert_item -----');
13195    upsert_item_full(
13196         p_ctype_code                 => p_ctype_code
13197        ,p_citem_name                => p_citem_name
13198        ,p_citem_description         => p_citem_description
13199        ,p_dir_node_id               => p_dir_node_id
13200        ,p_owner_resource_id         => p_owner_resource_id
13201        ,p_owner_resource_type       => p_owner_resource_type
13202        ,p_reference_code            => p_reference_code
13203        ,p_trans_required            => p_trans_required
13204        ,p_parent_item_id            => p_parent_item_id
13205        ,p_lock_flag                 => p_lock_flag
13206        ,p_wd_restricted             => p_wd_restricted
13207        ,p_start_date                => p_start_date
13208        ,p_end_date                  => p_end_date
13209        ,p_attribute_type_codes      => p_attribute_type_codes
13210        ,p_attributes                => p_attributes
13211        ,p_attach_file_ids           => p_attach_file_ids
13212        ,p_default_rendition         => p_default_rendition
13213        ,p_component_citems          => p_component_citems
13214        ,p_component_atypes          => p_component_atypes
13215        ,p_sort_order                => p_sort_order
13216        ,p_status                    => p_status
13217        ,p_log_action                => p_log_action
13218        ,p_language                  => p_language
13219        ,p_commit                    => p_commit
13220        ,p_api_version_number        => p_api_version_number
13221        ,p_init_msg_list             => p_init_msg_list
13222        ,px_content_item_id          => px_content_item_id
13223        ,px_citem_ver_id             => px_citem_ver_id
13224        ,px_object_version_number    => px_object_version_number
13225        ,x_return_status             => x_return_status
13226        ,x_msg_count                 => x_msg_count
13227        ,x_msg_data                  => x_msg_data
13228    );
13229 
13230 -- Exception Handler Added for NOCOPY Change (11/08/2002) By ENUNEZ
13231 EXCEPTION
13232   WHEN OTHERS THEN
13233     RAISE;
13234 END;
13235 
13236 -- --------------------------------------------------------------
13237 -- HARD DELETE ITEM VERSIONS
13238 --
13239 -- --------------------------------------------------------------
13240 PROCEDURE hard_delete_item_versions(
13241       p_api_version   IN NUMBER
13242       ,p_init_msg_list    IN VARCHAR2
13243       ,p_commit     IN VARCHAR2
13244       ,p_citem_version_ids  IN  JTF_NUMBER_TABLE
13245       ,x_return_status   OUT NOCOPY VARCHAR2
13246       ,x_msg_count   OUT NOCOPY NUMBER
13247       ,x_msg_data  OUT NOCOPY VARCHAR2
13248 ) AS
13249         --******** local variable for standards **********
13250  --******************* BEGIN REQUIRED VARIABLES *************************
13251   l_api_name CONSTANT VARCHAR2(30) := 'hard_delete_item_versions';--|**|
13252   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT;  --|**|
13253 --******************* END REQUIRED VARIABLES ****************************
13254 --
13255   l_citem_version_id  NUMBER;
13256   l_citem_version_status  IBC_CITEM_VERSIONS_B.citem_version_status%TYPE;
13257   l_citem_version_attr_id NUMBER;
13258   l_content_item_id NUMBER;
13259   l_directory_node_id NUMBER;
13260 
13261   l_tmp_content_item_id NUMBER;
13262   l_log_item_flag   VARCHAR2(1) := FND_API.g_false;
13263 --
13264   CURSOR Get_Item_Version_Detail IS
13265      SELECT
13266         CITEM_VERSION_STATUS
13267         ,ATTRIBUTE_FILE_ID
13268      FROM
13269         IBC_CITEM_VERSIONS_VL
13270      WHERE
13271         CITEM_VERSION_ID = l_citem_version_id;
13272 
13273 BEGIN
13274       --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
13275       -- ******************* Standard Begins *******************
13276       -- Standard Start of API savepoint
13277       SAVEPOINT HARD_DELETE_ITEM_VERSIONS_PT;
13278 
13279       -- Standard call to check for call compatibility.
13280       IF NOT FND_API.Compatible_API_Call (
13281     l_api_version_number,
13282     p_api_version,
13283     l_api_name,
13284     G_PKG_NAME)
13285       THEN
13286            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13287       END IF;
13288       -- Initialize message list if p_init_msg_list is set to TRUE.
13289       IF FND_API.to_Boolean( p_init_msg_list ) THEN
13290           FND_MSG_PUB.initialize;
13291       END IF;
13292 
13293       -- Initialize API return status to success
13294       x_return_status := FND_API.G_RET_STS_SUCCESS;
13295       --******************* Real Logic Start *********************
13296 
13297     IF IBC_DEBUG_PVT.debug_enabled THEN
13298       IBC_DEBUG_PVT.start_process(
13299          p_proc_type  => 'PROCEDURE',
13300          p_proc_name  => 'Hard_Delete_Item_Versions',
13301          p_parms      => IBC_DEBUG_PVT.make_parameter_list(
13302                            p_tag     => 'PARAMETERS',
13303                            p_parms   => JTF_VARCHAR2_TABLE_4000(
13304                                           'p_api_version', p_api_version,
13305                                           'p_init_msg_list', p_init_msg_list,
13306                                           'p_commit', p_commit,
13307                                           'p_citem_version_ids', IBC_DEBUG_PVT.make_list(p_citem_version_ids)
13308                                         )
13309                            )
13310       );
13311     END IF;
13312 
13313     FOR i IN 1..p_citem_version_ids.COUNT LOOP
13314            l_citem_version_id := p_citem_version_ids(i);
13315      OPEN Get_Item_Version_Detail;
13316      FETCH Get_Item_Version_Detail INTO l_citem_version_status, l_citem_version_attr_id;
13317      -- Check if content item version id is valid
13318      IF (Get_Item_Version_Detail%NOTFOUND) THEN
13319          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
13320             FND_MESSAGE.Set_Name('IBC', 'INVALID_CITEM_VERSION_ID');
13321             FND_MESSAGE.Set_token('CITEM_VERSION_ID', l_citem_version_id);
13322             FND_MSG_PUB.ADD;
13323          END IF;
13324          CLOSE Get_Item_Version_Detail;
13325          RAISE FND_API.G_EXC_ERROR;
13326      END IF;
13327      CLOSE Get_Item_Version_Detail;
13328 
13329            -- error checking
13330      IF ( (l_citem_version_status = IBC_UTILITIES_PUB.G_STV_APPROVED) OR
13331         (l_citem_version_status = IBC_UTILITIES_PUB.G_STV_SUBMIT_FOR_APPROVAL) ) THEN
13332              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
13333                 FND_MESSAGE.Set_Name('IBC', 'INVALID_HARD_DELETE');
13334                 FND_MESSAGE.Set_token('CITEM_VERSION_ID', l_citem_version_id);
13335                 FND_MSG_PUB.ADD;
13336              END IF;
13337              -- possibly: not raising exception here, and raising it at end so full list of problematic items is created???
13338              RAISE FND_API.G_EXC_ERROR;
13339      END IF;
13340 
13341            l_tmp_content_item_id := getCitemId(l_citem_version_id);
13342      IF (l_tmp_content_item_id <> l_content_item_id) THEN
13343         l_content_item_id := l_tmp_content_item_id;
13344         l_log_item_flag := FND_API.g_true;
13345 
13346         l_directory_node_id := getDirectoryNodeId(l_content_item_id);
13347 
13348     -- ***************PERMISSION CHECK*********************************************************************
13349     IF (hasPermission(l_content_item_id) = FND_API.g_false) THEN                                       --|*|
13350         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
13351         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
13352        FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                        --|*|
13353         FND_MSG_PUB.ADD;                                                                               --|*|
13354         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
13355     ELSIF(isItemAdmin(l_content_item_id) = FND_API.g_false) THEN                                       --|*|
13356        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
13357                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
13358                   ,p_instance_pk1_value    => l_content_item_id                                        --|*|
13359                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
13360                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
13361                   ,p_container_pk1_value   => l_directory_node_id                                      --|*|
13362                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
13363                   ) = FND_API.g_false                                                                  --|*|
13364             ) THEN                                                                                     --|*|
13365            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
13366            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
13367          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
13368            FND_MSG_PUB.ADD;                                                                            --|*|
13369            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
13370       END IF;                                                                                          --|*|
13371     END IF;                                                                                            --|*|
13372     -- ***************PERMISSION CHECK*********************************************************************
13373 
13374      END IF; -- End checking if this version belongs to the same content item
13375 
13376     -- Delete version
13377     Ibc_Citem_Versions_Pkg.DELETE_ROW(l_citem_version_id);
13378 
13379     -- Delete Renditions
13380     DELETE FROM ibc_renditions WHERE citem_Version_id = l_citem_version_id;
13381 
13382     -- Delete Attribute bundle
13383     DELETE FROM IBC_ATTRIBUTE_BUNDLES WHERE attribute_bundle_id = l_citem_version_attr_id;
13384 
13385     -- Delete compound relations
13386     DELETE FROM IBC_COMPOUND_RELATIONS WHERE CITEM_VERSION_ID = l_citem_version_id;
13387 
13388         --***************************************************
13389         --************ADDING TO AUDIT LOG********************
13390         --***************************************************
13391         Ibc_Utilities_Pvt.log_action(
13392            p_activity       => Ibc_Utilities_Pvt.G_ALA_REMOVE
13393            ,p_parent_value  => l_content_item_id
13394            ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
13395            ,p_object_value1 => l_citem_version_id
13396            ,p_object_value2 => NULL
13397            ,p_object_value3 => NULL
13398            ,p_object_value4 => NULL
13399            ,p_object_value5 => NULL
13400            ,p_description   => 'Hard deleting content item version'
13401         );
13402 
13403   IF (l_log_item_flag = FND_API.g_true) THEN
13404            Ibc_Utilities_Pvt.log_action(
13405               p_activity       => Ibc_Utilities_Pvt.G_ALA_UPDATE
13406               ,p_parent_value  => NULL
13407               ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
13408               ,p_object_value1 => l_content_item_id
13409               ,p_object_value2 => NULL
13410               ,p_object_value3 => NULL
13411               ,p_object_value4 => NULL
13412               ,p_object_value5 => NULL
13413               ,p_description   => 'Updating content item (hard-deleting its versions)'
13414            );
13415   END IF;
13416   l_log_item_flag := FND_API.g_false;
13417         --***************************************************
13418 
13419     END LOOP;
13420 
13421 
13422 
13423      --******************* Real Logic End *********************
13424 
13425      -- Standard check of p_commit.
13426      IF( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
13427          COMMIT;
13428      END IF;
13429 
13430       -- Standard call to get message count and if count is 1, get message info.
13431       FND_MSG_PUB.Count_And_Get(
13432           p_count           =>      x_msg_count,
13433           p_data            =>      x_msg_data
13434       );
13435 
13436       IF IBC_DEBUG_PVT.debug_enabled THEN
13437         IBC_DEBUG_PVT.end_process(
13438           IBC_DEBUG_PVT.make_parameter_list(
13439             p_tag    => 'OUTPUT',
13440             p_parms  => JTF_VARCHAR2_TABLE_4000(
13441                           'x_return_status', x_return_status,
13442                           'x_msg_count', x_msg_count,
13443                           'x_msg_data', x_msg_data
13444                         )
13445           )
13446         );
13447       END IF;
13448 
13449 EXCEPTION
13450     WHEN FND_API.G_EXC_ERROR THEN
13451       --DBMS_OUTPUT.put_line('Expected Error');
13452      ROLLBACK TO HARD_DELETE_ITEM_VERSIONS_PT;
13453       Ibc_Utilities_Pvt.handle_exceptions(
13454          p_api_name           => L_API_NAME
13455          ,p_pkg_name          => G_PKG_NAME
13456          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
13457          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
13458          ,p_sqlcode           => SQLCODE
13459          ,p_sqlerrm           => SQLERRM
13460          ,x_msg_count         => x_msg_count
13461          ,x_msg_data          => x_msg_data
13462          ,x_return_status     => x_return_status
13463       );
13464       IF IBC_DEBUG_PVT.debug_enabled THEN
13465         IBC_DEBUG_PVT.end_process(
13466           IBC_DEBUG_PVT.make_parameter_list(
13467             p_tag    => 'OUTPUT',
13468             p_parms  => JTF_VARCHAR2_TABLE_4000(
13469                           'x_return_status', x_return_status,
13470                           'x_msg_count', x_msg_count,
13471                           'x_msg_data', x_msg_data
13472                         )
13473           )
13474         );
13475       END IF;
13476   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
13477       --DBMS_OUTPUT.put_line('Unexpected error');
13478       ROLLBACK TO HARD_DELETE_ITEM_VERSIONS_PT;
13479       Ibc_Utilities_Pvt.handle_exceptions(
13480          p_api_name           => L_API_NAME
13481          ,p_pkg_name          => G_PKG_NAME
13482          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
13483          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
13484          ,p_sqlcode           => SQLCODE
13485          ,p_sqlerrm           => SQLERRM
13486          ,x_msg_count         => x_msg_count
13487          ,x_msg_data          => x_msg_data
13488          ,x_return_status     => x_return_status
13489       );
13490       IF IBC_DEBUG_PVT.debug_enabled THEN
13491         IBC_DEBUG_PVT.end_process(
13492           IBC_DEBUG_PVT.make_parameter_list(
13493             p_tag    => 'OUTPUT',
13494             p_parms  => JTF_VARCHAR2_TABLE_4000(
13495                           'x_return_status', x_return_status,
13496                           'x_msg_count', x_msg_count,
13497                           'x_msg_data', x_msg_data
13498                         )
13499           )
13500         );
13501       END IF;
13502   WHEN OTHERS THEN
13503       --DBMS_OUTPUT.put_line('Other error');
13504       ROLLBACK TO HARD_DELETE_ITEM_VERSIONS_PT;
13505       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
13506          p_api_name           => L_API_NAME
13507          ,p_pkg_name          => G_PKG_NAME
13508          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
13509          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
13510          ,p_sqlcode           => SQLCODE
13511          ,p_sqlerrm           => SQLERRM
13512          ,x_msg_count         => x_msg_count
13513          ,x_msg_data          => x_msg_data
13514          ,x_return_status     => x_return_status
13515       );
13516       IF IBC_DEBUG_PVT.debug_enabled THEN
13517         IBC_DEBUG_PVT.end_process(
13518           IBC_DEBUG_PVT.make_parameter_list(
13519             p_tag    => 'OUTPUT',
13520             p_parms  => JTF_VARCHAR2_TABLE_4000(
13521                           'x_return_status', x_return_status,
13522                           'x_msg_count', x_msg_count,
13523                           'x_msg_data', x_msg_data,
13524                           'EXCEPTION', SQLERRM
13525                         )
13526           )
13527         );
13528       END IF;
13529  END;
13530 
13531 PROCEDURE hard_delete_items (
13532   p_api_version     IN  NUMBER,
13533    p_init_msg_list    IN  VARCHAR2,
13534   p_commit            IN  VARCHAR2,
13535   p_content_item_ids   IN JTF_NUMBER_TABLE,
13536   x_return_status    OUT NOCOPY VARCHAR2,
13537    x_msg_count         OUT NOCOPY NUMBER,
13538    x_msg_data           OUT NOCOPY VARCHAR2
13539 ) AS
13540  --******************* BEGIN REQUIRED VARIABLES *************************
13541   l_api_name CONSTANT VARCHAR2(30) := 'hard_delete_items';        --|**|
13542   l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT;  --|**|
13543 --******************* END REQUIRED VARIABLES ****************************
13544 
13545 --
13546   l_citem_id    NUMBER;
13547   l_directory_node_id NUMBER;
13548 --
13549   CURSOR Get_Item_Versions IS
13550      SELECT CITEM_VERSION_ID, ATTRIBUTE_FILE_ID
13551      FROM IBC_CITEM_VERSIONS_VL
13552      WHERE CONTENT_ITEM_ID = l_citem_id;
13553 
13554 BEGIN
13555       --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
13556       -- ******************* Standard Begins *******************
13557       -- Standard Start of API savepoint
13558       SAVEPOINT HARD_DELETE_ITEMS_PT;
13559 
13560       -- Standard call to check for call compatibility.
13561       IF NOT FND_API.Compatible_API_Call (
13562     l_api_version_number,
13563     p_api_version,
13564     l_api_name,
13565     G_PKG_NAME)
13566       THEN
13567            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13568       END IF;
13569       -- Initialize message list if p_init_msg_list is set to TRUE.
13570       IF FND_API.to_Boolean( p_init_msg_list ) THEN
13571           FND_MSG_PUB.initialize;
13572       END IF;
13573 
13574       -- Initialize API return status to success
13575       x_return_status := FND_API.G_RET_STS_SUCCESS;
13576       --******************* Real Logic Start *********************
13577 
13578       IF IBC_DEBUG_PVT.debug_enabled THEN
13579         IBC_DEBUG_PVT.start_process(
13580            p_proc_type  => 'PROCEDURE',
13581            p_proc_name  => 'Hard_Delete_Items',
13582            p_parms      => IBC_DEBUG_PVT.make_parameter_list(
13583                              p_tag     => 'PARAMETERS',
13584                              p_parms   => JTF_VARCHAR2_TABLE_4000(
13585                                             'p_api_version', p_api_version,
13586                                             'p_init_msg_list', p_init_msg_list,
13587                                             'p_commit', p_commit,
13588                                             'p_content_item_ids', IBC_DEBUG_PVT.make_list(p_content_item_ids)
13589                                           )
13590                              )
13591         );
13592       END IF;
13593 
13594       FOR i IN 1..p_content_item_ids.COUNT LOOP
13595          l_citem_id := p_content_item_ids(i);
13596 
13597          IF IBC_VALIDATE_PVT.isvalidcitem(l_citem_id) = FND_API.g_false THEN
13598            x_return_status := FND_API.G_RET_STS_ERROR;
13599             FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
13600             FND_MESSAGE.Set_Token('INPUT', 'content_item_id:[' || l_citem_id || ']', FALSE);
13601            FND_MSG_PUB.ADD;
13602            RAISE FND_API.G_EXC_ERROR;
13603          END IF;
13604 
13605 
13606          l_directory_node_id := getDirectoryNodeId(l_citem_id);
13607 
13608          --sanshuma : 01/10/2004 : Changed p_permission_code from CITEM_DELETE to CITEM_EDIT
13609    -- ***************PERMISSION CHECK*********************************************************************
13610         IF(isItemAdmin(l_citem_id) = FND_API.g_false) THEN                                                   --|*|
13611            IF( IBC_DATA_SECURITY_PVT.has_permission(                                                         --|*|
13612                         p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
13613                         ,p_instance_pk1_value    => l_citem_id                                               --|*|
13614                         ,p_permission_code       => 'CITEM_EDIT'                                           --|*|
13615                         ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
13616                         ,p_container_pk1_value   => l_directory_node_id                                      --|*|
13617                         ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
13618                         ) = FND_API.g_false                                                                  --|*|
13619                   ) THEN                                                                                     --|*|
13620                  --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
13621                  x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
13622                FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                     --|*|
13623                  FND_MSG_PUB.ADD;                                                                            --|*|
13624                  -- possibly wait until end to raise exception so all errors can be loaded in message list???--|*|
13625                  RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
13626            END IF;                                                                                           --|*|
13627         END IF;                                                                                              --|*|
13628        -- ***************PERMISSION CHECK**********************************************************************
13629 
13630         FOR citem_version_rec IN Get_Item_Versions LOOP
13631            -- Delete version
13632            Ibc_Citem_Versions_Pkg.DELETE_ROW(citem_version_rec.CITEM_VERSION_ID);
13633 
13634           -- Delete Renditions
13635           DELETE FROM ibc_renditions WHERE citem_version_id = citem_version_Rec.citem_version_id;
13636 
13637            -- Delete Attribute bundle
13638            DELETE FROM IBC_ATTRIBUTE_BUNDLES WHERE attribute_bundle_id = citem_version_rec.ATTRIBUTE_FILE_ID;
13639 
13640            -- Delete compound relations
13641            DELETE FROM IBC_COMPOUND_RELATIONS WHERE CITEM_VERSION_ID = citem_version_rec.CITEM_VERSION_ID;
13642          END LOOP;
13643 
13644         -- Delete citem keywords
13645         DELETE FROM ibc_citem_keywords WHERE CONTENT_ITEM_ID = l_citem_id;
13646 
13647          -- Delete itself from being a child (this should not be needed,
13648          -- if UI disable deletion of children items)
13649          DELETE FROM IBC_COMPOUND_RELATIONS WHERE CONTENT_ITEM_ID = l_citem_id;
13650 
13651          -- Delete itself
13652          DELETE FROM IBC_CONTENT_ITEMS WHERE CONTENT_ITEM_ID = l_citem_id;
13653 
13654          -- Delete from Version Labels
13655          DELETE FROM IBC_CITEM_VERSION_LABELS WHERE CONTENT_ITEM_ID = l_citem_id;
13656 
13657          -- Delete from Associations
13658          DELETE FROM IBC_ASSOCIATIONS WHERE CONTENT_ITEM_ID = l_citem_id;
13659 
13660         --***************************************************
13661         --************ADDING TO AUDIT LOG********************
13662         --***************************************************
13663         Ibc_Utilities_Pvt.log_action(
13664            p_activity       => Ibc_Utilities_Pvt.G_ALA_REMOVE
13665            ,p_parent_value  => NULL
13666            ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CONTENT_ITEM
13667            ,p_object_value1 => l_citem_id
13668            ,p_object_value2 => NULL
13669            ,p_object_value3 => NULL
13670            ,p_object_value4 => NULL
13671            ,p_object_value5 => NULL
13672            ,p_description   => 'Hard deleting content item'
13673         );
13674 
13675        END LOOP;
13676 
13677       --******************* Real Logic End *********************
13678      -- Standard check of p_commit.
13679      IF((x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
13680          COMMIT;
13681      END IF;
13682 
13683       -- Standard call to get message count and if count is 1, get message info.
13684       FND_MSG_PUB.Count_And_Get(
13685           p_count           =>      x_msg_count,
13686           p_data            =>      x_msg_data
13687       );
13688 
13689 
13690 
13691 
13692       IF IBC_DEBUG_PVT.debug_enabled THEN
13693         IBC_DEBUG_PVT.end_process(
13694           IBC_DEBUG_PVT.make_parameter_list(
13695             p_tag    => 'OUTPUT',
13696             p_parms  => JTF_VARCHAR2_TABLE_4000(
13697                           'x_return_status', x_return_status,
13698                           'x_msg_count', x_msg_count,
13699                           'x_msg_data', x_msg_data
13700                         )
13701           )
13702         );
13703       END IF;
13704 
13705 EXCEPTION
13706     WHEN FND_API.G_EXC_ERROR THEN
13707       --DBMS_OUTPUT.put_line('Expected Error');
13708      ROLLBACK TO HARD_DELETE_ITEMS_PT;
13709       Ibc_Utilities_Pvt.handle_exceptions(
13710          p_api_name           => L_API_NAME
13711          ,p_pkg_name          => G_PKG_NAME
13712          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
13713          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
13714          ,p_sqlcode           => SQLCODE
13715          ,p_sqlerrm           => SQLERRM
13716          ,x_msg_count         => x_msg_count
13717          ,x_msg_data          => x_msg_data
13718          ,x_return_status     => x_return_status
13719       );
13720       IF IBC_DEBUG_PVT.debug_enabled THEN
13721         IBC_DEBUG_PVT.end_process(
13722           IBC_DEBUG_PVT.make_parameter_list(
13723             p_tag    => 'OUTPUT',
13724             p_parms  => JTF_VARCHAR2_TABLE_4000(
13725                           'x_return_status', x_return_status,
13726                           'x_msg_count', x_msg_count,
13727                           'x_msg_data', x_msg_data
13728                         )
13729           )
13730         );
13731       END IF;
13732   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
13733       --DBMS_OUTPUT.put_line('Unexpected error');
13734       ROLLBACK TO HARD_DELETE_ITEMS_PT;
13735       Ibc_Utilities_Pvt.handle_exceptions(
13736          p_api_name           => L_API_NAME
13737          ,p_pkg_name          => G_PKG_NAME
13738          ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
13739          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
13740          ,p_sqlcode           => SQLCODE
13741          ,p_sqlerrm           => SQLERRM
13742          ,x_msg_count         => x_msg_count
13743          ,x_msg_data          => x_msg_data
13744          ,x_return_status     => x_return_status
13745       );
13746       IF IBC_DEBUG_PVT.debug_enabled THEN
13747         IBC_DEBUG_PVT.end_process(
13748           IBC_DEBUG_PVT.make_parameter_list(
13749             p_tag    => 'OUTPUT',
13750             p_parms  => JTF_VARCHAR2_TABLE_4000(
13751                           'x_return_status', x_return_status,
13752                           'x_msg_count', x_msg_count,
13753                           'x_msg_data', x_msg_data
13754                         )
13755           )
13756         );
13757       END IF;
13758   WHEN OTHERS THEN
13759       --DBMS_OUTPUT.put_line('Other error');
13760       ROLLBACK TO HARD_DELETE_ITEMS_PT;
13761       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
13762          p_api_name           => L_API_NAME
13763          ,p_pkg_name          => G_PKG_NAME
13764          ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
13765          ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
13766          ,p_sqlcode           => SQLCODE
13767          ,p_sqlerrm           => SQLERRM
13768          ,x_msg_count         => x_msg_count
13769          ,x_msg_data          => x_msg_data
13770          ,x_return_status     => x_return_status
13771       );
13772       IF IBC_DEBUG_PVT.debug_enabled THEN
13773         IBC_DEBUG_PVT.end_process(
13774           IBC_DEBUG_PVT.make_parameter_list(
13775             p_tag    => 'OUTPUT',
13776             p_parms  => JTF_VARCHAR2_TABLE_4000(
13777                           'x_return_status', x_return_status,
13778                           'x_msg_count', x_msg_count,
13779                           'x_msg_data', x_msg_data,
13780                           'EXCEPTION', SQLERRM
13781                         )
13782           )
13783         );
13784       END IF;
13785  END;
13786 
13787 
13788 -- --------------------------------------------------------------
13789 -- IBC_CITEM_ADMIN_GRP.CHANGE_TRANSLATION_STATUS
13790 --  It changes status of a particular version. It will not allow
13791 --  changes to approved versions.  NOTE: archiving of versions is
13792 --  not currently supported even though status CODE exists.
13793 -- --------------------------------------------------------------
13794 PROCEDURE Change_Translation_Status(
13795      p_citem_ver_id             IN NUMBER
13796     ,p_new_status               IN VARCHAR2
13797     ,p_language                 IN VARCHAR2
13798     ,p_commit                   IN VARCHAR2
13799     ,p_api_version_number       IN NUMBER
13800     ,p_init_msg_list            IN VARCHAR2
13801     ,px_object_version_number   IN OUT NOCOPY NUMBER
13802     ,x_return_status            OUT NOCOPY VARCHAR2
13803     ,x_msg_count                OUT NOCOPY NUMBER
13804     ,x_msg_data                 OUT NOCOPY VARCHAR2
13805     ) IS
13806 --******************* BEGIN REQUIRED VARIABLES *************************
13807  l_api_name CONSTANT VARCHAR2(30) := 'Change_Translation_Status'; --|**|
13808  l_api_version_number CONSTANT NUMBER := G_API_VERSION_DEFAULT;   --|**|
13809 --******************* END REQUIRED VARIABLES ***************************
13810    content_item_id NUMBER;
13811    ctype_code IBC_CONTENT_TYPES_B.content_type_code%TYPE;
13812    dir_id NUMBER;
13813    l_description VARCHAR2(50);
13814    l_activity    VARCHAR2(50);
13815 
13816    l_return_status          VARCHAR2(30);
13817    l_msg_count              NUMBER;
13818    l_msg_data               VARCHAR2(2000);
13819 
13820 BEGIN
13821   --DBMS_OUTPUT.put_line('----- ' || l_api_name || ' -----');
13822 --******************* BEGIN REQUIRED AREA ******************************
13823       SAVEPOINT svpt_change_status;                               --|**|
13824       IF (p_init_msg_list = FND_API.g_true) THEN                  --|**|
13825         FND_MSG_PUB.initialize;                                   --|**|
13826       END IF;                                                     --|**|
13827                                                                   --|**|
13828       -- Standard call to check for call compatibility.           --|**|
13829       IF NOT FND_API.Compatible_API_Call (                        --|**|
13830                 l_api_version_number                              --|**|
13831       ,p_api_version_number                                       --|**|
13832       ,l_api_name                                                 --|**|
13833       ,G_PKG_NAME                                                 --|**|
13834       )THEN                                                       --|**|
13835       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;                       --|**|
13836       END IF;                                                     --|**|
13837                                                                   --|**|
13838       -- Initialize API return status to SUCCESS                  --|**|
13839       x_return_status := FND_API.G_RET_STS_SUCCESS;               --|**|
13840 --******************* END REQUIRED AREA ********************************
13841 
13842     IF IBC_DEBUG_PVT.debug_enabled THEN
13843       IBC_DEBUG_PVT.start_process(
13844           p_proc_type  => 'PROCEDURE'
13845          ,p_proc_name  => 'Change_Translation_Status'
13846          ,p_parms      => IBC_DEBUG_PVT.make_parameter_list(
13847                             p_tag     => 'PARAMETERS'
13848                            ,p_parms   => JTF_VARCHAR2_TABLE_4000(
13849                                             'p_citem_ver_id', p_citem_ver_id
13850                                            ,'p_new_status', p_new_status
13851                                            ,'p_language', p_language
13852                                            ,'p_commit', p_commit
13853                                            ,'p_api_version_number', p_api_version_number
13854                                            ,'p_init_msg_list', p_init_msg_list
13855                                            ,'px_object_version_number', px_object_version_number
13856                                            )
13857                                          )
13858          );
13859     END IF;
13860 
13861     -- checking version id
13862     IF (IBC_VALIDATE_PVT.isValidCitemVer(p_citem_ver_id) = FND_API.g_false) THEN
13863         --DBMS_OUTPUT.put_line('EX - p_citem_ver_id');
13864         x_return_status := FND_API.G_RET_STS_ERROR;
13865         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
13866         FND_MESSAGE.Set_Token('INPUT', 'p_citem_ver_id', FALSE);
13867         FND_MSG_PUB.ADD;
13868         RAISE FND_API.G_EXC_ERROR;
13869     END IF;
13870 
13871     -- checking if valid status
13872     IF (IBC_VALIDATE_PVT.isValidStatus(p_new_status) = FND_API.g_false) THEN
13873         --DBMS_OUTPUT.put_line('EX - p_status');
13874         x_return_status := FND_API.G_RET_STS_ERROR;
13875         FND_MESSAGE.Set_Name('IBC', 'BAD_INPUT_VALUE');
13876         FND_MESSAGE.Set_Token('INPUT', 'p_status', FALSE);
13877         FND_MSG_PUB.ADD;
13878         RAISE FND_API.G_EXC_ERROR;
13879     END IF;
13880 
13881 /*
13882      IF (IBC_VALIDATE_PVT.isApproved(p_citem_ver_id) = FND_API.g_true) THEN
13883       x_return_status := FND_API.G_RET_STS_ERROR;
13884       FND_MESSAGE.Set_Name('IBC', 'UPDATE_APPROVED_ITEM_ERROR');
13885       FND_MSG_PUB.ADD;
13886       RAISE FND_API.G_EXC_ERROR;
13887     END IF;
13888 */
13889 
13890      IF (IBC_VALIDATE_PVT.isTranslationApproved(p_citem_ver_id
13891                                                ,p_language
13892                                                ) = FND_API.g_true) THEN
13893       x_return_status := FND_API.G_RET_STS_ERROR;
13894       FND_MESSAGE.Set_Name('IBC', 'IBC_TRANSLATION_UPDATE_ERROR');
13895       FND_MSG_PUB.ADD;
13896       RAISE FND_API.G_EXC_ERROR;
13897     END IF;
13898 
13899     content_item_id := getCitemId(p_citem_ver_id);
13900     ctype_code := getContentType(content_item_id);
13901     dir_id := getDirectoryNodeId(content_item_id);
13902 
13903     -- ***************PERMISSION CHECK*********************************************************************
13904     IF (hasPermission(content_item_id) = FND_API.g_false) THEN                                         --|*|
13905         --DBMS_OUTPUT.put_line('EX - no lock permissions');                                            --|*|
13906         x_return_status := FND_API.G_RET_STS_ERROR;                                                    --|*|
13907       FND_MESSAGE.Set_Name('IBC', 'INVALID_LOCK_PERMISSION');                                          --|*|
13908         FND_MSG_PUB.ADD;                                                                               --|*|
13909         RAISE FND_API.G_EXC_ERROR;                                                                     --|*|
13910     ELSIF(isItemAdmin(content_item_id) = FND_API.g_false) THEN                                         --|*|
13911        IF( IBC_DATA_SECURITY_PVT.has_permission(                                                       --|*|
13912                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
13913                   ,p_instance_pk1_value    => content_item_id                                          --|*|
13914                   ,p_permission_code       => 'CITEM_EDIT'                                             --|*|
13915                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
13916                   ,p_container_pk1_value   => dir_id                                                   --|*|
13917                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
13918                   ) = FND_API.g_false                                                                  --|*|
13919             AND                                                                                        --|*|
13920             (p_new_status NOT IN (Ibc_Utilities_Pub.G_STV_APPROVED, IBC_UTILITIES_PUB.G_STV_REJECTED)  --|*|
13921              OR                                                                                        --|*|
13922              IBC_DATA_SECURITY_PVT.has_permission(                                                     --|*|
13923                   p_instance_object_id     => IBC_DATA_SECURITY_PVT.get_object_id('IBC_CONTENT_ITEM')  --|*|
13924                   ,p_instance_pk1_value    => content_item_id                                          --|*|
13925                   ,p_permission_code       => 'CITEM_APPROVE'                                          --|*|
13926                   ,p_container_object_id   => IBC_DATA_SECURITY_PVT.get_object_id('IBC_DIRECTORY_NODE')--|*|
13927                   ,p_container_pk1_value   => dir_id                                                   --|*|
13928                   ,p_current_user_id       => FND_GLOBAL.user_id                                       --|*|
13929                   ) = FND_API.g_false                                                                  --|*|
13930              )                                                                                         --|*|
13931             ) THEN                                                                                     --|*|
13932            --DBMS_OUTPUT.put_line('EX - no permissions');                                              --|*|
13933            x_return_status := FND_API.G_RET_STS_ERROR;                                                 --|*|
13934          FND_MESSAGE.Set_Name('IBC', 'INSUFFICIENT_PRIVILEGES');                                       --|*|
13935            FND_MSG_PUB.ADD;                                                                            --|*|
13936            RAISE FND_API.G_EXC_ERROR;                                                                  --|*|
13937       END IF;                                                                                          --|*|
13938     END IF;                                                                                            --|*|
13939     -- ***************PERMISSION CHECK*********************************************************************
13940 
13941         px_object_version_number := NULL;
13942         -- update version status
13943         Ibc_Citem_Versions_Pkg.update_row(
13944              p_CITEM_VERSION_ID         => p_citem_ver_id
13945             ,p_content_item_id          => content_item_id
13946             ,p_citem_translation_status => p_new_status
13947             ,P_SOURCE_LANG              => p_language
13948             ,px_object_version_number   => px_object_version_number
13949             );
13950 
13951 
13952            --***************************************************
13953            --************ADDING TO AUDIT LOG********************
13954            --***************************************************
13955 
13956         l_description := 'Updating version';
13957         l_activity    := Ibc_Utilities_Pvt.G_ALA_UPDATE;
13958 
13959            Ibc_Utilities_Pvt.log_action(
13960                 p_activity      => l_activity
13961                ,p_parent_value  => content_item_id
13962                ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
13963                ,p_object_value1 => p_citem_ver_id
13964                ,p_object_value2 => NULL
13965                ,p_object_value3 => NULL
13966                ,p_object_value4 => NULL
13967                ,p_object_value5 => NULL
13968                ,p_description   => l_description
13969            );
13970 
13971         IF p_new_status = IBC_UTILITIES_PUB.G_STV_APPROVED THEN
13972           l_description := 'Approved';
13973           l_activity := Ibc_Utilities_Pvt.G_ALA_APPROVE;
13974         ELSIF p_new_status = IBC_UTILITIES_PUB.G_STV_SUBMIT_FOR_APPROVAL THEN
13975           l_description := 'Submitted for Approval';
13976           l_activity := Ibc_Utilities_Pvt.G_ALA_SUBMIT;
13977         ELSIF p_new_status = IBC_UTILITIES_PUB.G_STV_REJECTED THEN
13978           l_description := 'Rejected';
13979           l_activity := Ibc_Utilities_Pvt.G_ALA_REJECT;
13980         ELSIF p_new_status = IBC_UTILITIES_PUB.G_STV_ARCHIVED THEN
13981           l_description := 'Archived';
13982           l_activity := Ibc_Utilities_Pvt.G_ALA_ARCHIVE;
13983         END IF;
13984 
13985           Ibc_Utilities_Pvt.log_action(
13986              p_activity      => l_activity
13987             ,p_parent_value  => content_item_id
13988             ,p_object_type   => Ibc_Utilities_Pvt.G_ALO_CITEM_VERSION
13989             ,p_object_value1 => p_citem_ver_id
13990             ,p_object_value2 => NULL
13991             ,p_object_value3 => NULL
13992             ,p_object_value4 => NULL
13993             ,p_object_value5 => NULL
13994             ,p_description   => l_description
13995           );
13996 /*
13997           --UI Logging
13998           IBC_AUDIT_LOG_GRP.log_action(
13999              p_activity             => l_activity
14000             ,p_object_type          => IBC_AUDIT_LOG_GRP.G_CITEM_VERSION
14001             ,p_object_value1        => p_citem_ver_id
14002             ,p_object_value2        => p_language
14003             ,p_parent_value         => getCitemId(p_citem_ver_id)
14004             ,p_message_application  => 'IBC'
14005             ,p_message_name         => 'IBC_TRANS_LOG_MSG'
14006             ,p_extra_info2_type     => IBC_AUDIT_LOG_GRP.G_EI_LOOKUP
14007             ,p_extra_info2_ref_type => 'IBC_CITEM_VERSION_STATUS'
14008             ,p_extra_info2_value    => p_new_status
14009             --,p_commit               => FND_API.g_true
14010             ,p_init_msg_list        => FND_API.g_true
14011             ,x_return_status        => l_return_status
14012             ,x_msg_count            => l_msg_count
14013             ,x_msg_data             => l_msg_data
14014           );
14015 */
14016 
14017     -- COMMIT?
14018     IF ( (x_return_status = FND_API.G_RET_STS_SUCCESS) AND (p_commit = FND_API.g_true) ) THEN
14019         COMMIT;
14020     END IF;
14021 
14022     -- Standard call to get message count and if count is 1, get message info.
14023     FND_MSG_PUB.Count_And_Get(
14024         p_count => x_msg_count
14025        ,p_data  => x_msg_data
14026        );
14027 
14028     IF IBC_DEBUG_PVT.debug_enabled THEN
14029       IBC_DEBUG_PVT.end_process(
14030         IBC_DEBUG_PVT.make_parameter_list(
14031                  p_tag    => 'OUTPUT'
14032                 ,p_parms  => JTF_VARCHAR2_TABLE_4000(
14033                                'px_object_version_number', px_object_version_number
14034                               ,'x_return_status', x_return_status
14035                               ,'x_msg_count', x_msg_count
14036                               ,'x_msg_data', x_msg_data
14037                               )
14038                 )
14039         );
14040     END IF;
14041 
14042 EXCEPTION
14043     WHEN FND_API.G_EXC_ERROR THEN
14044       ROLLBACK TO svpt_change_status;
14045       --DBMS_OUTPUT.put_line('Expected Error');
14046       Ibc_Utilities_Pvt.handle_exceptions(
14047          p_api_name          => L_API_NAME
14048         ,p_pkg_name          => G_PKG_NAME
14049         ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_ERROR
14050         ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
14051         ,p_sqlcode           => SQLCODE
14052         ,p_sqlerrm           => SQLERRM
14053         ,x_msg_count         => x_msg_count
14054         ,x_msg_data          => x_msg_data
14055         ,x_return_status     => x_return_status
14056       );
14057       IF IBC_DEBUG_PVT.debug_enabled THEN
14058         IBC_DEBUG_PVT.end_process(
14059           IBC_DEBUG_PVT.make_parameter_list(
14060             p_tag    => 'OUTPUT',
14061             p_parms  => JTF_VARCHAR2_TABLE_4000(
14062                            'px_object_version_number', px_object_version_number
14063                           ,'x_return_status', x_return_status
14064                           ,'x_msg_count', x_msg_count
14065                           ,'x_msg_data', x_msg_data
14066                           )
14067                         )
14068         );
14069       END IF;
14070   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
14071       ROLLBACK TO svpt_change_status;
14072       --DBMS_OUTPUT.put_line('Unexpected error');
14073       Ibc_Utilities_Pvt.handle_exceptions(
14074          p_api_name          => L_API_NAME
14075         ,p_pkg_name          => G_PKG_NAME
14076         ,p_exception_level   => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
14077         ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
14078         ,p_sqlcode           => SQLCODE
14079         ,p_sqlerrm           => SQLERRM
14080         ,x_msg_count         => x_msg_count
14081         ,x_msg_data          => x_msg_data
14082         ,x_return_status     => x_return_status
14083       );
14084       IF IBC_DEBUG_PVT.debug_enabled THEN
14085         IBC_DEBUG_PVT.end_process(
14086           IBC_DEBUG_PVT.make_parameter_list(
14087             p_tag    => 'OUTPUT',
14088             p_parms  => JTF_VARCHAR2_TABLE_4000(
14089                            'px_object_version_number', px_object_version_number
14090                           ,'x_return_status', x_return_status
14091                           ,'x_msg_count', x_msg_count
14092                           ,'x_msg_data', x_msg_data
14093                           )
14094           )
14095         );
14096       END IF;
14097   WHEN OTHERS THEN
14098       ROLLBACK TO svpt_change_status;
14099       --DBMS_OUTPUT.put_line('Other error');
14100       Ibc_Utilities_Pvt.HANDLE_EXCEPTIONS(
14101          p_api_name          => L_API_NAME
14102         ,p_pkg_name          => G_PKG_NAME
14103         ,p_exception_level   => Ibc_Utilities_Pvt.G_EXC_OTHERS
14104         ,p_package_type      => Ibc_Utilities_Pvt.G_PVT
14105         ,p_sqlcode           => SQLCODE
14106         ,p_sqlerrm           => SQLERRM
14107         ,x_msg_count         => x_msg_count
14108         ,x_msg_data          => x_msg_data
14109         ,x_return_status     => x_return_status
14110       );
14111       IF IBC_DEBUG_PVT.debug_enabled THEN
14112         IBC_DEBUG_PVT.end_process(
14113           IBC_DEBUG_PVT.make_parameter_list(
14114             p_tag    => 'OUTPUT',
14115             p_parms  => JTF_VARCHAR2_TABLE_4000(
14116                            'px_object_version_number', px_object_version_number
14117                           ,'x_return_status', x_return_status
14118                           ,'x_msg_count', x_msg_count
14119                           ,'x_msg_data', x_msg_data
14120                           ,'EXCEPTION', SQLERRM
14121                           )
14122           )
14123         );
14124       END IF;
14125  END Change_Translation_Status;
14126 
14127 
14128 
14129 -- --------------------------------------------------------------
14130 -- isCitemVerInPassedStatus
14131 --
14132 -- Used to see if any item version exists for the passed
14133 -- item version status
14134 --
14135 -- --------------------------------------------------------------
14136 FUNCTION isCitemVerInPassedStatus(
14137                                   p_content_item_id      IN NUMBER
14138                                  ,p_citem_version_status IN VARCHAR2
14139                                  ) RETURN BOOLEAN
14140 IS
14141   l_dummy    VARCHAR2(2);
14142   l_result   BOOLEAN;
14143   CURSOR cur IS
14144     SELECT 'X'
14145       FROM ibc_citem_versions_b
14146      WHERE content_item_id = p_content_item_id
14147        AND citem_version_status = p_citem_version_status;
14148 BEGIN
14149   l_result := FALSE;
14150   OPEN cur;
14151   FETCH cur INTO l_dummy;
14152     l_result := cur%FOUND;
14153   CLOSE cur;
14154   RETURN l_result;
14155 EXCEPTION
14156   WHEN OTHERS THEN
14157     RETURN FALSE;
14158 END isCitemVerInPassedStatus;
14159 
14160 
14161 -- --------------------------------------------------------------
14162 -- isItemLockedByCurrentUser
14163 --
14164 -- Used to see if the item is locked by the current user
14165 --
14166 -- --------------------------------------------------------------
14167 FUNCTION isItemLockedByCurrentUser(p_content_item_id IN NUMBER) RETURN BOOLEAN
14168 IS
14169   l_dummy    VARCHAR2(2);
14170   l_result   BOOLEAN;
14171   CURSOR cur IS
14172     SELECT 'X'
14173       FROM ibc_content_items
14174      WHERE content_item_id = p_content_item_id
14175        AND NVL(locked_by_user_id,FND_GLOBAL.user_id) = FND_GLOBAL.user_id;
14176 BEGIN
14177   l_result := FALSE;
14178   OPEN cur;
14179   FETCH cur INTO l_dummy;
14180     l_result := cur%FOUND;
14181   CLOSE cur;
14182   RETURN l_result;
14183 EXCEPTION
14184   WHEN OTHERS THEN
14185     RETURN FALSE;
14186 END isItemLockedByCurrentUser;
14187 
14188 END; -- Package Body IBC_CITEM_ADMIN_GRP