DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMD_SPEC_TESTS_PVT

Source


1 package body GMD_SPEC_TESTS_PVT as
2 /* $Header: GMDVSPTB.pls 120.0 2005/05/25 19:16:49 appldev noship $ */
3 procedure INSERT_ROW (
4   X_ROWID in out NOCOPY VARCHAR2,
5   X_SPEC_ID in NUMBER,
6   X_TEST_ID in NUMBER,
7   X_ATTRIBUTE1 in VARCHAR2,
8   X_ATTRIBUTE2 in VARCHAR2,
9   X_MIN_VALUE_CHAR in VARCHAR2,
10   X_TEST_METHOD_ID in NUMBER,
11   X_SEQ in NUMBER,
12   X_FROM_BASE_IND in VARCHAR2,
13   X_EXCLUDE_IND in VARCHAR2,
14   X_MODIFIED_IND in VARCHAR2,
15   X_TEST_QTY in NUMBER,
16   X_TEST_QTY_UOM in VARCHAR2,
17   X_MIN_VALUE_NUM in NUMBER,
18   X_TARGET_VALUE_NUM in NUMBER,
19   X_MAX_VALUE_NUM in NUMBER,
20   X_ATTRIBUTE5 in VARCHAR2,
21   X_ATTRIBUTE6 in VARCHAR2,
22   X_ATTRIBUTE7 in VARCHAR2,
23   X_ATTRIBUTE8 in VARCHAR2,
24   X_ATTRIBUTE9 in VARCHAR2,
25   X_ATTRIBUTE10 in VARCHAR2,
26   X_ATTRIBUTE11 in VARCHAR2,
27   X_ATTRIBUTE12 in VARCHAR2,
28   X_ATTRIBUTE13 in VARCHAR2,
29   X_ATTRIBUTE14 in VARCHAR2,
30   X_ATTRIBUTE15 in VARCHAR2,
31   X_ATTRIBUTE16 in VARCHAR2,
32   X_ATTRIBUTE17 in VARCHAR2,
33   X_ATTRIBUTE18 in VARCHAR2,
34   X_USE_TO_CONTROL_STEP in VARCHAR2,
35   X_PRINT_SPEC_IND in VARCHAR2,
36   X_PRINT_RESULT_IND in VARCHAR2,
37   X_TEXT_CODE in NUMBER,
38   X_ATTRIBUTE_CATEGORY in VARCHAR2,
39   X_ATTRIBUTE3 in VARCHAR2,
40   X_RETEST_LOT_EXPIRY_IND in VARCHAR2,
41   X_ATTRIBUTE19 in VARCHAR2,
42   X_ATTRIBUTE20 in VARCHAR2,
43   X_MAX_VALUE_CHAR in VARCHAR2,
44   X_TEST_REPLICATE in NUMBER,
45   X_CHECK_RESULT_INTERVAL in NUMBER,
46   X_OUT_OF_SPEC_ACTION in VARCHAR2,
47   X_EXP_ERROR_TYPE in VARCHAR2,
48   X_BELOW_SPEC_MIN in NUMBER,
49   X_ABOVE_SPEC_MIN in NUMBER,
50   X_BELOW_SPEC_MAX in NUMBER,
51   X_ABOVE_SPEC_MAX in NUMBER,
52   X_BELOW_MIN_ACTION_CODE in VARCHAR2,
53   X_ABOVE_MIN_ACTION_CODE in VARCHAR2,
54   X_BELOW_MAX_ACTION_CODE in VARCHAR2,
55   X_ABOVE_MAX_ACTION_CODE in VARCHAR2,
56   X_OPTIONAL_IND in VARCHAR2,
57   X_DISPLAY_PRECISION in NUMBER,
58   X_REPORT_PRECISION in NUMBER,
59   X_TEST_PRIORITY in VARCHAR2,
60   X_PRINT_ON_COA_IND in VARCHAR2,
61   X_TARGET_VALUE_CHAR in VARCHAR2,
62   X_ATTRIBUTE4 in VARCHAR2,
63   X_ATTRIBUTE21 in VARCHAR2,
64   X_ATTRIBUTE22 in VARCHAR2,
65   X_ATTRIBUTE23 in VARCHAR2,
66   X_ATTRIBUTE24 in VARCHAR2,
67   X_ATTRIBUTE25 in VARCHAR2,
68   X_ATTRIBUTE26 in VARCHAR2,
69   X_ATTRIBUTE27 in VARCHAR2,
70   X_ATTRIBUTE28 in VARCHAR2,
71   X_ATTRIBUTE29 in VARCHAR2,
72   X_ATTRIBUTE30 in VARCHAR2,
73   X_TEST_DISPLAY in VARCHAR2,
74   X_CREATION_DATE in DATE,
75   X_CREATED_BY in NUMBER,
76   X_LAST_UPDATE_DATE in DATE,
77   X_LAST_UPDATED_BY in NUMBER,
78   X_LAST_UPDATE_LOGIN in NUMBER,
79   X_VIABILITY_DURATION in number,
80   X_TEST_EXPIRATION_DAYS in number,
81   X_TEST_EXPIRATION_HOURS in number,
82   X_TEST_EXPIRATION_MINUTES in number,
83   X_TEST_EXPIRATION_SECONDS in number,
84   X_CALC_UOM_CONV_IND in VARCHAR2,
85   X_TO_QTY_UOM in VARCHAR2
86 ) is
87   cursor C is select ROWID from GMD_SPEC_TESTS_B
88     where SPEC_ID = X_SPEC_ID
89     and TEST_ID = X_TEST_ID
90     ;
91 begin
92     insert into GMD_SPEC_TESTS_B (
93     ATTRIBUTE1,
94     ATTRIBUTE2,
95     MIN_VALUE_CHAR,
96     SPEC_ID,
97     TEST_ID,
98     TEST_METHOD_ID,
99     SEQ,
100     FROM_BASE_IND,
101     EXCLUDE_IND,
102     MODIFIED_IND,
103     TEST_QTY,
104     TEST_QTY_UOM,
105     MIN_VALUE_NUM,
106     TARGET_VALUE_NUM,
107     MAX_VALUE_NUM,
108     ATTRIBUTE5,
109     ATTRIBUTE6,
110     ATTRIBUTE7,
111     ATTRIBUTE8,
112     ATTRIBUTE9,
113     ATTRIBUTE10,
114     ATTRIBUTE11,
115     ATTRIBUTE12,
116     ATTRIBUTE13,
117     ATTRIBUTE14,
118     ATTRIBUTE15,
119     ATTRIBUTE16,
120     ATTRIBUTE17,
121     ATTRIBUTE18,
122     USE_TO_CONTROL_STEP,
123     PRINT_SPEC_IND,
124     PRINT_RESULT_IND,
125     TEXT_CODE,
126     ATTRIBUTE_CATEGORY,
127     ATTRIBUTE3,
128     RETEST_LOT_EXPIRY_IND,
129     ATTRIBUTE19,
130     ATTRIBUTE20,
131     MAX_VALUE_CHAR,
132     TEST_REPLICATE,
133     CHECK_RESULT_INTERVAL,
134     OUT_OF_SPEC_ACTION,
135     EXP_ERROR_TYPE,
136     BELOW_SPEC_MIN,
137     ABOVE_SPEC_MIN,
138     BELOW_SPEC_MAX,
139     ABOVE_SPEC_MAX,
140     BELOW_MIN_ACTION_CODE,
141     ABOVE_MIN_ACTION_CODE,
142     BELOW_MAX_ACTION_CODE,
143     ABOVE_MAX_ACTION_CODE,
144     OPTIONAL_IND,
145     DISPLAY_PRECISION,
146     REPORT_PRECISION,
147     TEST_PRIORITY,
148     PRINT_ON_COA_IND,
149     TARGET_VALUE_CHAR,
150     ATTRIBUTE4,
151     ATTRIBUTE21,
152     ATTRIBUTE22,
153     ATTRIBUTE23,
154     ATTRIBUTE24,
155     ATTRIBUTE25,
156     ATTRIBUTE26,
157     ATTRIBUTE27,
158     ATTRIBUTE28,
159     ATTRIBUTE29,
160     ATTRIBUTE30,
161     CREATION_DATE,
162     CREATED_BY,
163     LAST_UPDATE_DATE,
164     LAST_UPDATED_BY,
165     LAST_UPDATE_LOGIN,
166     VIABILITY_DURATION,
167     DAYS,
168     HOURS,
169     MINUTES,
170     SECONDS,
171     CALC_UOM_CONV_IND,
172     TO_QTY_UOM
173   ) values (
174     X_ATTRIBUTE1,
175     X_ATTRIBUTE2,
176     X_MIN_VALUE_CHAR,
177     X_SPEC_ID,
178     X_TEST_ID,
179     X_TEST_METHOD_ID,
180     X_SEQ,
181     X_FROM_BASE_IND,
182     X_EXCLUDE_IND,
183     X_MODIFIED_IND,
184     X_TEST_QTY,
185     X_TEST_QTY_UOM,
186     X_MIN_VALUE_NUM,
187     X_TARGET_VALUE_NUM,
188     X_MAX_VALUE_NUM,
189     X_ATTRIBUTE5,
190     X_ATTRIBUTE6,
191     X_ATTRIBUTE7,
192     X_ATTRIBUTE8,
193     X_ATTRIBUTE9,
194     X_ATTRIBUTE10,
195     X_ATTRIBUTE11,
196     X_ATTRIBUTE12,
197     X_ATTRIBUTE13,
198     X_ATTRIBUTE14,
199     X_ATTRIBUTE15,
200     X_ATTRIBUTE16,
201     X_ATTRIBUTE17,
202     X_ATTRIBUTE18,
203     X_USE_TO_CONTROL_STEP,
204     X_PRINT_SPEC_IND,
205     X_PRINT_RESULT_IND,
206     X_TEXT_CODE,
207     X_ATTRIBUTE_CATEGORY,
208     X_ATTRIBUTE3,
209     X_RETEST_LOT_EXPIRY_IND,
210     X_ATTRIBUTE19,
211     X_ATTRIBUTE20,
212     X_MAX_VALUE_CHAR,
213     X_TEST_REPLICATE,
214     X_CHECK_RESULT_INTERVAL,
215     X_OUT_OF_SPEC_ACTION,
216     X_EXP_ERROR_TYPE,
217     X_BELOW_SPEC_MIN,
218     X_ABOVE_SPEC_MIN,
219     X_BELOW_SPEC_MAX,
220     X_ABOVE_SPEC_MAX,
221     X_BELOW_MIN_ACTION_CODE,
222     X_ABOVE_MIN_ACTION_CODE,
223     X_BELOW_MAX_ACTION_CODE,
224     X_ABOVE_MAX_ACTION_CODE,
225     X_OPTIONAL_IND,
226     X_DISPLAY_PRECISION,
227     X_REPORT_PRECISION,
228     X_TEST_PRIORITY,
229     X_PRINT_ON_COA_IND,
230     X_TARGET_VALUE_CHAR,
231     X_ATTRIBUTE4,
232     X_ATTRIBUTE21,
233     X_ATTRIBUTE22,
234     X_ATTRIBUTE23,
235     X_ATTRIBUTE24,
236     X_ATTRIBUTE25,
237     X_ATTRIBUTE26,
238     X_ATTRIBUTE27,
239     X_ATTRIBUTE28,
240     X_ATTRIBUTE29,
241     X_ATTRIBUTE30,
242     NVL(X_CREATION_DATE,SYSDATE),
243     NVL(X_CREATED_BY,FND_GLOBAL.USER_ID),
244     NVL(X_LAST_UPDATE_DATE,SYSDATE),
245     NVL(X_LAST_UPDATED_BY,FND_GLOBAL.USER_ID),
246     NVL(X_LAST_UPDATE_LOGIN,FND_GLOBAL.LOGIN_ID),
247     X_VIABILITY_DURATION,
248     X_TEST_EXPIRATION_DAYS,
249     X_TEST_EXPIRATION_HOURS,
250     X_TEST_EXPIRATION_MINUTES,
251     X_TEST_EXPIRATION_SECONDS,
252     X_CALC_UOM_CONV_IND,
253     X_TO_QTY_UOM
254   );
255 
256   insert into GMD_SPEC_TESTS_TL (
257     CREATED_BY,
258     LAST_UPDATED_BY,
259     LAST_UPDATE_DATE,
260     LAST_UPDATE_LOGIN,
261     SPEC_ID,
262     TEST_ID,
263     TEST_DISPLAY,
264     CREATION_DATE,
265     LANGUAGE,
266     SOURCE_LANG
267   ) select
268     NVL(X_CREATED_BY,FND_GLOBAL.USER_ID),
269     NVL(X_LAST_UPDATED_BY,FND_GLOBAL.USER_ID),
270     NVL(X_LAST_UPDATE_DATE,SYSDATE),
271     NVL(X_LAST_UPDATE_LOGIN,FND_GLOBAL.LOGIN_ID),
272     X_SPEC_ID,
273     X_TEST_ID,
274     X_TEST_DISPLAY,
275     NVL(X_CREATION_DATE,SYSDATE),
276     L.LANGUAGE_CODE,
277     userenv('LANG')
278   from FND_LANGUAGES L
279   where L.INSTALLED_FLAG in ('I', 'B')
280   and not exists
281     (select NULL
282     from GMD_SPEC_TESTS_TL T
283     where T.SPEC_ID = X_SPEC_ID
284     and T.TEST_ID = X_TEST_ID
285     and T.LANGUAGE = L.LANGUAGE_CODE);
286 
287   open c;
288   fetch c into X_ROWID;
289   if (c%notfound) then
290     close c;
291     raise no_data_found;
292   end if;
293   close c;
294 
295 end INSERT_ROW;
296 
297 procedure LOCK_ROW (
298   X_SPEC_ID in NUMBER,
299   X_TEST_ID in NUMBER,
300   X_ATTRIBUTE1 in VARCHAR2,
301   X_ATTRIBUTE2 in VARCHAR2,
302   X_MIN_VALUE_CHAR in VARCHAR2,
303   X_TEST_METHOD_ID in NUMBER,
304   X_SEQ in NUMBER,
305   X_FROM_BASE_IND in VARCHAR2,
306   X_EXCLUDE_IND in VARCHAR2,
307   X_MODIFIED_IND in VARCHAR2,
308   X_TEST_QTY in NUMBER,
309   X_TEST_QTY_UOM in VARCHAR2,
310   X_MIN_VALUE_NUM in NUMBER,
311   X_TARGET_VALUE_NUM in NUMBER,
312   X_MAX_VALUE_NUM in NUMBER,
313   X_ATTRIBUTE5 in VARCHAR2,
314   X_ATTRIBUTE6 in VARCHAR2,
315   X_ATTRIBUTE7 in VARCHAR2,
316   X_ATTRIBUTE8 in VARCHAR2,
317   X_ATTRIBUTE9 in VARCHAR2,
318   X_ATTRIBUTE10 in VARCHAR2,
319   X_ATTRIBUTE11 in VARCHAR2,
320   X_ATTRIBUTE12 in VARCHAR2,
321   X_ATTRIBUTE13 in VARCHAR2,
322   X_ATTRIBUTE14 in VARCHAR2,
323   X_ATTRIBUTE15 in VARCHAR2,
324   X_ATTRIBUTE16 in VARCHAR2,
325   X_ATTRIBUTE17 in VARCHAR2,
326   X_ATTRIBUTE18 in VARCHAR2,
327   X_USE_TO_CONTROL_STEP in VARCHAR2,
328   X_PRINT_SPEC_IND in VARCHAR2,
329   X_PRINT_RESULT_IND in VARCHAR2,
330   X_TEXT_CODE in NUMBER,
331   X_ATTRIBUTE_CATEGORY in VARCHAR2,
332   X_ATTRIBUTE3 in VARCHAR2,
333   X_RETEST_LOT_EXPIRY_IND in VARCHAR2,
334   X_ATTRIBUTE19 in VARCHAR2,
335   X_ATTRIBUTE20 in VARCHAR2,
336   X_MAX_VALUE_CHAR in VARCHAR2,
337   X_TEST_REPLICATE in NUMBER,
338   X_CHECK_RESULT_INTERVAL in NUMBER,
339   X_OUT_OF_SPEC_ACTION in VARCHAR2,
340   X_EXP_ERROR_TYPE in VARCHAR2,
341   X_BELOW_SPEC_MIN in NUMBER,
342   X_ABOVE_SPEC_MIN in NUMBER,
343   X_BELOW_SPEC_MAX in NUMBER,
344   X_ABOVE_SPEC_MAX in NUMBER,
345   X_BELOW_MIN_ACTION_CODE in VARCHAR2,
346   X_ABOVE_MIN_ACTION_CODE in VARCHAR2,
347   X_BELOW_MAX_ACTION_CODE in VARCHAR2,
348   X_ABOVE_MAX_ACTION_CODE in VARCHAR2,
349   X_OPTIONAL_IND in VARCHAR2,
350   X_DISPLAY_PRECISION in NUMBER,
351   X_REPORT_PRECISION in NUMBER,
352   X_TEST_PRIORITY in VARCHAR2,
353   X_PRINT_ON_COA_IND in VARCHAR2,
354   X_TARGET_VALUE_CHAR in VARCHAR2,
355   X_ATTRIBUTE4 in VARCHAR2,
356   X_ATTRIBUTE21 in VARCHAR2,
357   X_ATTRIBUTE22 in VARCHAR2,
358   X_ATTRIBUTE23 in VARCHAR2,
359   X_ATTRIBUTE24 in VARCHAR2,
360   X_ATTRIBUTE25 in VARCHAR2,
361   X_ATTRIBUTE26 in VARCHAR2,
362   X_ATTRIBUTE27 in VARCHAR2,
363   X_ATTRIBUTE28 in VARCHAR2,
364   X_ATTRIBUTE29 in VARCHAR2,
365   X_ATTRIBUTE30 in VARCHAR2,
366   X_TEST_DISPLAY in VARCHAR2,
367   X_VIABILITY_DURATION in number,
368   X_TEST_EXPIRATION_DAYS in number,
369   X_TEST_EXPIRATION_HOURS in number,
370   X_TEST_EXPIRATION_MINUTES in number,
371   X_TEST_EXPIRATION_SECONDS in number,
372   X_CALC_UOM_CONV_IND in VARCHAR2,
373   X_TO_QTY_UOM in VARCHAR2
374 ) is
375   cursor c is select
376       ATTRIBUTE1,
377       ATTRIBUTE2,
378       MIN_VALUE_CHAR,
379       TEST_METHOD_ID,
380       SEQ,
381       FROM_BASE_IND,
382       EXCLUDE_IND,
383       MODIFIED_IND,
384       TEST_QTY,
385       TEST_QTY_UOM,
386       MIN_VALUE_NUM,
387       TARGET_VALUE_NUM,
388       MAX_VALUE_NUM,
389       ATTRIBUTE5,
390       ATTRIBUTE6,
391       ATTRIBUTE7,
392       ATTRIBUTE8,
393       ATTRIBUTE9,
394       ATTRIBUTE10,
395       ATTRIBUTE11,
396       ATTRIBUTE12,
397       ATTRIBUTE13,
398       ATTRIBUTE14,
399       ATTRIBUTE15,
400       ATTRIBUTE16,
401       ATTRIBUTE17,
402       ATTRIBUTE18,
403       USE_TO_CONTROL_STEP,
404       PRINT_SPEC_IND,
405       PRINT_RESULT_IND,
406       TEXT_CODE,
407       ATTRIBUTE_CATEGORY,
408       ATTRIBUTE3,
409       RETEST_LOT_EXPIRY_IND,
410       ATTRIBUTE19,
411       ATTRIBUTE20,
412       MAX_VALUE_CHAR,
413       TEST_REPLICATE,
414       CHECK_RESULT_INTERVAL,
415       OUT_OF_SPEC_ACTION,
416       EXP_ERROR_TYPE,
417       BELOW_SPEC_MIN,
418       ABOVE_SPEC_MIN,
419       BELOW_SPEC_MAX,
420       ABOVE_SPEC_MAX,
421       BELOW_MIN_ACTION_CODE,
422       ABOVE_MIN_ACTION_CODE,
423       BELOW_MAX_ACTION_CODE,
424       ABOVE_MAX_ACTION_CODE,
425       OPTIONAL_IND,
426       DISPLAY_PRECISION,
427       REPORT_PRECISION,
428       TEST_PRIORITY,
429       PRINT_ON_COA_IND,
430       TARGET_VALUE_CHAR,
431       ATTRIBUTE4,
432       ATTRIBUTE21,
433       ATTRIBUTE22,
434       ATTRIBUTE23,
435       ATTRIBUTE24,
436       ATTRIBUTE25,
437       ATTRIBUTE26,
438       ATTRIBUTE27,
439       ATTRIBUTE28,
440       ATTRIBUTE29,
441       ATTRIBUTE30,
442       VIABILITY_DURATION,
443       DAYS,
444       HOURS,
445       MINUTES,
446       SECONDS,
447       CALC_UOM_CONV_IND,
448       TO_QTY_UOM
449     from GMD_SPEC_TESTS_B
450     where SPEC_ID = X_SPEC_ID
451     and TEST_ID = X_TEST_ID
452     for update of SPEC_ID nowait;
453   recinfo c%rowtype;
454 
455   cursor c1 is select
456       TEST_DISPLAY,
457       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
458     from GMD_SPEC_TESTS_TL
459     where SPEC_ID = X_SPEC_ID
460     and TEST_ID = X_TEST_ID
461     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
462     for update of SPEC_ID nowait;
463 begin
464   open c;
465   fetch c into recinfo;
466   if (c%notfound) then
467     close c;
468     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
469     app_exception.raise_exception;
470   end if;
471   close c;
472   if (    ((recinfo.ATTRIBUTE1 = X_ATTRIBUTE1)
473            OR ((recinfo.ATTRIBUTE1 is null) AND (X_ATTRIBUTE1 is null)))
474       AND ((recinfo.ATTRIBUTE2 = X_ATTRIBUTE2)
475            OR ((recinfo.ATTRIBUTE2 is null) AND (X_ATTRIBUTE2 is null)))
476       AND ((recinfo.MIN_VALUE_CHAR = X_MIN_VALUE_CHAR)
477            OR ((recinfo.MIN_VALUE_CHAR is null) AND (X_MIN_VALUE_CHAR is null)))
478       AND (recinfo.TEST_METHOD_ID = X_TEST_METHOD_ID)
479       AND (recinfo.SEQ = X_SEQ)
480       AND ((recinfo.FROM_BASE_IND = X_FROM_BASE_IND)
481            OR ((recinfo.FROM_BASE_IND is null) AND (X_FROM_BASE_IND is null)))
482       AND ((recinfo.EXCLUDE_IND = X_EXCLUDE_IND)
483            OR ((recinfo.EXCLUDE_IND is null) AND (X_EXCLUDE_IND is null)))
484       AND ((recinfo.MODIFIED_IND = X_MODIFIED_IND)
485            OR ((recinfo.MODIFIED_IND is null) AND (X_MODIFIED_IND is null)))
486       AND ((recinfo.TEST_QTY = X_TEST_QTY)
487            OR ((recinfo.TEST_QTY is null) AND (X_TEST_QTY is null)))
488       AND ((recinfo.TEST_QTY_UOM = X_TEST_QTY_UOM)
489            OR ((recinfo.TEST_QTY_UOM is null) AND (X_TEST_QTY_UOM is null)))
490       AND ((recinfo.MIN_VALUE_NUM = X_MIN_VALUE_NUM)
491            OR ((recinfo.MIN_VALUE_NUM is null) AND (X_MIN_VALUE_NUM is null)))
492       AND ((recinfo.TARGET_VALUE_NUM = X_TARGET_VALUE_NUM)
493            OR ((recinfo.TARGET_VALUE_NUM is null) AND (X_TARGET_VALUE_NUM is null)))
494       AND ((recinfo.MAX_VALUE_NUM = X_MAX_VALUE_NUM)
495            OR ((recinfo.MAX_VALUE_NUM is null) AND (X_MAX_VALUE_NUM is null)))
496       AND ((recinfo.ATTRIBUTE5 = X_ATTRIBUTE5)
497            OR ((recinfo.ATTRIBUTE5 is null) AND (X_ATTRIBUTE5 is null)))
498       AND ((recinfo.ATTRIBUTE6 = X_ATTRIBUTE6)
499            OR ((recinfo.ATTRIBUTE6 is null) AND (X_ATTRIBUTE6 is null)))
500       AND ((recinfo.ATTRIBUTE7 = X_ATTRIBUTE7)
501            OR ((recinfo.ATTRIBUTE7 is null) AND (X_ATTRIBUTE7 is null)))
502       AND ((recinfo.ATTRIBUTE8 = X_ATTRIBUTE8)
503            OR ((recinfo.ATTRIBUTE8 is null) AND (X_ATTRIBUTE8 is null)))
504       AND ((recinfo.ATTRIBUTE9 = X_ATTRIBUTE9)
505            OR ((recinfo.ATTRIBUTE9 is null) AND (X_ATTRIBUTE9 is null)))
506       AND ((recinfo.ATTRIBUTE10 = X_ATTRIBUTE10)
507            OR ((recinfo.ATTRIBUTE10 is null) AND (X_ATTRIBUTE10 is null)))
508       AND ((recinfo.ATTRIBUTE11 = X_ATTRIBUTE11)
509            OR ((recinfo.ATTRIBUTE11 is null) AND (X_ATTRIBUTE11 is null)))
510       AND ((recinfo.ATTRIBUTE12 = X_ATTRIBUTE12)
511            OR ((recinfo.ATTRIBUTE12 is null) AND (X_ATTRIBUTE12 is null)))
512       AND ((recinfo.ATTRIBUTE13 = X_ATTRIBUTE13)
513            OR ((recinfo.ATTRIBUTE13 is null) AND (X_ATTRIBUTE13 is null)))
514       AND ((recinfo.ATTRIBUTE14 = X_ATTRIBUTE14)
515            OR ((recinfo.ATTRIBUTE14 is null) AND (X_ATTRIBUTE14 is null)))
516       AND ((recinfo.ATTRIBUTE15 = X_ATTRIBUTE15)
517            OR ((recinfo.ATTRIBUTE15 is null) AND (X_ATTRIBUTE15 is null)))
518       AND ((recinfo.ATTRIBUTE16 = X_ATTRIBUTE16)
519            OR ((recinfo.ATTRIBUTE16 is null) AND (X_ATTRIBUTE16 is null)))
520       AND ((recinfo.ATTRIBUTE17 = X_ATTRIBUTE17)
521            OR ((recinfo.ATTRIBUTE17 is null) AND (X_ATTRIBUTE17 is null)))
522       AND ((recinfo.ATTRIBUTE18 = X_ATTRIBUTE18)
523            OR ((recinfo.ATTRIBUTE18 is null) AND (X_ATTRIBUTE18 is null)))
524       AND ((recinfo.USE_TO_CONTROL_STEP = X_USE_TO_CONTROL_STEP)
525            OR ((recinfo.USE_TO_CONTROL_STEP is null) AND (X_USE_TO_CONTROL_STEP is null)))
526       AND ((recinfo.PRINT_SPEC_IND = X_PRINT_SPEC_IND)
527            OR ((recinfo.PRINT_SPEC_IND is null) AND (X_PRINT_SPEC_IND is null)))
528       AND ((recinfo.PRINT_RESULT_IND = X_PRINT_RESULT_IND)
529            OR ((recinfo.PRINT_RESULT_IND is null) AND (X_PRINT_RESULT_IND is null)))
530       AND ((recinfo.TEXT_CODE = X_TEXT_CODE)
531            OR ((recinfo.TEXT_CODE is null) AND (X_TEXT_CODE is null)))
532       AND ((recinfo.ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY)
533            OR ((recinfo.ATTRIBUTE_CATEGORY is null) AND (X_ATTRIBUTE_CATEGORY is null)))
534       AND ((recinfo.ATTRIBUTE3 = X_ATTRIBUTE3)
535            OR ((recinfo.ATTRIBUTE3 is null) AND (X_ATTRIBUTE3 is null)))
536       AND ((recinfo.RETEST_LOT_EXPIRY_IND = X_RETEST_LOT_EXPIRY_IND)
537            OR ((recinfo.RETEST_LOT_EXPIRY_IND is null) AND (X_RETEST_LOT_EXPIRY_IND is null)))
538       AND ((recinfo.ATTRIBUTE19 = X_ATTRIBUTE19)
539            OR ((recinfo.ATTRIBUTE19 is null) AND (X_ATTRIBUTE19 is null)))
540       AND ((recinfo.ATTRIBUTE20 = X_ATTRIBUTE20)
541            OR ((recinfo.ATTRIBUTE20 is null) AND (X_ATTRIBUTE20 is null)))
542       AND ((recinfo.MAX_VALUE_CHAR = X_MAX_VALUE_CHAR)
543            OR ((recinfo.MAX_VALUE_CHAR is null) AND (X_MAX_VALUE_CHAR is null)))
544       AND (recinfo.TEST_REPLICATE = X_TEST_REPLICATE)
545       AND ((recinfo.CHECK_RESULT_INTERVAL = X_CHECK_RESULT_INTERVAL)
546            OR ((recinfo.CHECK_RESULT_INTERVAL is null) AND (X_CHECK_RESULT_INTERVAL is null)))
547       AND ((recinfo.OUT_OF_SPEC_ACTION = X_OUT_OF_SPEC_ACTION)
548            OR ((recinfo.OUT_OF_SPEC_ACTION is null) AND (X_OUT_OF_SPEC_ACTION is null)))
549       AND ((recinfo.EXP_ERROR_TYPE = X_EXP_ERROR_TYPE)
550            OR ((recinfo.EXP_ERROR_TYPE is null) AND (X_EXP_ERROR_TYPE is null)))
551       AND ((recinfo.BELOW_SPEC_MIN = X_BELOW_SPEC_MIN)
552            OR ((recinfo.BELOW_SPEC_MIN is null) AND (X_BELOW_SPEC_MIN is null)))
553       AND ((recinfo.ABOVE_SPEC_MIN = X_ABOVE_SPEC_MIN)
554            OR ((recinfo.ABOVE_SPEC_MIN is null) AND (X_ABOVE_SPEC_MIN is null)))
555       AND ((recinfo.BELOW_SPEC_MAX = X_BELOW_SPEC_MAX)
556            OR ((recinfo.BELOW_SPEC_MAX is null) AND (X_BELOW_SPEC_MAX is null)))
557       AND ((recinfo.ABOVE_SPEC_MAX = X_ABOVE_SPEC_MAX)
558            OR ((recinfo.ABOVE_SPEC_MAX is null) AND (X_ABOVE_SPEC_MAX is null)))
559       AND ((recinfo.BELOW_MIN_ACTION_CODE = X_BELOW_MIN_ACTION_CODE)
560            OR ((recinfo.BELOW_MIN_ACTION_CODE is null) AND (X_BELOW_MIN_ACTION_CODE is null)))
561       AND ((recinfo.ABOVE_MIN_ACTION_CODE = X_ABOVE_MIN_ACTION_CODE)
562            OR ((recinfo.ABOVE_MIN_ACTION_CODE is null) AND (X_ABOVE_MIN_ACTION_CODE is null)))
563       AND ((recinfo.BELOW_MAX_ACTION_CODE = X_BELOW_MAX_ACTION_CODE)
564            OR ((recinfo.BELOW_MAX_ACTION_CODE is null) AND (X_BELOW_MAX_ACTION_CODE is null)))
565       AND ((recinfo.ABOVE_MAX_ACTION_CODE = X_ABOVE_MAX_ACTION_CODE)
566            OR ((recinfo.ABOVE_MAX_ACTION_CODE is null) AND (X_ABOVE_MAX_ACTION_CODE is null)))
567       AND ((recinfo.OPTIONAL_IND = X_OPTIONAL_IND)
568            OR ((recinfo.OPTIONAL_IND is null) AND (X_OPTIONAL_IND is null)))
569       AND ((recinfo.DISPLAY_PRECISION = X_DISPLAY_PRECISION)
570            OR ((recinfo.DISPLAY_PRECISION is null) AND (X_DISPLAY_PRECISION is null)))
571       AND ((recinfo.REPORT_PRECISION = X_REPORT_PRECISION)
572            OR ((recinfo.REPORT_PRECISION is null) AND (X_REPORT_PRECISION is null)))
573       AND (recinfo.TEST_PRIORITY = X_TEST_PRIORITY)
574       --AND ((recinfo.PRINT_ON_COA_IND = X_PRINT_ON_COA_IND)
575         --   OR ((recinfo.PRINT_ON_COA_IND is null) AND (X_PRINT_ON_COA_IND is null)))
576       AND ((recinfo.TARGET_VALUE_CHAR = X_TARGET_VALUE_CHAR)
577            OR ((recinfo.TARGET_VALUE_CHAR is null) AND (X_TARGET_VALUE_CHAR is null)))
578       AND ((recinfo.ATTRIBUTE4 = X_ATTRIBUTE4)
579            OR ((recinfo.ATTRIBUTE4 is null) AND (X_ATTRIBUTE4 is null)))
580       AND ((recinfo.ATTRIBUTE21 = X_ATTRIBUTE21)
581            OR ((recinfo.ATTRIBUTE21 is null) AND (X_ATTRIBUTE21 is null)))
582       AND ((recinfo.ATTRIBUTE22 = X_ATTRIBUTE22)
583            OR ((recinfo.ATTRIBUTE22 is null) AND (X_ATTRIBUTE22 is null)))
584       AND ((recinfo.ATTRIBUTE23 = X_ATTRIBUTE23)
585            OR ((recinfo.ATTRIBUTE23 is null) AND (X_ATTRIBUTE23 is null)))
586       AND ((recinfo.ATTRIBUTE24 = X_ATTRIBUTE24)
587            OR ((recinfo.ATTRIBUTE24 is null) AND (X_ATTRIBUTE24 is null)))
588       AND ((recinfo.ATTRIBUTE25 = X_ATTRIBUTE25)
589            OR ((recinfo.ATTRIBUTE25 is null) AND (X_ATTRIBUTE25 is null)))
590       AND ((recinfo.ATTRIBUTE26 = X_ATTRIBUTE26)
591            OR ((recinfo.ATTRIBUTE26 is null) AND (X_ATTRIBUTE26 is null)))
592       AND ((recinfo.ATTRIBUTE27 = X_ATTRIBUTE27)
593            OR ((recinfo.ATTRIBUTE27 is null) AND (X_ATTRIBUTE27 is null)))
594       AND ((recinfo.ATTRIBUTE28 = X_ATTRIBUTE28)
595            OR ((recinfo.ATTRIBUTE28 is null) AND (X_ATTRIBUTE28 is null)))
596       AND ((recinfo.ATTRIBUTE29 = X_ATTRIBUTE29)
597            OR ((recinfo.ATTRIBUTE29 is null) AND (X_ATTRIBUTE29 is null)))
598       AND ((recinfo.ATTRIBUTE30 = X_ATTRIBUTE30)
599            OR ((recinfo.ATTRIBUTE30 is null) AND (X_ATTRIBUTE30 is null)))
600       /*AND ((recinfo.VIABILITY_DURATION = X_VIABILITY_DURATION)
601            OR ((recinfo.VIABILITY_DURATION is null) AND (X_VIABILITY_DURATION is null)))
602       AND ((recinfo.DAYS = X_TEST_EXPIRATION_DAYS)
603            OR ((recinfo.DAYS is null) AND (X_TEST_EXPIRATION_DAYS is null)))
604       AND ((recinfo.HOURS = X_TEST_EXPIRATION_HOURS)
605            OR ((recinfo.HOURS is null) AND (X_TEST_EXPIRATION_HOURS is null)))
606       AND ((recinfo.MINUTES = X_TEST_EXPIRATION_MINUTES)
607            OR ((recinfo.MINUTES is null) AND (X_TEST_EXPIRATION_MINUTES is null)))
608       AND ((recinfo.SECONDS = X_TEST_EXPIRATION_SECONDS)
609            OR ((recinfo.SECONDS is null) AND (X_TEST_EXPIRATION_SECONDS is null)) )*/
610       AND ((recinfo.CALC_UOM_CONV_IND = X_CALC_UOM_CONV_IND)
611            OR ((recinfo.CALC_UOM_CONV_IND is null) AND (X_CALC_UOM_CONV_IND is null)))
612       AND ((recinfo.TO_QTY_UOM = X_TO_QTY_UOM)
613            OR ((recinfo.TO_QTY_UOM is null) AND (X_TO_QTY_UOM is null)))
614 
615   ) then
616     null;
617   else
618     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
619     app_exception.raise_exception;
620   end if;
621 
622   for tlinfo in c1 loop
623     if (tlinfo.BASELANG = 'Y') then
624       if (    ((tlinfo.TEST_DISPLAY = X_TEST_DISPLAY)
625                OR ((tlinfo.TEST_DISPLAY is null) AND (X_TEST_DISPLAY is null)))
626       ) then
627         null;
628       else
629         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
630         app_exception.raise_exception;
631       end if;
632     end if;
633   end loop;
634   return;
635 end LOCK_ROW;
636 
637 
638 procedure UPDATE_ROW (
639   X_SPEC_ID in NUMBER,
640   X_TEST_ID in NUMBER,
641   X_ATTRIBUTE1 in VARCHAR2,
642   X_ATTRIBUTE2 in VARCHAR2,
643   X_MIN_VALUE_CHAR in VARCHAR2,
644   X_TEST_METHOD_ID in NUMBER,
645   X_SEQ in NUMBER,
646   X_FROM_BASE_IND in VARCHAR2,
647   X_EXCLUDE_IND in VARCHAR2,
648   X_MODIFIED_IND in VARCHAR2,
649   X_TEST_QTY in NUMBER,
650   X_TEST_QTY_UOM in VARCHAR2,
651   X_MIN_VALUE_NUM in NUMBER,
652   X_TARGET_VALUE_NUM in NUMBER,
653   X_MAX_VALUE_NUM in NUMBER,
654   X_ATTRIBUTE5 in VARCHAR2,
655   X_ATTRIBUTE6 in VARCHAR2,
656   X_ATTRIBUTE7 in VARCHAR2,
657   X_ATTRIBUTE8 in VARCHAR2,
658   X_ATTRIBUTE9 in VARCHAR2,
659   X_ATTRIBUTE10 in VARCHAR2,
660   X_ATTRIBUTE11 in VARCHAR2,
661   X_ATTRIBUTE12 in VARCHAR2,
662   X_ATTRIBUTE13 in VARCHAR2,
663   X_ATTRIBUTE14 in VARCHAR2,
664   X_ATTRIBUTE15 in VARCHAR2,
665   X_ATTRIBUTE16 in VARCHAR2,
666   X_ATTRIBUTE17 in VARCHAR2,
667   X_ATTRIBUTE18 in VARCHAR2,
668   X_USE_TO_CONTROL_STEP in VARCHAR2,
669   X_PRINT_SPEC_IND in VARCHAR2,
670   X_PRINT_RESULT_IND in VARCHAR2,
671   X_TEXT_CODE in NUMBER,
672   X_ATTRIBUTE_CATEGORY in VARCHAR2,
673   X_ATTRIBUTE3 in VARCHAR2,
674   X_RETEST_LOT_EXPIRY_IND in VARCHAR2,
675   X_ATTRIBUTE19 in VARCHAR2,
676   X_ATTRIBUTE20 in VARCHAR2,
677   X_MAX_VALUE_CHAR in VARCHAR2,
678   X_TEST_REPLICATE in NUMBER,
679   X_CHECK_RESULT_INTERVAL in NUMBER,
680   X_OUT_OF_SPEC_ACTION in VARCHAR2,
681   X_EXP_ERROR_TYPE in VARCHAR2,
682   X_BELOW_SPEC_MIN in NUMBER,
683   X_ABOVE_SPEC_MIN in NUMBER,
684   X_BELOW_SPEC_MAX in NUMBER,
685   X_ABOVE_SPEC_MAX in NUMBER,
686   X_BELOW_MIN_ACTION_CODE in VARCHAR2,
687   X_ABOVE_MIN_ACTION_CODE in VARCHAR2,
688   X_BELOW_MAX_ACTION_CODE in VARCHAR2,
689   X_ABOVE_MAX_ACTION_CODE in VARCHAR2,
690   X_OPTIONAL_IND in VARCHAR2,
691   X_DISPLAY_PRECISION in NUMBER,
692   X_REPORT_PRECISION in NUMBER,
693   X_TEST_PRIORITY in VARCHAR2,
694   X_PRINT_ON_COA_IND in VARCHAR2,
695   X_TARGET_VALUE_CHAR in VARCHAR2,
696   X_ATTRIBUTE4 in VARCHAR2,
697   X_ATTRIBUTE21 in VARCHAR2,
698   X_ATTRIBUTE22 in VARCHAR2,
699   X_ATTRIBUTE23 in VARCHAR2,
700   X_ATTRIBUTE24 in VARCHAR2,
701   X_ATTRIBUTE25 in VARCHAR2,
702   X_ATTRIBUTE26 in VARCHAR2,
703   X_ATTRIBUTE27 in VARCHAR2,
704   X_ATTRIBUTE28 in VARCHAR2,
705   X_ATTRIBUTE29 in VARCHAR2,
706   X_ATTRIBUTE30 in VARCHAR2,
707   X_TEST_DISPLAY in VARCHAR2,
708   X_LAST_UPDATE_DATE in DATE,
709   X_LAST_UPDATED_BY in NUMBER,
710   X_LAST_UPDATE_LOGIN in NUMBER,
711   X_VIABILITY_DURATION in number,
712   X_TEST_EXPIRATION_DAYS in number,
713   X_TEST_EXPIRATION_HOURS in number,
714   X_TEST_EXPIRATION_MINUTES in number,
715   X_TEST_EXPIRATION_SECONDS in number,
716   X_CALC_UOM_CONV_IND in VARCHAR2,
717   X_TO_QTY_UOM in VARCHAR2
718 ) is
719 begin
720   update GMD_SPEC_TESTS_B set
721     ATTRIBUTE1 = X_ATTRIBUTE1,
722     ATTRIBUTE2 = X_ATTRIBUTE2,
723     MIN_VALUE_CHAR = X_MIN_VALUE_CHAR,
724     TEST_METHOD_ID = X_TEST_METHOD_ID,
725     SEQ = X_SEQ,
726     FROM_BASE_IND = X_FROM_BASE_IND,
727     EXCLUDE_IND = X_EXCLUDE_IND,
728     MODIFIED_IND = X_MODIFIED_IND,
729     TEST_QTY = X_TEST_QTY,
730     TEST_QTY_UOM = X_TEST_QTY_UOM,
731     MIN_VALUE_NUM = X_MIN_VALUE_NUM,
732     TARGET_VALUE_NUM = X_TARGET_VALUE_NUM,
733     MAX_VALUE_NUM = X_MAX_VALUE_NUM,
734     ATTRIBUTE5 = X_ATTRIBUTE5,
735     ATTRIBUTE6 = X_ATTRIBUTE6,
736     ATTRIBUTE7 = X_ATTRIBUTE7,
737     ATTRIBUTE8 = X_ATTRIBUTE8,
738     ATTRIBUTE9 = X_ATTRIBUTE9,
739     ATTRIBUTE10 = X_ATTRIBUTE10,
740     ATTRIBUTE11 = X_ATTRIBUTE11,
741     ATTRIBUTE12 = X_ATTRIBUTE12,
742     ATTRIBUTE13 = X_ATTRIBUTE13,
743     ATTRIBUTE14 = X_ATTRIBUTE14,
744     ATTRIBUTE15 = X_ATTRIBUTE15,
745     ATTRIBUTE16 = X_ATTRIBUTE16,
746     ATTRIBUTE17 = X_ATTRIBUTE17,
747     ATTRIBUTE18 = X_ATTRIBUTE18,
748     USE_TO_CONTROL_STEP = X_USE_TO_CONTROL_STEP,
749     PRINT_SPEC_IND = X_PRINT_SPEC_IND,
750     PRINT_RESULT_IND = X_PRINT_RESULT_IND,
751     TEXT_CODE = X_TEXT_CODE,
752     ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY,
753     ATTRIBUTE3 = X_ATTRIBUTE3,
754     RETEST_LOT_EXPIRY_IND = X_RETEST_LOT_EXPIRY_IND,
755     ATTRIBUTE19 = X_ATTRIBUTE19,
756     ATTRIBUTE20 = X_ATTRIBUTE20,
757     MAX_VALUE_CHAR = X_MAX_VALUE_CHAR,
758     TEST_REPLICATE = X_TEST_REPLICATE,
759     CHECK_RESULT_INTERVAL = X_CHECK_RESULT_INTERVAL,
760     OUT_OF_SPEC_ACTION = X_OUT_OF_SPEC_ACTION,
761     EXP_ERROR_TYPE = X_EXP_ERROR_TYPE,
762     BELOW_SPEC_MIN = X_BELOW_SPEC_MIN,
763     ABOVE_SPEC_MIN = X_ABOVE_SPEC_MIN,
764     BELOW_SPEC_MAX = X_BELOW_SPEC_MAX,
765     ABOVE_SPEC_MAX = X_ABOVE_SPEC_MAX,
766     BELOW_MIN_ACTION_CODE = X_BELOW_MIN_ACTION_CODE,
767     ABOVE_MIN_ACTION_CODE = X_ABOVE_MIN_ACTION_CODE,
768     BELOW_MAX_ACTION_CODE = X_BELOW_MAX_ACTION_CODE,
769     ABOVE_MAX_ACTION_CODE = X_ABOVE_MAX_ACTION_CODE,
770     OPTIONAL_IND = X_OPTIONAL_IND,
771     DISPLAY_PRECISION = X_DISPLAY_PRECISION,
772     REPORT_PRECISION = X_REPORT_PRECISION,
773     TEST_PRIORITY = X_TEST_PRIORITY,
774     PRINT_ON_COA_IND = X_PRINT_ON_COA_IND,
775     TARGET_VALUE_CHAR = X_TARGET_VALUE_CHAR,
776     ATTRIBUTE4 = X_ATTRIBUTE4,
777     ATTRIBUTE21 = X_ATTRIBUTE21,
778     ATTRIBUTE22 = X_ATTRIBUTE22,
779     ATTRIBUTE23 = X_ATTRIBUTE23,
780     ATTRIBUTE24 = X_ATTRIBUTE24,
781     ATTRIBUTE25 = X_ATTRIBUTE25,
782     ATTRIBUTE26 = X_ATTRIBUTE26,
783     ATTRIBUTE27 = X_ATTRIBUTE27,
784     ATTRIBUTE28 = X_ATTRIBUTE28,
785     ATTRIBUTE29 = X_ATTRIBUTE29,
786     ATTRIBUTE30 = X_ATTRIBUTE30,
787     LAST_UPDATE_DATE =  NVL(X_LAST_UPDATE_DATE,SYSDATE),
788     LAST_UPDATED_BY =   NVL(X_LAST_UPDATED_BY,FND_GLOBAL.USER_ID),
789     LAST_UPDATE_LOGIN = NVL(X_LAST_UPDATE_LOGIN,FND_GLOBAL.LOGIN_ID),
790     VIABILITY_DURATION = X_VIABILITY_DURATION ,
791     DAYS = X_TEST_EXPIRATION_DAYS ,
792     HOURS = X_TEST_EXPIRATION_HOURS ,
793     MINUTES = X_TEST_EXPIRATION_MINUTES ,
794     SECONDS = X_TEST_EXPIRATION_SECONDS ,
795     CALC_UOM_CONV_IND = X_CALC_UOM_CONV_IND ,
796     TO_QTY_UOM = X_TO_QTY_UOM
797   where SPEC_ID = X_SPEC_ID
798   and TEST_ID = X_TEST_ID;
799 
800   if (sql%notfound) then
801     raise no_data_found;
802   end if;
803 
804   update GMD_SPEC_TESTS_TL set
805     TEST_DISPLAY = X_TEST_DISPLAY,
806     LAST_UPDATE_DATE =  NVL(X_LAST_UPDATE_DATE,SYSDATE),
807     LAST_UPDATED_BY =   NVL(X_LAST_UPDATED_BY,FND_GLOBAL.USER_ID),
808     LAST_UPDATE_LOGIN = NVL(X_LAST_UPDATE_LOGIN,FND_GLOBAL.LOGIN_ID),
809     SOURCE_LANG = userenv('LANG')
810   where SPEC_ID = X_SPEC_ID
811   and TEST_ID = X_TEST_ID
812   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
813 
814   if (sql%notfound) then
815     raise no_data_found;
816   end if;
817 end UPDATE_ROW;
818 
819 FUNCTION DELETE_ROW (
820   P_SPEC_ID in NUMBER,
821   P_TEST_ID in NUMBER
822 ) RETURN BOOLEAN  IS
823 begin
824   IF p_spec_id IS NOT NULL and p_test_id IS NOT NULL THEN
825      delete from GMD_SPEC_TESTS_TL
826      where SPEC_ID = P_SPEC_ID
827      and TEST_ID = P_TEST_ID;
828 
829      if (sql%notfound) then
830         raise no_data_found;
831      end if;
832 
833      delete from GMD_SPEC_TESTS_B
834      where SPEC_ID = P_SPEC_ID
835      and TEST_ID = P_TEST_ID;
836 
837      if (sql%notfound) then
838        raise no_data_found;
839      end if;
840   ELSE
841     gmd_api_pub.log_message('GMD_NO_KEYS','TABLE_NAME', 'GMD_SPEC_TESTS');
842     RETURN FALSE;
843   END IF;
844 
845   RETURN TRUE;
846 
847 EXCEPTION
848  WHEN NO_DATA_FOUND
849    THEN
850      gmd_api_pub.log_message('GMD_NO_DATA_FOUND','TABLE_NAME', 'GMD_SPEC_TESTS');
851      RETURN FALSE;
852  WHEN OTHERS
853    THEN
854      gmd_api_pub.log_message('GMD_API_ERROR','PACKAGE','GMD_SPEC_TESTS_PVT.DELETE_ROW','ERROR',SUBSTR(SQLERRM,1,100),'POSITION','010');
855      RETURN FALSE;
856 end DELETE_ROW;
857 
858 
859 procedure ADD_LANGUAGE
860 is
861 begin
862   delete from GMD_SPEC_TESTS_TL T
863   where not exists
864     (select NULL
865     from GMD_SPEC_TESTS_B B
866     where B.SPEC_ID = T.SPEC_ID
867     and B.TEST_ID = T.TEST_ID
868     );
869 
870   update GMD_SPEC_TESTS_TL T set (
871       TEST_DISPLAY
872     ) = (select
873       B.TEST_DISPLAY
874     from GMD_SPEC_TESTS_TL B
875     where B.SPEC_ID = T.SPEC_ID
876     and B.TEST_ID = T.TEST_ID
877     and B.LANGUAGE = T.SOURCE_LANG)
878   where (
879       T.SPEC_ID,
880       T.TEST_ID,
881       T.LANGUAGE
882   ) in (select
883       SUBT.SPEC_ID,
884       SUBT.TEST_ID,
885       SUBT.LANGUAGE
886     from GMD_SPEC_TESTS_TL SUBB, GMD_SPEC_TESTS_TL SUBT
887     where SUBB.SPEC_ID = SUBT.SPEC_ID
888     and SUBB.TEST_ID = SUBT.TEST_ID
889     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
890     and (SUBB.TEST_DISPLAY <> SUBT.TEST_DISPLAY
891       or (SUBB.TEST_DISPLAY is null and SUBT.TEST_DISPLAY is not null)
892       or (SUBB.TEST_DISPLAY is not null and SUBT.TEST_DISPLAY is null)
893   ));
894 
895   insert into GMD_SPEC_TESTS_TL (
896     CREATED_BY,
897     LAST_UPDATED_BY,
898     LAST_UPDATE_DATE,
899     LAST_UPDATE_LOGIN,
900     SPEC_ID,
901     TEST_ID,
902     TEST_DISPLAY,
903     CREATION_DATE,
904     LANGUAGE,
905     SOURCE_LANG
906   ) select
907     B.CREATED_BY,
908     B.LAST_UPDATED_BY,
909     B.LAST_UPDATE_DATE,
910     B.LAST_UPDATE_LOGIN,
911     B.SPEC_ID,
912     B.TEST_ID,
913     B.TEST_DISPLAY,
914     B.CREATION_DATE,
915     L.LANGUAGE_CODE,
916     B.SOURCE_LANG
917   from GMD_SPEC_TESTS_TL B, FND_LANGUAGES L
918   where L.INSTALLED_FLAG in ('I', 'B')
919   and B.LANGUAGE = userenv('LANG')
920   and not exists
921     (select NULL
922     from GMD_SPEC_TESTS_TL T
923     where T.SPEC_ID = B.SPEC_ID
924     and T.TEST_ID = B.TEST_ID
925     and T.LANGUAGE = L.LANGUAGE_CODE);
926 end ADD_LANGUAGE;
927 
928 FUNCTION fetch_row (
929   p_spec_tests IN  gmd_spec_tests%ROWTYPE
930 , x_spec_tests OUT NOCOPY gmd_spec_tests%ROWTYPE
931 )
932 RETURN BOOLEAN
933 IS
934 BEGIN
935   IF (p_spec_tests.spec_id IS NOT NULL) and (p_spec_tests.spec_id IS NOT NULL) THEN
936     SELECT *
937     INTO   x_spec_tests
938     FROM   gmd_spec_tests
939     WHERE  spec_id = p_spec_tests.spec_id and test_id = p_spec_tests.test_id;
940   ELSE
941     gmd_api_pub.log_message('GMD_NO_KEYS','TABLE_NAME', 'GMD_SPEC_TESTS');
942     RETURN FALSE;
943   END IF;
944 RETURN TRUE;
945 
946 EXCEPTION
947  WHEN NO_DATA_FOUND
948    THEN
949      gmd_api_pub.log_message('GMD_NO_DATA_FOUND','TABLE_NAME', 'GMD_SPEC_TESTS');
950      RETURN FALSE;
951  WHEN OTHERS
952    THEN
953      fnd_msg_pub.add_exc_msg ('GMD_SPEC_TESTS_PVT', 'FETCH_ROW');
954      RETURN FALSE;
955 
956 END fetch_row;
957 
958 FUNCTION lock_row (
959   p_spec_id   IN  NUMBER   ,
960   p_test_id   IN  NUMBER
961 )
962 RETURN BOOLEAN
963 IS
964   dummy       NUMBER;
965 BEGIN
966 
967   IF (p_spec_id IS NOT NULL) and (p_test_id is NOT NULL) THEN
968     SELECT spec_id
969     INTO   dummy
970     FROM   gmd_spec_tests_b
971     WHERE  spec_id = p_spec_id
972       AND  test_id = p_test_id
973     FOR UPDATE OF spec_id NOWAIT  ;
974   ELSE
975     gmd_api_pub.log_message('GMD_NO_KEYS','TABLE_NAME', 'GMD_SPEC_TESTS');
976     RETURN FALSE;
977   END IF;
978 
979   RETURN TRUE;
980 
981 EXCEPTION
982  WHEN NO_DATA_FOUND
983    THEN
984      gmd_api_pub.log_message('GMD_NO_DATA_FOUND','TABLE_NAME', 'GMD_SPEC_TESTS');
985      RETURN FALSE;
986  WHEN OTHERS
987    THEN
988      gmd_api_pub.log_message('GMD_API_ERROR','PACKAGE','GMD_SPEC_TESTS_PVT.LOCK_ROW','ERROR',SUBSTR(SQLERRM,1,100),'POSITION','010');
989      RETURN FALSE;
990 END lock_row;
991 
992 FUNCTION INSERT_ROW(p_spec_tests IN OUT NOCOPY GMD_SPEC_TESTS%ROWTYPE)
993 RETURN BOOLEAN IS
994 l_rowid ROWID ;
995 BEGIN
996 
997   GMD_SPEC_TESTS_PVT.INSERT_ROW(
998     X_ROWID => l_rowid,
999     X_SPEC_ID  => p_spec_tests.spec_id,
1000     X_TEST_ID  => p_spec_tests.test_id,
1001     X_TEST_METHOD_ID => p_spec_tests.test_method_id,
1002     X_MIN_VALUE_CHAR => p_spec_tests.min_value_char,
1003     X_MAX_VALUE_CHAR => p_spec_tests.max_value_char,
1004     X_SEQ            => p_spec_tests.seq,
1005     X_FROM_BASE_IND => p_spec_tests.from_base_ind,
1006     X_EXCLUDE_IND => p_spec_tests.exclude_ind,
1007     X_MODIFIED_IND => p_spec_tests.modified_ind,
1008     X_TEST_QTY       => p_spec_tests.test_qty,
1009     X_TEST_QTY_UOM       => p_spec_tests.TEST_QTY_UOM,
1010     X_MIN_VALUE_NUM  => p_spec_tests.min_value_num,
1011     X_MAX_VALUE_NUM  => p_spec_tests.max_value_num,
1012     X_TARGET_VALUE_NUM => p_spec_tests.target_value_num,
1013     X_USE_TO_CONTROL_STEP => p_spec_tests.use_to_control_step,
1014     X_PRINT_SPEC_IND      => p_spec_tests.print_spec_ind,
1015     X_PRINT_RESULT_IND    => p_spec_tests.print_result_ind,
1016     X_RETEST_LOT_EXPIRY_IND => p_spec_tests.retest_lot_expiry_ind,
1017     X_TEST_REPLICATE        => p_spec_tests.test_replicate,
1018     X_CHECK_RESULT_INTERVAL => p_spec_tests.check_result_interval,
1019     X_OUT_OF_SPEC_ACTION    => p_spec_tests.out_of_spec_action,
1020     X_EXP_ERROR_TYPE        => p_spec_tests.exp_error_type,
1021     X_BELOW_SPEC_MIN        => p_spec_tests.below_spec_min,
1022     X_ABOVE_SPEC_MIN        => p_spec_tests.above_spec_min,
1023     X_BELOW_SPEC_MAX        => p_spec_tests.below_spec_max,
1024     X_ABOVE_SPEC_MAX        => p_spec_tests.above_spec_max,
1025     X_BELOW_MIN_ACTION_CODE => p_spec_tests.below_min_action_code,
1026     X_ABOVE_MIN_ACTION_CODE => p_spec_tests.above_min_action_code,
1027     X_BELOW_MAX_ACTION_CODE => p_spec_tests.below_max_action_code,
1028     X_ABOVE_MAX_ACTION_CODE => p_spec_tests.above_max_action_code,
1029     X_OPTIONAL_IND          => p_spec_tests.optional_ind,
1030     X_DISPLAY_PRECISION     => p_spec_tests.display_precision,
1031     X_REPORT_PRECISION      => p_spec_tests.report_precision,
1032     X_TEST_PRIORITY         => p_spec_tests.test_priority,
1033     X_PRINT_ON_COA_IND      => p_spec_tests.print_on_coa_ind,
1034     X_TARGET_VALUE_CHAR     => p_spec_tests.target_value_char,
1035     X_TEST_DISPLAY          => p_spec_tests.test_display,
1036     X_TEXT_CODE             => p_spec_tests.TEXT_CODE,
1037     X_ATTRIBUTE_CATEGORY    => p_spec_tests.ATTRIBUTE_CATEGORY,
1038     X_ATTRIBUTE1  => p_spec_tests.ATTRIBUTE1,
1039     X_ATTRIBUTE2  => p_spec_tests.ATTRIBUTE2,
1040     X_ATTRIBUTE3  => p_spec_tests.ATTRIBUTE3,
1041     X_ATTRIBUTE4  => p_spec_tests.ATTRIBUTE4,
1042     X_ATTRIBUTE5  => p_spec_tests.ATTRIBUTE5,
1043     X_ATTRIBUTE6  => p_spec_tests.ATTRIBUTE6,
1044     X_ATTRIBUTE7  => p_spec_tests.ATTRIBUTE7,
1045     X_ATTRIBUTE8  => p_spec_tests.ATTRIBUTE8,
1046     X_ATTRIBUTE9  => p_spec_tests.ATTRIBUTE9,
1047     X_ATTRIBUTE10 => p_spec_tests.ATTRIBUTE10,
1048     X_ATTRIBUTE11 => p_spec_tests.ATTRIBUTE11,
1049     X_ATTRIBUTE12 => p_spec_tests.ATTRIBUTE12,
1050     X_ATTRIBUTE13 => p_spec_tests.ATTRIBUTE13,
1051     X_ATTRIBUTE14 => p_spec_tests.ATTRIBUTE14,
1052     X_ATTRIBUTE15 => p_spec_tests.ATTRIBUTE15,
1053     X_ATTRIBUTE16 => p_spec_tests.ATTRIBUTE16,
1054     X_ATTRIBUTE17 => p_spec_tests.ATTRIBUTE17,
1055     X_ATTRIBUTE18 => p_spec_tests.ATTRIBUTE18,
1056     X_ATTRIBUTE19 => p_spec_tests.ATTRIBUTE19,
1057     X_ATTRIBUTE20 => p_spec_tests.ATTRIBUTE20,
1058     X_ATTRIBUTE21 => p_spec_tests.ATTRIBUTE21,
1059     X_ATTRIBUTE22 => p_spec_tests.ATTRIBUTE22,
1060     X_ATTRIBUTE23 => p_spec_tests.ATTRIBUTE23,
1061     X_ATTRIBUTE24 => p_spec_tests.ATTRIBUTE24,
1062     X_ATTRIBUTE25 => p_spec_tests.ATTRIBUTE25,
1063     X_ATTRIBUTE26 => p_spec_tests.ATTRIBUTE26,
1064     X_ATTRIBUTE27 => p_spec_tests.ATTRIBUTE27,
1065     X_ATTRIBUTE28 => p_spec_tests.ATTRIBUTE28,
1066     X_ATTRIBUTE29 => p_spec_tests.ATTRIBUTE29,
1067     X_ATTRIBUTE30 => p_spec_tests.ATTRIBUTE30,
1068     X_CREATION_DATE     => p_spec_tests.CREATION_DATE,
1069     X_CREATED_BY        => p_spec_tests.CREATED_BY,
1070     X_LAST_UPDATE_DATE  => p_spec_tests.LAST_UPDATE_DATE,
1071     X_LAST_UPDATED_BY   => p_spec_tests.LAST_UPDATED_BY,
1072     X_LAST_UPDATE_LOGIN => p_spec_tests.LAST_UPDATE_LOGIN,
1073     X_VIABILITY_DURATION => p_spec_tests.VIABILITY_DURATION ,
1074     X_TEST_EXPIRATION_DAYS => p_spec_tests.DAYS ,
1075     X_TEST_EXPIRATION_HOURS => p_spec_tests.HOURS ,
1076     X_TEST_EXPIRATION_MINUTES => p_spec_tests.MINUTES ,
1077     X_TEST_EXPIRATION_SECONDS => p_spec_tests.SECONDS ,
1078     X_CALC_UOM_CONV_IND => p_spec_tests.CALC_UOM_CONV_IND ,
1079     X_TO_QTY_UOM => p_spec_tests.TO_QTY_UOM
1080 		);
1081 
1082     return TRUE;
1083 
1084 EXCEPTION WHEN OTHERS THEN
1085     gmd_api_pub.log_message('GMD_API_ERROR','PACKAGE','GMD_QC_TESTS_PVT.INSERT_ROW','ERROR',
1086     SUBSTR(SQLERRM,1,100),'POSITION','010');
1087 RETURN FALSE;
1088 
1089 END INSERT_ROW;
1090 end GMD_SPEC_TESTS_PVT;