[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