DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_TCOP_PERIODS_PKG

Source


1 package body AMS_TCOP_PERIODS_PKG as
2 /* $Header: amsltcpb.pls 115.1 2003/10/17 11:53:42 mayjain noship $ */
3 procedure INSERT_ROW (
4 	X_ROWID IN OUT NOCOPY VARCHAR2,
5 	X_PERIOD_ID IN NUMBER,
6 	X_NO_OF_DAYS IN NUMBER,
7 	X_ENABLED_FLAG IN VARCHAR2,
8 	X_PERIOD_NAME IN VARCHAR2,
9 	X_DESCRIPTION in VARCHAR2,
10 	X_LAST_UPDATE_DATE in DATE,
11 	X_LAST_UPDATED_BY in NUMBER,
12 	X_CREATION_DATE in DATE,
13 	X_CREATED_BY in NUMBER,
14 	X_LAST_UPDATE_LOGIN in NUMBER,
15 	X_OBJECT_VERSION_NUMBER in NUMBER
16 ) is
17   cursor c is select ROWID from AMS_TCOP_FR_PERIODS_B
18     where PERIOD_ID = X_PERIOD_ID
19     ;
20   cursor ctl is select ROWID from AMS_TCOP_FR_PERIODS_TL
21     where PERIOD_ID = X_PERIOD_ID
22     ;
23 begin
24 	insert into AMS_TCOP_FR_PERIODS_B (
25 		PERIOD_ID,
26 		NO_OF_DAYS,
27 		ENABLED_FLAG,
28 		LAST_UPDATE_DATE,
29 		LAST_UPDATED_BY,
30 		CREATION_DATE,
31 		CREATED_BY,
32 		LAST_UPDATE_LOGIN,
33 		OBJECT_VERSION_NUMBER
34 	) values (
35 		X_PERIOD_ID,
36 		X_NO_OF_DAYS,
37 		X_ENABLED_FLAG,
38 		DECODE(X_LAST_UPDATE_DATE,FND_API.G_MISS_DATE,SYSDATE,NULL,SYSDATE,X_LAST_UPDATE_DATE),
39 		DECODE(X_LAST_UPDATED_BY,FND_API.G_MISS_NUM,FND_GLOBAL.user_id,NULL,FND_GLOBAL.user_id,X_LAST_UPDATED_BY),
40 		DECODE(X_CREATION_DATE,FND_API.G_MISS_DATE,SYSDATE,NULL,SYSDATE,X_CREATION_DATE),
41 		DECODE(X_CREATED_BY,FND_API.G_MISS_NUM,FND_GLOBAL.user_id,NULL,FND_GLOBAL.user_id,X_CREATED_BY),
42 		DECODE(X_LAST_UPDATE_LOGIN,FND_API.G_MISS_NUM,FND_GLOBAL.login_id,NULL,FND_GLOBAL.user_id,X_LAST_UPDATE_LOGIN),
43 		X_OBJECT_VERSION_NUMBER
44 	);
45 
46   open c;
47   fetch c into X_ROWID;
48   if (c%notfound) then
49     close c;
50     raise no_data_found;
51   end if;
52   close c;
53 
54 	insert into AMS_TCOP_FR_PERIODS_TL (
55 		PERIOD_ID,
56 		PERIOD_NAME,
57 		DESCRIPTION,
58 		LANGUAGE,
59 		SOURCE_LANG,
60 		LAST_UPDATE_DATE,
61 		LAST_UPDATED_BY,
62 		CREATION_DATE,
63 		CREATED_BY,
64 		LAST_UPDATE_LOGIN
65 	)
66 	SELECT
67 	     X_PERIOD_ID
68 	    ,X_PERIOD_NAME
69 	    ,DECODE(X_DESCRIPTION,FND_API.G_MISS_CHAR,NULL,X_DESCRIPTION)
70 	    ,l.language_code
71 	    ,USERENV('lang')
72 	    ,DECODE(X_LAST_UPDATE_DATE,FND_API.G_MISS_DATE,SYSDATE,NULL,SYSDATE,X_LAST_UPDATE_DATE)
73 	    ,DECODE(X_LAST_UPDATED_BY,FND_API.G_MISS_NUM,FND_GLOBAL.user_id,NULL,FND_GLOBAL.user_id,X_LAST_UPDATED_BY)
74 	    ,DECODE(X_CREATION_DATE,FND_API.G_MISS_DATE,SYSDATE,NULL,SYSDATE,X_CREATION_DATE)
75 	    ,DECODE(X_CREATED_BY,FND_API.G_MISS_NUM,FND_GLOBAL.user_id,NULL,FND_GLOBAL.user_id,X_CREATED_BY)
76 	    ,DECODE(X_LAST_UPDATE_LOGIN,FND_API.G_MISS_NUM,FND_GLOBAL.login_id,NULL,FND_GLOBAL.user_id,X_LAST_UPDATE_LOGIN)
77   FROM fnd_languages l
78   WHERE l.installed_flag IN ('I', 'B')
79   AND NOT EXISTS
80     (SELECT NULL
81     FROM AMS_TCOP_FR_PERIODS_TL T
82     WHERE T.PERIOD_ID = X_PERIOD_ID
83     AND T.LANGUAGE = l.language_code);
84 
85   open ctl;
86   fetch ctl into X_ROWID;
87   if (ctl%notfound) then
88     close ctl;
89     raise no_data_found;
90   end if;
91   close ctl;
92 
93 end INSERT_ROW;
94 
95 
96 
97 
98 procedure LOCK_ROW (
99 	X_PERIOD_ID IN NUMBER,
100 	X_OBJECT_VERSION_NUMBER in NUMBER,
101 	X_NO_OF_DAYS IN NUMBER,
102 	X_ENABLED_FLAG IN VARCHAR2,
103 	X_PERIOD_NAME IN VARCHAR2,
104 	X_DESCRIPTION in VARCHAR2
105 ) is
106   cursor c is select
107 		OBJECT_VERSION_NUMBER,
108 		NO_OF_DAYS,
109 		ENABLED_FLAG,
110 		LAST_UPDATE_DATE,
111 		LAST_UPDATED_BY,
112 		CREATION_DATE,
113 		CREATED_BY,
114 		LAST_UPDATE_LOGIN
115     from AMS_TCOP_FR_PERIODS_B
116     where PERIOD_ID = X_PERIOD_ID
117     for update of PERIOD_ID nowait;
118   recinfo c%rowtype;
119 
120 
121 
122   CURSOR ctl IS SELECT
123       PERIOD_NAME,
124       DESCRIPTION,
125       DECODE(LANGUAGE, USERENV('lang'), 'Y', 'N') baselang
126     FROM AMS_TCOP_FR_PERIODS_TL
127     WHERE PERIOD_ID = X_PERIOD_ID
128     AND USERENV('lang') IN (LANGUAGE, source_lang)
129     FOR UPDATE OF PERIOD_ID NOWAIT;
130 
131 begin
132 
133   open c;
134   fetch c into recinfo;
135   if (c%notfound) then
136     close c;
137     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
138     app_exception.raise_exception;
139   end if;
140   close c;
141   if (    ((recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
142            OR ((recinfo.OBJECT_VERSION_NUMBER is null) AND (X_OBJECT_VERSION_NUMBER is null)))
143       AND ((recinfo.NO_OF_DAYS = X_NO_OF_DAYS)
144            OR ((recinfo.NO_OF_DAYS is null) AND (X_NO_OF_DAYS is null)))
145       AND ((recinfo.ENABLED_FLAG = X_ENABLED_FLAG)
146            OR ((recinfo.ENABLED_FLAG is null) AND (X_ENABLED_FLAG is null)))
147   ) then
148     null;
149   else
150     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
151     app_exception.raise_exception;
152   end if;
153 
154   FOR tlinfo IN ctl LOOP
155   IF (tlinfo.BASELANG = 'Y') THEN
156       IF (    (tlinfo.PERIOD_NAME = X_PERIOD_NAME)
157           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
158                OR ((tlinfo.DESCRIPTION IS NULL) AND (X_DESCRIPTION IS NULL)))
159       ) THEN
160         NULL;
161       ELSE
162         Fnd_Message.set_name('FND', 'FORM_RECORD_CHANGED');
163         App_Exception.raise_exception;
164       END IF;
165     END IF;
166   END LOOP;
167 
168   return;
169 end LOCK_ROW;
170 
171 
172 
173 procedure UPDATE_ROW (
174 	X_PERIOD_ID IN NUMBER,
175 	X_OBJECT_VERSION_NUMBER in NUMBER,
176 	X_NO_OF_DAYS IN NUMBER,
177 	X_ENABLED_FLAG IN VARCHAR2,
178 	X_PERIOD_NAME IN VARCHAR2,
179 	X_DESCRIPTION in VARCHAR2,
180 	X_LAST_UPDATE_DATE in DATE,
181 	X_LAST_UPDATED_BY in NUMBER,
182 	X_LAST_UPDATE_LOGIN in NUMBER
183 ) is
184 begin
185   update AMS_TCOP_FR_PERIODS_B set
186 		OBJECT_VERSION_NUMBER	= X_OBJECT_VERSION_NUMBER
187 		,NO_OF_DAYS				= X_NO_OF_DAYS
188 		,ENABLED_FLAG				= X_ENABLED_FLAG
189 		,LAST_UPDATE_DATE			= X_LAST_UPDATE_DATE
190 		,LAST_UPDATED_BY			= X_LAST_UPDATED_BY
191 		,LAST_UPDATE_LOGIN		= X_LAST_UPDATE_LOGIN
192   where PERIOD_ID           = X_PERIOD_ID;
193 
194   if (sql%notfound) then
195     raise no_data_found;
196   end if;
197 
198   update AMS_TCOP_FR_PERIODS_TL set
199     PERIOD_NAME = X_PERIOD_NAME,
200     DESCRIPTION = X_DESCRIPTION,
201     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
202     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
203     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
204     SOURCE_LANG = USERENV('LANG')
205   where PERIOD_ID = X_PERIOD_ID
206   and USERENV('LANG') IN (LANGUAGE, SOURCE_LANG);
207 
208   if (sql%notfound) then
209     raise no_data_found;
210   end if;
211 
212 end UPDATE_ROW;
213 
214 
215 procedure DELETE_ROW (
216 	X_PERIOD_ID IN NUMBER
217 ) is
218 begin
219 	delete from AMS_TCOP_FR_PERIODS_TL
220 	where PERIOD_ID = X_PERIOD_ID;
221 
222 	if (sql%notfound) then
223 		raise no_data_found;
224 	end if;
225 
226 	delete from AMS_TCOP_FR_PERIODS_B
227 		where PERIOD_ID = X_PERIOD_ID;
228 
229 	if (sql%notfound) then
230 		raise no_data_found;
231 	end if;
232 
233 end DELETE_ROW;
234 
235 
236 
237 procedure  LOAD_ROW(
238 	X_PERIOD_ID IN NUMBER,
239 	X_NO_OF_DAYS IN NUMBER,
240 	X_ENABLED_FLAG IN VARCHAR2,
241 	X_PERIOD_NAME IN VARCHAR2,
242 	X_DESCRIPTION in VARCHAR2,
243 	X_OWNER in  VARCHAR2,
244 	X_CUSTOM_MODE in VARCHAR2
245 ) is
246 
247 l_user_id   number := 0;
248 l_last_updated_by number;
249 l_obj_verno  number;
250 l_dummy_char  varchar2(1);
251 l_row_id    varchar2(100);
252 
253 cursor c_obj_verno is
254   select OBJECT_VERSION_NUMBER,
255 	 last_updated_by
256   from   AMS_TCOP_FR_PERIODS_B
257   where  PERIOD_ID =  X_PERIOD_ID;
258 
259 cursor c_chk_prd_exists is
260   select 'x'
261   from   AMS_TCOP_FR_PERIODS_B
262   where  PERIOD_ID = X_PERIOD_ID;
263 
264 cursor ctl_chk_prd_exists is
265   select 'x'
266   from   AMS_TCOP_FR_PERIODS_TL
267   where  PERIOD_ID = X_PERIOD_ID;
268 
269 BEGIN
270 
271  if X_OWNER = 'SEED' then
272      l_user_id := 1;
273  elsif X_OWNER = 'ORACLE' then
274      l_user_id := 2;
275  elsif X_OWNER = 'SYSADMIN' THEN
276     l_user_id := 0;
277  end if;
278 
279  open c_chk_prd_exists;
280  fetch c_chk_prd_exists into l_dummy_char;
281  if c_chk_prd_exists%notfound
282  then
283     close c_chk_prd_exists;
284 
285     l_obj_verno := 1;
286 
287     AMS_TCOP_PERIODS_PKG.INSERT_ROW (
288 			X_ROWID			=>	l_row_id,
289 			X_PERIOD_ID		=>	X_PERIOD_ID,
290 			X_NO_OF_DAYS		=>	X_NO_OF_DAYS,
291 			X_ENABLED_FLAG		=>	X_ENABLED_FLAG,
292 			X_PERIOD_NAME		=>	X_PERIOD_NAME,
293 			X_DESCRIPTION		=>	X_DESCRIPTION,
294 			X_LAST_UPDATE_DATE	=>	sysdate,
295 			X_LAST_UPDATED_BY	=>	l_user_id,
296 			X_CREATION_DATE		=>	sysdate,
297 			X_CREATED_BY		=>	l_user_id,
298 			X_LAST_UPDATE_LOGIN	=>	0,
299 			X_OBJECT_VERSION_NUMBER =>	l_obj_verno
300 		);
301 else
302    close c_chk_prd_exists;
303 
304    open c_obj_verno;
305    fetch c_obj_verno into l_obj_verno,l_last_updated_by;
306    close c_obj_verno;
307 
308    if (l_last_updated_by in (1,2,0) OR
309        NVL(x_custom_mode,'PRESERVE')='FORCE') THEN
310 
311        AMS_TCOP_PERIODS_PKG.UPDATE_ROW(
312 		X_PERIOD_ID		=>	X_PERIOD_ID,
313 		X_NO_OF_DAYS		=>	X_NO_OF_DAYS,
314 		X_ENABLED_FLAG		=>	X_ENABLED_FLAG,
315 		X_PERIOD_NAME		=>	X_PERIOD_NAME,
316 		X_DESCRIPTION		=>	X_DESCRIPTION,
317 		X_LAST_UPDATE_DATE      =>    SYSDATE,
318 		X_LAST_UPDATED_BY       =>    l_user_id,
319 		X_LAST_UPDATE_LOGIN     =>    0,
320 		X_OBJECT_VERSION_NUMBER =>    l_obj_verno + 1
321          );
322     end if;
323 end if;
324 
325 END LOAD_ROW;
326 
327 PROCEDURE TRANSLATE_ROW (
328 	X_PERIOD_ID IN NUMBER,
329 	X_PERIOD_NAME IN VARCHAR2,
330 	X_DESCRIPTION in VARCHAR2,
331 	X_OWNER IN VARCHAR2,
332 	X_CUSTOM_MODE IN VARCHAR2
333 ) IS
334     cursor c_last_updated_by is
335     select last_updated_by
336     from AMS_TCOP_FR_PERIODS_TL
337     where PERIOD_ID = X_PERIOD_ID
338     and  USERENV('LANG') = LANGUAGE;
339 
340     l_last_updated_by number;
341 
342 BEGIN
343 
344   open c_last_updated_by;
345   fetch c_last_updated_by into l_last_updated_by;
346   close c_last_updated_by;
347 
348 
349   if (l_last_updated_by in (1,2,0) OR
350        NVL(x_custom_mode,'PRESERVE')='FORCE') THEN
351   -- Only update rows which have not been altered by user
352 
353      UPDATE AMS_TCOP_FR_PERIODS_TL
354      SET description = X_DESCRIPTION,
355       period_name = X_PERIOD_NAME,
356       source_lang = USERENV('LANG'),
357       last_update_date = SYSDATE,
358       last_updated_by = DECODE(X_OWNER, 'SEED', 1,
359 			       'ORACLE',2,
360 			       'SYSADMIN',0 , -1),
361       last_update_login = 0
362     WHERE PERIOD_ID = X_PERIOD_ID
363     AND USERENV('LANG') IN (LANGUAGE, source_lang);
364 
365   end if;
366 
367 END TRANSLATE_ROW;
368 
369 
370 PROCEDURE add_language
371 IS
372 BEGIN
373   DELETE FROM AMS_TCOP_FR_PERIODS_TL T
374   WHERE NOT EXISTS
375     (SELECT NULL
376      FROM AMS_TCOP_FR_PERIODS_B B
377      WHERE B.PERIOD_ID = T.PERIOD_ID
378     );
379 
380   UPDATE AMS_TCOP_FR_PERIODS_TL T SET (
381       PERIOD_NAME,
382       DESCRIPTION
383     ) =
384 	 (SELECT
385       T1.PERIOD_NAME,
386       T1.DESCRIPTION
387     FROM AMS_TCOP_FR_PERIODS_TL T1
388     WHERE T1.PERIOD_ID = T.PERIOD_ID
389     AND T1.LANGUAGE = T.SOURCE_LANG)
390   WHERE (
391       T.PERIOD_ID,
392       T.LANGUAGE
393    ) IN
394    (SELECT
395       subt.PERIOD_ID,
396       subt.LANGUAGE
397     FROM AMS_TCOP_FR_PERIODS_TL subb, AMS_TCOP_FR_PERIODS_TL subt
398     WHERE subb.PERIOD_ID = subt.PERIOD_ID
399     AND subb.LANGUAGE = subt.SOURCE_LANG
400     AND (subb.PERIOD_NAME <> subt.PERIOD_NAME
401       OR subb.DESCRIPTION <> subt.DESCRIPTION
402       OR (subb.DESCRIPTION IS NULL AND subt.DESCRIPTION IS NOT NULL)
403       OR (subb.DESCRIPTION IS NOT NULL AND subt.DESCRIPTION IS NULL)
404   ));
405 
406   INSERT INTO AMS_TCOP_FR_PERIODS_TL (
407 	PERIOD_ID,
408 	PERIOD_NAME,
409 	DESCRIPTION,
410 	CREATED_BY,
411 	CREATION_DATE,
412 	LAST_UPDATED_BY,
413 	LAST_UPDATE_DATE,
414 	LAST_UPDATE_LOGIN,
415 	LANGUAGE,
416 	SOURCE_LANG
417   )
418   SELECT /*+ ordered */
419 	b.PERIOD_ID,
420 	b.PERIOD_NAME,
421 	b.DESCRIPTION,
422 	b.CREATED_BY,
423 	b.CREATION_DATE,
424 	b.LAST_UPDATED_BY,
425 	b.LAST_UPDATE_DATE,
426 	b.LAST_UPDATE_LOGIN,
427 	l.language_code,
428 	b.SOURCE_LANG
429   FROM AMS_TCOP_FR_PERIODS_TL b, fnd_languages l
430   WHERE l.installed_flag IN ('I', 'B')
431   AND b.LANGUAGE = USERENV('lang')
432   AND NOT EXISTS
433     (SELECT NULL
434     FROM AMS_TCOP_FR_PERIODS_TL T
435     WHERE T.PERIOD_ID = b.PERIOD_ID
436     AND T.LANGUAGE = l.language_code);
437 END add_language;
438 
439 
440 end AMS_TCOP_PERIODS_PKG;