DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMD_QC_TEST_VALUES_PVT

Source


1 package body GMD_QC_TEST_VALUES_PVT as
2 /* $Header: GMDVTVLB.pls 115.4 2002/12/03 17:13:24 cnagarba noship $ */
3 procedure INSERT_ROW (
4   X_ROWID in out nocopy ROWID,
5   X_TEST_VALUE_ID in out nocopy NUMBER,
6   X_TEST_ID in NUMBER,
7   X_MIN_NUM in NUMBER ,
8   X_MAX_NUM in NUMBER ,
9   X_VALUE_CHAR in VARCHAR2 ,
10   X_TEXT_RANGE_SEQ in NUMBER ,
11   X_EXPRESSION_REF_TEST_ID in NUMBER ,
12   X_TEXT_CODE in NUMBER ,
13   X_ATTRIBUTE_CATEGORY in VARCHAR2 ,
14   X_ATTRIBUTE1 in VARCHAR2 ,
15   X_ATTRIBUTE2 in VARCHAR2 ,
16   X_ATTRIBUTE3 in VARCHAR2 ,
17   X_ATTRIBUTE4 in VARCHAR2 ,
18   X_ATTRIBUTE5 in VARCHAR2 ,
19   X_ATTRIBUTE6 in VARCHAR2 ,
20   X_ATTRIBUTE7 in VARCHAR2 ,
21   X_ATTRIBUTE8 in VARCHAR2 ,
22   X_ATTRIBUTE9 in VARCHAR2 ,
23   X_ATTRIBUTE10 in VARCHAR2 ,
24   X_ATTRIBUTE11 in VARCHAR2 ,
25   X_ATTRIBUTE12 in VARCHAR2 ,
26   X_ATTRIBUTE13 in VARCHAR2 ,
27   X_ATTRIBUTE14 in VARCHAR2 ,
28   X_ATTRIBUTE15 in VARCHAR2 ,
29   X_ATTRIBUTE16 in VARCHAR2 ,
30   X_ATTRIBUTE17 in VARCHAR2 ,
31   X_ATTRIBUTE18 in VARCHAR2 ,
32   X_ATTRIBUTE19 in VARCHAR2 ,
33   X_ATTRIBUTE20 in VARCHAR2 ,
34   X_ATTRIBUTE21 in VARCHAR2 ,
35   X_ATTRIBUTE22 in VARCHAR2 ,
36   X_ATTRIBUTE23 in VARCHAR2 ,
37   X_ATTRIBUTE24 in VARCHAR2 ,
38   X_ATTRIBUTE25 in VARCHAR2 ,
39   X_ATTRIBUTE26 in VARCHAR2 ,
40   X_ATTRIBUTE27 in VARCHAR2 ,
41   X_ATTRIBUTE28 in VARCHAR2 ,
42   X_ATTRIBUTE29 in VARCHAR2 ,
43   X_ATTRIBUTE30 in VARCHAR2 ,
44   X_DISPLAY_LABEL_NUMERIC_RANGE in VARCHAR2 ,
45   X_TEST_VALUE_DESC in VARCHAR2 ,
46   X_CREATION_DATE in DATE ,
47   X_CREATED_BY in NUMBER ,
48   X_LAST_UPDATE_DATE in DATE ,
49   X_LAST_UPDATED_BY in NUMBER ,
50   X_LAST_UPDATE_LOGIN in NUMBER
51 ) is
52   cursor C is select ROWID from GMD_QC_TEST_VALUES_B
53     where TEST_VALUE_ID = X_TEST_VALUE_ID
54     ;
55 begin
56 
57   IF X_TEST_VALUE_ID IS NULL THEN
58      SELECT GMD_QC_TEST_VALUE_ID_S.NEXTVAL INTO X_TEST_VALUE_ID FROM DUAL;
59   END IF;
60 
61   insert into GMD_QC_TEST_VALUES_B (
62     TEST_VALUE_ID,
63     TEST_ID,
64     MIN_NUM,
65     MAX_NUM,
66     VALUE_CHAR,
67     TEXT_RANGE_SEQ,
68     EXPRESSION_REF_TEST_ID,
69     TEXT_CODE,
70     ATTRIBUTE_CATEGORY,
71     ATTRIBUTE1,
72     ATTRIBUTE2,
73     ATTRIBUTE3,
74     ATTRIBUTE4,
75     ATTRIBUTE5,
76     ATTRIBUTE6,
77     ATTRIBUTE7,
78     ATTRIBUTE8,
79     ATTRIBUTE9,
80     ATTRIBUTE10,
81     ATTRIBUTE11,
82     ATTRIBUTE12,
83     ATTRIBUTE13,
84     ATTRIBUTE14,
85     ATTRIBUTE15,
86     ATTRIBUTE16,
87     ATTRIBUTE17,
88     ATTRIBUTE18,
89     ATTRIBUTE19,
90     ATTRIBUTE20,
91     ATTRIBUTE21,
92     ATTRIBUTE22,
93     ATTRIBUTE23,
94     ATTRIBUTE24,
95     ATTRIBUTE25,
96     ATTRIBUTE26,
97     ATTRIBUTE27,
98     ATTRIBUTE28,
99     ATTRIBUTE29,
100     ATTRIBUTE30,
101     CREATION_DATE,
102     CREATED_BY,
103     LAST_UPDATE_DATE,
104     LAST_UPDATED_BY,
105     LAST_UPDATE_LOGIN
106   ) values (
107     X_TEST_VALUE_ID,
108     X_TEST_ID,
109     X_MIN_NUM,
110     X_MAX_NUM,
111     X_VALUE_CHAR,
112     X_TEXT_RANGE_SEQ,
113     X_EXPRESSION_REF_TEST_ID,
114     X_TEXT_CODE,
115     X_ATTRIBUTE_CATEGORY,
116     X_ATTRIBUTE1,
117     X_ATTRIBUTE2,
118     X_ATTRIBUTE3,
119     X_ATTRIBUTE4,
120     X_ATTRIBUTE5,
121     X_ATTRIBUTE6,
122     X_ATTRIBUTE7,
123     X_ATTRIBUTE8,
124     X_ATTRIBUTE9,
125     X_ATTRIBUTE10,
126     X_ATTRIBUTE11,
127     X_ATTRIBUTE12,
128     X_ATTRIBUTE13,
129     X_ATTRIBUTE14,
130     X_ATTRIBUTE15,
131     X_ATTRIBUTE16,
132     X_ATTRIBUTE17,
133     X_ATTRIBUTE18,
134     X_ATTRIBUTE19,
135     X_ATTRIBUTE20,
136     X_ATTRIBUTE21,
137     X_ATTRIBUTE22,
138     X_ATTRIBUTE23,
139     X_ATTRIBUTE24,
140     X_ATTRIBUTE25,
141     X_ATTRIBUTE26,
142     X_ATTRIBUTE27,
143     X_ATTRIBUTE28,
144     X_ATTRIBUTE29,
145     X_ATTRIBUTE30,
146     NVL(X_CREATION_DATE,SYSDATE),
147     NVL(X_CREATED_BY,FND_GLOBAL.USER_ID),
148     NVL(X_LAST_UPDATE_DATE,SYSDATE),
149     NVL(X_LAST_UPDATED_BY,FND_GLOBAL.USER_ID),
150     NVL(X_LAST_UPDATE_LOGIN,FND_GLOBAL.LOGIN_ID)
151   );
152 
153   insert into GMD_QC_TEST_VALUES_TL (
154     TEST_VALUE_ID,
155     DISPLAY_LABEL_NUMERIC_RANGE,
156     TEST_VALUE_DESC,
157     CREATION_DATE,
158     CREATED_BY,
159     LAST_UPDATED_BY,
160     LAST_UPDATE_DATE,
161     LAST_UPDATE_LOGIN,
162     LANGUAGE,
163     SOURCE_LANG
164   ) select
165     X_TEST_VALUE_ID,
166     X_DISPLAY_LABEL_NUMERIC_RANGE,
167     X_TEST_VALUE_DESC,
168     NVL(X_CREATION_DATE,SYSDATE),
169     NVL(X_CREATED_BY,FND_GLOBAL.USER_ID),
170     NVL(X_LAST_UPDATED_BY,FND_GLOBAL.USER_ID),
171     NVL(X_LAST_UPDATE_DATE,SYSDATE),
172     NVL(X_LAST_UPDATE_LOGIN,FND_GLOBAL.LOGIN_ID),
173     L.LANGUAGE_CODE,
174     userenv('LANG')
175   from FND_LANGUAGES L
176   where L.INSTALLED_FLAG in ('I', 'B')
177   and not exists
178     (select NULL
179     from GMD_QC_TEST_VALUES_TL T
180     where T.TEST_VALUE_ID = X_TEST_VALUE_ID
181     and T.LANGUAGE = L.LANGUAGE_CODE);
182 
183   open c;
184   fetch c into X_ROWID;
185   if (c%notfound) then
186     close c;
187     raise no_data_found;
188   end if;
189   close c;
190 
191 end INSERT_ROW;
192 
193 FUNCTION INSERT_ROW(p_qc_test_values_rec IN OUT NOCOPY GMD_QC_TEST_VALUES%ROWTYPE) RETURN BOOLEAN IS
194 l_rowid		ROWID;
195 BEGIN
196   GMD_QC_TEST_VALUES_PVT.INSERT_ROW(
197     X_ROWID => l_rowid,
198     X_TEST_VALUE_ID => p_qc_test_values_rec.TEST_VALUE_ID,
199     X_TEST_ID => p_qc_test_values_rec.TEST_ID,
200     X_MIN_NUM => p_qc_test_values_rec.MIN_NUM,
201     X_MAX_NUM => p_qc_test_values_rec.MAX_NUM,
202     X_VALUE_CHAR => p_qc_test_values_rec.VALUE_CHAR,
203     X_TEXT_RANGE_SEQ => p_qc_test_values_rec.TEXT_RANGE_SEQ,
204     X_EXPRESSION_REF_TEST_ID => p_qc_test_values_rec.EXPRESSION_REF_TEST_ID,
205     X_TEXT_CODE => p_qc_test_values_rec.TEXT_CODE,
206     X_ATTRIBUTE_CATEGORY => p_qc_test_values_rec.ATTRIBUTE_CATEGORY,
207     X_ATTRIBUTE1 => p_qc_test_values_rec.ATTRIBUTE1,
208     X_ATTRIBUTE2 => p_qc_test_values_rec.ATTRIBUTE2,
209     X_ATTRIBUTE3 => p_qc_test_values_rec.ATTRIBUTE3,
210     X_ATTRIBUTE4 => p_qc_test_values_rec.ATTRIBUTE4,
211     X_ATTRIBUTE5 => p_qc_test_values_rec.ATTRIBUTE5,
212     X_ATTRIBUTE6 => p_qc_test_values_rec.ATTRIBUTE6,
213     X_ATTRIBUTE7 => p_qc_test_values_rec.ATTRIBUTE7,
214     X_ATTRIBUTE8 => p_qc_test_values_rec.ATTRIBUTE8,
215     X_ATTRIBUTE9 => p_qc_test_values_rec.ATTRIBUTE9,
216     X_ATTRIBUTE10 => p_qc_test_values_rec.ATTRIBUTE10,
217     X_ATTRIBUTE11 => p_qc_test_values_rec.ATTRIBUTE11,
218     X_ATTRIBUTE12 => p_qc_test_values_rec.ATTRIBUTE12,
219     X_ATTRIBUTE13 => p_qc_test_values_rec.ATTRIBUTE13,
220     X_ATTRIBUTE14 => p_qc_test_values_rec.ATTRIBUTE14,
221     X_ATTRIBUTE15 => p_qc_test_values_rec.ATTRIBUTE15,
222     X_ATTRIBUTE16 => p_qc_test_values_rec.ATTRIBUTE16,
223     X_ATTRIBUTE17 => p_qc_test_values_rec.ATTRIBUTE17,
224     X_ATTRIBUTE18 => p_qc_test_values_rec.ATTRIBUTE18,
225     X_ATTRIBUTE19 => p_qc_test_values_rec.ATTRIBUTE19,
226     X_ATTRIBUTE20 => p_qc_test_values_rec.ATTRIBUTE20,
227     X_ATTRIBUTE21 => p_qc_test_values_rec.ATTRIBUTE21,
228     X_ATTRIBUTE22 => p_qc_test_values_rec.ATTRIBUTE22,
229     X_ATTRIBUTE23 => p_qc_test_values_rec.ATTRIBUTE23,
230     X_ATTRIBUTE24 => p_qc_test_values_rec.ATTRIBUTE24,
231     X_ATTRIBUTE25 => p_qc_test_values_rec.ATTRIBUTE25,
232     X_ATTRIBUTE26 => p_qc_test_values_rec.ATTRIBUTE26,
233     X_ATTRIBUTE27 => p_qc_test_values_rec.ATTRIBUTE27,
234     X_ATTRIBUTE28 => p_qc_test_values_rec.ATTRIBUTE28,
235     X_ATTRIBUTE29 => p_qc_test_values_rec.ATTRIBUTE29,
236     X_ATTRIBUTE30 => p_qc_test_values_rec.ATTRIBUTE30,
237     X_DISPLAY_LABEL_NUMERIC_RANGE => p_qc_test_values_rec.DISPLAY_LABEL_NUMERIC_RANGE,
238     X_TEST_VALUE_DESC => p_qc_test_values_rec.TEST_VALUE_DESC,
239     X_CREATION_DATE => p_qc_test_values_rec.CREATION_DATE,
240     X_CREATED_BY => p_qc_test_values_rec.CREATED_BY,
241     X_LAST_UPDATE_DATE => p_qc_test_values_rec.LAST_UPDATE_DATE,
242     X_LAST_UPDATED_BY => p_qc_test_values_rec.LAST_UPDATED_BY,
243     X_LAST_UPDATE_LOGIN => p_qc_test_values_rec.LAST_UPDATE_LOGIN);
244 
245 RETURN TRUE;
246 
247 EXCEPTION WHEN OTHERS THEN
248     gmd_api_pub.log_message('GMD_API_ERROR','PACKAGE','GMD_QC_TEST_VALUES_PVT.INSERT_ROW','ERROR',SUBSTR(SQLERRM,1,100),'POSITION','010');
249     RETURN FALSE;
250 end INSERT_ROW;
251 
252 
253 procedure LOCK_ROW (
254   X_TEST_VALUE_ID in NUMBER,
255   X_TEST_ID in NUMBER,
256   X_MIN_NUM in NUMBER,
257   X_MAX_NUM in NUMBER,
258   X_VALUE_CHAR in VARCHAR2,
259   X_TEXT_RANGE_SEQ in NUMBER,
260   X_EXPRESSION_REF_TEST_ID in NUMBER,
261   X_TEXT_CODE in NUMBER,
262   X_ATTRIBUTE_CATEGORY in VARCHAR2,
263   X_ATTRIBUTE1 in VARCHAR2,
264   X_ATTRIBUTE2 in VARCHAR2,
265   X_ATTRIBUTE3 in VARCHAR2,
266   X_ATTRIBUTE4 in VARCHAR2,
267   X_ATTRIBUTE5 in VARCHAR2,
268   X_ATTRIBUTE6 in VARCHAR2,
269   X_ATTRIBUTE7 in VARCHAR2,
270   X_ATTRIBUTE8 in VARCHAR2,
271   X_ATTRIBUTE9 in VARCHAR2,
272   X_ATTRIBUTE10 in VARCHAR2,
273   X_ATTRIBUTE11 in VARCHAR2,
274   X_ATTRIBUTE12 in VARCHAR2,
275   X_ATTRIBUTE13 in VARCHAR2,
276   X_ATTRIBUTE14 in VARCHAR2,
277   X_ATTRIBUTE15 in VARCHAR2,
278   X_ATTRIBUTE16 in VARCHAR2,
279   X_ATTRIBUTE17 in VARCHAR2,
280   X_ATTRIBUTE18 in VARCHAR2,
281   X_ATTRIBUTE19 in VARCHAR2,
282   X_ATTRIBUTE20 in VARCHAR2,
283   X_ATTRIBUTE21 in VARCHAR2,
284   X_ATTRIBUTE22 in VARCHAR2,
285   X_ATTRIBUTE23 in VARCHAR2,
286   X_ATTRIBUTE24 in VARCHAR2,
287   X_ATTRIBUTE25 in VARCHAR2,
288   X_ATTRIBUTE26 in VARCHAR2,
289   X_ATTRIBUTE27 in VARCHAR2,
290   X_ATTRIBUTE28 in VARCHAR2,
291   X_ATTRIBUTE29 in VARCHAR2,
292   X_ATTRIBUTE30 in VARCHAR2,
293   X_DISPLAY_LABEL_NUMERIC_RANGE in VARCHAR2,
294   X_TEST_VALUE_DESC in VARCHAR2
295 ) is
296   cursor c is select
297       TEST_ID,
298       MIN_NUM,
299       MAX_NUM,
300       VALUE_CHAR,
301       TEXT_RANGE_SEQ,
302       EXPRESSION_REF_TEST_ID,
303       TEXT_CODE,
304       ATTRIBUTE_CATEGORY,
305       ATTRIBUTE1,
306       ATTRIBUTE2,
307       ATTRIBUTE3,
308       ATTRIBUTE4,
309       ATTRIBUTE5,
310       ATTRIBUTE6,
311       ATTRIBUTE7,
312       ATTRIBUTE8,
313       ATTRIBUTE9,
314       ATTRIBUTE10,
315       ATTRIBUTE11,
316       ATTRIBUTE12,
317       ATTRIBUTE13,
318       ATTRIBUTE14,
319       ATTRIBUTE15,
320       ATTRIBUTE16,
321       ATTRIBUTE17,
322       ATTRIBUTE18,
323       ATTRIBUTE19,
324       ATTRIBUTE20,
325       ATTRIBUTE21,
326       ATTRIBUTE22,
327       ATTRIBUTE23,
328       ATTRIBUTE24,
329       ATTRIBUTE25,
330       ATTRIBUTE26,
331       ATTRIBUTE27,
332       ATTRIBUTE28,
333       ATTRIBUTE29,
334       ATTRIBUTE30
335     from GMD_QC_TEST_VALUES_B
336     where TEST_VALUE_ID = X_TEST_VALUE_ID
337     for update of TEST_VALUE_ID nowait;
338   recinfo c%rowtype;
339 
340   cursor c1 is select
341       DISPLAY_LABEL_NUMERIC_RANGE,
342       TEST_VALUE_DESC,
343       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
344     from GMD_QC_TEST_VALUES_TL
345     where TEST_VALUE_ID = X_TEST_VALUE_ID
346     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
347     for update of TEST_VALUE_ID nowait;
348 begin
349   open c;
350   fetch c into recinfo;
351   if (c%notfound) then
352     close c;
353     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
354     app_exception.raise_exception;
355   end if;
356   close c;
357   if (    (recinfo.TEST_ID = X_TEST_ID)
358       AND ((recinfo.MIN_NUM = X_MIN_NUM)
359            OR ((recinfo.MIN_NUM is null) AND (X_MIN_NUM is null)))
360       AND ((recinfo.MAX_NUM = X_MAX_NUM)
361            OR ((recinfo.MAX_NUM is null) AND (X_MAX_NUM is null)))
362       AND ((recinfo.VALUE_CHAR = X_VALUE_CHAR)
363            OR ((recinfo.VALUE_CHAR is null) AND (X_VALUE_CHAR is null)))
364       AND ((recinfo.TEXT_RANGE_SEQ = X_TEXT_RANGE_SEQ)
365            OR ((recinfo.TEXT_RANGE_SEQ is null) AND (X_TEXT_RANGE_SEQ is null)))
366       AND ((recinfo.EXPRESSION_REF_TEST_ID = X_EXPRESSION_REF_TEST_ID)
367            OR ((recinfo.EXPRESSION_REF_TEST_ID is null) AND (X_EXPRESSION_REF_TEST_ID is null)))
368       AND ((recinfo.TEXT_CODE = X_TEXT_CODE)
369            OR ((recinfo.TEXT_CODE is null) AND (X_TEXT_CODE is null)))
370       AND ((recinfo.ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY)
371            OR ((recinfo.ATTRIBUTE_CATEGORY is null) AND (X_ATTRIBUTE_CATEGORY is null)))
372       AND ((recinfo.ATTRIBUTE1 = X_ATTRIBUTE1)
373            OR ((recinfo.ATTRIBUTE1 is null) AND (X_ATTRIBUTE1 is null)))
374       AND ((recinfo.ATTRIBUTE2 = X_ATTRIBUTE2)
375            OR ((recinfo.ATTRIBUTE2 is null) AND (X_ATTRIBUTE2 is null)))
376       AND ((recinfo.ATTRIBUTE3 = X_ATTRIBUTE3)
377            OR ((recinfo.ATTRIBUTE3 is null) AND (X_ATTRIBUTE3 is null)))
378       AND ((recinfo.ATTRIBUTE4 = X_ATTRIBUTE4)
379            OR ((recinfo.ATTRIBUTE4 is null) AND (X_ATTRIBUTE4 is null)))
380       AND ((recinfo.ATTRIBUTE5 = X_ATTRIBUTE5)
381            OR ((recinfo.ATTRIBUTE5 is null) AND (X_ATTRIBUTE5 is null)))
382       AND ((recinfo.ATTRIBUTE6 = X_ATTRIBUTE6)
383            OR ((recinfo.ATTRIBUTE6 is null) AND (X_ATTRIBUTE6 is null)))
384       AND ((recinfo.ATTRIBUTE7 = X_ATTRIBUTE7)
385            OR ((recinfo.ATTRIBUTE7 is null) AND (X_ATTRIBUTE7 is null)))
386       AND ((recinfo.ATTRIBUTE8 = X_ATTRIBUTE8)
387            OR ((recinfo.ATTRIBUTE8 is null) AND (X_ATTRIBUTE8 is null)))
388       AND ((recinfo.ATTRIBUTE9 = X_ATTRIBUTE9)
389            OR ((recinfo.ATTRIBUTE9 is null) AND (X_ATTRIBUTE9 is null)))
390       AND ((recinfo.ATTRIBUTE10 = X_ATTRIBUTE10)
391            OR ((recinfo.ATTRIBUTE10 is null) AND (X_ATTRIBUTE10 is null)))
392       AND ((recinfo.ATTRIBUTE11 = X_ATTRIBUTE11)
393            OR ((recinfo.ATTRIBUTE11 is null) AND (X_ATTRIBUTE11 is null)))
394       AND ((recinfo.ATTRIBUTE12 = X_ATTRIBUTE12)
395            OR ((recinfo.ATTRIBUTE12 is null) AND (X_ATTRIBUTE12 is null)))
396       AND ((recinfo.ATTRIBUTE13 = X_ATTRIBUTE13)
397            OR ((recinfo.ATTRIBUTE13 is null) AND (X_ATTRIBUTE13 is null)))
398       AND ((recinfo.ATTRIBUTE14 = X_ATTRIBUTE14)
399            OR ((recinfo.ATTRIBUTE14 is null) AND (X_ATTRIBUTE14 is null)))
400       AND ((recinfo.ATTRIBUTE15 = X_ATTRIBUTE15)
401            OR ((recinfo.ATTRIBUTE15 is null) AND (X_ATTRIBUTE15 is null)))
402       AND ((recinfo.ATTRIBUTE16 = X_ATTRIBUTE16)
403            OR ((recinfo.ATTRIBUTE16 is null) AND (X_ATTRIBUTE16 is null)))
404       AND ((recinfo.ATTRIBUTE17 = X_ATTRIBUTE17)
405            OR ((recinfo.ATTRIBUTE17 is null) AND (X_ATTRIBUTE17 is null)))
406       AND ((recinfo.ATTRIBUTE18 = X_ATTRIBUTE18)
407            OR ((recinfo.ATTRIBUTE18 is null) AND (X_ATTRIBUTE18 is null)))
408       AND ((recinfo.ATTRIBUTE19 = X_ATTRIBUTE19)
409            OR ((recinfo.ATTRIBUTE19 is null) AND (X_ATTRIBUTE19 is null)))
410       AND ((recinfo.ATTRIBUTE20 = X_ATTRIBUTE20)
411            OR ((recinfo.ATTRIBUTE20 is null) AND (X_ATTRIBUTE20 is null)))
412       AND ((recinfo.ATTRIBUTE21 = X_ATTRIBUTE21)
413            OR ((recinfo.ATTRIBUTE21 is null) AND (X_ATTRIBUTE21 is null)))
414       AND ((recinfo.ATTRIBUTE22 = X_ATTRIBUTE22)
415            OR ((recinfo.ATTRIBUTE22 is null) AND (X_ATTRIBUTE22 is null)))
416       AND ((recinfo.ATTRIBUTE23 = X_ATTRIBUTE23)
417            OR ((recinfo.ATTRIBUTE23 is null) AND (X_ATTRIBUTE23 is null)))
418       AND ((recinfo.ATTRIBUTE24 = X_ATTRIBUTE24)
419            OR ((recinfo.ATTRIBUTE24 is null) AND (X_ATTRIBUTE24 is null)))
420       AND ((recinfo.ATTRIBUTE25 = X_ATTRIBUTE25)
421            OR ((recinfo.ATTRIBUTE25 is null) AND (X_ATTRIBUTE25 is null)))
422       AND ((recinfo.ATTRIBUTE26 = X_ATTRIBUTE26)
423            OR ((recinfo.ATTRIBUTE26 is null) AND (X_ATTRIBUTE26 is null)))
424       AND ((recinfo.ATTRIBUTE27 = X_ATTRIBUTE27)
425            OR ((recinfo.ATTRIBUTE27 is null) AND (X_ATTRIBUTE27 is null)))
426       AND ((recinfo.ATTRIBUTE28 = X_ATTRIBUTE28)
427            OR ((recinfo.ATTRIBUTE28 is null) AND (X_ATTRIBUTE28 is null)))
428       AND ((recinfo.ATTRIBUTE29 = X_ATTRIBUTE29)
429            OR ((recinfo.ATTRIBUTE29 is null) AND (X_ATTRIBUTE29 is null)))
430       AND ((recinfo.ATTRIBUTE30 = X_ATTRIBUTE30)
431            OR ((recinfo.ATTRIBUTE30 is null) AND (X_ATTRIBUTE30 is null)))
432   ) then
433     null;
434   else
435     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
436     app_exception.raise_exception;
437   end if;
438 
439   for tlinfo in c1 loop
440     if (tlinfo.BASELANG = 'Y') then
441       if (    ((tlinfo.DISPLAY_LABEL_NUMERIC_RANGE = X_DISPLAY_LABEL_NUMERIC_RANGE)
442                OR ((tlinfo.DISPLAY_LABEL_NUMERIC_RANGE is null) AND (X_DISPLAY_LABEL_NUMERIC_RANGE is null)))
443           AND ((tlinfo.TEST_VALUE_DESC = X_TEST_VALUE_DESC)
444                OR ((tlinfo.TEST_VALUE_DESC is null) AND (X_TEST_VALUE_DESC is null)))
445       ) then
446         null;
447       else
448         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
449         app_exception.raise_exception;
450       end if;
451     end if;
452   end loop;
453   return;
454 end LOCK_ROW;
455 
456 
457 procedure UPDATE_ROW (
458   X_TEST_VALUE_ID in NUMBER,
459   X_TEST_ID in NUMBER,
460   X_MIN_NUM in NUMBER,
461   X_MAX_NUM in NUMBER,
462   X_VALUE_CHAR in VARCHAR2,
463   X_TEXT_RANGE_SEQ in NUMBER,
464   X_EXPRESSION_REF_TEST_ID in NUMBER,
465   X_TEXT_CODE in NUMBER,
466   X_ATTRIBUTE_CATEGORY in VARCHAR2,
467   X_ATTRIBUTE1 in VARCHAR2,
468   X_ATTRIBUTE2 in VARCHAR2,
469   X_ATTRIBUTE3 in VARCHAR2,
470   X_ATTRIBUTE4 in VARCHAR2,
471   X_ATTRIBUTE5 in VARCHAR2,
472   X_ATTRIBUTE6 in VARCHAR2,
473   X_ATTRIBUTE7 in VARCHAR2,
474   X_ATTRIBUTE8 in VARCHAR2,
475   X_ATTRIBUTE9 in VARCHAR2,
476   X_ATTRIBUTE10 in VARCHAR2,
477   X_ATTRIBUTE11 in VARCHAR2,
478   X_ATTRIBUTE12 in VARCHAR2,
479   X_ATTRIBUTE13 in VARCHAR2,
480   X_ATTRIBUTE14 in VARCHAR2,
481   X_ATTRIBUTE15 in VARCHAR2,
482   X_ATTRIBUTE16 in VARCHAR2,
483   X_ATTRIBUTE17 in VARCHAR2,
484   X_ATTRIBUTE18 in VARCHAR2,
485   X_ATTRIBUTE19 in VARCHAR2,
486   X_ATTRIBUTE20 in VARCHAR2,
487   X_ATTRIBUTE21 in VARCHAR2,
488   X_ATTRIBUTE22 in VARCHAR2,
489   X_ATTRIBUTE23 in VARCHAR2,
490   X_ATTRIBUTE24 in VARCHAR2,
491   X_ATTRIBUTE25 in VARCHAR2,
492   X_ATTRIBUTE26 in VARCHAR2,
493   X_ATTRIBUTE27 in VARCHAR2,
494   X_ATTRIBUTE28 in VARCHAR2,
495   X_ATTRIBUTE29 in VARCHAR2,
496   X_ATTRIBUTE30 in VARCHAR2,
497   X_DISPLAY_LABEL_NUMERIC_RANGE in VARCHAR2,
498   X_TEST_VALUE_DESC in VARCHAR2,
499   X_LAST_UPDATE_DATE in DATE,
500   X_LAST_UPDATED_BY in NUMBER,
501   X_LAST_UPDATE_LOGIN in NUMBER
502 ) is
503 begin
504   update GMD_QC_TEST_VALUES_B set
505     TEST_ID = X_TEST_ID,
506     MIN_NUM = X_MIN_NUM,
507     MAX_NUM = X_MAX_NUM,
508     VALUE_CHAR = X_VALUE_CHAR,
509     TEXT_RANGE_SEQ = X_TEXT_RANGE_SEQ,
510     EXPRESSION_REF_TEST_ID = X_EXPRESSION_REF_TEST_ID,
511     TEXT_CODE = X_TEXT_CODE,
512     ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY,
513     ATTRIBUTE1 = X_ATTRIBUTE1,
514     ATTRIBUTE2 = X_ATTRIBUTE2,
515     ATTRIBUTE3 = X_ATTRIBUTE3,
516     ATTRIBUTE4 = X_ATTRIBUTE4,
517     ATTRIBUTE5 = X_ATTRIBUTE5,
518     ATTRIBUTE6 = X_ATTRIBUTE6,
519     ATTRIBUTE7 = X_ATTRIBUTE7,
520     ATTRIBUTE8 = X_ATTRIBUTE8,
521     ATTRIBUTE9 = X_ATTRIBUTE9,
522     ATTRIBUTE10 = X_ATTRIBUTE10,
523     ATTRIBUTE11 = X_ATTRIBUTE11,
524     ATTRIBUTE12 = X_ATTRIBUTE12,
525     ATTRIBUTE13 = X_ATTRIBUTE13,
526     ATTRIBUTE14 = X_ATTRIBUTE14,
527     ATTRIBUTE15 = X_ATTRIBUTE15,
528     ATTRIBUTE16 = X_ATTRIBUTE16,
529     ATTRIBUTE17 = X_ATTRIBUTE17,
530     ATTRIBUTE18 = X_ATTRIBUTE18,
531     ATTRIBUTE19 = X_ATTRIBUTE19,
532     ATTRIBUTE20 = X_ATTRIBUTE20,
533     ATTRIBUTE21 = X_ATTRIBUTE21,
534     ATTRIBUTE22 = X_ATTRIBUTE22,
535     ATTRIBUTE23 = X_ATTRIBUTE23,
536     ATTRIBUTE24 = X_ATTRIBUTE24,
537     ATTRIBUTE25 = X_ATTRIBUTE25,
538     ATTRIBUTE26 = X_ATTRIBUTE26,
539     ATTRIBUTE27 = X_ATTRIBUTE27,
540     ATTRIBUTE28 = X_ATTRIBUTE28,
541     ATTRIBUTE29 = X_ATTRIBUTE29,
542     ATTRIBUTE30 = X_ATTRIBUTE30,
543     LAST_UPDATE_DATE =  NVL(X_LAST_UPDATE_DATE,SYSDATE),
544     LAST_UPDATED_BY =   NVL(X_LAST_UPDATED_BY,FND_GLOBAL.USER_ID),
545     LAST_UPDATE_LOGIN = NVL(X_LAST_UPDATE_LOGIN,FND_GLOBAL.LOGIN_ID)
546   where TEST_VALUE_ID = X_TEST_VALUE_ID;
547 
548   if (sql%notfound) then
549     raise no_data_found;
550   end if;
551 
552   update GMD_QC_TEST_VALUES_TL set
553     DISPLAY_LABEL_NUMERIC_RANGE = X_DISPLAY_LABEL_NUMERIC_RANGE,
554     TEST_VALUE_DESC = X_TEST_VALUE_DESC,
555     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
556     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
557     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
558     SOURCE_LANG = userenv('LANG')
559   where TEST_VALUE_ID = X_TEST_VALUE_ID
560   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
561 
562   if (sql%notfound) then
563     raise no_data_found;
564   end if;
565 end UPDATE_ROW;
566 
567 FUNCTION DELETE_ROW (p_test_value_id in NUMBER) RETURN BOOLEAN IS
568 begin
569   IF p_test_value_id IS NOT NULL THEN
570      DELETE from GMD_QC_TEST_VALUES_TL
571      where TEST_VALUE_ID = p_test_value_id ;
572 
573      if (sql%notfound) then
574         raise no_data_found;
575      end if;
576 
577      delete from GMD_QC_TEST_VALUES_B
578      where TEST_VALUE_ID = p_test_value_id;
579 
580      if (sql%notfound) then
581        raise no_data_found;
582      end if;
583   ELSE
584     gmd_api_pub.log_message('GMD_NO_KEYS','TABLE_NAME', 'GMD_QC_TEST_VALUES');
585     RETURN FALSE;
586   END IF;
587 
588   RETURN TRUE;
589 
590 EXCEPTION
591  WHEN NO_DATA_FOUND
592    THEN
593      gmd_api_pub.log_message('GMD_NO_DATA_FOUND','TABLE_NAME', 'GMD_QC_TEST_VALUES');
594      RETURN FALSE;
595  WHEN OTHERS
596    THEN
597      gmd_api_pub.log_message('GMD_API_ERROR','PACKAGE','GMD_QC_TEST_VALUES_PVT.DELETE_ROW','ERROR',SUBSTR(SQLERRM,1,100),'POSITION','010');
598      RETURN FALSE;
599 end DELETE_ROW;
600 
601 procedure ADD_LANGUAGE
602 is
603 begin
604   delete from GMD_QC_TEST_VALUES_TL T
605   where not exists
606     (select NULL
607     from GMD_QC_TEST_VALUES_B B
608     where B.TEST_VALUE_ID = T.TEST_VALUE_ID
609     );
610 
611   update GMD_QC_TEST_VALUES_TL T set (
612       DISPLAY_LABEL_NUMERIC_RANGE,
613       TEST_VALUE_DESC
614     ) = (select
615       B.DISPLAY_LABEL_NUMERIC_RANGE,
616       B.TEST_VALUE_DESC
617     from GMD_QC_TEST_VALUES_TL B
618     where B.TEST_VALUE_ID = T.TEST_VALUE_ID
619     and B.LANGUAGE = T.SOURCE_LANG)
620   where (
621       T.TEST_VALUE_ID,
622       T.LANGUAGE
623   ) in (select
624       SUBT.TEST_VALUE_ID,
625       SUBT.LANGUAGE
626     from GMD_QC_TEST_VALUES_TL SUBB, GMD_QC_TEST_VALUES_TL SUBT
627     where SUBB.TEST_VALUE_ID = SUBT.TEST_VALUE_ID
628     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
629     and (SUBB.DISPLAY_LABEL_NUMERIC_RANGE <> SUBT.DISPLAY_LABEL_NUMERIC_RANGE
630       or (SUBB.DISPLAY_LABEL_NUMERIC_RANGE is null and SUBT.DISPLAY_LABEL_NUMERIC_RANGE is not null)
631       or (SUBB.DISPLAY_LABEL_NUMERIC_RANGE is not null and SUBT.DISPLAY_LABEL_NUMERIC_RANGE is null)
632       or SUBB.TEST_VALUE_DESC <> SUBT.TEST_VALUE_DESC
633       or (SUBB.TEST_VALUE_DESC is null and SUBT.TEST_VALUE_DESC is not null)
634       or (SUBB.TEST_VALUE_DESC is not null and SUBT.TEST_VALUE_DESC is null)
635   ));
636 
637   insert into GMD_QC_TEST_VALUES_TL (
638     TEST_VALUE_ID,
639     DISPLAY_LABEL_NUMERIC_RANGE,
640     TEST_VALUE_DESC,
641     CREATION_DATE,
642     CREATED_BY,
643     LAST_UPDATED_BY,
644     LAST_UPDATE_DATE,
645     LAST_UPDATE_LOGIN,
646     LANGUAGE,
647     SOURCE_LANG
648   ) select
649     B.TEST_VALUE_ID,
650     B.DISPLAY_LABEL_NUMERIC_RANGE,
651     B.TEST_VALUE_DESC,
652     B.CREATION_DATE,
653     B.CREATED_BY,
654     B.LAST_UPDATED_BY,
655     B.LAST_UPDATE_DATE,
656     B.LAST_UPDATE_LOGIN,
657     L.LANGUAGE_CODE,
658     B.SOURCE_LANG
659   from GMD_QC_TEST_VALUES_TL B, FND_LANGUAGES L
660   where L.INSTALLED_FLAG in ('I', 'B')
661   and B.LANGUAGE = userenv('LANG')
662   and not exists
663     (select NULL
664     from GMD_QC_TEST_VALUES_TL T
665     where T.TEST_VALUE_ID = B.TEST_VALUE_ID
666     and T.LANGUAGE = L.LANGUAGE_CODE);
667 end ADD_LANGUAGE;
668 
669 FUNCTION lock_row (
670   p_test_value_id   IN  NUMBER)
671 RETURN BOOLEAN
672 IS
673   dummy       NUMBER;
674 BEGIN
675 
676   IF (p_test_value_id IS NOT NULL) THEN
677     SELECT test_value_id
678     INTO   dummy
679     FROM   gmd_qc_test_values_b
680     WHERE  test_value_id = p_test_value_id
681     FOR UPDATE OF test_value_id NOWAIT  ;
682   ELSE
683     gmd_api_pub.log_message('GMD_NO_KEYS','TABLE_NAME', 'GMD_QC_TEST_VALUES');
684     RETURN FALSE;
685   END IF;
686 
687   RETURN TRUE;
688 
689 EXCEPTION
690  WHEN NO_DATA_FOUND
691    THEN
692      gmd_api_pub.log_message('GMD_NO_DATA_FOUND','TABLE_NAME', 'GMD_QC_TEST_VALUES');
693      RETURN FALSE;
694  WHEN OTHERS
695    THEN
696      gmd_api_pub.log_message('GMD_API_ERROR','PACKAGE','GMD_QC_TEST_VALUES_PVT.LOCK_ROW','ERROR',SUBSTR(SQLERRM,1,100),'POSITION','010');
697      RETURN FALSE;
698 END lock_row;
699 
700 
701 end GMD_QC_TEST_VALUES_PVT;