DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_NAV_TABS_PKG

Source


1 package body JTF_NAV_TABS_PKG AS
2   /* $Header: jtfntabb.pls 120.2 2005/12/12 15:19:48 stopiwal ship $ */
3 
4 PROCEDURE INSERT_ROW (X_TAB_VALUE in VARCHAR2,
5                       X_NAVIGATOR_TYPE IN VARCHAR2,
6                       X_APPLICATION_ID in NUMBER,
7                       X_ICON_NAME in VARCHAR2,
8                       X_SEQUENCE_NUMBER in NUMBER,
9                       X_TAB_LABEL in VARCHAR2,
10                       X_CREATION_DATE in DATE,
11                       X_CREATED_BY in NUMBER,
12                       X_LAST_UPDATE_DATE in DATE,
13                       X_LAST_UPDATED_BY in NUMBER,
14                       X_LAST_UPDATE_LOGIN in NUMBER)
15 IS
16 
17    l_tab_id number := 0;
18 
19 BEGIN
20    -- since our view is based on two tables, make sure the right columns
21    -- of each table get updated
22 
23    SELECT jtf_nav_tabs_s.nextval
24      INTO l_tab_id
25      FROM dual;
26    insert into JTF_NAV_TABS_b
27      (tab_id,
28      TAB_VALUE,
29      NAVIGATOR_TYPE,
30      APPLICATION_ID,
31      ICON_NAME,
32      SEQUENCE_NUMBER,
33      CREATION_DATE,
34      CREATED_BY,
35      LAST_UPDATE_DATE,
36      LAST_UPDATED_BY,
37      LAST_UPDATE_LOGIN
38      ) values (
39      l_tab_id,
40      X_TAB_VALUE,
41      x_navigator_type,
42      X_APPLICATION_ID,
43      X_ICON_NAME,
44      X_SEQUENCE_NUMBER,
45      X_CREATION_DATE,
46      X_CREATED_BY,
47      X_LAST_UPDATE_DATE,
48      X_LAST_UPDATED_BY,
49      X_LAST_UPDATE_LOGIN);
50 
51  insert into JTF_NAV_TABS_TL (
52     CREATED_BY,
53     CREATION_DATE,
54     LAST_UPDATE_LOGIN,
55     LAST_UPDATE_DATE,
56     LAST_UPDATED_BY,
57     tab_id,
58     TAB_LABEL,
59     LANGUAGE,
60     SOURCE_LANG
61   ) select
62     X_CREATED_BY,
63     X_CREATION_DATE,
64     X_LAST_UPDATE_LOGIN,
65     X_LAST_UPDATE_DATE,
66     X_LAST_UPDATED_BY,
67     l_tab_id,
68     X_TAB_LABEL,
69     L.LANGUAGE_CODE,
70     userenv('LANG')
71   from FND_LANGUAGES L
72   where L.INSTALLED_FLAG in ('I', 'B')
73   and not exists
74     (select NULL
75     from JTF_NAV_TABS_TL T
76     where T.TAB_id = l_tab_id
77     and T.LANGUAGE = L.LANGUAGE_CODE);
78 
79 end INSERT_ROW;
80 
81 procedure UPDATE_ROW
82   (x_tab_id IN number,
83    X_TAB_VALUE in VARCHAR2,
84    X_NAVIGATOR_TYPE IN VARCHAR2,
85    X_APPLICATION_ID in NUMBER,
86    X_ICON_NAME in VARCHAR2,
87    X_SEQUENCE_NUMBER in NUMBER,
88    X_TAB_LABEL in VARCHAR2,
89    X_LAST_UPDATE_DATE in DATE,
90    X_LAST_UPDATED_BY in NUMBER,
91    X_LAST_UPDATE_LOGIN in NUMBER) IS
92 begin
93    update JTF_NAV_TABS_B SET
94      tab_value = x_tab_value,
95      NAVIGATOR_type = X_NAVIGATOR_TYPE,
96      APPLICATION_ID = X_APPLICATION_ID,
97      ICON_NAME = X_ICON_NAME,
98      SEQUENCE_NUMBER = X_SEQUENCE_NUMBER,
99      LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
100      LAST_UPDATED_BY = X_LAST_UPDATED_BY,
101      LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
102      where TAB_id = X_TAB_id;
103 
104   if (sql%notfound) then
105     raise no_data_found;
106   end if;
107 
108   update JTF_NAV_TABS_TL set
109     TAB_LABEL = X_TAB_LABEL,
110     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
111     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
112     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
113     SOURCE_LANG = userenv('LANG')
114   where TAB_id = X_TAB_id
115   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
116 
117   if (sql%notfound) then
118     raise no_data_found;
119   end if;
120 end UPDATE_ROW;
121 
122 procedure LOCK_ROW
123   (X_TAB_ID in NUMBER,
124    X_TAB_VALUE in VARCHAR2,
125    X_NAVIGATOR_TYPE IN VARCHAR2,
126    X_APPLICATION_ID in NUMBER,
127    X_ICON_NAME in VARCHAR2,
128    X_SEQUENCE_NUMBER in NUMBER,
129    X_TAB_LABEL in VARCHAR2) IS
130    cursor c IS
131      SELECT tab_value, APPLICATION_ID, ICON_NAME,
132        sequence_number, navigator_type
133        FROM JTF_NAV_TABS_B
134        WHERE TAB_id = X_TAB_id
135        FOR UPDATE OF TAB_ID nowait;
136   recinfo c%rowtype;
137 
138   cursor c1 is select
139       TAB_LABEL,
140       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
141     from JTF_NAV_TABS_TL
142     where TAB_id = X_TAB_id
143     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
144     for update of TAB_id nowait;
145 begin
146   open c;
147   fetch c into recinfo;
148   if (c%notfound) then
149     close c;
150     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
151     app_exception.raise_exception;
152   end if;
153   close c;
154   if (    (recinfo.APPLICATION_ID = X_APPLICATION_ID)
155     AND (recinfo.ICON_NAME = X_ICON_NAME)
156     AND (recinfo.SEQUENCE_NUMBER = X_SEQUENCE_NUMBER)
157     AND (recinfo.tab_value = x_tab_value)
158     AND ((recinfo.navigator_type = x_navigator_type) OR
159     (x_navigator_type IS NULL AND recinfo.navigator_type IS null))
160   ) then
161     null;
162   else
163     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
164     app_exception.raise_exception;
165   end if;
166 
167   for tlinfo in c1 loop
168     if (tlinfo.BASELANG = 'Y') then
169       if (    (tlinfo.TAB_LABEL = X_TAB_LABEL)
170       ) then
171         null;
172       else
173         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
174         app_exception.raise_exception;
175       end if;
176     end if;
177   end loop;
178   return;
179 end LOCK_ROW;
180 
181 procedure DELETE_ROW (X_TAB_id in NUMBER) IS
182 begin
183   delete from JTF_NAV_TABS_TL
184   where TAB_id = X_TAB_id;
185 
186   if (sql%notfound) then
187     raise no_data_found;
188   end if;
189 
190   delete from JTF_NAV_TABS_B
191   where TAB_id = X_TAB_id;
192 
193   if (sql%notfound) then
194     raise no_data_found;
195   end if;
196 end DELETE_ROW;
197 
198 procedure ADD_LANGUAGE
199 is
200 begin
201   delete from JTF_NAV_TABS_TL T
202   where not exists
203     (select NULL
204     from JTF_NAV_TABS_B B
205     where B.TAB_id = T.TAB_id
206     );
207 
208   update JTF_NAV_TABS_TL T set (
209       TAB_LABEL
210     ) = (select
211       B.TAB_LABEL
212     from JTF_NAV_TABS_TL B
213     where B.TAB_id = T.TAB_id
214     and B.LANGUAGE = T.SOURCE_LANG)
215   where (
216       T.TAB_id,
217       T.LANGUAGE
218   ) in (select
219       SUBT.TAB_id,
220       SUBT.LANGUAGE
221     from JTF_NAV_TABS_TL SUBB, JTF_NAV_TABS_TL SUBT
222     where SUBB.TAB_id = SUBT.TAB_id
223     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
224     and (SUBB.TAB_LABEL <> SUBT.TAB_LABEL
225   ));
226 
227   insert into JTF_NAV_TABS_TL (
228     CREATED_BY,
229     CREATION_DATE,
230     LAST_UPDATE_LOGIN,
231     LAST_UPDATE_DATE,
232     LAST_UPDATED_BY,
233     TAB_id,
234     TAB_LABEL,
235     LANGUAGE,
236     SOURCE_LANG
237   ) select
238     B.CREATED_BY,
239     B.CREATION_DATE,
240     B.LAST_UPDATE_LOGIN,
241     B.LAST_UPDATE_DATE,
242     B.LAST_UPDATED_BY,
243     B.TAB_id,
244     B.TAB_LABEL,
245     L.LANGUAGE_CODE,
246     B.SOURCE_LANG
247   from JTF_NAV_TABS_TL B, FND_LANGUAGES L
248   where L.INSTALLED_FLAG in ('I', 'B')
249   and B.LANGUAGE = userenv('LANG')
250   and not exists
251     (select NULL
252     from JTF_NAV_TABS_TL T
253     where T.TAB_id = B.TAB_id
254     and T.LANGUAGE = L.LANGUAGE_CODE);
255 end ADD_LANGUAGE;
256 
257 -- --------------------------------------------------------------------
258 -- Procedure : LOAD_ROW
259 -- Description : Called by FNDLOAD to upload seed datas, this procedure
260 --    only handle seed data.
261 -- --------------------------------------------------------------------
262 PROCEDURE LOAD_row
263   (X_TAB_VALUE in VARCHAR2,
264    X_NAVIGATOR_TYPE IN varchar2,
265    X_APPLICATION_ID in NUMBER,
266    X_ICON_NAME in VARCHAR2,
267    X_SEQUENCE_NUMBER in NUMBER,
268    X_TAB_LABEL in VARCHAR2,
269    X_OWNER in VARCHAR2) IS
270    user_id NUMBER;
271    l_tab_id number;
272 
273 BEGIN
274    -- Validate input data
275    IF (x_tab_value IS NULL) OR (x_application_id IS NULL)
276      OR (x_tab_label IS NULL) THEN
277       GOTO end_load_row;
278    END IF;
279 
280    /*
281    IF (x_owner IS NOT NULL) AND (x_owner = 'SEED') THEN
282       user_id := 1;
283     ELSE
284       user_id := 0;
285    END IF;
286    */
287    user_id := fnd_load_util.owner_id(x_owner);
288 
289    -- Load The record to _B table
290    UPDATE  jtf_nav_tabs_b SET
291      navigator_type = x_navigator_type,
292      application_id = x_application_id,
293      icon_name = x_icon_name,
294      sequence_number = x_sequence_number,
295      last_update_date = sysdate,
296      last_updated_by = user_id,
297      last_update_login = 0
298      WHERE tab_value = x_tab_value;
299 
300    IF (SQL%NOTFOUND) THEN
301       -- Insert new record to _B table
302       SELECT jtf_nav_tabs_s.nextval
303         INTO l_tab_id
304         FROM dual;
305 
306       INSERT INTO jtf_nav_tabs_b
307         (tab_id,
308         tab_value,
309         navigator_type,
310         application_id,
311         icon_name,
312         sequence_number,
313         creation_date,
314         created_by,
315         last_update_date,
316         last_updated_by,
317         last_update_login
318         ) VALUES
319         (l_tab_id,
320         x_tab_value,
321         x_navigator_type,
322         x_application_id,
323         x_icon_name,
324         x_sequence_number,
325         sysdate,
326         user_id,
327         sysdate,
328         user_id,
329         0
330         );
331    END IF;
332 
333    SELECT tab_id
334      INTO l_tab_id
335      FROM jtf_nav_tabs_b
336      WHERE tab_value = x_tab_value;
337 
338    -- Load The record to _TL table
339    UPDATE jtf_nav_tabs_tl SET
340      tab_label = x_tab_label,
341      last_update_date = sysdate,
342      last_updated_by = user_id,
343      last_update_login = 0,
344      source_lang = userenv('LANG')
345      WHERE tab_id = l_tab_id
346      AND userenv('LANG') IN (LANGUAGE, SOURCE_LANG);
347 
348    IF (SQL%NOTFOUND) THEN
349       -- Insert new record to _TL table
350       INSERT INTO jtf_nav_tabs_tl
351         (tab_id,
352          tab_label,
353          creation_date,
354          created_by,
355          last_update_date,
356          last_updated_by,
357          last_update_login,
358          language,
359          source_lang)
360         SELECT
361         l_tab_id,
362         x_tab_label,
363         sysdate,
364         user_id,
365         sysdate,
366         user_id,
367         0,
368         l.language_code,
369         userenv('LANG')
370         FROM fnd_languages l
371         WHERE l.installed_flag IN ('I', 'B')
372         AND NOT EXISTS
373         (SELECT NULL
374          FROM jtf_nav_tabs_tl t
375          WHERE t.tab_id = l_tab_id
376          AND t.language = l.language_code);
377    END IF;
378    << end_load_row >>
379      NULL;
380 END LOAD_ROW ;
381 
382 -- --------------------------------------------------------------------
383 -- Procedure : TRANSLATE_ROW
384 -- Description : Called by FNDLOAD to translate seed datas, this procedure
385 --    only handle seed datas.
386 -- --------------------------------------------------------------------
387 PROCEDURE TRANSLATE_ROW
388   ( x_tab_value IN VARCHAR2,
389     x_tab_label IN VARCHAR2,
390     x_owner IN VARCHAR2) IS
391    user_id NUMBER;
392    l_tab_id number;
393 
394 BEGIN
395     -- Validate input data
396    IF (x_tab_value IS NULL) OR (x_tab_label IS NULL) THEN
397       GOTO end_translate_row;
398    END IF;
399 
400    /*
401    IF (x_owner IS NOT NULL) AND (x_owner = 'SEED') THEN
402       user_id := 1;
403     ELSE
404       user_id := 0;
405    END IF;
406    */
407    user_id := fnd_load_util.owner_id(x_owner);
408 
409    --find the correct tab id
410    SELECT tab_id
411      INTO l_tab_id
412      FROM jtf_nav_tabs_b
413      WHERE tab_value = x_tab_value;
414 
415    -- Update the translation
416    UPDATE jtf_nav_tabs_tl SET
417      tab_label = x_tab_label,
418      last_update_date = sysdate,
419      last_updated_by = user_id,
420      last_update_login = 0,
421      source_lang = userenv('LANG')
422      WHERE tab_id = l_tab_id
423      AND userenv('LANG') IN (LANGUAGE, SOURCE_LANG);
424 
425    << end_translate_row >>
426      NULL;
427 END TRANSLATE_ROW ;
428 
429 END JTF_NAV_TABS_PKG;