DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_STYLES_PKG

Source


1 package body HZ_STYLES_PKG as
2 /* $Header: ARHPSTYB.pls 115.9 2004/02/25 23:16:25 geliu noship $ */
3 
4 L_USER_ID_FOR_SEED NUMBER := NULL;
5 
6 
7 procedure INSERT_ROW (
8   X_ROWID			IN OUT	NOCOPY VARCHAR2,
9   X_STYLE_CODE			IN	VARCHAR2,
10   X_DATABASE_OBJECT_NAME	IN	VARCHAR2,
11   X_STYLE_NAME			IN	VARCHAR2,
12   X_DESCRIPTION			IN	VARCHAR2,
13   X_OBJECT_VERSION_NUMBER       IN      NUMBER
14 ) is
15   cursor C is select ROWID from HZ_STYLES_B
16     where STYLE_CODE = X_STYLE_CODE
17     ;
18 begin
19   insert into HZ_STYLES_B (
20     STYLE_CODE,
21     DATABASE_OBJECT_NAME,
22     CREATED_BY,
23     CREATION_DATE,
24     LAST_UPDATE_LOGIN,
25     LAST_UPDATE_DATE,
26     LAST_UPDATED_BY,
27     OBJECT_VERSION_NUMBER
28   ) values (
29     DECODE( X_STYLE_CODE, FND_API.G_MISS_CHAR, NULL, X_STYLE_CODE ),
30     DECODE( X_DATABASE_OBJECT_NAME, FND_API.G_MISS_CHAR, NULL, X_DATABASE_OBJECT_NAME ),
31     NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.CREATED_BY),
32     HZ_UTILITY_V2PUB.CREATION_DATE,
33     NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.LAST_UPDATE_LOGIN),
34     HZ_UTILITY_V2PUB.LAST_UPDATE_DATE,
35     NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.LAST_UPDATED_BY),
36     DECODE( X_OBJECT_VERSION_NUMBER, FND_API.G_MISS_NUM, NULL, X_OBJECT_VERSION_NUMBER )
37   );
38 
39   insert into HZ_STYLES_TL (
40     STYLE_CODE,
41     STYLE_NAME,
42     DESCRIPTION,
43     LANGUAGE,
44     SOURCE_LANG,
45     CREATED_BY,
46     CREATION_DATE,
47     LAST_UPDATE_LOGIN,
48     LAST_UPDATE_DATE,
49     LAST_UPDATED_BY
50   ) select
51     DECODE( X_STYLE_CODE, FND_API.G_MISS_CHAR, NULL, X_STYLE_CODE ),
52     DECODE( X_STYLE_NAME, FND_API.G_MISS_CHAR, NULL, X_STYLE_NAME ),
53     DECODE( X_DESCRIPTION, FND_API.G_MISS_CHAR, NULL, X_DESCRIPTION ),
54     L.LANGUAGE_CODE,
55     userenv('LANG'),
56     NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.CREATED_BY),
57     HZ_UTILITY_V2PUB.CREATION_DATE,
58     NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.LAST_UPDATE_LOGIN),
59     HZ_UTILITY_V2PUB.LAST_UPDATE_DATE,
60     NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.LAST_UPDATED_BY)
61   from FND_LANGUAGES L
62   where L.INSTALLED_FLAG in ('I', 'B')
63   and not exists
64     (select NULL
65     from HZ_STYLES_TL T
66     where T.STYLE_CODE = X_STYLE_CODE
67     and T.LANGUAGE = L.LANGUAGE_CODE);
68 
69   open c;
70   fetch c into X_ROWID;
71   if (c%notfound) then
72     close c;
73     raise no_data_found;
74   end if;
75   close c;
76 
77 end INSERT_ROW;
78 
79 procedure LOCK_ROW (
80   X_STYLE_CODE in VARCHAR2,
81   X_DATABASE_OBJECT_NAME in VARCHAR2,
82   X_STYLE_NAME in VARCHAR2,
83   X_DESCRIPTION in VARCHAR2
84 ) is
85   cursor c is select
86       DATABASE_OBJECT_NAME
87     from HZ_STYLES_B
88     where STYLE_CODE = X_STYLE_CODE
89     for update of STYLE_CODE nowait;
90   recinfo c%rowtype;
91 
92   cursor c1 is select
93       STYLE_NAME,
94       DESCRIPTION,
95       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
96     from HZ_STYLES_TL
97     where STYLE_CODE = X_STYLE_CODE
98     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
99     for update of STYLE_CODE nowait;
100 begin
101   open c;
102   fetch c into recinfo;
103   if (c%notfound) then
104     close c;
105     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
106     app_exception.raise_exception;
107   end if;
108   close c;
109   if (    (recinfo.DATABASE_OBJECT_NAME = X_DATABASE_OBJECT_NAME)
110   ) then
111     null;
112   else
113     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
114     app_exception.raise_exception;
115   end if;
116 
117   for tlinfo in c1 loop
118     if (tlinfo.BASELANG = 'Y') then
119       if (    (tlinfo.STYLE_NAME = X_STYLE_NAME)
120           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
121                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
122       ) then
123         null;
124       else
125         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
126         app_exception.raise_exception;
127       end if;
128     end if;
129   end loop;
130   return;
131 end LOCK_ROW;
132 
133 procedure UPDATE_ROW (
134   X_STYLE_CODE			IN VARCHAR2,
135   X_DATABASE_OBJECT_NAME	IN VARCHAR2,
136   X_STYLE_NAME			IN VARCHAR2,
137   X_DESCRIPTION			IN VARCHAR2,
138   X_OBJECT_VERSION_NUMBER       IN NUMBER
139 ) is
140 begin
141   update HZ_STYLES_B set
142     DATABASE_OBJECT_NAME = DECODE( X_DATABASE_OBJECT_NAME, NULL, DATABASE_OBJECT_NAME, FND_API.G_MISS_CHAR, NULL, X_DATABASE_OBJECT_NAME ),
143     LAST_UPDATE_DATE = HZ_UTILITY_V2PUB.LAST_UPDATE_DATE,
144     LAST_UPDATED_BY = NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.LAST_UPDATED_BY),
145     LAST_UPDATE_LOGIN = NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.LAST_UPDATE_LOGIN),
146     OBJECT_VERSION_NUMBER = DECODE(X_OBJECT_VERSION_NUMBER, NULL, OBJECT_VERSION_NUMBER,
147                                   FND_API.G_MISS_NUM, NULL, X_OBJECT_VERSION_NUMBER)
148 
149   where STYLE_CODE = X_STYLE_CODE;
150 
151   if (sql%notfound) then
152     raise no_data_found;
153   end if;
154 
155   update HZ_STYLES_TL set
156     STYLE_NAME =  DECODE( X_STYLE_NAME, NULL, STYLE_NAME, FND_API.G_MISS_CHAR, NULL, X_STYLE_NAME ),
157     DESCRIPTION = DECODE( X_DESCRIPTION, NULL, DESCRIPTION, FND_API.G_MISS_CHAR, NULL, X_DESCRIPTION ),
158     LAST_UPDATE_DATE = HZ_UTILITY_V2PUB.LAST_UPDATE_DATE,
159     LAST_UPDATED_BY = NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.LAST_UPDATED_BY),
160     LAST_UPDATE_LOGIN = NVL(L_USER_ID_FOR_SEED,HZ_UTILITY_V2PUB.LAST_UPDATE_LOGIN),
161     SOURCE_LANG = userenv('LANG')
162   where STYLE_CODE = X_STYLE_CODE
163   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
164 
165   if (sql%notfound) then
166     raise no_data_found;
167   end if;
168 end UPDATE_ROW;
169 
170 PROCEDURE SELECT_ROW (
171   X_STYLE_CODE			IN OUT NOCOPY VARCHAR2,
172   X_DATABASE_OBJECT_NAME	OUT    NOCOPY VARCHAR2,
173   X_STYLE_NAME			OUT    NOCOPY VARCHAR2,
174   X_DESCRIPTION			OUT    NOCOPY VARCHAR2
175 ) IS
176 BEGIN
177 
178     SELECT
179         NVL( B.STYLE_CODE, FND_API.G_MISS_CHAR ),
180         NVL( B.DATABASE_OBJECT_NAME, FND_API.G_MISS_CHAR ),
181         NVL( T.STYLE_NAME, FND_API.G_MISS_CHAR ),
182         NVL( T.DESCRIPTION, FND_API.G_MISS_CHAR )
183     INTO X_STYLE_CODE,
184          X_DATABASE_OBJECT_NAME,
185 	 X_STYLE_NAME,
186 	 X_DESCRIPTION
187     FROM HZ_STYLES_B B, HZ_STYLES_TL T
188     WHERE B.STYLE_CODE = X_STYLE_CODE
189     AND   T.STYLE_CODE = X_STYLE_CODE
190     AND   T.LANGUAGE = userenv('LANG');
191 
192 EXCEPTION
193     WHEN NO_DATA_FOUND THEN
194         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_NO_RECORD' );
195         FND_MESSAGE.SET_TOKEN( 'RECORD', 'style_rec');
196         FND_MESSAGE.SET_TOKEN( 'VALUE', 'STYLE_CODE' );
197         FND_MSG_PUB.ADD;
198         RAISE FND_API.G_EXC_ERROR;
199 
200 END SELECT_ROW;
201 
202 
203 procedure DELETE_ROW (
204   X_STYLE_CODE in VARCHAR2
205 ) is
206 begin
207   delete from HZ_STYLES_TL
208   where STYLE_CODE = X_STYLE_CODE;
209 
210   if (sql%notfound) then
211     raise no_data_found;
212   end if;
213 
214   delete from HZ_STYLES_B
215   where STYLE_CODE = X_STYLE_CODE;
216 
217   if (sql%notfound) then
218     raise no_data_found;
219   end if;
220 end DELETE_ROW;
221 
222 procedure ADD_LANGUAGE
223 is
224 begin
225   delete from HZ_STYLES_TL T
226   where not exists
227     (select NULL
228     from HZ_STYLES_B B
229     where B.STYLE_CODE = T.STYLE_CODE
230     );
231 
232   update HZ_STYLES_TL T set (
233       STYLE_NAME,
234       DESCRIPTION
235     ) = (select
236       B.STYLE_NAME,
237       B.DESCRIPTION
238     from HZ_STYLES_TL B
239     where B.STYLE_CODE = T.STYLE_CODE
240     and B.LANGUAGE = T.SOURCE_LANG)
241   where (
242       T.STYLE_CODE,
243       T.LANGUAGE
244   ) in (select
245       SUBT.STYLE_CODE,
246       SUBT.LANGUAGE
247     from HZ_STYLES_TL SUBB, HZ_STYLES_TL SUBT
248     where SUBB.STYLE_CODE = SUBT.STYLE_CODE
249     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
250     and (SUBB.STYLE_NAME <> SUBT.STYLE_NAME
251       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
252       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
253       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
254   ));
255 
256   insert into HZ_STYLES_TL (
257     STYLE_CODE,
258     STYLE_NAME,
259     DESCRIPTION,
260     LAST_UPDATE_DATE,
261     LAST_UPDATED_BY,
262     CREATION_DATE,
263     CREATED_BY,
264     LAST_UPDATE_LOGIN,
265     LANGUAGE,
266     SOURCE_LANG
267   ) select
268     B.STYLE_CODE,
269     B.STYLE_NAME,
270     B.DESCRIPTION,
271     B.LAST_UPDATE_DATE,
272     B.LAST_UPDATED_BY,
273     B.CREATION_DATE,
274     B.CREATED_BY,
275     B.LAST_UPDATE_LOGIN,
276     L.LANGUAGE_CODE,
277     B.SOURCE_LANG
278   from HZ_STYLES_TL B, FND_LANGUAGES L
279   where L.INSTALLED_FLAG in ('I', 'B')
280   and B.LANGUAGE = userenv('LANG')
281   and not exists
282     (select NULL
283     from HZ_STYLES_TL T
284     where T.STYLE_CODE = B.STYLE_CODE
285     and T.LANGUAGE = L.LANGUAGE_CODE);
286 end ADD_LANGUAGE;
287 
288 procedure LOAD_ROW (
289   X_STYLE_CODE in VARCHAR2,
290   X_DATABASE_OBJECT_NAME in VARCHAR2,
291   X_STYLE_NAME in VARCHAR2,
292   X_DESCRIPTION in VARCHAR2,
293   X_OWNER in VARCHAR2,  -- "SEED" or "CUSTOM"
294   X_LAST_UPDATE_DATE in DATE,
295   X_CUSTOM_MODE in VARCHAR2
296 ) is
297   l_f_luby    number;  -- entity owner in file
298   l_f_ludate  date;    -- entity update date in file
299   l_db_luby   number;  -- entity owner in db
300   l_db_ludate date;    -- entity update date in db
301   l_rowid     varchar2(64);
302   l_object_version_number number;
303 begin
304 
305   -- Translate owner to file_last_updated_by
306   if (x_owner = 'SEED') then
307     l_f_luby := 1;
308     L_USER_ID_FOR_SEED := 1;
309   else
310     l_f_luby := 0;
311   end if;
312 
313   -- Get last update date of ldt entity
314   l_f_ludate := nvl(x_last_update_date, sysdate);
315 
316   begin
317     select LAST_UPDATED_BY, LAST_UPDATE_DATE, OBJECT_VERSION_NUMBER
318          into l_db_luby, l_db_ludate, l_object_version_number
319          from HZ_STYLES_B
320          where STYLE_CODE = x_style_code;
321 
322     l_object_version_number := nvl(l_object_version_number, 1) + 1;
323 
324     -- Update record, honoring customization mode.
325     -- Record should be updated only if:
326     -- a. CUSTOM_MODE = FORCE, or
327     -- b. file owner is CUSTOM, db owner is SEED
328     -- c. owners are the same, and file_date > db_date
329 
330     if ((x_custom_mode = 'FORCE') or
331        ((l_f_luby = 0) and (l_db_luby = 1)) or
332        ((l_f_luby = l_db_luby) and (l_f_ludate > l_db_ludate)))
333     then
334       hz_styles_pkg.update_row (
335         X_STYLE_CODE           => X_STYLE_CODE,
336         X_DATABASE_OBJECT_NAME => X_DATABASE_OBJECT_NAME,
337         X_STYLE_NAME           => X_STYLE_NAME,
338         X_DESCRIPTION          => X_DESCRIPTION,
339 	X_OBJECT_VERSION_NUMBER => l_object_version_number
340       );
341     end if;
342 
343   exception
344     when no_data_found then
345       -- record not found, insert in all cases
346       hz_styles_pkg.insert_row(
347           x_rowid                => l_rowid,
348           x_style_code           => X_STYLE_CODE,
349           x_database_object_name => X_DATABASE_OBJECT_NAME,
350           x_style_name           => X_STYLE_NAME,
351           x_description          => X_DESCRIPTION,
352 	  x_object_version_number => 1
353       );
354   end;
355 
356 end LOAD_ROW;
357 
358 procedure TRANSLATE_ROW (
359   X_STYLE_CODE in VARCHAR2,
360   X_STYLE_NAME in VARCHAR2,
361   X_DESCRIPTION in VARCHAR2,
362   X_OWNER in VARCHAR2,  -- "SEED" or "CUSTOM"
363   X_LAST_UPDATE_DATE in DATE,
364   X_CUSTOM_MODE in VARCHAR2
365 ) is
366   l_f_luby    number;  -- entity owner in file
367   l_f_ludate  date;    -- entity update date in file
368   l_db_luby   number;  -- entity owner in db
369   l_db_ludate date;    -- entity update date in db
370 begin
371   -- Translate owner to file_last_updated_by
372   if (x_owner = 'SEED') then
373     l_f_luby := 1;
374   else
375     l_f_luby := 0;
376   end if;
377 
378   -- Get last update date of ldt entity
379   l_f_ludate := nvl(x_last_update_date, sysdate);
380 
381   begin
382     select LAST_UPDATED_BY, LAST_UPDATE_DATE
383          into l_db_luby, l_db_ludate
384          from HZ_STYLES_TL
385          where STYLE_CODE = x_style_code
386            and LANGUAGE = userenv('LANG');
387 
388     -- Update record, honoring customization mode.
389     -- Record should be updated only if:
390     -- a. CUSTOM_MODE = FORCE, or
391     -- b. file owner is CUSTOM, db owner is SEED
392     -- c. owners are the same, and file_date > db_date
393 
394     if ((x_custom_mode = 'FORCE') or
395        ((l_f_luby = 0) and (l_db_luby = 1)) or
396        ((l_f_luby = l_db_luby) and (l_f_ludate > l_db_ludate)))
397     then
398       update HZ_STYLES_TL
399          set STYLE_NAME        = nvl(X_STYLE_NAME,STYLE_NAME),
400              DESCRIPTION       = nvl(X_DESCRIPTION,DESCRIPTION),
401              LAST_UPDATE_DATE  = l_f_ludate,
402              LAST_UPDATED_BY   = l_f_luby,
403              LAST_UPDATE_LOGIN = 0,
404              SOURCE_LANG       = userenv('LANG')
405        where STYLE_CODE = X_STYLE_CODE
406          and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
407     end if;
408   exception
409     when no_data_found then
410       null;  -- no translation found.  standards say do nothing.
411   end;
412 
413 end TRANSLATE_ROW;
414 
415 end HZ_STYLES_PKG;