DBA Data[Home] [Help]

PACKAGE BODY: APPS.DOM_DOCUMENTS_PKG

Source


1 package body DOM_DOCUMENTS_PKG as
2 /* $Header: DOMDOCB.pls 120.1 2006/03/22 03:43:32 ysireesh noship $ */
3 
4 procedure INSERT_ROW (
5   X_ROWID in out nocopy VARCHAR2,
6   X_DOCUMENT_ID in NUMBER,
7   X_CATEGORY_ID in NUMBER,
8   X_DOC_NUMBER in VARCHAR2,
9   X_DEF_REP_ID in NUMBER,
10   X_DEF_FOLDER_ID in NUMBER,
11   X_LOCK_STATUS in VARCHAR2,
12   X_LOCKED_BY in NUMBER,
13   X_LIFECYCLE_ID in NUMBER,
14   X_NAME in VARCHAR2,
15   X_DESCRIPTION in VARCHAR2,
16   X_CREATION_DATE in DATE,
17   X_CREATED_BY in NUMBER,
18   X_LAST_UPDATE_DATE in DATE,
19   X_LAST_UPDATED_BY in NUMBER,
20   X_LAST_UPDATE_LOGIN in NUMBER
21 ) is
22   cursor C is select ROWID from DOM_DOCUMENTS
23     where DOCUMENT_ID = X_DOCUMENT_ID
24     ;
25 begin
26   insert into DOM_DOCUMENTS (
27     DOCUMENT_ID,
28     CATEGORY_ID,
29     DOC_NUMBER,
30     DEF_REP_ID,
31     DEF_FOLDER_ID,
32     LOCK_STATUS,
33     LOCKED_BY,
34     LIFECYCLE_ID,
35     CREATION_DATE,
36     CREATED_BY,
37     LAST_UPDATE_DATE,
38     LAST_UPDATED_BY,
39     LAST_UPDATE_LOGIN
40   ) values (
41     X_DOCUMENT_ID,
42     X_CATEGORY_ID,
43     X_DOC_NUMBER,
44     X_DEF_REP_ID,
45     X_DEF_FOLDER_ID,
46     X_LOCK_STATUS,
47     X_LOCKED_BY,
48     X_LIFECYCLE_ID,
49     X_CREATION_DATE,
50     X_CREATED_BY,
51     X_LAST_UPDATE_DATE,
52     X_LAST_UPDATED_BY,
53     X_LAST_UPDATE_LOGIN
54   );
55 
56   insert into DOM_DOCUMENTS_TL (
57     DOCUMENT_ID,
58     NAME,
59     DESCRIPTION,
60     CREATED_BY,
61     CREATION_DATE,
62     LAST_UPDATED_BY,
63     LAST_UPDATE_DATE,
64     LAST_UPDATE_LOGIN,
65     LANGUAGE,
66     SOURCE_LANG
67   ) select
68     X_DOCUMENT_ID,
69     X_NAME,
70     X_DESCRIPTION,
71     X_CREATED_BY,
72     X_CREATION_DATE,
73     X_LAST_UPDATED_BY,
74     X_LAST_UPDATE_DATE,
75     X_LAST_UPDATE_LOGIN,
76     L.LANGUAGE_CODE,
77     userenv('LANG')
78   from FND_LANGUAGES L
79   where L.INSTALLED_FLAG in ('I', 'B')
80   and not exists
81     (select NULL
82     from DOM_DOCUMENTS_TL T
83     where T.DOCUMENT_ID = X_DOCUMENT_ID
84     and T.LANGUAGE = L.LANGUAGE_CODE);
85 
86   open c;
87   fetch c into X_ROWID;
88   if (c%notfound) then
89     close c;
90     raise no_data_found;
91   end if;
92   close c;
93 
94 end INSERT_ROW;
95 
96 procedure LOCK_ROW (
97   X_DOCUMENT_ID in NUMBER,
98   X_CATEGORY_ID in NUMBER,
99   X_DOC_NUMBER in VARCHAR2,
100   X_DEF_REP_ID in NUMBER,
101   X_DEF_FOLDER_ID in NUMBER,
102   X_LOCK_STATUS in VARCHAR2,
103   X_LOCKED_BY in NUMBER,
104   X_LIFECYCLE_ID in NUMBER,
105   X_NAME in VARCHAR2,
106   X_DESCRIPTION in VARCHAR2
107 ) is
108   cursor c is select
109       CATEGORY_ID,
110       DOC_NUMBER,
111       DEF_REP_ID,
112       DEF_FOLDER_ID,
113       LOCK_STATUS,
114       LOCKED_BY,
115       LIFECYCLE_ID
116     from DOM_DOCUMENTS
117     where DOCUMENT_ID = X_DOCUMENT_ID
118     for update of DOCUMENT_ID nowait;
119   recinfo c%rowtype;
120 
121   cursor c1 is select
122       NAME,
123       DESCRIPTION,
124       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
125     from DOM_DOCUMENTS_TL
126     where DOCUMENT_ID = X_DOCUMENT_ID
127     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
128     for update of DOCUMENT_ID nowait;
129 begin
130   open c;
131   fetch c into recinfo;
132   if (c%notfound) then
133     close c;
134     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
135     app_exception.raise_exception;
136   end if;
137   close c;
138   if (    (recinfo.CATEGORY_ID = X_CATEGORY_ID)
139       AND (recinfo.DOC_NUMBER = X_DOC_NUMBER)
140       AND ((recinfo.DEF_REP_ID = X_DEF_REP_ID)
141            OR ((recinfo.DEF_REP_ID is null) AND (X_DEF_REP_ID is null)))
142       AND ((recinfo.DEF_FOLDER_ID = X_DEF_FOLDER_ID)
143            OR ((recinfo.DEF_FOLDER_ID is null) AND (X_DEF_FOLDER_ID is null)))
144       AND ((recinfo.LOCK_STATUS = X_LOCK_STATUS)
145            OR ((recinfo.LOCK_STATUS is null) AND (X_LOCK_STATUS is null)))
146       AND ((recinfo.LOCKED_BY = X_LOCKED_BY)
147            OR ((recinfo.LOCKED_BY is null) AND (X_LOCKED_BY is null)))
148       AND ((recinfo.LIFECYCLE_ID = X_LIFECYCLE_ID)
149            OR ((recinfo.LIFECYCLE_ID is null) AND (X_LIFECYCLE_ID is null)))
150   ) then
151     null;
152   else
153     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
154     app_exception.raise_exception;
155   end if;
156 
157   for tlinfo in c1 loop
158     if (tlinfo.BASELANG = 'Y') then
159       if (    (tlinfo.NAME = X_NAME)
160           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
161                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
162       ) then
163         null;
164       else
165         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
166         app_exception.raise_exception;
167       end if;
168     end if;
169   end loop;
170   return;
171 end LOCK_ROW;
172 
173 procedure UPDATE_ROW (
174   X_DOCUMENT_ID in NUMBER,
175   X_CATEGORY_ID in NUMBER,
176   X_DOC_NUMBER in VARCHAR2,
177   X_DEF_REP_ID in NUMBER,
178   X_DEF_FOLDER_ID in NUMBER,
179   X_LOCK_STATUS in VARCHAR2,
180   X_LOCKED_BY in NUMBER,
181   X_LIFECYCLE_ID in NUMBER,
182   X_NAME in VARCHAR2,
183   X_DESCRIPTION in VARCHAR2,
184   X_LAST_UPDATE_DATE in DATE,
185   X_LAST_UPDATED_BY in NUMBER,
186   X_LAST_UPDATE_LOGIN in NUMBER
187 ) is
188 begin
189   update DOM_DOCUMENTS set
190     CATEGORY_ID = X_CATEGORY_ID,
191     DOC_NUMBER = X_DOC_NUMBER,
192     DEF_REP_ID = X_DEF_REP_ID,
193     DEF_FOLDER_ID = X_DEF_FOLDER_ID,
194     LOCK_STATUS = X_LOCK_STATUS,
195     LOCKED_BY = X_LOCKED_BY,
196     LIFECYCLE_ID = X_LIFECYCLE_ID,
197     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
198     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
199     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
200   where DOCUMENT_ID = X_DOCUMENT_ID;
201 
202   if (sql%notfound) then
203     raise no_data_found;
204   end if;
205 
206   update DOM_DOCUMENTS_TL set
207     NAME = X_NAME,
208     DESCRIPTION = X_DESCRIPTION,
209     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
210     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
211     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
212     SOURCE_LANG = userenv('LANG')
213   where DOCUMENT_ID = X_DOCUMENT_ID
214   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
215 
216   if (sql%notfound) then
217     raise no_data_found;
218   end if;
219 end UPDATE_ROW;
220 
221 procedure DELETE_ROW (
222   X_DOCUMENT_ID in NUMBER
223 ) is
224 begin
225   delete from DOM_DOCUMENTS_TL
226   where DOCUMENT_ID = X_DOCUMENT_ID;
227 
228   if (sql%notfound) then
229     raise no_data_found;
230   end if;
231 
232   delete from DOM_DOCUMENTS
233   where DOCUMENT_ID = X_DOCUMENT_ID;
234 
235   if (sql%notfound) then
236     raise no_data_found;
237   end if;
238 end DELETE_ROW;
239 
240 procedure ADD_LANGUAGE
241 is
242 begin
243   delete from DOM_DOCUMENTS_TL T
244   where not exists
245     (select NULL
246     from DOM_DOCUMENTS B
247     where B.DOCUMENT_ID = T.DOCUMENT_ID
248     );
249 
250   update DOM_DOCUMENTS_TL T set (
251       NAME,
252       DESCRIPTION
253     ) = (select
254       B.NAME,
255       B.DESCRIPTION
256     from DOM_DOCUMENTS_TL B
257     where B.DOCUMENT_ID = T.DOCUMENT_ID
258     and B.LANGUAGE = T.SOURCE_LANG)
259   where (
260       T.DOCUMENT_ID,
261       T.LANGUAGE
262   ) in (select
263       SUBT.DOCUMENT_ID,
264       SUBT.LANGUAGE
265     from DOM_DOCUMENTS_TL SUBB, DOM_DOCUMENTS_TL SUBT
266     where SUBB.DOCUMENT_ID = SUBT.DOCUMENT_ID
267     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
268     and (SUBB.NAME <> SUBT.NAME
269       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
270       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
271       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
272   ));
273 
274   insert into DOM_DOCUMENTS_TL (
275     DOCUMENT_ID,
276     NAME,
277     DESCRIPTION,
278     CREATED_BY,
279     CREATION_DATE,
280     LAST_UPDATED_BY,
281     LAST_UPDATE_DATE,
282     LAST_UPDATE_LOGIN,
283     LANGUAGE,
284     SOURCE_LANG
285   ) select /*+ ORDERED */
286     B.DOCUMENT_ID,
287     B.NAME,
288     B.DESCRIPTION,
289     B.CREATED_BY,
290     B.CREATION_DATE,
291     B.LAST_UPDATED_BY,
292     B.LAST_UPDATE_DATE,
293     B.LAST_UPDATE_LOGIN,
294     L.LANGUAGE_CODE,
295     B.SOURCE_LANG
296   from DOM_DOCUMENTS_TL B, FND_LANGUAGES L
297   where L.INSTALLED_FLAG in ('I', 'B')
298   and B.LANGUAGE = userenv('LANG')
299   and not exists
300     (select NULL
301     from DOM_DOCUMENTS_TL T
302     where T.DOCUMENT_ID = B.DOCUMENT_ID
303     and T.LANGUAGE = L.LANGUAGE_CODE);
304 end ADD_LANGUAGE;
305 
306 end DOM_DOCUMENTS_PKG;