DBA Data[Home] [Help]

PACKAGE BODY: APPS.XDP_WORKITEMS_PKG

Source


1 package body XDP_WORKITEMS_PKG as
2 /* $Header: XDPWIB.pls 120.2 2005/07/15 06:31:42 appldev ship $ */
3 procedure INSERT_ROW (
4   X_ROWID in OUT NOCOPY VARCHAR2,
5   X_WORKITEM_ID in NUMBER,
6   X_WORKITEM_NAME in VARCHAR2,
7   X_VERSION in VARCHAR2,
8   X_WI_TYPE_CODE in VARCHAR2,
9   X_VALID_DATE in DATE,
10   X_INVALID_DATE in DATE,
11   X_VALIDATION_ENABLED_FLAG in VARCHAR2,
12   X_VALIDATION_PROCEDURE in VARCHAR2,
13   X_FA_EXEC_MAP_PROC in VARCHAR2,
14   X_USER_WF_ITEM_TYPE in VARCHAR2,
15   X_USER_WF_ITEM_KEY_PREFIX in VARCHAR2,
16   X_USER_WF_PROCESS_NAME in VARCHAR2,
17   X_WF_EXEC_PROC in VARCHAR2,
18   X_TIME_ESTIMATE in NUMBER,
19   X_PROTECTED_FLAG in VARCHAR2,
20   X_ROLE_NAME in VARCHAR2,
21   X_DISPLAY_NAME in VARCHAR2,
22   X_DESCRIPTION in VARCHAR2,
23   X_CREATION_DATE in DATE,
24   X_CREATED_BY in NUMBER,
25   X_LAST_UPDATE_DATE in DATE,
26   X_LAST_UPDATED_BY in NUMBER,
27   X_LAST_UPDATE_LOGIN in NUMBER
28 ) is
29   cursor C is select ROWID from XDP_WORKITEMS
30     where WORKITEM_ID = X_WORKITEM_ID
31     ;
32 begin
33   insert into XDP_WORKITEMS (
34     WORKITEM_ID,
35     WORKITEM_NAME,
36     VERSION,
37     WI_TYPE_CODE,
38     VALID_DATE,
39     INVALID_DATE,
40     VALIDATION_ENABLED_FLAG,
41     VALIDATION_PROCEDURE,
42     FA_EXEC_MAP_PROC,
43     USER_WF_ITEM_TYPE,
44     USER_WF_ITEM_KEY_PREFIX,
45     USER_WF_PROCESS_NAME,
46     WF_EXEC_PROC,
47     TIME_ESTIMATE,
48     PROTECTED_FLAG,
49     ROLE_NAME,
50     CREATION_DATE,
51     CREATED_BY,
52     LAST_UPDATE_DATE,
53     LAST_UPDATED_BY,
54     LAST_UPDATE_LOGIN
55   ) values (
56     X_WORKITEM_ID,
57     X_WORKITEM_NAME,
58     X_VERSION,
59     X_WI_TYPE_CODE,
60     X_VALID_DATE,
61     X_INVALID_DATE,
62     X_VALIDATION_ENABLED_FLAG,
63     X_VALIDATION_PROCEDURE,
64     X_FA_EXEC_MAP_PROC,
65     X_USER_WF_ITEM_TYPE,
66     X_USER_WF_ITEM_KEY_PREFIX,
67     X_USER_WF_PROCESS_NAME,
68     X_WF_EXEC_PROC,
69     X_TIME_ESTIMATE,
70     X_PROTECTED_FLAG,
71     X_ROLE_NAME,
72     X_CREATION_DATE,
73     X_CREATED_BY,
74     X_LAST_UPDATE_DATE,
75     X_LAST_UPDATED_BY,
76     X_LAST_UPDATE_LOGIN
77   );
78 
79   insert into XDP_WORKITEMS_TL (
80     WORKITEM_ID,
81     DISPLAY_NAME,
82     DESCRIPTION,
83     CREATED_BY,
84     CREATION_DATE,
85     LAST_UPDATED_BY,
86     LAST_UPDATE_DATE,
87     LAST_UPDATE_LOGIN,
88     LANGUAGE,
89     SOURCE_LANG
90   ) select
91     X_WORKITEM_ID,
92     X_DISPLAY_NAME,
93     X_DESCRIPTION,
94     X_CREATED_BY,
95     X_CREATION_DATE,
96     X_LAST_UPDATED_BY,
97     X_LAST_UPDATE_DATE,
98     X_LAST_UPDATE_LOGIN,
99     L.LANGUAGE_CODE,
100     userenv('LANG')
101   from FND_LANGUAGES L
102   where L.INSTALLED_FLAG in ('I', 'B')
103   and not exists
104     (select NULL
105     from XDP_WORKITEMS_TL T
106     where T.WORKITEM_ID = X_WORKITEM_ID
107     and T.LANGUAGE = L.LANGUAGE_CODE);
108 
109   open c;
110   fetch c into X_ROWID;
111   if (c%notfound) then
112     close c;
113     raise no_data_found;
114   end if;
115   close c;
116 
117 end INSERT_ROW;
118 
119 procedure LOCK_ROW (
120   X_WORKITEM_ID in NUMBER,
121   X_WORKITEM_NAME in VARCHAR2,
122   X_VERSION in VARCHAR2,
123   X_WI_TYPE_CODE in VARCHAR2,
124   X_VALID_DATE in DATE,
125   X_INVALID_DATE in DATE,
126   X_VALIDATION_ENABLED_FLAG in VARCHAR2,
127   X_VALIDATION_PROCEDURE in VARCHAR2,
128   X_FA_EXEC_MAP_PROC in VARCHAR2,
129   X_USER_WF_ITEM_TYPE in VARCHAR2,
130   X_USER_WF_ITEM_KEY_PREFIX in VARCHAR2,
131   X_USER_WF_PROCESS_NAME in VARCHAR2,
132   X_WF_EXEC_PROC in VARCHAR2,
133   X_TIME_ESTIMATE in NUMBER,
134   X_PROTECTED_FLAG in VARCHAR2,
135   X_ROLE_NAME in VARCHAR2,
136   X_DISPLAY_NAME in VARCHAR2,
137   X_DESCRIPTION in VARCHAR2
138 ) is
139   cursor c is select
140       WORKITEM_NAME,
141       VERSION,
142       WI_TYPE_CODE,
143       VALID_DATE,
144       INVALID_DATE,
145       VALIDATION_ENABLED_FLAG,
146       VALIDATION_PROCEDURE,
147       FA_EXEC_MAP_PROC,
148       USER_WF_ITEM_TYPE,
149       USER_WF_ITEM_KEY_PREFIX,
150       USER_WF_PROCESS_NAME,
151       WF_EXEC_PROC,
152       TIME_ESTIMATE,
153       PROTECTED_FLAG,
154       ROLE_NAME
155     from XDP_WORKITEMS
156     where WORKITEM_ID = X_WORKITEM_ID
157     for update of WORKITEM_ID nowait;
158   recinfo c%rowtype;
159 
160   cursor c1 is select
161       DISPLAY_NAME,
162       DESCRIPTION,
163       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
164     from XDP_WORKITEMS_TL
165     where WORKITEM_ID = X_WORKITEM_ID
166     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
167     for update of WORKITEM_ID nowait;
168 begin
169   open c;
170   fetch c into recinfo;
171   if (c%notfound) then
172     close c;
173     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
174     app_exception.raise_exception;
175   end if;
176   close c;
177   if (    (recinfo.WORKITEM_NAME = X_WORKITEM_NAME)
178       AND (recinfo.VERSION = X_VERSION)
179   AND ((recinfo.VALIDATION_PROCEDURE = X_VALIDATION_PROCEDURE)
180            OR ((recinfo.VALIDATION_PROCEDURE is null) AND (X_VALIDATION_PROCEDURE is null)))
181       AND (recinfo.VALIDATION_ENABLED_FLAG = X_VALIDATION_ENABLED_FLAG)
182       AND (recinfo.WI_TYPE_CODE = X_WI_TYPE_CODE)
183       AND ((recinfo.VALID_DATE = X_VALID_DATE)
184            OR ((recinfo.VALID_DATE is null) AND (X_VALID_DATE is null)))
185       AND ((recinfo.INVALID_DATE = X_INVALID_DATE)
186            OR ((recinfo.INVALID_DATE is null) AND (X_INVALID_DATE is null)))
187       AND ((recinfo.FA_EXEC_MAP_PROC = X_FA_EXEC_MAP_PROC)
188            OR ((recinfo.FA_EXEC_MAP_PROC is null) AND (X_FA_EXEC_MAP_PROC is null)))
189       AND ((recinfo.USER_WF_ITEM_TYPE = X_USER_WF_ITEM_TYPE)
190            OR ((recinfo.USER_WF_ITEM_TYPE is null) AND (X_USER_WF_ITEM_TYPE is null)))
191       AND ((recinfo.USER_WF_ITEM_KEY_PREFIX = X_USER_WF_ITEM_KEY_PREFIX)
192            OR ((recinfo.USER_WF_ITEM_KEY_PREFIX is null) AND (X_USER_WF_ITEM_KEY_PREFIX is null)))
193       AND ((recinfo.USER_WF_PROCESS_NAME = X_USER_WF_PROCESS_NAME)
194            OR ((recinfo.USER_WF_PROCESS_NAME is null) AND (X_USER_WF_PROCESS_NAME is null)))
195       AND ((recinfo.WF_EXEC_PROC = X_WF_EXEC_PROC)
196            OR ((recinfo.WF_EXEC_PROC is null) AND (X_WF_EXEC_PROC is null)))
197       AND ((recinfo.TIME_ESTIMATE = X_TIME_ESTIMATE)
198            OR ((recinfo.TIME_ESTIMATE is null) AND (X_TIME_ESTIMATE is null)))
199       AND (recinfo.PROTECTED_FLAG = X_PROTECTED_FLAG)
200       AND ((recinfo.ROLE_NAME = X_ROLE_NAME)
201            OR ((recinfo.ROLE_NAME is null) AND (X_ROLE_NAME is null)))
202   ) then
203     null;
204   else
205     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
206     app_exception.raise_exception;
207   end if;
208 
209   for tlinfo in c1 loop
210     if (tlinfo.BASELANG = 'Y') then
211       if (    (tlinfo.DISPLAY_NAME = X_DISPLAY_NAME)
212           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
213                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
214       ) then
215         null;
216       else
217         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
218         app_exception.raise_exception;
219       end if;
220     end if;
221   end loop;
222   return;
223 end LOCK_ROW;
224 
225 procedure UPDATE_ROW (
226   X_WORKITEM_ID in NUMBER,
227   X_WORKITEM_NAME in VARCHAR2,
228   X_VERSION in VARCHAR2,
229   X_WI_TYPE_CODE in VARCHAR2,
230   X_VALID_DATE in DATE,
231   X_INVALID_DATE in DATE,
232   X_VALIDATION_ENABLED_FLAG in VARCHAR2,
233   X_VALIDATION_PROCEDURE in VARCHAR2,
234   X_FA_EXEC_MAP_PROC in VARCHAR2,
235   X_USER_WF_ITEM_TYPE in VARCHAR2,
236   X_USER_WF_ITEM_KEY_PREFIX in VARCHAR2,
237   X_USER_WF_PROCESS_NAME in VARCHAR2,
238   X_WF_EXEC_PROC in VARCHAR2,
239   X_TIME_ESTIMATE in NUMBER,
240   X_PROTECTED_FLAG in VARCHAR2,
241   X_ROLE_NAME in VARCHAR2,
242   X_DISPLAY_NAME in VARCHAR2,
243   X_DESCRIPTION in VARCHAR2,
244   X_LAST_UPDATE_DATE in DATE,
245   X_LAST_UPDATED_BY in NUMBER,
246   X_LAST_UPDATE_LOGIN in NUMBER
247 ) is
248 begin
249   update XDP_WORKITEMS set
250     WORKITEM_NAME = X_WORKITEM_NAME,
251     VERSION = X_VERSION,
252     WI_TYPE_CODE = X_WI_TYPE_CODE,
253     VALID_DATE = X_VALID_DATE,
254     INVALID_DATE = X_INVALID_DATE,
255     VALIDATION_ENABLED_FLAG = X_VALIDATION_ENABLED_FLAG,
256     VALIDATION_PROCEDURE = X_VALIDATION_PROCEDURE,
257     FA_EXEC_MAP_PROC = X_FA_EXEC_MAP_PROC,
258     USER_WF_ITEM_TYPE = X_USER_WF_ITEM_TYPE,
259     USER_WF_ITEM_KEY_PREFIX = X_USER_WF_ITEM_KEY_PREFIX,
260     USER_WF_PROCESS_NAME = X_USER_WF_PROCESS_NAME,
261     WF_EXEC_PROC = X_WF_EXEC_PROC,
262     TIME_ESTIMATE = X_TIME_ESTIMATE,
263     PROTECTED_FLAG = X_PROTECTED_FLAG,
264     ROLE_NAME = X_ROLE_NAME,
265     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
266     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
267     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
268   where WORKITEM_ID = X_WORKITEM_ID;
269 
270   if (sql%notfound) then
271     raise no_data_found;
272   end if;
273 
274   update XDP_WORKITEMS_TL set
275     DISPLAY_NAME = X_DISPLAY_NAME,
276     DESCRIPTION = X_DESCRIPTION,
277     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
278     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
279     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
280     SOURCE_LANG = userenv('LANG')
281   where WORKITEM_ID = X_WORKITEM_ID
282   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
283 
284   if (sql%notfound) then
285     raise no_data_found;
286   end if;
287 end UPDATE_ROW;
288 
289 procedure DELETE_ROW (
290   X_WORKITEM_ID in NUMBER
291 ) is
292 begin
293   delete from XDP_WORKITEMS_TL
294   where WORKITEM_ID = X_WORKITEM_ID;
295 
296   if (sql%notfound) then
297     raise no_data_found;
298   end if;
299 
300   delete from XDP_WORKITEMS
301   where WORKITEM_ID = X_WORKITEM_ID;
302 
303   if (sql%notfound) then
304     raise no_data_found;
305   end if;
306 end DELETE_ROW;
307 
308 procedure ADD_LANGUAGE
309 is
310 begin
311   delete from XDP_WORKITEMS_TL T
312   where not exists
313     (select NULL
314     from XDP_WORKITEMS B
315     where B.WORKITEM_ID = T.WORKITEM_ID
316     );
317 
318   update XDP_WORKITEMS_TL T set (
319       DISPLAY_NAME,
320       DESCRIPTION
321     ) = (select
322       B.DISPLAY_NAME,
323       B.DESCRIPTION
324     from XDP_WORKITEMS_TL B
325     where B.WORKITEM_ID = T.WORKITEM_ID
326     and B.LANGUAGE = T.SOURCE_LANG)
327   where (
328       T.WORKITEM_ID,
329       T.LANGUAGE
330   ) in (select
331       SUBT.WORKITEM_ID,
332       SUBT.LANGUAGE
333     from XDP_WORKITEMS_TL SUBB, XDP_WORKITEMS_TL SUBT
334     where SUBB.WORKITEM_ID = SUBT.WORKITEM_ID
335     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
336     and (SUBB.DISPLAY_NAME <> SUBT.DISPLAY_NAME
337       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
338       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
339       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
340   ));
341 
342   insert into XDP_WORKITEMS_TL (
343     WORKITEM_ID,
344     DISPLAY_NAME,
345     DESCRIPTION,
346     CREATED_BY,
347     CREATION_DATE,
348     LAST_UPDATED_BY,
349     LAST_UPDATE_DATE,
350     LAST_UPDATE_LOGIN,
351     LANGUAGE,
352     SOURCE_LANG
353   ) select
354     B.WORKITEM_ID,
355     B.DISPLAY_NAME,
356     B.DESCRIPTION,
357     B.CREATED_BY,
358     B.CREATION_DATE,
359     B.LAST_UPDATED_BY,
360     B.LAST_UPDATE_DATE,
361     B.LAST_UPDATE_LOGIN,
362     L.LANGUAGE_CODE,
363     B.SOURCE_LANG
364   from XDP_WORKITEMS_TL B, FND_LANGUAGES L
365   where L.INSTALLED_FLAG in ('I', 'B')
366   and B.LANGUAGE = userenv('LANG')
367   and not exists
368     (select NULL
369     from XDP_WORKITEMS_TL T
370     where T.WORKITEM_ID = B.WORKITEM_ID
371     and T.LANGUAGE = L.LANGUAGE_CODE);
372 end ADD_LANGUAGE;
373 
374 procedure LOAD_ROW (
375   X_WORKITEM_ID in NUMBER,
376   X_WORKITEM_NAME in VARCHAR2,
377   X_VERSION in VARCHAR2,
378   X_WI_TYPE_CODE in VARCHAR2,
379   X_VALID_DATE in DATE,
380   X_INVALID_DATE in DATE,
381   X_VALIDATION_ENABLED_FLAG in VARCHAR2,
382   X_VALIDATION_PROCEDURE in VARCHAR2,
383   X_FA_EXEC_MAP_PROC in VARCHAR2,
384   X_USER_WF_ITEM_TYPE in VARCHAR2,
385   X_USER_WF_ITEM_KEY_PREFIX in VARCHAR2,
386   X_USER_WF_PROCESS_NAME in VARCHAR2,
387   X_WF_EXEC_PROC in VARCHAR2,
388   X_TIME_ESTIMATE in NUMBER,
389   X_PROTECTED_FLAG in VARCHAR2,
390   X_ROLE_NAME in VARCHAR2,
391   X_DISPLAY_NAME in VARCHAR2,
392   X_DESCRIPTION in VARCHAR2,
393   X_OWNER in VARCHAR2) IS
394 begin
395 
396   declare
397      user_id            number := 0;
398      row_id             varchar2(64);
399 
400   begin
401 
402      /* The following derivation has been replaced with the FND API.		dputhiye 15-JUL-2005. R12 ATG "Seed Version by Date" Uptake */
403      --if (X_OWNER = 'SEED') then
404      --   user_id := 1;
405      --end if;
406      user_id := fnd_load_util.owner_id(X_OWNER);
407 
408      XDP_WORKITEMS_PKG.UPDATE_ROW (
409   	X_WORKITEM_ID => X_WORKITEM_ID,
410   	X_WORKITEM_NAME => X_WORKITEM_NAME,
411   	X_VERSION => X_VERSION,
412   	X_WI_TYPE_CODE => X_WI_TYPE_CODE,
413   	X_VALID_DATE => X_VALID_DATE,
414   	X_INVALID_DATE => X_INVALID_DATE,
415         X_VALIDATION_ENABLED_FLAG =>X_VALIDATION_ENABLED_FLAG,
416         X_VALIDATION_PROCEDURE => X_VALIDATION_PROCEDURE,
417   	X_FA_EXEC_MAP_PROC => X_FA_EXEC_MAP_PROC,
418   	X_USER_WF_ITEM_TYPE => X_USER_WF_ITEM_TYPE,
419   	X_USER_WF_ITEM_KEY_PREFIX => X_USER_WF_ITEM_KEY_PREFIX,
420   	X_USER_WF_PROCESS_NAME => X_USER_WF_PROCESS_NAME,
421   	X_WF_EXEC_PROC => X_WF_EXEC_PROC,
422   	X_TIME_ESTIMATE => X_TIME_ESTIMATE,
423   	X_PROTECTED_FLAG => X_PROTECTED_FLAG,
424   	X_ROLE_NAME => X_ROLE_NAME,
425   	X_DISPLAY_NAME => X_DISPLAY_NAME,
426   	X_DESCRIPTION => X_DESCRIPTION,
427         X_LAST_UPDATE_DATE => sysdate,
428         X_LAST_UPDATED_BY => user_id,
429         X_LAST_UPDATE_LOGIN => 0);
430 
431     exception
432        when NO_DATA_FOUND then
433           XDP_WORKITEMS_PKG.INSERT_ROW (
434              	X_ROWID => row_id,
435   		X_WORKITEM_ID => X_WORKITEM_ID,
436   		X_WORKITEM_NAME => X_WORKITEM_NAME,
437   		X_VERSION => X_VERSION,
438   		X_WI_TYPE_CODE => X_WI_TYPE_CODE,
439   		X_VALID_DATE => X_VALID_DATE,
440   		X_INVALID_DATE => X_INVALID_DATE,
441                 X_VALIDATION_ENABLED_FLAG =>X_VALIDATION_ENABLED_FLAG,
442                 X_VALIDATION_PROCEDURE => X_VALIDATION_PROCEDURE,
443   		X_FA_EXEC_MAP_PROC => X_FA_EXEC_MAP_PROC,
444   		X_USER_WF_ITEM_TYPE => X_USER_WF_ITEM_TYPE,
445   		X_USER_WF_ITEM_KEY_PREFIX => X_USER_WF_ITEM_KEY_PREFIX,
446   		X_USER_WF_PROCESS_NAME => X_USER_WF_PROCESS_NAME,
447   		X_WF_EXEC_PROC => X_WF_EXEC_PROC,
448   		X_TIME_ESTIMATE => X_TIME_ESTIMATE,
449   		X_PROTECTED_FLAG => X_PROTECTED_FLAG,
450   		X_ROLE_NAME => X_ROLE_NAME,
451   		X_DISPLAY_NAME => X_DISPLAY_NAME,
452   		X_DESCRIPTION => X_DESCRIPTION,
453              	X_CREATION_DATE => sysdate,
454              	X_CREATED_BY => user_id,
455              	X_LAST_UPDATE_DATE => sysdate,
456              	X_LAST_UPDATED_BY => user_id,
457              	X_LAST_UPDATE_LOGIN => 0);
458    end;
459 end LOAD_ROW;
460 
461 procedure TRANSLATE_ROW (
462    X_WORKITEM_ID in NUMBER,
463    X_DISPLAY_NAME in VARCHAR2,
464    X_DESCRIPTION in VARCHAR2,
465    X_OWNER in VARCHAR2) IS
466 
467 begin
468 
469     -- only update rows that have not been altered by user
470 
471     update XDP_WORKITEMS_TL
472     set  description = X_DESCRIPTION,
473         display_name = X_DISPLAY_NAME,
474         source_lang = userenv('LANG'),
475         last_update_date = sysdate,
476         --last_updated_by = decode(X_OWNER, 'SEED', 1, 0),		/*dputhiye 15-JUL-2005. DECODE replaced with FND API.*/
477 	last_updated_by = fnd_load_util.owner_id(X_OWNER),
478         last_update_login = 0
479   where workitem_id = X_WORKITEM_ID
480     and userenv('LANG') in (language, source_lang);
481 
482 end TRANSLATE_ROW;
483 
484 
485 end XDP_WORKITEMS_PKG;