DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_CUSTOM_SETUP_ATTR_PKG

Source


1 package body AMS_CUSTOM_SETUP_ATTR_PKG as
2 /* $Header: amslattb.pls 115.12 2004/04/08 22:51:09 asaha ship $ */
3 PROCEDURE INSERT_ROW (
4   X_ROWID in OUT NOCOPY VARCHAR2,
5   X_SETUP_ATTRIBUTE_ID in NUMBER,
6   X_OBJECT_VERSION_NUMBER in NUMBER,
7   X_CUSTOM_SETUP_ID in NUMBER,
8   X_DISPLAY_SEQUENCE_NO in NUMBER,
9   X_OBJECT_ATTRIBUTE in VARCHAR2,
10   X_ATTR_MANDATORY_FLAG in VARCHAR2,
11   X_ATTR_AVAILABLE_FLAG in VARCHAR2,
12   X_PARENT_FUNCTION_NAME in VARCHAR2,
13   X_FUNCTION_NAME in VARCHAR2,
14   X_PARENT_SETUP_ATTRIBUTE in VARCHAR2,
15   X_PARENT_DISPLAY_SEQUENCE in NUMBER,
16   X_SHOW_IN_REPORT in VARCHAR2,
17   X_SHOW_IN_CUE_CARD in VARCHAR2,
18   X_COPY_ALLOWED_FLAG in VARCHAR2,
19   X_RELATED_AK_ATTRIBUTE in VARCHAR2,
20   X_CREATION_DATE in DATE,
21   X_CREATED_BY in NUMBER,
22   X_LAST_UPDATE_DATE in DATE,
23   X_LAST_UPDATED_BY in NUMBER,
24   X_LAST_UPDATE_LOGIN in NUMBER,
25   X_ESSENTIAL_SEQ_NUM in NUMBER
26 )
27 IS
28   CURSOR c IS select ROWID FROM AMS_CUSTOM_SETUP_ATTR
29     WHERE SETUP_ATTRIBUTE_ID = X_SETUP_ATTRIBUTE_ID
30     ;
31 BEGIN
32   INSERT into AMS_CUSTOM_SETUP_ATTR (
33     SETUP_ATTRIBUTE_ID,
34     OBJECT_VERSION_NUMBER,
35     CUSTOM_SETUP_ID,
36     DISPLAY_SEQUENCE_NO,
37     OBJECT_ATTRIBUTE,
38     ATTR_MANDATORY_FLAG,
39     ATTR_AVAILABLE_FLAG,
40     PARENT_FUNCTION_NAME,
41     FUNCTION_NAME,
42     PARENT_SETUP_ATTRIBUTE,
43     PARENT_DISPLAY_SEQUENCE,
44     SHOW_IN_REPORT,
45     SHOW_IN_CUE_CARD,
46     COPY_ALLOWED_FLAG,
47     RELATED_AK_ATTRIBUTE,
48     CREATION_DATE,
49     CREATED_BY,
50     LAST_UPDATE_DATE,
51     LAST_UPDATED_BY,
52     LAST_UPDATE_LOGIN,
53     ESSENTIAL_SEQ_NUM
54   ) values (
55     X_SETUP_ATTRIBUTE_ID,
56     X_OBJECT_VERSION_NUMBER,
57     X_CUSTOM_SETUP_ID,
58     X_DISPLAY_SEQUENCE_NO,
59     X_OBJECT_ATTRIBUTE,
60     X_ATTR_MANDATORY_FLAG,
61     X_ATTR_AVAILABLE_FLAG,
62     X_PARENT_FUNCTION_NAME ,
63     X_FUNCTION_NAME,
64     X_PARENT_SETUP_ATTRIBUTE,
65     X_PARENT_DISPLAY_SEQUENCE,
66     X_SHOW_IN_REPORT ,
67     X_SHOW_IN_CUE_CARD ,
68     X_COPY_ALLOWED_FLAG,
69     X_RELATED_AK_ATTRIBUTE,
70     X_CREATION_DATE,
71     X_CREATED_BY,
72     X_LAST_UPDATE_DATE,
73     X_LAST_UPDATED_BY,
74     X_LAST_UPDATE_LOGIN,
75     X_ESSENTIAL_SEQ_NUM
76   );
77 
78   OPEN c;
79   FETCH c into X_ROWID;
80   IF (c%NOTFOUND) THEN
81     CLOSE c;
82     RAISE no_data_found;
83   END IF;
84   CLOSE c;
85 END INSERT_ROW;
86 
87 PROCEDURE UPDATE_ROW (
88   X_SETUP_ATTRIBUTE_ID in NUMBER,
89   X_OBJECT_VERSION_NUMBER in NUMBER,
90   X_CUSTOM_SETUP_ID in NUMBER,
91   X_DISPLAY_SEQUENCE_NO in NUMBER,
92   X_OBJECT_ATTRIBUTE in VARCHAR2,
93   X_ATTR_MANDATORY_FLAG in VARCHAR2,
94   X_ATTR_AVAILABLE_FLAG in VARCHAR2,
95   X_PARENT_FUNCTION_NAME in VARCHAR2,
96   X_FUNCTION_NAME in VARCHAR2,
97   X_PARENT_SETUP_ATTRIBUTE in VARCHAR2,
98   X_PARENT_DISPLAY_SEQUENCE in NUMBER,
99   X_SHOW_IN_REPORT in VARCHAR2,
100   X_SHOW_IN_CUE_CARD in VARCHAR2,
101   X_COPY_ALLOWED_FLAG in VARCHAR2,
102   X_RELATED_AK_ATTRIBUTE in VARCHAR2,
103   X_LAST_UPDATE_DATE in DATE,
104   X_LAST_UPDATED_BY in NUMBER,
105   X_LAST_UPDATE_LOGIN in NUMBER,
106   X_ESSENTIAL_SEQ_NUM in NUMBER
107 )
108 IS
109 BEGIN
110   UPDATE AMS_CUSTOM_SETUP_ATTR SET
111     OBJECT_VERSION_NUMBER   = X_OBJECT_VERSION_NUMBER,
112     DISPLAY_SEQUENCE_NO     = X_DISPLAY_SEQUENCE_NO,
113     ATTR_MANDATORY_FLAG     = X_ATTR_MANDATORY_FLAG,
114     ATTR_AVAILABLE_FLAG     = X_ATTR_AVAILABLE_FLAG,
115     PARENT_FUNCTION_NAME    = X_PARENT_FUNCTION_NAME,
116     FUNCTION_NAME           = X_FUNCTION_NAME,
117     PARENT_SETUP_ATTRIBUTE  = X_PARENT_SETUP_ATTRIBUTE,
118     PARENT_DISPLAY_SEQUENCE = X_PARENT_DISPLAY_SEQUENCE,
119     SHOW_IN_REPORT          = X_SHOW_IN_REPORT,
120     SHOW_IN_CUE_CARD        = X_SHOW_IN_CUE_CARD,
121     COPY_ALLOWED_FLAG       = X_COPY_ALLOWED_FLAG,
122     RELATED_AK_ATTRIBUTE    = X_RELATED_AK_ATTRIBUTE,
123     LAST_UPDATE_DATE        = X_LAST_UPDATE_DATE,
124     LAST_UPDATED_BY         = X_LAST_UPDATED_BY,
125     LAST_UPDATE_LOGIN       = X_LAST_UPDATE_LOGIN,
126     ESSENTIAL_SEQ_NUM       = X_ESSENTIAL_SEQ_NUM
127   WHERE OBJECT_ATTRIBUTE  = X_OBJECT_ATTRIBUTE
128    AND CUSTOM_SETUP_ID   = X_CUSTOM_SETUP_ID;
129 
130   IF (sql%NOTFOUND) THEN
131     RAISE no_data_found;
132   END IF;
133 END UPDATE_ROW;
134 
135 PROCEDURE DELETE_ROW (
136   X_SETUP_ATTRIBUTE_ID in NUMBER
137 )
138 IS
139 BEGIN
140   DELETE FROM AMS_CUSTOM_SETUP_ATTR
141   WHERE SETUP_ATTRIBUTE_ID = X_SETUP_ATTRIBUTE_ID;
142 
143   IF (sql%NOTFOUND) THEN
144     RAISE no_data_found;
145   END IF;
146 END DELETE_ROW;
147 
148 /* This procedure is used to load the data from flat file to customer's database.
149   If there is no row existing for the data from flat file then create the data.
150   else
151     1) modify the whole data when data in db is not modified by customer which can be found
152       by comparing last updated by value to be
153           SEED/DATAMERGE(1), or
154           INITIAL SETUP/ORACLE (2), or
155           SYSTEM ADMINISTRATOR (0).or
156     2) modify the whole data when custom_mode is 'FORCE'
157     3) if the data in db is modified by customer, which can be found by
158       by comparing last updated by value to be not of 0,1,2, then
159         in that case modify only the user unexposed data with last updated by as 3 to
160         distinguish that data is updated by patch.
161 */
162 
163 PROCEDURE  LOAD_ROW(
164   X_SETUP_ATTRIBUTE_ID in NUMBER,
165   X_CUSTOM_SETUP_ID in NUMBER,
166   X_DISPLAY_SEQUENCE_NO in NUMBER,
167   X_OBJECT_ATTRIBUTE in VARCHAR2,
168   X_ATTR_MANDATORY_FLAG in VARCHAR2,
169   X_ATTR_AVAILABLE_FLAG in VARCHAR2,
170   X_PARENT_FUNCTION_NAME in VARCHAR2,
171   X_FUNCTION_NAME in VARCHAR2,
172   X_PARENT_SETUP_ATTRIBUTE in VARCHAR2,
173   X_PARENT_DISPLAY_SEQUENCE in NUMBER,
174   X_SHOW_IN_REPORT in VARCHAR2,
175   X_SHOW_IN_CUE_CARD in VARCHAR2,
176   X_COPY_ALLOWED_FLAG in VARCHAR2,
177   X_RELATED_AK_ATTRIBUTE in VARCHAR2,
178   X_ESSENTIAL_SEQ_NUM in NUMBER,
179   X_OWNER in VARCHAR2,
180   x_custom_mode  IN VARCHAR2,
181   X_LAST_UPDATE_DATE   in DATE
182 )
183 IS
184 
185 l_user_id   number := 1;
186 -- user id to be used in case of exceptions to update the customer modified unexposed data.
187 l_excp_user_id number := 3 ;
188 
189 l_obj_verno  NUMBER;
190 l_dummy_number  number;
191 l_row_id    VARCHAR2(100);
192 l_attr_id   NUMBER;
193 l_count     NUMBER;
194 l_db_luby_id NUMBER;
195 
196 cursor  c_db_data_details is
197   select last_updated_by, nvl(object_version_number,1)
198    FROM  AMS_CUSTOM_SETUP_ATTR
199   WHERE  OBJECT_ATTRIBUTE = X_OBJECT_ATTRIBUTE
200     AND  CUSTOM_SETUP_ID  = X_CUSTOM_SETUP_ID;
201 
202 CURSOR c_chk_code_exists IS
203   select 1
204   FROM   AMS_CUSTOM_SETUP_ATTR
205   WHERE  OBJECT_ATTRIBUTE = X_OBJECT_ATTRIBUTE
206     AND  CUSTOM_SETUP_ID  = X_CUSTOM_SETUP_ID;
207 
208 CURSOR c_get_attr_id IS
209    select AMS_CUSTOM_SETUP_ATTR_S.NEXTVAL
210    FROM DUAL;
211 
212 CURSOR c_check_attr_id(attr_id IN NUMBER) IS
213    SELECT COUNT(*)
214    FROM AMS_CUSTOM_SETUP_ATTR
215    WHERE setup_attribute_id = attr_id;
216 
217 BEGIN
218 
219   -- set the last_updated_by to be used while updating the data in customer data.
220   if X_OWNER = 'SEED' then
221     l_user_id := 1;
222   elsif X_OWNER = 'ORACLE' THEN
223     l_user_id := 2;
224   elsif X_OWNER = 'SYSADMIN' THEN
225     l_user_id := 0;
226   end if ;
227 
228   OPEN c_chk_code_exists;
229   FETCH c_chk_code_exists into l_dummy_number;
230   IF c_chk_code_exists%NOTFOUND
231   THEN
232     -- data does not exist in customer, and hence create the data.
233     CLOSE c_chk_code_exists;
234       -- get unused sequence number
235     LOOP
236       OPEN c_get_attr_id;
237       FETCH c_get_attr_id into l_attr_id;
238       CLOSE c_get_attr_id;
239 
240       OPEN c_check_attr_id(l_attr_id);
241       FETCH c_check_attr_id INTO l_count;
242       CLOSE c_check_attr_id;
243 
244       EXIT WHEN l_count = 0;
245     END LOOP;
246 
247     l_obj_verno := 1;
248     AMS_CUSTOM_SETUP_ATTR_PKG.INSERT_ROW    (
249       X_ROWID               => l_row_id,
250       X_SETUP_ATTRIBUTE_ID      => l_attr_id,
251       X_OBJECT_VERSION_NUMBER   => l_obj_verno,
252       X_CUSTOM_SETUP_ID         => X_CUSTOM_SETUP_ID,
253       X_DISPLAY_SEQUENCE_NO     => X_DISPLAY_SEQUENCE_NO,
254       X_OBJECT_ATTRIBUTE        => X_OBJECT_ATTRIBUTE,
255       X_ATTR_MANDATORY_FLAG     => X_ATTR_MANDATORY_FLAG,
256       X_ATTR_AVAILABLE_FLAG     => X_ATTR_AVAILABLE_FLAG,
257       X_PARENT_FUNCTION_NAME    => X_PARENT_FUNCTION_NAME,
258       X_FUNCTION_NAME           => X_FUNCTION_NAME,
259       X_PARENT_SETUP_ATTRIBUTE  => X_PARENT_SETUP_ATTRIBUTE,
260       X_PARENT_DISPLAY_SEQUENCE => X_PARENT_DISPLAY_SEQUENCE,
261       X_SHOW_IN_REPORT          => X_SHOW_IN_REPORT,
262       X_SHOW_IN_CUE_CARD        => X_SHOW_IN_CUE_CARD,
263       X_COPY_ALLOWED_FLAG       => X_COPY_ALLOWED_FLAG,
264       X_RELATED_AK_ATTRIBUTE    => X_RELATED_AK_ATTRIBUTE,
265       X_CREATION_DATE           => X_LAST_UPDATE_DATE,
266       X_CREATED_BY              => l_user_id,
267       X_LAST_UPDATE_DATE        => X_LAST_UPDATE_DATE,
268       X_LAST_UPDATED_BY         => l_user_id,
269       X_LAST_UPDATE_LOGIN       => 0,
270       X_ESSENTIAL_SEQ_NUM       => X_ESSENTIAL_SEQ_NUM
271       );
272   ELSE
273     -- Update the data as per above rules.
274     CLOSE c_chk_code_exists;
275     open c_db_data_details;
276     fetch c_db_data_details into l_db_luby_id, l_obj_verno;
277     close c_db_data_details;
278     if ( l_db_luby_id IN (1, 2, 0)
279       OR NVL(x_custom_mode,'PRESERVE') = 'FORCE') THEN
280       AMS_CUSTOM_SETUP_ATTR_PKG.UPDATE_ROW (
281         X_SETUP_ATTRIBUTE_ID      =>  X_SETUP_ATTRIBUTE_ID,
282         X_OBJECT_VERSION_NUMBER   => l_obj_verno + 1,
283         X_CUSTOM_SETUP_ID         => X_CUSTOM_SETUP_ID,
284         X_DISPLAY_SEQUENCE_NO     => X_DISPLAY_SEQUENCE_NO,
285         X_OBJECT_ATTRIBUTE        => X_OBJECT_ATTRIBUTE,
286         X_ATTR_MANDATORY_FLAG     => X_ATTR_MANDATORY_FLAG,
287         X_ATTR_AVAILABLE_FLAG     => X_ATTR_AVAILABLE_FLAG,
288         X_PARENT_FUNCTION_NAME    => X_PARENT_FUNCTION_NAME,
289         X_FUNCTION_NAME           => X_FUNCTION_NAME,
290         X_PARENT_SETUP_ATTRIBUTE  => X_PARENT_SETUP_ATTRIBUTE,
291         X_PARENT_DISPLAY_SEQUENCE => X_PARENT_DISPLAY_SEQUENCE,
292         X_SHOW_IN_REPORT          => X_SHOW_IN_REPORT,
293         X_SHOW_IN_CUE_CARD        => X_SHOW_IN_CUE_CARD,
294         X_COPY_ALLOWED_FLAG       => X_COPY_ALLOWED_FLAG,
295         X_RELATED_AK_ATTRIBUTE    => X_RELATED_AK_ATTRIBUTE,
296         X_LAST_UPDATE_DATE        => X_LAST_UPDATE_DATE,
297         X_LAST_UPDATED_BY         => l_user_id,
298         X_LAST_UPDATE_LOGIN       => 0,
299 	X_ESSENTIAL_SEQ_NUM       => X_ESSENTIAL_SEQ_NUM
300       );
301     ELSE
302       UPDATE AMS_CUSTOM_SETUP_ATTR SET
303         OBJECT_VERSION_NUMBER = l_obj_verno + 1,
304         OBJECT_ATTRIBUTE        = X_OBJECT_ATTRIBUTE,
305         PARENT_FUNCTION_NAME    = X_PARENT_FUNCTION_NAME,
306         FUNCTION_NAME           = X_FUNCTION_NAME,
307         PARENT_SETUP_ATTRIBUTE  = X_PARENT_SETUP_ATTRIBUTE,
308         PARENT_DISPLAY_SEQUENCE = X_PARENT_DISPLAY_SEQUENCE,
309         SHOW_IN_CUE_CARD        = X_SHOW_IN_CUE_CARD,
310         COPY_ALLOWED_FLAG       = X_COPY_ALLOWED_FLAG,
311         RELATED_AK_ATTRIBUTE    = X_RELATED_AK_ATTRIBUTE,
312         LAST_UPDATE_DATE        = X_LAST_UPDATE_DATE,
313         LAST_UPDATED_BY         = l_excp_user_id,
314         LAST_UPDATE_LOGIN       = 0,
315 	ESSENTIAL_SEQ_NUM       = X_ESSENTIAL_SEQ_NUM
316       WHERE OBJECT_ATTRIBUTE  = X_OBJECT_ATTRIBUTE
317         AND CUSTOM_SETUP_ID   = X_CUSTOM_SETUP_ID;
318     end if;
319   end if;
320 END LOAD_ROW;
321 
322 END AMS_CUSTOM_SETUP_ATTR_PKG;