1: PACKAGE BODY fnd_documents_pkg as
2: /* $Header: AFAKADCB.pls 120.8 2011/12/14 19:09:42 ctilley ship $ */
3:
4:
5: PROCEDURE Insert_Row(X_Rowid IN OUT NOCOPY VARCHAR2,
53: X_dm_version_number VARCHAR2 DEFAULT NULL,
54: X_orig_doc_id IN NUMBER DEFAULT NULL
55: ) IS
56: CURSOR C IS SELECT rowid
57: FROM fnd_documents
58: WHERE document_id = X_document_id;
59:
60: l_media_id number;
61: --l_longtxt varchar2(32767);
58: WHERE document_id = X_document_id;
59:
60: l_media_id number;
61: --l_longtxt varchar2(32767);
62: l_longtxt fnd_documents_long_text.long_text%TYPE;
63: l_app_s_v varchar2(255);
64:
65: BEGIN
66:
66:
67: l_media_id := X_media_id;
68:
69: -- Get document_id from sequence
70: SELECT fnd_documents_s.nextval
71: INTO X_document_id
72: FROM dual;
73:
74:
75: -- Get media_id from the correct sequence depending on if it's
76: -- a short-text, long-text, ole_object, or db-stored image
77:
78: IF (X_datatype_id = 1) THEN
79: SELECT fnd_documents_short_text_s.nextval
80: INTO X_media_id
81: FROM dual;
82: IF (X_create_doc = 'Y') then
83: insert into fnd_documents_short_text
79: SELECT fnd_documents_short_text_s.nextval
80: INTO X_media_id
81: FROM dual;
82: IF (X_create_doc = 'Y') then
83: insert into fnd_documents_short_text
84: (media_id, short_text, app_source_version)
85: select X_media_id, short_text, app_source_version
86: from fnd_documents_short_text
87: where media_id = l_media_id;
82: IF (X_create_doc = 'Y') then
83: insert into fnd_documents_short_text
84: (media_id, short_text, app_source_version)
85: select X_media_id, short_text, app_source_version
86: from fnd_documents_short_text
87: where media_id = l_media_id;
88:
89: END IF;
90: ELSIF (X_datatype_id = 2) THEN
87: where media_id = l_media_id;
88:
89: END IF;
90: ELSIF (X_datatype_id = 2) THEN
91: SELECT fnd_documents_long_text_s.nextval
92: INTO X_media_id
93: FROM dual;
94: IF (X_create_doc = 'Y') then
95: select long_text,app_source_version into l_longtxt,l_app_s_v from fnd_documents_long_text
91: SELECT fnd_documents_long_text_s.nextval
92: INTO X_media_id
93: FROM dual;
94: IF (X_create_doc = 'Y') then
95: select long_text,app_source_version into l_longtxt,l_app_s_v from fnd_documents_long_text
96: where media_id = l_media_id;
97: insert into fnd_documents_long_text
98: (media_id,long_text,app_source_version)
99: values (X_media_id,l_longtxt,l_app_s_v);
93: FROM dual;
94: IF (X_create_doc = 'Y') then
95: select long_text,app_source_version into l_longtxt,l_app_s_v from fnd_documents_long_text
96: where media_id = l_media_id;
97: insert into fnd_documents_long_text
98: (media_id,long_text,app_source_version)
99: values (X_media_id,l_longtxt,l_app_s_v);
100: END IF;
101: ELSIF ( (X_datatype_id = 4)
100: END IF;
101: ELSIF ( (X_datatype_id = 4)
102: OR ( X_datatype_id = 3
103: AND X_storage_type = 1) ) THEN
104: SELECT fnd_documents_long_raw_s.nextval
105: INTO X_media_id
106: FROM dual;
107: ELSIF (X_datatype_id = 6 and X_media_id is NULL) THEN
108: SELECT fnd_lobs_s.nextval
110: FROM dual;
111: END IF;
112:
113: -- First insert row into "base" table
114: INSERT INTO fnd_documents(
115: document_id,
116: creation_date,
117: created_by,
118: last_update_date,
248: IS
249: BEGIN
250:
251: -- insert into "language" specific table
252: INSERT INTO fnd_Documents_tl (
253: document_id,
254: creation_date,
255: created_by,
256: last_update_date,
312: X_title
313: FROM fnd_languages L
314: WHERE l.installed_flag IN ('I','B')
315: AND NOT EXISTS (SELECT null
316: FROM fnd_documents_tl TL
317: WHERE document_id = x_document_id
318: AND TL.language = l.language_code);
319:
320: END Insert_tl_Row;
355: X_url VARCHAR2 DEFAULT NULL,
356: X_title VARCHAR2 DEFAULT NULL) IS
357: CURSOR C IS
358: SELECT *
359: FROM fnd_documents
360: WHERE document_id = X_document_id
361: FOR UPDATE of document_id NOWAIT;
362: Recinfo C%ROWTYPE;
363: BEGIN
455: X_title VARCHAR2 DEFAULT NULL
456: ) IS
457: CURSOR C IS
458: SELECT *
459: FROM fnd_documents_tl
460: WHERE document_id = X_document_id
461: AND language = X_language
462: FOR UPDATE of language NOWAIT;
463: Recinfo C%ROWTYPE;
579: X_dm_document_id NUMBER DEFAULT NULL,
580: X_dm_version_number VARCHAR2 DEFAULT NULL
581: ) IS
582: BEGIN
583: UPDATE fnd_documents
584: SET document_id = X_document_id,
585: last_update_date = X_last_update_date,
586: last_updated_by = X_last_updated_by,
587: last_update_login = X_last_update_login,
662: X_Attribute15 VARCHAR2 DEFAULT NULL,
663: X_title VARCHAR2 DEFAULT NULL
664: ) IS
665: BEGIN
666: UPDATE fnd_documents_tl
667: SET document_id = X_document_id,
668: last_update_date = X_last_update_date,
669: last_updated_by = X_last_updated_by,
670: last_update_login = X_last_update_login,
702: BEGIN
703: -- need to delete in this order for R10-10SC compatibility
704: -- triggers to operate properly
705: -- 1. fnd_attached_documents
706: -- 2. fnd_documents_short_text/long_text/long_raw
707: -- 3. fnd_documents_tl
708: -- 4. fnd_documents
709: -- Delete the Reference if flag set to Y
710: IF (delete_ref_flag = 'Y') THEN
703: -- need to delete in this order for R10-10SC compatibility
704: -- triggers to operate properly
705: -- 1. fnd_attached_documents
706: -- 2. fnd_documents_short_text/long_text/long_raw
707: -- 3. fnd_documents_tl
708: -- 4. fnd_documents
709: -- Delete the Reference if flag set to Y
710: IF (delete_ref_flag = 'Y') THEN
711: DELETE FROM fnd_attached_documents
704: -- triggers to operate properly
705: -- 1. fnd_attached_documents
706: -- 2. fnd_documents_short_text/long_text/long_raw
707: -- 3. fnd_documents_tl
708: -- 4. fnd_documents
709: -- Delete the Reference if flag set to Y
710: IF (delete_ref_flag = 'Y') THEN
711: DELETE FROM fnd_attached_documents
712: WHERE document_id = X_document_id;
714:
715: -- now go about the business of deleting the document from
716: -- the document tables
717: IF (X_datatype_id = 1) THEN
718: DELETE FROM fnd_documents_short_text
719: WHERE media_id IN
720: (SELECT media_id
721: FROM fnd_documents
722: WHERE document_id = x_document_id);
717: IF (X_datatype_id = 1) THEN
718: DELETE FROM fnd_documents_short_text
719: WHERE media_id IN
720: (SELECT media_id
721: FROM fnd_documents
722: WHERE document_id = x_document_id);
723: ELSIF (X_datatype_id = 2) THEN
724: DELETE FROM fnd_documents_long_text
725: WHERE media_id IN
720: (SELECT media_id
721: FROM fnd_documents
722: WHERE document_id = x_document_id);
723: ELSIF (X_datatype_id = 2) THEN
724: DELETE FROM fnd_documents_long_text
725: WHERE media_id IN
726: (SELECT media_id
727: FROM fnd_documents
728: WHERE document_id = x_document_id);
723: ELSIF (X_datatype_id = 2) THEN
724: DELETE FROM fnd_documents_long_text
725: WHERE media_id IN
726: (SELECT media_id
727: FROM fnd_documents
728: WHERE document_id = x_document_id);
729: ELSIF (X_datatype_id IN (3,4) ) THEN
730: DELETE FROM fnd_documents_long_raw
731: WHERE media_id IN
726: (SELECT media_id
727: FROM fnd_documents
728: WHERE document_id = x_document_id);
729: ELSIF (X_datatype_id IN (3,4) ) THEN
730: DELETE FROM fnd_documents_long_raw
731: WHERE media_id IN
732: (SELECT media_id
733: FROM fnd_documents
734: WHERE document_id = x_document_id);
729: ELSIF (X_datatype_id IN (3,4) ) THEN
730: DELETE FROM fnd_documents_long_raw
731: WHERE media_id IN
732: (SELECT media_id
733: FROM fnd_documents
734: WHERE document_id = x_document_id);
735: ELSIF (X_datatype_id = 6) THEN
736: DELETE FROM fnd_lobs
737: WHERE file_id in
735: ELSIF (X_datatype_id = 6) THEN
736: DELETE FROM fnd_lobs
737: WHERE file_id in
738: (SELECT media_id
739: from fnd_documents
740: WHERE document_id = x_document_id);
741: END IF;
742:
743: DELETE FROM fnd_documents_tl
739: from fnd_documents
740: WHERE document_id = x_document_id);
741: END IF;
742:
743: DELETE FROM fnd_documents_tl
744: WHERE document_id = X_document_id;
745:
746: DELETE FROM fnd_documents
747: WHERE document_id = X_document_id;
742:
743: DELETE FROM fnd_documents_tl
744: WHERE document_id = X_document_id;
745:
746: DELETE FROM fnd_documents
747: WHERE document_id = X_document_id;
748:
749: END Delete_Row;
750:
756: /* as a quick workaround to fix the time-consuming table handler issue */
757: /* Eventually we'll need to turn them into a separate fix_language procedure */
758: /*
759:
760: delete from FND_DOCUMENTS_TL T
761: where not exists
762: (select NULL
763: from FND_DOCUMENTS B
764: where B.DOCUMENT_ID = T.DOCUMENT_ID
759:
760: delete from FND_DOCUMENTS_TL T
761: where not exists
762: (select NULL
763: from FND_DOCUMENTS B
764: where B.DOCUMENT_ID = T.DOCUMENT_ID
765: );
766:
767: update FND_DOCUMENTS_TL T set (
763: from FND_DOCUMENTS B
764: where B.DOCUMENT_ID = T.DOCUMENT_ID
765: );
766:
767: update FND_DOCUMENTS_TL T set (
768: DESCRIPTION
769: ) = (select
770: B.DESCRIPTION
771: from FND_DOCUMENTS_TL B
767: update FND_DOCUMENTS_TL T set (
768: DESCRIPTION
769: ) = (select
770: B.DESCRIPTION
771: from FND_DOCUMENTS_TL B
772: where B.DOCUMENT_ID = T.DOCUMENT_ID
773: and B.LANGUAGE = T.SOURCE_LANG)
774: where (
775: T.DOCUMENT_ID,
776: T.LANGUAGE
777: ) in (select
778: SUBT.DOCUMENT_ID,
779: SUBT.LANGUAGE
780: from FND_DOCUMENTS_TL SUBB, FND_DOCUMENTS_TL SUBT
781: where SUBB.DOCUMENT_ID = SUBT.DOCUMENT_ID
782: and SUBB.LANGUAGE = SUBT.SOURCE_LANG
783: and (SUBB.DESCRIPTION <> SUBT.DESCRIPTION
784: or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
785: or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
786: ));
787: */
788:
789: insert /*+ append parallel(tt) */ into FND_DOCUMENTS_TL tt (
790: DOCUMENT_ID,
791: CREATION_DATE,
792: CREATED_BY,
793: LAST_UPDATE_DATE,
850: B.APP_SOURCE_VERSION,
851: B.SHORT_TEXT,
852: L.LANGUAGE_CODE,
853: B.SOURCE_LANG
854: from FND_DOCUMENTS_TL B, FND_LANGUAGES L
855: where L.INSTALLED_FLAG in ('I', 'B')
856: and B.LANGUAGE = userenv('LANG')
857: ) v, fnd_documents_tl t
858: where T.DOCUMENT_ID(+) = v.DOCUMENT_ID
853: B.SOURCE_LANG
854: from FND_DOCUMENTS_TL B, FND_LANGUAGES L
855: where L.INSTALLED_FLAG in ('I', 'B')
856: and B.LANGUAGE = userenv('LANG')
857: ) v, fnd_documents_tl t
858: where T.DOCUMENT_ID(+) = v.DOCUMENT_ID
859: and T.LANGUAGE(+) = v.LANGUAGE_CODE
860: and t.document_id IS NULL;
861:
860: and t.document_id IS NULL;
861:
862: end ADD_LANGUAGE;
863:
864: END fnd_documents_pkg;