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