DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSC_PROF_CHECKS_PKG

Source


1 PACKAGE BODY CSC_PROF_CHECKS_PKG as
2 /* $Header: csctpckb.pls 120.3 2005/09/18 23:14:52 vshastry ship $ */
3 -- Start of Comments
4 -- Package name     : CSC_PROF_CHECKS_PKG
5 -- Purpose          :
6 -- History          :
7 --	03 Nov 00   axsubram  Added  Translate_row,load_row (# 1487864)
8 --	03 Nov 00	axsubram	File name constant corrected to csctpckb.pls
9 -- 07 Nov 02   jamose Upgrade table handler changes
10 -- 25 Nov 02   jamose Fnd_Api_G_MISS* changes to improve the performance
11 -- 19-07-2005 tpalaniv Modified the translate_row and load_row APIs to fetch last_updated_by using FND API
12 -- 19-09-2005 vshastry Bug 4596220. Added condition in insert row
13 -- NOTE             :
14 -- End of Comments
15 
16 
17 G_PKG_NAME CONSTANT VARCHAR2(30)  := 'CSC_PROF_CHECKS_PKG';
18 G_FILE_NAME CONSTANT VARCHAR2(12) := 'csctpckb.pls';
19 
20 G_MISS_CHAR VARCHAR2(1) := FND_API.G_MISS_CHAR;
21 G_MISS_NUM NUMBER := FND_API.G_MISS_NUM;
22 G_MISS_DATE DATE := FND_API.G_MISS_DATE;
23 
24 PROCEDURE Insert_Row(
25           px_CHECK_ID   IN OUT NOCOPY NUMBER,
26           p_CHECK_NAME    VARCHAR2,
27           p_CHECK_NAME_CODE    VARCHAR2,
28           p_DESCRIPTION    VARCHAR2,
29           p_START_DATE_ACTIVE    DATE,
30           p_END_DATE_ACTIVE    DATE,
31           p_SEEDED_FLAG    VARCHAR2,
32           p_SELECT_TYPE    VARCHAR2,
33           p_SELECT_BLOCK_ID    NUMBER,
34           p_DATA_TYPE    VARCHAR2,
35           p_FORMAT_MASK    VARCHAR2,
36           p_THRESHOLD_GRADE    VARCHAR2,
37           p_THRESHOLD_RATING_CODE    VARCHAR2,
38           p_CHECK_UPPER_LOWER_FLAG    VARCHAR2,
39           p_THRESHOLD_COLOR_CODE    VARCHAR2,
40           p_CHECK_LEVEL             VARCHAR2,
41           p_CREATED_BY    NUMBER,
42           p_CREATION_DATE    DATE,
43           p_LAST_UPDATED_BY    NUMBER,
44           p_LAST_UPDATE_DATE    DATE,
45           p_LAST_UPDATE_LOGIN    NUMBER,
46 	    x_OBJECT_VERSION_NUMBER OUT NOCOPY NUMBER,
47           p_APPLICATION_ID     NUMBER
48 	)
49  IS
50    CURSOR C2 IS SELECT CSC_PROF_CHECKS_S.nextval FROM sys.dual;
51 l_object_version_number number := 1;
52 ps_SEEDED_FLAG    Varchar2(3);
53 BEGIN
54 
55    /* added the below 2 lines for bug 4596220 */
56    ps_seeded_flag := p_seeded_flag;
57    IF NVL(p_seeded_flag, 'N') <> 'Y' THEN
58 
59    /* Added This If Condition for Bug 1944040 */
60       If p_Created_by=1 then
61            ps_seeded_flag:='Y';
62       Else
63            ps_seeded_flag:='N';
64       End If;
65    END IF;
66 
67    If (px_CHECK_ID IS NULL) OR (px_CHECK_ID = G_MISS_NUM) then
68        OPEN C2;
69        FETCH C2 INTO px_CHECK_ID;
70        CLOSE C2;
71    End If;
72 
73   -- to_date(NULL) added to include timestamp during creation
74    INSERT INTO CSC_PROF_CHECKS_b(
75            CHECK_ID,
76            CHECK_NAME_CODE,
77            START_DATE_ACTIVE,
78            END_DATE_ACTIVE,
79            SEEDED_FLAG,
80            SELECT_TYPE,
81            SELECT_BLOCK_ID,
82            DATA_TYPE,
83            FORMAT_MASK,
84            THRESHOLD_GRADE,
85            THRESHOLD_RATING_CODE,
86            CHECK_UPPER_LOWER_FLAG,
87            THRESHOLD_COLOR_CODE,
88            CHECK_LEVEL,
89            CREATED_BY,
90            CREATION_DATE,
91            LAST_UPDATED_BY,
92            LAST_UPDATE_DATE,
93            LAST_UPDATE_LOGIN,
94 	   OBJECT_VERSION_NUMBER,
95            APPLICATION_ID
96           ) VALUES (
97            px_CHECK_ID,
98            decode( p_CHECK_NAME_CODE, G_MISS_CHAR, NULL, p_CHECK_NAME_CODE),
99            decode( p_START_DATE_ACTIVE,G_MISS_DATE, to_date(NULL), p_START_DATE_ACTIVE),
100            decode( p_END_DATE_ACTIVE, G_MISS_DATE,to_date(NULL), p_END_DATE_ACTIVE),
101            decode( p_SEEDED_FLAG, G_MISS_CHAR, NULL, ps_SEEDED_FLAG),
102            decode( p_SELECT_TYPE, G_MISS_CHAR, NULL, p_SELECT_TYPE),
103            decode( p_SELECT_BLOCK_ID, G_MISS_NUM, NULL, p_SELECT_BLOCK_ID),
104            decode( p_DATA_TYPE, G_MISS_CHAR, NULL, p_DATA_TYPE),
105            decode( p_FORMAT_MASK, G_MISS_CHAR, NULL, p_FORMAT_MASK),
106            decode( p_THRESHOLD_GRADE, G_MISS_CHAR, NULL, p_THRESHOLD_GRADE),
107            decode( p_THRESHOLD_RATING_CODE, G_MISS_CHAR, NULL, p_THRESHOLD_RATING_CODE),
108            decode( p_CHECK_UPPER_LOWER_FLAG, G_MISS_CHAR, NULL, p_CHECK_UPPER_LOWER_FLAG),
109            decode( p_THRESHOLD_COLOR_CODE, G_MISS_CHAR, NULL, p_THRESHOLD_COLOR_CODE),
110            decode( p_CHECK_LEVEL, G_MISS_CHAR, NULL, p_CHECK_LEVEL),
111            decode( p_CREATED_BY, G_MISS_NUM, NULL, p_CREATED_BY),
112            decode( p_CREATION_DATE, G_MISS_DATE,to_date(NULL), p_CREATION_DATE),
113            decode( p_LAST_UPDATED_BY, G_MISS_NUM, NULL, p_LAST_UPDATED_BY),
114            decode( p_LAST_UPDATE_DATE, G_MISS_DATE,to_date(NULL), p_LAST_UPDATE_DATE),
115            decode( p_LAST_UPDATE_LOGIN, G_MISS_NUM, NULL, p_LAST_UPDATE_LOGIN),
116 	     l_OBJECT_VERSION_NUMBER,
117            decode( p_APPLICATION_ID,G_MISS_NUM, NULL, p_APPLICATION_ID) );
118 
119 
120    INSERT INTO CSC_PROF_CHECKS_TL(
121 	   CHECK_ID,
122            CHECK_NAME,
123            DESCRIPTION,
124            CREATED_BY,
125            CREATION_DATE,
126            LAST_UPDATED_BY,
127            LAST_UPDATE_DATE,
128            LAST_UPDATE_LOGIN,
129            LANGUAGE,
130            SOURCE_LANG
131           ) select
132            Px_CHECK_ID,
133            decode( p_CHECK_NAME, G_MISS_CHAR, NULL, p_CHECK_NAME),
134            decode( p_DESCRIPTION,G_MISS_CHAR, NULL, p_DESCRIPTION),
135            decode( p_CREATED_BY, G_MISS_NUM, NULL, p_CREATED_BY),
136            decode( p_CREATION_DATE, G_MISS_DATE,to_date(NULL), p_CREATION_DATE),
137            decode( p_LAST_UPDATED_BY, G_MISS_NUM, NULL, p_LAST_UPDATED_BY),
138            decode( p_LAST_UPDATE_DATE, G_MISS_DATE,to_date(NULL), p_LAST_UPDATE_DATE),
139            decode( p_LAST_UPDATE_LOGIN, G_MISS_NUM, NULL, p_LAST_UPDATE_LOGIN),
140            L.LANGUAGE_CODE,
141            userenv('LANG')
142      FROM FND_LANGUAGES L
143     WHERE L.INSTALLED_FLAG in ('I', 'B')
144     AND not exists
145       (select NULL
146        from CSC_PROF_CHECKS_TL T
147        where T.CHECK_ID = Px_CHECK_ID
148        and T.LANGUAGE = L.LANGUAGE_CODE);
149 
150     --set out parameters
151     x_object_version_number := l_object_version_number;
152 End Insert_Row;
153 
154 PROCEDURE Update_Row(
155           p_CHECK_ID    NUMBER,
156           p_CHECK_NAME    VARCHAR2,
157           p_CHECK_NAME_CODE    VARCHAR2,
158           p_DESCRIPTION    VARCHAR2,
159           p_START_DATE_ACTIVE    DATE,
160           p_END_DATE_ACTIVE    DATE,
161           p_SEEDED_FLAG    VARCHAR2,
162           p_SELECT_TYPE    VARCHAR2,
163           p_SELECT_BLOCK_ID    NUMBER,
164           p_DATA_TYPE    VARCHAR2,
165           p_FORMAT_MASK    VARCHAR2,
166           p_THRESHOLD_GRADE    VARCHAR2,
167           p_THRESHOLD_RATING_CODE    VARCHAR2,
168           p_CHECK_UPPER_LOWER_FLAG    VARCHAR2,
169           p_THRESHOLD_COLOR_CODE    VARCHAR2,
170           p_CHECK_LEVEL             VARCHAR2,
171           p_LAST_UPDATED_BY    NUMBER,
172           p_LAST_UPDATE_DATE    DATE,
173           p_LAST_UPDATE_LOGIN    NUMBER,
174 	       px_OBJECT_VERSION_NUMBER IN OUT NOCOPY NUMBER,
175           p_APPLICATION_ID  NUMBER)
176 
177  IS
178  BEGIN
179     Update CSC_PROF_CHECKS_B
180     SET
181        CHECK_NAME_CODE = p_CHECK_NAME_CODE,
182        START_DATE_ACTIVE = p_START_DATE_ACTIVE,
183        END_DATE_ACTIVE = p_END_DATE_ACTIVE,
184        SEEDED_FLAG = p_SEEDED_FLAG,
185        SELECT_TYPE = p_SELECT_TYPE,
186        SELECT_BLOCK_ID = p_SELECT_BLOCK_ID,
187        DATA_TYPE = p_DATA_TYPE,
188        FORMAT_MASK = p_FORMAT_MASK,
189        THRESHOLD_GRADE = p_THRESHOLD_GRADE,
190        THRESHOLD_RATING_CODE = p_THRESHOLD_RATING_CODE,
191        CHECK_UPPER_LOWER_FLAG = p_CHECK_UPPER_LOWER_FLAG,
192        THRESHOLD_COLOR_CODE = p_THRESHOLD_COLOR_CODE,
193        CHECK_LEVEL = p_CHECK_LEVEL,
194        LAST_UPDATED_BY = p_LAST_UPDATED_BY,
195        LAST_UPDATE_DATE = p_LAST_UPDATE_DATE,
196        LAST_UPDATE_LOGIN = p_LAST_UPDATE_LOGIN,
197 	    OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER + 1,
198        APPLICATION_ID= p_APPLICATION_ID
199     WHERE CHECK_ID = p_CHECK_ID
200     RETURNING OBJECT_VERSION_NUMBER INTO px_object_version_number;
201 
202     UPDATE CSC_PROF_CHECKS_TL SET
203         CHECK_NAME =  p_CHECK_NAME,
204         DESCRIPTION = p_DESCRIPTION,
205         LAST_UPDATED_BY = p_LAST_UPDATED_BY,
206         LAST_UPDATE_DATE = p_LAST_UPDATE_DATE,
207         LAST_UPDATE_LOGIN = p_LAST_UPDATE_LOGIN,
208     	  SOURCE_LANG = userenv('LANG')
209     WHERE CHECK_ID = P_CHECK_ID
210     AND userenv('LANG') in (LANGUAGE, SOURCE_LANG);
211     If (SQL%NOTFOUND) then
212         RAISE NO_DATA_FOUND;
213     End If;
214 END Update_Row;
215 
216 
217 procedure LOCK_ROW (
218   P_CHECK_ID  NUMBER,
219   P_OBJECT_VERSION_NUMBER NUMBER
220 ) is
221   cursor c is select
222       OBJECT_VERSION_NUMBER,
223       CHECK_NAME_CODE,
224       START_DATE_ACTIVE,
225       END_DATE_ACTIVE,
226       SEEDED_FLAG,
227       SELECT_TYPE,
228       SELECT_BLOCK_ID,
229       DATA_TYPE,
230       FORMAT_MASK,
231       THRESHOLD_GRADE,
232       THRESHOLD_RATING_CODE,
233       THRESHOLD_COLOR_CODE,
234       CHECK_LEVEL,
235       CHECK_UPPER_LOWER_FLAG
236     from CSC_PROF_CHECKS_B
237     where CHECK_ID = P_CHECK_ID
238     and object_version_number = P_OBJECT_VERSION_NUMBER
239     for update of CHECK_ID nowait;
240   recinfo c%rowtype;
241 
242   cursor c1 is select
243       CHECK_NAME,
244       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
245     from CSC_PROF_CHECKS_TL
246     where CHECK_ID = P_CHECK_ID
247     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
248     for update of CHECK_ID nowait;
249 begin
250   open c;
251   fetch c into recinfo;
252   if (c%notfound) then
253     close c;
254     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
255     app_exception.raise_exception;
256   end if;
257   close c;
258   return;
259 end LOCK_ROW;
260 
261 procedure DELETE_ROW (
262   P_CHECK_ID  NUMBER,
263   P_OBJECT_VERSION_NUMBER NUMBER
264 ) is
265 begin
266   delete from CSC_PROF_CHECKS_TL
267   where CHECK_ID = P_CHECK_ID;
268 
269   if (sql%notfound) then
270     raise no_data_found;
271   end if;
272 
273   delete from CSC_PROF_CHECKS_B
274   where CHECK_ID = P_CHECK_ID
275   and OBJECT_VERSION_NUMBER = P_OBJECT_VERSION_NUMBER;
276 
277   if (sql%notfound) then
278     raise no_data_found;
279   end if;
280 end DELETE_ROW;
281 
282 procedure ADD_LANGUAGE
283 is
284 begin
285   delete from CSC_PROF_CHECKS_TL T
286   where not exists
287     (select NULL
288     from CSC_PROF_CHECKS_B B
289     where B.CHECK_ID = T.CHECK_ID
290     );
291 
292   update CSC_PROF_CHECKS_TL T set (
293       CHECK_NAME,
294       DESCRIPTION
295     ) = (select
296       B.CHECK_NAME,
297       B.DESCRIPTION
298     from CSC_PROF_CHECKS_TL B
299     where B.CHECK_ID = T.CHECK_ID
300     and B.LANGUAGE = T.SOURCE_LANG)
301   where (
302       T.CHECK_ID,
303       T.LANGUAGE
304   ) in (select
305       SUBT.CHECK_ID,
306       SUBT.LANGUAGE
307     from CSC_PROF_CHECKS_TL SUBB, CSC_PROF_CHECKS_TL SUBT
308     where SUBB.CHECK_ID = SUBT.CHECK_ID
309     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
310     and (SUBB.CHECK_NAME <> SUBT.CHECK_NAME
311       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
312       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
313       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
314   ));
315 
316   insert into CSC_PROF_CHECKS_TL (
317     CHECK_ID,
318     CHECK_NAME,
319     DESCRIPTION,
320     CREATED_BY,
321     CREATION_DATE,
322     LAST_UPDATED_BY,
323     LAST_UPDATE_DATE,
324     LAST_UPDATE_LOGIN,
325     LANGUAGE,
326     SOURCE_LANG
327   ) select
328     B.CHECK_ID,
329     B.CHECK_NAME,
330     B.DESCRIPTION,
331     B.CREATED_BY,
332     B.CREATION_DATE,
333     B.LAST_UPDATED_BY,
334     B.LAST_UPDATE_DATE,
335     B.LAST_UPDATE_LOGIN,
336     L.LANGUAGE_CODE,
337     B.SOURCE_LANG
338   from CSC_PROF_CHECKS_TL B, FND_LANGUAGES L
339   where L.INSTALLED_FLAG in ('I', 'B')
340   and B.LANGUAGE = userenv('LANG')
341   and not exists
342     (select NULL
343     from CSC_PROF_CHECKS_TL T
344     where T.CHECK_ID = B.CHECK_ID
345     and T.LANGUAGE = L.LANGUAGE_CODE);
346 end ADD_LANGUAGE;
347 
348 procedure TRANSLATE_ROW (
349   P_CHECK_ID        NUMBER,
350   p_CHECK_NAME      VARCHAR2,
351   p_DESCRIPTION    	VARCHAR2,
352   p_owner 		varchar2)
353   IS
354   BEGIN
355 	Update Csc_Prof_Checks_TL set
356 	     check_name        = p_check_name,
357 	     description       = nvl(p_description,description),
358 	     last_update_date  = sysdate,
359 	     last_updated_by   = fnd_load_util.owner_id(p_owner),
360 	     last_update_login = 0,
361 	     source_lang       = userenv('LANG')
362 	     Where check_id    = p_check_id
363 	    and  userenv('LANG') in (language, source_lang);
364 
365 end TRANSLATE_ROW;
366 
367 PROCEDURE Load_Row(
368           p_CHECK_ID    		NUMBER,
369           p_CHECK_NAME    	VARCHAR2,
370           p_CHECK_NAME_CODE   VARCHAR2,
371           p_DESCRIPTION    	VARCHAR2,
372           p_START_DATE_ACTIVE DATE,
373           p_END_DATE_ACTIVE   DATE,
374           p_SEEDED_FLAG    	VARCHAR2,
375           p_SELECT_TYPE    	VARCHAR2,
376           p_SELECT_BLOCK_ID   NUMBER,
377           p_DATA_TYPE    	VARCHAR2,
378           p_FORMAT_MASK    	VARCHAR2,
379           p_THRESHOLD_GRADE   VARCHAR2,
380           p_THRESHOLD_RATING_CODE    VARCHAR2,
381           p_CHECK_UPPER_LOWER_FLAG   VARCHAR2,
382           p_THRESHOLD_COLOR_CODE     VARCHAR2,
383           p_CHECK_LEVEL              VARCHAR2,
384           p_LAST_UPDATED_BY     NUMBER,
385           p_LAST_UPDATE_DATE    DATE,
386           p_LAST_UPDATE_LOGIN   NUMBER,
387 	  px_OBJECT_VERSION_NUMBER IN OUT NOCOPY NUMBER ,
388           p_APPLICATION_ID      NUMBER,
389        	  P_OWNER	VARCHAR2)
390 IS
391 	     l_user_id	number := 0;
392 	     l_check_id	number := G_MISS_NUM;
393 	     l_object_version_number	number := 0;
394 
395 		/** This is mainly for loading seed data . That is the
396 		reason, that l_check_id is being declared here, The check_id
397 		returned from insert_row is not used.
398 
399 		2. Object_version_number is not passed . It is assumed that
400 			seed data would be run when other users are not using
401 			the system
402 		**/
403     BEGIN
404 		/*if (p_owner = 'SEED') then
405 			l_user_id := 1;
406 		end if; */
407 
408         l_check_id := p_check_id;
409 
410         Csc_Prof_Checks_Pkg.Update_Row(
411  			p_CHECK_ID    		     => p_check_id,
412  			p_CHECK_NAME    	     => p_check_name,
413  			p_CHECK_NAME_CODE  	     => p_check_name_code,
414  			p_DESCRIPTION    	     => p_description,
415  			p_START_DATE_ACTIVE  => to_date(p_start_date_active,'YYYY/MM/DD'),
416  			p_END_DATE_ACTIVE    => to_date(p_end_date_active,'YYYY/MM/DD'),
417  			p_SEEDED_FLAG    	     => 'Y',
418  			p_SELECT_TYPE    	     => p_select_type,
419  			p_SELECT_BLOCK_ID        => p_select_block_id,
420  			p_DATA_TYPE    	     => p_data_type,
421  			p_FORMAT_MASK    	     => p_format_mask,
422  			p_THRESHOLD_GRADE        => p_threshold_grade,
423  			p_THRESHOLD_RATING_CODE  => p_threshold_rating_code,
424  			p_CHECK_UPPER_LOWER_FLAG => p_check_upper_lower_flag,
425  			p_THRESHOLD_COLOR_CODE   => p_threshold_color_code,
426                         p_CHECK_LEVEL            => p_check_level,
427  			p_LAST_UPDATED_BY    	=> p_LAST_UPDATED_BY,
428  			p_LAST_UPDATE_DATE    	=> p_LAST_UPDATE_DATE,
429  			p_LAST_UPDATE_LOGIN    	=> 0,
430  		        px_OBJECT_VERSION_NUMBER => l_object_version_number,
431                         p_APPLICATION_ID          => p_application_id );
432 
433 
434    EXCEPTION
435       WHEN NO_DATA_FOUND THEN
436 
437 	    csc_prof_checks_pkg.insert_row(
438  		px_CHECK_ID   	          => l_check_id ,
439  		p_CHECK_NAME             => p_check_name,
440  		p_CHECK_NAME_CODE        => p_check_name_code,
441  		p_DESCRIPTION            => p_description,
442  		p_START_DATE_ACTIVE  => to_date(p_start_date_active,'YYYY/MM/DD'),
443  		p_END_DATE_ACTIVE    => to_date(p_end_date_active,'YYYY/MM/DD'),
444  		p_SEEDED_FLAG            => 'Y',
445  		p_SELECT_TYPE            => p_select_type,
446  		p_SELECT_BLOCK_ID        => p_select_block_id,
447  		p_DATA_TYPE    	     => p_data_type,
448  		p_FORMAT_MASK    	     => p_format_mask,
449  		p_THRESHOLD_GRADE        => p_threshold_grade,
450  		p_THRESHOLD_RATING_CODE  => p_threshold_rating_code,
451  		p_CHECK_UPPER_LOWER_FLAG => p_check_upper_lower_flag,
452  		p_THRESHOLD_COLOR_CODE   => p_threshold_color_code,
453                 p_CHECK_LEVEL            => p_check_level,
454  		p_CREATED_BY             => p_LAST_UPDATED_BY,
455  		p_CREATION_DATE          => p_LAST_UPDATE_DATE,
456  		p_LAST_UPDATED_BY        => p_LAST_UPDATED_BY,
457  		p_LAST_UPDATE_DATE       => p_LAST_UPDATE_DATE,
458  		p_LAST_UPDATE_LOGIN      => 0,
459  		x_OBJECT_VERSION_NUMBER  => l_object_version_number,
460                 p_APPLICATION_ID          => p_application_id );
461 
462 End Load_ROW;
463 
464 End CSC_PROF_CHECKS_PKG;