DBA Data[Home] [Help]

PACKAGE BODY: APPS.WF_LOOKUP_TYPES_PKG

Source


1 package body WF_LOOKUP_TYPES_PKG as
2 /* $Header: wflutb.pls 120.3 2005/10/04 23:24:11 rtodi ship $ */
3 procedure INSERT_ROW (
4   X_ROWID in out NOCOPY VARCHAR2,
5   X_LOOKUP_TYPE in VARCHAR2,
6   X_ITEM_TYPE in VARCHAR2,
7   X_PROTECT_LEVEL in NUMBER,
8   X_CUSTOM_LEVEL in NUMBER,
9   X_DISPLAY_NAME in VARCHAR2,
10   X_DESCRIPTION in VARCHAR2
11 ) is
12   cursor C is select ROWID from WF_LOOKUP_TYPES_TL
13     where LOOKUP_TYPE = X_LOOKUP_TYPE
14     and LANGUAGE = userenv('LANG')
15     ;
16 begin
17   insert into WF_LOOKUP_TYPES_TL (
18     LOOKUP_TYPE,
19     DISPLAY_NAME,
20     ITEM_TYPE,
21     PROTECT_LEVEL,
22     CUSTOM_LEVEL,
23     DESCRIPTION,
24     LANGUAGE,
25     SOURCE_LANG
26   ) select
27     X_LOOKUP_TYPE,
28     X_DISPLAY_NAME,
29     X_ITEM_TYPE,
30     X_PROTECT_LEVEL,
31     X_CUSTOM_LEVEL,
32     X_DESCRIPTION,
33     L.CODE,
34     userenv('LANG')
35   from WF_LANGUAGES L
36   where L.INSTALLED_FLAG = 'Y'
37   and not exists
38     (select NULL
39     from WF_LOOKUP_TYPES_TL T
40     where T.LOOKUP_TYPE = X_LOOKUP_TYPE
41     and T.LANGUAGE = L.CODE);
42 
43   open c;
44   fetch c into X_ROWID;
45   if (c%notfound) then
46     close c;
47     raise no_data_found;
48   end if;
49   close c;
50 
51 exception
52   when others then
53     wf_core.context('Wf_Lookup_Types_Pkg', 'Insert_Row', x_lookup_type);
54     raise;
55 end INSERT_ROW;
56 
57 procedure LOCK_ROW (
58   X_LOOKUP_TYPE in VARCHAR2,
59   X_ITEM_TYPE in VARCHAR2,
60   X_PROTECT_LEVEL in NUMBER,
61   X_CUSTOM_LEVEL in NUMBER,
62   X_DISPLAY_NAME in VARCHAR2,
63   X_DESCRIPTION in VARCHAR2
64 ) is
65   cursor c1 is select
66       ITEM_TYPE,
67       PROTECT_LEVEL,
68       CUSTOM_LEVEL,
69       DISPLAY_NAME,
70       DESCRIPTION
71     from WF_LOOKUP_TYPES_TL
72     where LOOKUP_TYPE = X_LOOKUP_TYPE
73     and LANGUAGE = userenv('LANG')
74     for update of LOOKUP_TYPE nowait;
75   tlinfo c1%rowtype;
76 
77 begin
78   open c1;
79   fetch c1 into tlinfo;
80   if (c1%notfound) then
81     close c1;
82     wf_core.raise('WF_RECORD_DELETED');
83   end if;
84   close c1;
85 
86   if (    (tlinfo.DISPLAY_NAME = X_DISPLAY_NAME)
87       AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
88            OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
89       AND (tlinfo.ITEM_TYPE = X_ITEM_TYPE)
90       AND (tlinfo.PROTECT_LEVEL = X_PROTECT_LEVEL)
91       AND (tlinfo.CUSTOM_LEVEL = X_CUSTOM_LEVEL)
92   ) then
93     null;
94   else
95     wf_core.raise('WF_RECORD_CHANGED');
96   end if;
97   return;
98 
99 exception
100   when others then
101     wf_core.context('Wf_Lookup_Types_Pkg', 'Lock_Row', x_lookup_type);
102     raise;
103 end LOCK_ROW;
104 
105 procedure UPDATE_ROW (
106   X_LOOKUP_TYPE in VARCHAR2,
107   X_ITEM_TYPE in VARCHAR2,
108   X_PROTECT_LEVEL in NUMBER,
109   X_CUSTOM_LEVEL in NUMBER,
110   X_DISPLAY_NAME in VARCHAR2,
111   X_DESCRIPTION in VARCHAR2
112 ) is
113 begin
114   update WF_LOOKUP_TYPES_TL set
115     ITEM_TYPE = X_ITEM_TYPE,
116     PROTECT_LEVEL = X_PROTECT_LEVEL,
117     CUSTOM_LEVEL = X_CUSTOM_LEVEL,
118     DISPLAY_NAME = X_DISPLAY_NAME,
119     DESCRIPTION = X_DESCRIPTION,
120     SOURCE_LANG = userenv('LANG')
121   where LOOKUP_TYPE = X_LOOKUP_TYPE
122   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
123 
124   if (sql%notfound) then
125     raise no_data_found;
126   end if;
127 
128 exception
129   when others then
130     wf_core.context('Wf_Lookup_Types_Pkg', 'Update_Row', x_lookup_type);
131     raise;
132 end UPDATE_ROW;
133 
134 procedure DELETE_ROW (
135   X_LOOKUP_TYPE in VARCHAR2
136 ) is
137 begin
138   delete from WF_LOOKUP_TYPES_TL
139   where LOOKUP_TYPE = X_LOOKUP_TYPE;
140 
141   if (sql%notfound) then
142     raise no_data_found;
143   end if;
144 
145 exception
146   when others then
147     wf_core.context('Wf_Lookup_Types_Pkg', 'Delete_Row', x_lookup_type);
148     raise;
149 end DELETE_ROW;
150 
151 procedure ADD_LANGUAGE
152 is
153 begin
154 /* The following update statement is commented out */
155 /* as a quick workaround to fix the time-consuming table handler issue */
156 /* Eventually we'll need to turn them into a separate fix_language procedure */
157 /*
158 
159   update WF_LOOKUP_TYPES_TL T set (
160       DISPLAY_NAME,
161       DESCRIPTION
162     ) = (select
163       B.DISPLAY_NAME,
164       B.DESCRIPTION
165     from WF_LOOKUP_TYPES_TL B
166     where B.LOOKUP_TYPE = T.LOOKUP_TYPE
167     and B.LANGUAGE = T.SOURCE_LANG)
168   where (
169       T.LOOKUP_TYPE,
170       T.LANGUAGE
171   ) in (select
172       SUBT.LOOKUP_TYPE,
173       SUBT.LANGUAGE
174     from WF_LOOKUP_TYPES_TL SUBB, WF_LOOKUP_TYPES_TL SUBT
175     where SUBB.LOOKUP_TYPE = SUBT.LOOKUP_TYPE
176     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
177     and (SUBB.DISPLAY_NAME <> SUBT.DISPLAY_NAME
178       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
179       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
180       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
181   ));
182 
183 */
184 
185   insert into WF_LOOKUP_TYPES_TL (
186     LOOKUP_TYPE,
187     DISPLAY_NAME,
188     ITEM_TYPE,
189     PROTECT_LEVEL,
190     CUSTOM_LEVEL,
191     DESCRIPTION,
192     LANGUAGE,
193     SOURCE_LANG
194   ) select
195     B.LOOKUP_TYPE,
196     B.DISPLAY_NAME,
197     B.ITEM_TYPE,
198     B.PROTECT_LEVEL,
199     B.CUSTOM_LEVEL,
200     B.DESCRIPTION,
201     L.CODE,
202     B.SOURCE_LANG
203   from WF_LOOKUP_TYPES_TL B, WF_LANGUAGES L
204   where L.INSTALLED_FLAG = 'Y'
205   and B.LANGUAGE = userenv('LANG')
206   and (B.LOOKUP_TYPE , L.CODE ) NOT IN
207     (select  /*+ hash_aj index_ffs(T,WF_LOOKUP_TYPES_TL_PK ) */
208        T.LOOKUP_TYPE  ,T.LANGUAGE
209             from  WF_LOOKUP_TYPES_TL T);
210 
211 end ADD_LANGUAGE;
212 
213 end WF_LOOKUP_TYPES_PKG;