133:
134: BEGIN
135:
136: -- Initialize API return status to success
137: x_return_status := FND_API.G_RET_STS_SUCCESS;
138:
139: -- Spec Name
140: IF (ltrim(rtrim(p_spec_header.spec_name)) IS NULL) THEN
141: GMD_API_PUB.Log_Message('GMD_SPEC_NAME_REQD');
138:
139: -- Spec Name
140: IF (ltrim(rtrim(p_spec_header.spec_name)) IS NULL) THEN
141: GMD_API_PUB.Log_Message('GMD_SPEC_NAME_REQD');
142: RAISE FND_API.G_EXC_ERROR;
143: END IF;
144:
145: -- Spec Vers
146: IF (p_spec_header.spec_vers IS NULL) THEN
144:
145: -- Spec Vers
146: IF (p_spec_header.spec_vers IS NULL) THEN
147: GMD_API_PUB.Log_Message('GMD_SPEC_VERS_REQD');
148: RAISE FND_API.G_EXC_ERROR;
149: ELSIF (p_spec_header.spec_vers < 0) THEN
150: GMD_API_PUB.Log_Message('GMD_SPEC_VERS_INVALID');
151: RAISE FND_API.G_EXC_ERROR;
152: END IF;
147: GMD_API_PUB.Log_Message('GMD_SPEC_VERS_REQD');
148: RAISE FND_API.G_EXC_ERROR;
149: ELSIF (p_spec_header.spec_vers < 0) THEN
150: GMD_API_PUB.Log_Message('GMD_SPEC_VERS_INVALID');
151: RAISE FND_API.G_EXC_ERROR;
152: END IF;
153:
154: --Spec Type (Bug 3451973)
155: IF (p_spec_header.spec_type in ('M', 'I')) THEN
155: IF (p_spec_header.spec_type in ('M', 'I')) THEN
156: null ;
157: else
158: GMD_API_PUB.Log_Message('GMD_SPEC_TYPE_NOT_FOUND');
159: RAISE FND_API.G_EXC_ERROR;
160: end if;
161:
162: -- Item ID
163: IF (p_spec_header.inventory_item_id IS NULL)
163: IF (p_spec_header.inventory_item_id IS NULL)
164: and (p_spec_header.spec_type = 'I') -- Bug 3401368: this is only for item specs
165: THEN
166: GMD_API_PUB.Log_Message('GMD_SPEC_ITEM_REQD');
167: RAISE FND_API.G_EXC_ERROR;
168: ELSE
169: -- Get the Item No
170: OPEN c_item(p_spec_header.inventory_item_id, p_spec_header.owner_organization_id);
171: FETCH c_item INTO x_item_number,l_grade_ctl;
172: IF (c_item%NOTFOUND) and (p_spec_header.spec_type = 'I') -- Bug 3401368: this is only for item specs
173: THEN
174: CLOSE c_item;
175: GMD_API_PUB.Log_Message('GMD_SPEC_ITEM_NOT_FOUND');
176: RAISE FND_API.G_EXC_ERROR;
177: END IF;
178: CLOSE c_item;
179: END IF;
180:
192: CLOSE c_revision;
193: CLOSE c_rev_ctrl;
194: GMD_API_PUB.Log_Message('GMD_SPEC_REVISION_NOT_FOUND',
195: 'REVISION', p_spec_header.revision);
196: RAISE FND_API.G_EXC_ERROR;
197: END IF; --c_revision%NOTFOUND
198: CLOSE c_revision;
199: ELSIF dummy = 1 THEN --The item is not a revision controlled item
200: CLOSE c_rev_ctrl;
198: CLOSE c_revision;
199: ELSIF dummy = 1 THEN --The item is not a revision controlled item
200: CLOSE c_rev_ctrl;
201: GMD_API_PUB.Log_Message('GMD_SPEC_NOT_REVISION_CTRL');
202: RAISE FND_API.G_EXC_ERROR;
203: END IF; --dummy = 2
204: CLOSE c_rev_ctrl;
205: END IF; --(p_spec_header.revision IS NOT NULL)
206: -- End RLNAGARA Bug # 4548546
207:
208: -- Grade
209: IF l_grade_ctl = 'N' and p_spec_header.grade_code IS NOT NULL THEN
210: GMD_API_PUB.Log_Message('GMD_GRADE_NOT_REQD');
211: RAISE FND_API.G_EXC_ERROR;
212: END IF;
213:
214: IF (p_spec_header.grade_code IS NOT NULL) THEN
215: -- Check that Grade exist in QC_GRAD_MST
218: IF c_grade%NOTFOUND THEN
219: CLOSE c_grade;
220: GMD_API_PUB.Log_Message('GMD_SPEC_GRADE_NOT_FOUND',
221: 'GRADE', p_spec_header.grade_code);
222: RAISE FND_API.G_EXC_ERROR;
223: END IF;
224: CLOSE c_grade;
225: END IF;
226:
226:
227: -- Spec Status
228: IF (p_spec_header.spec_status IS NULL) THEN
229: GMD_API_PUB.Log_Message('GMD_SPEC_STATUS_REQD');
230: RAISE FND_API.G_EXC_ERROR;
231: ELSE
232: -- Check that Status exist in GMD_QM_STATUS
233: OPEN c_status(p_spec_header.spec_status);
234: FETCH c_status INTO dummy;
235: IF c_status%NOTFOUND THEN
236: CLOSE c_status;
237: GMD_API_PUB.Log_Message('GMD_SPEC_STATUS_NOT_FOUND',
238: 'STATUS', p_spec_header.spec_status);
239: RAISE FND_API.G_EXC_ERROR;
240: END IF;
241: CLOSE c_status;
242: END IF;
243:
243:
244: -- Owner Orgn Code
245: IF (p_spec_header.owner_organization_id IS NULL) THEN
246: GMD_API_PUB.Log_Message('GMD_SPEC_ORGN_REQD');
247: RAISE FND_API.G_EXC_ERROR;
248: ELSE
249: -- Check that Owner Organization id exist in MTL_PARAMETERS
250: OPEN c_orgn(p_spec_header.owner_organization_id);
251: FETCH c_orgn INTO dummy;
252: IF c_orgn%NOTFOUND THEN
253: CLOSE c_orgn;
254: GMD_API_PUB.Log_Message('GMD_SPEC_ORGN_ID_NOT_FOUND',
255: 'ORGNID', p_spec_header.owner_organization_id);
256: RAISE FND_API.G_EXC_ERROR;
257: END IF;
258: CLOSE c_orgn;
259: END IF;
260:
260:
261: -- Owner ID
262: IF (p_spec_header.owner_id IS NULL) THEN
263: GMD_API_PUB.Log_Message('GMD_SPEC_OWNER_REQD');
264: RAISE FND_API.G_EXC_ERROR;
265: ELSE
266: -- Get the Owner Name
267: OPEN c_owner(p_spec_header.owner_id);
268: FETCH c_owner INTO x_owner;
268: FETCH c_owner INTO x_owner;
269: IF c_owner%NOTFOUND THEN
270: CLOSE c_owner;
271: GMD_API_PUB.Log_Message('GMD_SPEC_OWNER_NOT_FOUND');
272: RAISE FND_API.G_EXC_ERROR;
273: END IF;
274: CLOSE c_owner;
275: END IF;
276:
277:
278: -- Overlay Ind (Bug 3452015)
279: if (nvl(p_spec_header.OVERLAY_IND,'Y') <> 'Y') then
280: GMD_API_PUB.Log_Message('GMD_OVERLAY_NOT_VALID');
281: RAISE FND_API.G_EXC_ERROR;
282: end if ;
283:
284: IF (p_spec_header.OVERLAY_IND is NULL) THEN
285: IF (p_spec_header.BASE_SPEC_ID IS NOT NULL) THEN
283:
284: IF (p_spec_header.OVERLAY_IND is NULL) THEN
285: IF (p_spec_header.BASE_SPEC_ID IS NOT NULL) THEN
286: GMD_API_PUB.Log_Message('GMD_OVERLAY_NOT_VALID');
287: RAISE FND_API.G_EXC_ERROR;
288: end if;
289: end if;
290:
291: IF (p_spec_header.OVERLAY_IND = 'Y') THEN
291: IF (p_spec_header.OVERLAY_IND = 'Y') THEN
292: IF (p_spec_header.BASE_SPEC_ID IS NULL) THEN
293: GMD_API_PUB.Log_Message('GMD_BASE_SPEC_NOT_FOUND',
294: 'BASE_SPEC_ID', p_spec_header.base_spec_id);
295: RAISE FND_API.G_EXC_ERROR;
296: end if;
297: end if;
298:
299:
305: IF c_spec%NOTFOUND THEN
306: CLOSE c_spec;
307: GMD_API_PUB.Log_Message('GMD_BASE_SPEC_NOT_FOUND',
308: 'BASE_SPEC_ID', p_spec_header.base_spec_id);
309: RAISE FND_API.G_EXC_ERROR;
310: END IF;
311: CLOSE c_spec;
312: END IF;
313:
311: CLOSE c_spec;
312: END IF;
313:
314: EXCEPTION
315: WHEN FND_API.G_EXC_ERROR THEN
316: x_return_status := FND_API.G_RET_STS_ERROR ;
317: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
318: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
319: WHEN OTHERS THEN
312: END IF;
313:
314: EXCEPTION
315: WHEN FND_API.G_EXC_ERROR THEN
316: x_return_status := FND_API.G_RET_STS_ERROR ;
317: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
318: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
319: WHEN OTHERS THEN
320: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.check_for_null_and_fks_in_spec',
313:
314: EXCEPTION
315: WHEN FND_API.G_EXC_ERROR THEN
316: x_return_status := FND_API.G_RET_STS_ERROR ;
317: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
318: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
319: WHEN OTHERS THEN
320: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.check_for_null_and_fks_in_spec',
321: 'ERROR',substr(sqlerrm,1,100),'POSITION','010');
314: EXCEPTION
315: WHEN FND_API.G_EXC_ERROR THEN
316: x_return_status := FND_API.G_RET_STS_ERROR ;
317: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
318: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
319: WHEN OTHERS THEN
320: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.check_for_null_and_fks_in_spec',
321: 'ERROR',substr(sqlerrm,1,100),'POSITION','010');
322: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
318: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
319: WHEN OTHERS THEN
320: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.check_for_null_and_fks_in_spec',
321: 'ERROR',substr(sqlerrm,1,100),'POSITION','010');
322: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
323:
324: END check_for_null_and_fks_in_spec;
325:
326:
384:
385: BEGIN
386:
387: -- Initialize API return status to success
388: x_return_status := FND_API.G_RET_STS_SUCCESS;
389:
390: x_spec_tests := p_spec_tests;
391: -- Test
392: IF x_spec_tests.test_id IS NULL THEN
390: x_spec_tests := p_spec_tests;
391: -- Test
392: IF x_spec_tests.test_id IS NULL THEN
393: GMD_API_PUB.Log_Message('GMD_TEST_ID_CODE_NULL');
394: RAISE FND_API.G_EXC_ERROR;
395: ELSE
396: OPEN cr_test(x_spec_tests.test_id);
397: FETCH cr_test INTO l_test_code,l_test_method_id,l_test_type,l_test_min_value_num,
398: l_test_max_value_num,l_test_priority;
398: l_test_max_value_num,l_test_priority;
399: IF cr_test%NOTFOUND THEN
400: CLOSE cr_test;
401: GMD_API_PUB.Log_Message('GMD_INVALID_TEST','TEST',x_spec_tests.test_id);
402: RAISE FND_API.G_EXC_ERROR;
403: END IF;
404: CLOSE cr_test ;
405: END IF;
406:
408: IF x_spec_tests.test_method_id IS NULL THEN
409: x_spec_tests.test_method_id := l_test_method_id;
410: ELSIF x_spec_tests.test_method_id <> l_test_method_id THEN
411: GMD_API_PUB.Log_Message('GMD_SPEC_TST_MTHD_INVALID');
412: RAISE FND_API.G_EXC_ERROR;
413: END IF;
414:
415: OPEN cr_test_method_valid(l_test_method_id);
416: FETCH cr_test_method_valid INTO l_test_method_id,l_test_method_replicate;
416: FETCH cr_test_method_valid INTO l_test_method_id,l_test_method_replicate;
417: IF cr_test_method_valid%NOTFOUND THEN
418: CLOSE cr_test_method_valid;
419: GMD_API_PUB.Log_Message('GMD_TEST_METHOD_DELETED');
420: RAISE FND_API.G_EXC_ERROR;
421: END IF;
422: CLOSE cr_test_method_valid ;
423:
424: -- test sequence
423:
424: -- test sequence
425: IF x_spec_tests.seq IS NULL THEN
426: GMD_API_PUB.Log_Message('GMD_SPEC_TEST_SEQ_REQD');
427: RAISE FND_API.G_EXC_ERROR;
428: ELSE
429: IF x_spec_tests.seq <> trunc(x_spec_tests.seq) THEN
430: GMD_API_PUB.Log_Message('GMD_SPEC_TEST_SEQ_NO');
431: RAISE FND_API.G_EXC_ERROR;
427: RAISE FND_API.G_EXC_ERROR;
428: ELSE
429: IF x_spec_tests.seq <> trunc(x_spec_tests.seq) THEN
430: GMD_API_PUB.Log_Message('GMD_SPEC_TEST_SEQ_NO');
431: RAISE FND_API.G_EXC_ERROR;
432: END IF;
433: END IF;
434:
435: IF l_test_type IN ('U','T','V') THEN
436:
437: IF (x_spec_tests.display_precision IS NOT NULL OR x_spec_tests.report_precision IS NOT NULL) THEN
438: FND_MESSAGE.SET_NAME('GMD','GMD_PRECISION_NOT_REQD');
439: FND_MSG_PUB.ADD;
440: RAISE FND_API.G_EXC_ERROR;
441: END IF;
442:
443: IF (x_spec_tests.min_value_num IS NOT NULL OR x_spec_tests.max_value_num IS NOT NULL) THEN
444: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_NUM_RANGE_NOT_REQD');
442:
443: IF (x_spec_tests.min_value_num IS NOT NULL OR x_spec_tests.max_value_num IS NOT NULL) THEN
444: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_NUM_RANGE_NOT_REQD');
445: FND_MSG_PUB.ADD;
446: RAISE FND_API.G_EXC_ERROR;
447: END IF;
448:
449: IF x_spec_tests.target_value_num IS NOT NULL THEN
450: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_NUM_TARGET_NOT_REQD');
448:
449: IF x_spec_tests.target_value_num IS NOT NULL THEN
450: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_NUM_TARGET_NOT_REQD');
451: FND_MSG_PUB.ADD;
452: RAISE FND_API.G_EXC_ERROR;
453: END IF;
454: --BEGIN BUG#3545701
455: --Commented the code for Non-validated tests.
456: /* IF l_test_type = 'U' and x_spec_tests.target_value_char IS NOT NULL THEN
455: --Commented the code for Non-validated tests.
456: /* IF l_test_type = 'U' and x_spec_tests.target_value_char IS NOT NULL THEN
457: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_CHAR_TARGET_NOT_REQD');
458: FND_MSG_PUB.ADD;
459: RAISE FND_API.G_EXC_ERROR; */
460: --END BUG#3545701
461: IF l_test_type = 'V' and x_spec_tests.target_value_char IS NULL THEN
462: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_CHAR_TARGET_REQD');
463: FND_MSG_PUB.ADD;
460: --END BUG#3545701
461: IF l_test_type = 'V' and x_spec_tests.target_value_char IS NULL THEN
462: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_CHAR_TARGET_REQD');
463: FND_MSG_PUB.ADD;
464: RAISE FND_API.G_EXC_ERROR;
465: END IF;
466:
467: IF (l_test_type = 'T') THEN
468: IF (x_spec_tests.min_value_char IS NULL OR x_spec_tests.max_value_char IS NULL) THEN
467: IF (l_test_type = 'T') THEN
468: IF (x_spec_tests.min_value_char IS NULL OR x_spec_tests.max_value_char IS NULL) THEN
469: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_RANGE_REQ');
470: FND_MSG_PUB.ADD;
471: RAISE FND_API.G_EXC_ERROR;
472: END IF;
473: ELSE
474: IF (x_spec_tests.min_value_char IS NOT NULL OR x_spec_tests.max_value_char IS NOT NULL) THEN
475: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_CHAR_RANGE_NOT_REQD');
473: ELSE
474: IF (x_spec_tests.min_value_char IS NOT NULL OR x_spec_tests.max_value_char IS NOT NULL) THEN
475: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_CHAR_RANGE_NOT_REQD');
476: FND_MSG_PUB.ADD;
477: RAISE FND_API.G_EXC_ERROR;
478: END IF;
479: END IF;
480:
481: --BEGIN BUG#3545701
482: --Commented the code for Non-validated tests.
483: /* IF l_test_type = 'U' and x_spec_tests.out_of_spec_action IS NOT NULL THEN
484: FND_MESSAGE.SET_NAME('GMD','GMD_ACTION_CODE_NOT_REQD');
485: FND_MSG_PUB.ADD;
486: RAISE FND_API.G_EXC_ERROR;
487: END IF; */
488: --END BUG#3545701
489:
490: IF x_spec_tests.exp_error_type IS NOT NULL THEN
489:
490: IF x_spec_tests.exp_error_type IS NOT NULL THEN
491: FND_MESSAGE.SET_NAME('GMD','GMD_INVALID_EXP_ERROR_TYPE');
492: FND_MSG_PUB.ADD;
493: RAISE FND_API.G_EXC_ERROR;
494: END IF;
495:
496: IF (x_spec_tests.below_spec_min IS NOT NULL OR x_spec_tests.below_min_action_code IS NOT NULL )
497: OR (x_spec_tests.above_spec_min IS NOT NULL OR x_spec_tests.above_min_action_code IS NOT NULL )
498: OR (x_spec_tests.below_spec_max IS NOT NULL OR x_spec_tests.below_max_action_code IS NOT NULL )
499: OR (x_spec_tests.above_spec_max IS NOT NULL OR x_spec_tests.above_max_action_code IS NOT NULL ) THEN
500: FND_MESSAGE.SET_NAME('GMD', 'GMD_EXP_ERROR_NOT_REQD');
501: FND_MSG_PUB.ADD;
502: RAISE FND_API.G_EXC_ERROR;
503: END IF;
504: ELSE
505: IF (x_spec_tests.display_precision IS NULL OR x_spec_tests.report_precision IS NULL ) THEN
506: GMD_API_PUB.Log_Message('GMD_PRECISION_REQD','TEST',l_test_code);
503: END IF;
504: ELSE
505: IF (x_spec_tests.display_precision IS NULL OR x_spec_tests.report_precision IS NULL ) THEN
506: GMD_API_PUB.Log_Message('GMD_PRECISION_REQD','TEST',l_test_code);
507: RAISE FND_API.G_EXC_ERROR;
508: END IF;
509:
510: IF (x_spec_tests.display_precision not between 0 and 9) THEN
511: GMD_API_PUB.Log_Message('GMD_INVALID_PRECISION','PRECISION',x_spec_tests.display_precision);
508: END IF;
509:
510: IF (x_spec_tests.display_precision not between 0 and 9) THEN
511: GMD_API_PUB.Log_Message('GMD_INVALID_PRECISION','PRECISION',x_spec_tests.display_precision);
512: RAISE FND_API.G_EXC_ERROR;
513: END IF;
514:
515: IF (x_spec_tests.report_precision not between 0 and 9) THEN
516: GMD_API_PUB.Log_Message('GMD_INVALID_PRECISION','PRECISION',x_spec_tests.report_precision);
513: END IF;
514:
515: IF (x_spec_tests.report_precision not between 0 and 9) THEN
516: GMD_API_PUB.Log_Message('GMD_INVALID_PRECISION','PRECISION',x_spec_tests.report_precision);
517: RAISE FND_API.G_EXC_ERROR;
518: END IF;
519:
520: IF (x_spec_tests.min_value_num IS NULL AND x_spec_tests.max_value_num IS NULL) THEN
521: FND_MESSAGE.SET_NAME('GMD','GMD_MIN_MAX_REQ');
519:
520: IF (x_spec_tests.min_value_num IS NULL AND x_spec_tests.max_value_num IS NULL) THEN
521: FND_MESSAGE.SET_NAME('GMD','GMD_MIN_MAX_REQ');
522: FND_MSG_PUB.ADD;
523: RAISE FND_API.G_EXC_ERROR;
524: END IF;
525:
526: IF ((x_spec_tests.min_value_num IS NULL AND l_test_min_value_num IS NOT NULL)
527: OR (x_spec_tests.max_value_num IS NULL AND l_test_max_value_num IS NOT NULL)) THEN
526: IF ((x_spec_tests.min_value_num IS NULL AND l_test_min_value_num IS NOT NULL)
527: OR (x_spec_tests.max_value_num IS NULL AND l_test_max_value_num IS NOT NULL)) THEN
528: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_RANGE_REQ');
529: FND_MSG_PUB.ADD;
530: RAISE FND_API.G_EXC_ERROR;
531: END IF;
532:
533: IF (x_spec_tests.min_value_char IS NOT NULL OR x_spec_tests.max_value_char IS NOT NULL) THEN
534: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_CHAR_RANGE_NOT_REQD');
532:
533: IF (x_spec_tests.min_value_char IS NOT NULL OR x_spec_tests.max_value_char IS NOT NULL) THEN
534: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_CHAR_RANGE_NOT_REQD');
535: FND_MSG_PUB.ADD;
536: RAISE FND_API.G_EXC_ERROR;
537: END IF;
538:
539: IF x_spec_tests.target_value_char IS NOT NULL THEN
540: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_CHAR_TARGET_NOT_REQD');
538:
539: IF x_spec_tests.target_value_char IS NOT NULL THEN
540: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_CHAR_TARGET_NOT_REQD');
541: FND_MSG_PUB.ADD;
542: RAISE FND_API.G_EXC_ERROR;
543: END IF;
544:
545: IF ((x_spec_tests.exp_error_type IN ('N','P')) OR (x_spec_tests.exp_error_type IS NULL)) THEN
546: NULL ;
546: NULL ;
547: ELSE
548: FND_MESSAGE.SET_NAME('GMD','GMD_INVALID_EXP_ERROR_TYPE');
549: FND_MSG_PUB.ADD;
550: RAISE FND_API.G_EXC_ERROR;
551: END IF;
552:
553: IF x_spec_tests.exp_error_type IS NULL AND
554: (x_spec_tests.below_spec_min IS NOT NULL OR x_spec_tests.above_spec_min IS NOT NULL
555: OR x_spec_tests.below_spec_max IS NOT NULL OR x_spec_tests.above_spec_max IS NOT NULL)
556: THEN
557: FND_MESSAGE.SET_NAME('GMD', 'GMD_EXP_ERROR_TYPE_REQ');
558: FND_MSG_PUB.ADD;
559: RAISE FND_API.G_EXC_ERROR;
560: END IF;
561:
562: IF x_spec_tests.exp_error_type IS NOT NULL AND
563: (x_spec_tests.below_spec_min IS NULL AND x_spec_tests.above_spec_min IS NULL
564: AND x_spec_tests.below_spec_max IS NULL AND x_spec_tests.above_spec_max IS NULL)
565: THEN
566: FND_MESSAGE.SET_NAME('GMD', 'GMD_EXP_ERR_TYPE_NULL');
567: FND_MSG_PUB.ADD;
568: RAISE FND_API.G_EXC_ERROR;
569: END IF;
570:
571: END IF;
572:
573: -- test UOM and Quantity.
574: IF (l_test_type = 'E') THEN
575: IF (x_spec_tests.test_qty_uom IS NOT NULL OR x_spec_tests.test_qty IS NOT NULL) THEN
576: GMD_API_PUB.Log_Message('GMD_TEST_UOM_QTY_NOT_REQD');
577: RAISE FND_API.G_EXC_ERROR;
578: END IF;
579: ELSE
580: IF x_spec_tests.test_qty <= 0 THEN
581: GMD_API_PUB.Log_Message('GMD_TEST_QTY_NEG');
578: END IF;
579: ELSE
580: IF x_spec_tests.test_qty <= 0 THEN
581: GMD_API_PUB.Log_Message('GMD_TEST_QTY_NEG');
582: RAISE FND_API.G_EXC_ERROR;
583: END IF;
584:
585: IF (x_spec_tests.test_qty_uom IS NOT NULL AND x_spec_tests.test_qty IS NULL) OR
586: (x_spec_tests.test_qty_uom IS NULL AND x_spec_tests.test_qty IS NOT NULL) THEN
584:
585: IF (x_spec_tests.test_qty_uom IS NOT NULL AND x_spec_tests.test_qty IS NULL) OR
586: (x_spec_tests.test_qty_uom IS NULL AND x_spec_tests.test_qty IS NOT NULL) THEN
587: GMD_API_PUB.Log_Message('GMD_TEST_UOM_QTY_REQD');
588: RAISE FND_API.G_EXC_ERROR;
589: END IF;
590: END IF;
591:
592: IF x_spec_tests.test_priority IS NULL THEN
593: x_spec_tests.test_priority := l_test_priority;
594:
595: ELSIF (NOT GMD_QC_TESTS_GRP.validate_test_priority(p_test_priority => x_spec_tests.test_priority)) THEN
596: GMD_API_PUB.Log_Message('GMD_INVALID_TEST_PRIORITY');
597: RAISE FND_API.G_EXC_ERROR;
598: END IF;
599:
600: -- Replicate Validation
601: IF x_spec_tests.test_replicate IS NULL THEN
599:
600: -- Replicate Validation
601: IF x_spec_tests.test_replicate IS NULL THEN
602: GMD_API_PUB.Log_Message('GMD_TEST_REP_REQD');
603: RAISE FND_API.G_EXC_ERROR;
604: ELSIF (l_test_type = 'E' and x_spec_tests.test_replicate <> 1) THEN
605: GMD_API_PUB.Log_Message('SPEC_TEST_REPLICATE_ONE');
606: RAISE FND_API.G_EXC_ERROR;
607: ELSIF (x_spec_tests.test_replicate < l_test_method_replicate) THEN
602: GMD_API_PUB.Log_Message('GMD_TEST_REP_REQD');
603: RAISE FND_API.G_EXC_ERROR;
604: ELSIF (l_test_type = 'E' and x_spec_tests.test_replicate <> 1) THEN
605: GMD_API_PUB.Log_Message('SPEC_TEST_REPLICATE_ONE');
606: RAISE FND_API.G_EXC_ERROR;
607: ELSIF (x_spec_tests.test_replicate < l_test_method_replicate) THEN
608: GMD_API_PUB.Log_Message('SPEC_TEST_REPLICATE_ERROR',
609: 'SPEC_TEST', l_test_code);
610: RAISE FND_API.G_EXC_ERROR;
606: RAISE FND_API.G_EXC_ERROR;
607: ELSIF (x_spec_tests.test_replicate < l_test_method_replicate) THEN
608: GMD_API_PUB.Log_Message('SPEC_TEST_REPLICATE_ERROR',
609: 'SPEC_TEST', l_test_code);
610: RAISE FND_API.G_EXC_ERROR;
611: END IF;
612:
613:
614: -- Bug 3437091
617: (x_spec_tests.CALC_UOM_CONV_IND = 'Y') then
618: null;
619: else
620: GMD_API_PUB.Log_Message('GMD_UOM_CONV_IND');
621: RAISE FND_API.G_EXC_ERROR;
622: END IF;
623:
624:
625: -- action code foreign key validation.
628: FETCH cr_action_code INTO l_temp;
629: IF cr_action_code%NOTFOUND THEN
630: CLOSE cr_action_code;
631: GMD_API_PUB.Log_Message('GMD_INVALID_ACTION_CODE','ACTION',x_spec_tests.below_min_action_code);
632: RAISE FND_API.G_EXC_ERROR;
633: END IF;
634: CLOSE cr_action_code ;
635: END IF;
636:
639: FETCH cr_action_code INTO l_temp;
640: IF cr_action_code%NOTFOUND THEN
641: CLOSE cr_action_code;
642: GMD_API_PUB.Log_Message('GMD_INVALID_ACTION_CODE','ACTION',x_spec_tests.above_min_action_code);
643: RAISE FND_API.G_EXC_ERROR;
644: END IF;
645: CLOSE cr_action_code ;
646: END IF;
647:
650: FETCH cr_action_code INTO l_temp;
651: IF cr_action_code%NOTFOUND THEN
652: CLOSE cr_action_code;
653: GMD_API_PUB.Log_Message('GMD_INVALID_ACTION_CODE','ACTION',x_spec_tests.below_max_action_code);
654: RAISE FND_API.G_EXC_ERROR;
655: END IF;
656: CLOSE cr_action_code ;
657: END IF;
658:
661: FETCH cr_action_code INTO l_temp;
662: IF cr_action_code%NOTFOUND THEN
663: CLOSE cr_action_code;
664: GMD_API_PUB.Log_Message('GMD_INVALID_ACTION_CODE','ACTION',x_spec_tests.above_max_action_code);
665: RAISE FND_API.G_EXC_ERROR;
666: END IF;
667: CLOSE cr_action_code ;
668: END IF;
669:
672: FETCH cr_action_code INTO l_temp;
673: IF cr_action_code%NOTFOUND THEN
674: CLOSE cr_action_code;
675: GMD_API_PUB.Log_Message('GMD_INVALID_ACTION_CODE','ACTION',x_spec_tests.out_of_spec_action);
676: RAISE FND_API.G_EXC_ERROR;
677: END IF;
678: CLOSE cr_action_code ;
679: END IF;
680:
681: IF x_spec_tests.use_to_control_step IS NULL OR x_spec_tests.use_to_control_step IN ('N','Y') THEN
682: NULL ;
683: ELSE
684: GMD_API_PUB.Log_Message('GMD_SPEC_INVALID_IND','COLUMN','USE_TO_CONTROL_STEP');
685: RAISE FND_API.G_EXC_ERROR;
686: END IF;
687: IF x_spec_tests.use_to_control_step = 'N' THEN
688: x_spec_tests.use_to_control_step:= NULL;
689: END IF;
691: IF x_spec_tests.optional_ind IS NULL OR x_spec_tests.optional_ind IN ('N','Y') THEN
692: NULL ;
693: ELSE
694: GMD_API_PUB.Log_Message('GMD_SPEC_INVALID_IND','COLUMN','OPTIONAL_IND');
695: RAISE FND_API.G_EXC_ERROR;
696: END IF;
697: IF x_spec_tests.optional_ind = 'N' THEN
698: x_spec_tests.optional_ind:= NULL;
699: END IF;
701: IF x_spec_tests.print_spec_ind IS NULL OR x_spec_tests.print_spec_ind IN ('N','Y') THEN
702: NULL ;
703: ELSE
704: GMD_API_PUB.Log_Message('GMD_SPEC_INVALID_IND','COLUMN','PRINT_SPEC_IND');
705: RAISE FND_API.G_EXC_ERROR;
706: END IF;
707: IF x_spec_tests.print_spec_ind = 'N' THEN
708: x_spec_tests.print_spec_ind:= NULL;
709: END IF;
711: IF x_spec_tests.print_result_ind IS NULL OR x_spec_tests.print_result_ind IN ('N','Y') THEN
712: NULL ;
713: ELSE
714: GMD_API_PUB.Log_Message('GMD_SPEC_INVALID_IND','COLUMN','PRINT_RESULT_IND');
715: RAISE FND_API.G_EXC_ERROR;
716: END IF;
717: IF x_spec_tests.print_result_ind = 'N' THEN
718: x_spec_tests.print_result_ind:= NULL;
719: END IF;
721: IF x_spec_tests.retest_lot_expiry_ind IS NULL OR x_spec_tests.retest_lot_expiry_ind IN ('N','Y') THEN
722: NULL ;
723: ELSE
724: GMD_API_PUB.Log_Message('GMD_SPEC_INVALID_IND','COLUMN','RETEST_LOT_EXPIRY_IND');
725: RAISE FND_API.G_EXC_ERROR;
726: END IF;
727: IF x_spec_tests.retest_lot_expiry_ind = 'N' THEN
728: x_spec_tests.retest_lot_expiry_ind:= NULL;
729: END IF;
729: END IF;
730:
731:
732: EXCEPTION
733: WHEN FND_API.G_EXC_ERROR THEN
734: x_return_status := FND_API.G_RET_STS_ERROR ;
735: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
736: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
737: WHEN OTHERS THEN
730:
731:
732: EXCEPTION
733: WHEN FND_API.G_EXC_ERROR THEN
734: x_return_status := FND_API.G_RET_STS_ERROR ;
735: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
736: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
737: WHEN OTHERS THEN
738: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.check_for_null_and_fks_in_stst',
731:
732: EXCEPTION
733: WHEN FND_API.G_EXC_ERROR THEN
734: x_return_status := FND_API.G_RET_STS_ERROR ;
735: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
736: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
737: WHEN OTHERS THEN
738: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.check_for_null_and_fks_in_stst',
739: 'ERROR',substr(sqlerrm,1,100),'POSITION','010');
732: EXCEPTION
733: WHEN FND_API.G_EXC_ERROR THEN
734: x_return_status := FND_API.G_RET_STS_ERROR ;
735: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
736: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
737: WHEN OTHERS THEN
738: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.check_for_null_and_fks_in_stst',
739: 'ERROR',substr(sqlerrm,1,100),'POSITION','010');
740: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
736: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
737: WHEN OTHERS THEN
738: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.check_for_null_and_fks_in_stst',
739: 'ERROR',substr(sqlerrm,1,100),'POSITION','010');
740: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
741:
742: END check_for_null_and_fks_in_stst;
743:
744: --Start of comments
782: l_owner_organization_code VARCHAR2(3);
783:
784: BEGIN
785: -- Initialize API return status to success
786: x_return_status := FND_API.G_RET_STS_SUCCESS;
787:
788: IF (p_called_from = 'API') THEN
789: -- Check for NULLs and Valid Foreign Keys in the input parameter
790: GMD_Spec_GRP.check_for_null_and_fks_in_spec
796: );
797: -- No need if called from FORM since it is already
798: -- done in the form
799:
800: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
801: -- Message is alrady logged by check_for_null procedure
802: RAISE FND_API.G_EXC_ERROR;
803: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
804: -- Message is alrady logged by check_for_null procedure
798: -- done in the form
799:
800: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
801: -- Message is alrady logged by check_for_null procedure
802: RAISE FND_API.G_EXC_ERROR;
803: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
804: -- Message is alrady logged by check_for_null procedure
805: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
806: END IF;
799:
800: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
801: -- Message is alrady logged by check_for_null procedure
802: RAISE FND_API.G_EXC_ERROR;
803: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
804: -- Message is alrady logged by check_for_null procedure
805: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
806: END IF;
807: END IF;
801: -- Message is alrady logged by check_for_null procedure
802: RAISE FND_API.G_EXC_ERROR;
803: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
804: -- Message is alrady logged by check_for_null procedure
805: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
806: END IF;
807: END IF;
808:
809: -- Verify that spec_name and spec_vers are unique
811: -- Ah...Ha, Spec and Version combination is already used
812: GMD_API_PUB.Log_Message('GMD_SPEC_VERS_EXIST',
813: 'SPEC', p_spec_header.spec_name,
814: 'VERS', p_spec_header.spec_vers);
815: RAISE FND_API.G_EXC_ERROR;
816: END IF;
817:
818: -- Verify that owner_id has access to owner_orgn_code
819: IF NOT spec_owner_orgn_valid(fnd_global.resp_id,
824: WHERE organization_id = p_spec_header.owner_organization_id;
825: GMD_API_PUB.Log_Message('GMD_USER_ORGN_NO_ACCESS',
826: 'OWNER', l_owner,
827: 'ORGN', l_owner_organization_code);
828: RAISE FND_API.G_EXC_ERROR;
829: END IF;
830:
831: -- All systems GO...
832:
830:
831: -- All systems GO...
832:
833: EXCEPTION
834: WHEN FND_API.G_EXC_ERROR THEN
835: x_return_status := FND_API.G_RET_STS_ERROR ;
836: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
837: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
838: WHEN OTHERS THEN
831: -- All systems GO...
832:
833: EXCEPTION
834: WHEN FND_API.G_EXC_ERROR THEN
835: x_return_status := FND_API.G_RET_STS_ERROR ;
836: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
837: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
838: WHEN OTHERS THEN
839: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.validate_spec_header',
832:
833: EXCEPTION
834: WHEN FND_API.G_EXC_ERROR THEN
835: x_return_status := FND_API.G_RET_STS_ERROR ;
836: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
837: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
838: WHEN OTHERS THEN
839: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.validate_spec_header',
840: 'ERROR',substr(sqlerrm,1,100),'POSITION','010');
833: EXCEPTION
834: WHEN FND_API.G_EXC_ERROR THEN
835: x_return_status := FND_API.G_RET_STS_ERROR ;
836: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
837: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
838: WHEN OTHERS THEN
839: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.validate_spec_header',
840: 'ERROR',substr(sqlerrm,1,100),'POSITION','010');
841: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
837: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
838: WHEN OTHERS THEN
839: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.validate_spec_header',
840: 'ERROR',substr(sqlerrm,1,100),'POSITION','010');
841: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
842:
843:
844: END validate_spec_header;
845:
1071: x_spec_type varchar2(10);
1072:
1073: BEGIN
1074: -- Initialize API return status to success
1075: x_return_status := FND_API.G_RET_STS_SUCCESS;
1076:
1077: -- Fetch Specification Record. Spec must exists for Spec Test.
1078: l_specification.spec_id := p_spec_test.spec_id;
1079: -- Introduce l_specification_out as part of NOCOPY changes.
1097: , x_spec_tests => x_spec_test
1098: , x_return_status => l_return_status
1099: );
1100:
1101: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1102: -- Message is alrady logged by check_for_null procedure
1103: RAISE FND_API.G_EXC_ERROR;
1104: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1105: -- Message is alrady logged by check_for_null procedure
1099: );
1100:
1101: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1102: -- Message is alrady logged by check_for_null procedure
1103: RAISE FND_API.G_EXC_ERROR;
1104: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1105: -- Message is alrady logged by check_for_null procedure
1106: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1107: END IF;
1100:
1101: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1102: -- Message is alrady logged by check_for_null procedure
1103: RAISE FND_API.G_EXC_ERROR;
1104: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1105: -- Message is alrady logged by check_for_null procedure
1106: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1107: END IF;
1108: END IF;
1102: -- Message is alrady logged by check_for_null procedure
1103: RAISE FND_API.G_EXC_ERROR;
1104: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1105: -- Message is alrady logged by check_for_null procedure
1106: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1107: END IF;
1108: END IF;
1109:
1110:
1125: IF (spec_test_seq_exist(x_spec_test.spec_id,x_spec_test.seq) )
1126: THEN
1127: -- Seq is already used
1128: GMD_API_PUB.Log_Message('GMD_SPEC_TEST_SEQ_EXIST', 'SEQ', x_spec_test.seq);
1129: RAISE FND_API.G_EXC_ERROR;
1130: end if ;
1131:
1132:
1133: -- Verify that Test is unique (added by KYH 01/OCT/02)
1133: -- Verify that Test is unique (added by KYH 01/OCT/02)
1134: IF spec_test_exist(x_spec_test.spec_id,x_spec_test.test_id) THEN
1135: -- Test is already used
1136: GMD_API_PUB.Log_Message('GMD_SPEC_TEST_EXIST', 'TEST_ID', x_spec_test.test_id);
1137: RAISE FND_API.G_EXC_ERROR;
1138: END IF;
1139:
1140: open c_spec_type(x_spec_test.spec_id);
1141: fetch c_spec_type into x_spec_type ;
1171: RAISE error_fetch_item;
1172: END;
1173:
1174: -- GMD_API_PUB.Log_Message('GMD_SPEC_TEST_EXIST', 'TEST_ID', x_spec_test.test_id);
1175: --RAISE FND_API.G_EXC_ERROR;
1176:
1177:
1178: BEGIN
1179: /*GMICUOM.icuomcv(pitem_id => l_item_mst.item_id,
1193:
1194: EXCEPTION WHEN OTHERS
1195: THEN
1196: FND_MSG_PUB.ADD;
1197: RAISE FND_API.G_EXC_ERROR;
1198: END ;
1199: END IF;
1200:
1201:
1209: FETCH c_test_value INTO x_spec_test.min_value_num;
1210: IF c_test_value%NOTFOUND THEN
1211: CLOSE c_test_value;
1212: GMD_API_PUB.Log_Message('TEST_VALUES_NOT_FOUND');
1213: RAISE FND_API.G_EXC_ERROR;
1214: END IF;
1215: CLOSE c_test_value;
1216: END IF;
1217:
1221: FETCH c_test_value INTO x_spec_test.target_value_num;
1222: IF c_test_value%NOTFOUND THEN
1223: CLOSE c_test_value;
1224: GMD_API_PUB.Log_Message('TEST_VALUES_NOT_FOUND');
1225: RAISE FND_API.G_EXC_ERROR;
1226: END IF;
1227: CLOSE c_test_value;
1228: END IF;
1229:
1232: FETCH c_test_value INTO x_spec_test.max_value_num;
1233: IF c_test_value%NOTFOUND THEN
1234: CLOSE c_test_value;
1235: GMD_API_PUB.Log_Message('TEST_VALUES_NOT_FOUND');
1236: RAISE FND_API.G_EXC_ERROR;
1237: END IF;
1238: CLOSE c_test_value;
1239: END IF;
1240:
1262: ,p_st_max => l_st_max
1263: ,p_t_min => l_test.min_value_num
1264: ,p_t_max => l_test.max_value_num)
1265: ) THEN
1266: RAISE FND_API.G_EXC_ERROR ;
1267: END IF;
1268: END IF; -- l_test.test_type NOT IN ('V')
1269:
1270: END IF; -- l_test.test_type NOT IN ('U')
1274: IF ( x_spec_test.retest_lot_expiry_ind = 'Y' and l_item.lot_control_code = 1) THEN
1275: GMD_API_PUB.Log_Message('SPEC_TEST_RETEST_IND_ERROR',
1276: 'SPEC_TEST', l_test.test_code,
1277: 'SPEC_TEST', l_item.concatenated_segments);
1278: RAISE FND_API.G_EXC_ERROR;
1279: END IF;
1280:
1281: -- Experimental Error Min and Max validation
1282: IF (l_test.test_type IN ('N', 'L', 'E') AND x_spec_test.exp_error_type IS NOT NULL ) THEN
1297: p_below_spec_max => p_spec_test.below_spec_max,
1298: p_spec_test_max => x_spec_test.max_value_num,
1299: p_above_spec_max => x_spec_test.above_spec_max,
1300: p_test_max => l_test.max_value_num) THEN
1301: RAISE FND_API.G_EXC_ERROR;
1302: END IF;
1303:
1304: IF x_spec_test.below_min_action_code IS NOT NULL and x_spec_test.below_spec_min IS NULL THEN
1305: GMD_API_PUB.Log_Message('GMD_EXP_ERR_VAL_REQ_ACTION');
1302: END IF;
1303:
1304: IF x_spec_test.below_min_action_code IS NOT NULL and x_spec_test.below_spec_min IS NULL THEN
1305: GMD_API_PUB.Log_Message('GMD_EXP_ERR_VAL_REQ_ACTION');
1306: RAISE FND_API.G_EXC_ERROR;
1307: END IF;
1308:
1309: IF x_spec_test.above_min_action_code IS NOT NULL and x_spec_test.above_spec_min IS NULL THEN
1310: GMD_API_PUB.Log_Message('GMD_EXP_ERR_VAL_REQ_ACTION');
1307: END IF;
1308:
1309: IF x_spec_test.above_min_action_code IS NOT NULL and x_spec_test.above_spec_min IS NULL THEN
1310: GMD_API_PUB.Log_Message('GMD_EXP_ERR_VAL_REQ_ACTION');
1311: RAISE FND_API.G_EXC_ERROR;
1312: END IF;
1313:
1314: IF x_spec_test.below_max_action_code IS NOT NULL and x_spec_test.below_spec_max IS NULL THEN
1315: GMD_API_PUB.Log_Message('GMD_EXP_ERR_VAL_REQ_ACTION');
1312: END IF;
1313:
1314: IF x_spec_test.below_max_action_code IS NOT NULL and x_spec_test.below_spec_max IS NULL THEN
1315: GMD_API_PUB.Log_Message('GMD_EXP_ERR_VAL_REQ_ACTION');
1316: RAISE FND_API.G_EXC_ERROR;
1317: END IF;
1318:
1319: IF x_spec_test.above_max_action_code IS NOT NULL and x_spec_test.above_spec_max IS NULL THEN
1320: GMD_API_PUB.Log_Message('GMD_EXP_ERR_VAL_REQ_ACTION');
1317: END IF;
1318:
1319: IF x_spec_test.above_max_action_code IS NOT NULL and x_spec_test.above_spec_max IS NULL THEN
1320: GMD_API_PUB.Log_Message('GMD_EXP_ERR_VAL_REQ_ACTION');
1321: RAISE FND_API.G_EXC_ERROR;
1322: END IF;
1323:
1324: END IF;
1325:
1328: p_spec_report_precision => x_spec_test.report_precision,
1329: p_test_display_precision => l_test.display_precision,
1330: p_test_report_precision => l_test.display_precision ) THEN
1331: -- Messages are already logged.
1332: RAISE FND_API.G_EXC_ERROR;
1333: END IF;
1334:
1335: --Update the Viability Period ( Bug 3401368)
1336: if (x_spec_test.days is not null) OR
1355:
1356: -- All systems GO...
1357:
1358: EXCEPTION
1359: WHEN FND_API.G_EXC_ERROR THEN
1360: x_return_status := FND_API.G_RET_STS_ERROR ;
1361: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1362: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1363: WHEN OTHERS THEN
1356: -- All systems GO...
1357:
1358: EXCEPTION
1359: WHEN FND_API.G_EXC_ERROR THEN
1360: x_return_status := FND_API.G_RET_STS_ERROR ;
1361: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1362: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1363: WHEN OTHERS THEN
1364: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.validate_spec_test',
1357:
1358: EXCEPTION
1359: WHEN FND_API.G_EXC_ERROR THEN
1360: x_return_status := FND_API.G_RET_STS_ERROR ;
1361: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1362: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1363: WHEN OTHERS THEN
1364: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.validate_spec_test',
1365: 'ERROR',substr(sqlerrm,1,100),'POSITION','010');
1358: EXCEPTION
1359: WHEN FND_API.G_EXC_ERROR THEN
1360: x_return_status := FND_API.G_RET_STS_ERROR ;
1361: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1362: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1363: WHEN OTHERS THEN
1364: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.validate_spec_test',
1365: 'ERROR',substr(sqlerrm,1,100),'POSITION','010');
1366: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1362: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1363: WHEN OTHERS THEN
1364: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.validate_spec_test',
1365: 'ERROR',substr(sqlerrm,1,100),'POSITION','010');
1366: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1367:
1368:
1369: END validate_spec_test;
1370:
1394: l_test_seq BINARY_INTEGER;
1395:
1396:
1397: BEGIN
1398: x_return_status := FND_API.G_RET_STS_SUCCESS ;
1399:
1400: IF p_spec_id IS NULL THEN
1401: GMD_API_PUB.Log_Message('GMD_SPEC_ID_REQUIRED');
1402: RAISE FND_API.G_EXC_ERROR;
1398: x_return_status := FND_API.G_RET_STS_SUCCESS ;
1399:
1400: IF p_spec_id IS NULL THEN
1401: GMD_API_PUB.Log_Message('GMD_SPEC_ID_REQUIRED');
1402: RAISE FND_API.G_EXC_ERROR;
1403: END IF;
1404:
1405: -- atleast one test should be present in the spec.
1406: SELECT NVL(COUNT(1),0) INTO l_test_count
1409:
1410: IF l_test_count = 0 THEN
1411: FND_MESSAGE.SET_NAME('GMD','GMD_SPEC_NO_TEST');
1412: FND_MSG_PUB.ADD;
1413: RAISE FND_API.G_EXC_ERROR;
1414: END IF;
1415:
1416: -- validate expression based tests.
1417: -- all the reference tests must be present.
1427: p_exp_test_seq => l_test_seq,
1428: p_exp_test_id => l_test_id ) THEN
1429: CLOSE cr_expression_tests ;
1430: GMD_API_PUB.Log_Message('GMD_SOME_REF_TESTS_MISSING');
1431: RAISE FND_API.G_EXC_ERROR;
1432: END IF;
1433: END LOOP;
1434:
1435: EXCEPTION
1432: END IF;
1433: END LOOP;
1434:
1435: EXCEPTION
1436: WHEN FND_API.G_EXC_ERROR THEN
1437: x_return_status := FND_API.G_RET_STS_ERROR ;
1438:
1439: WHEN OTHERS THEN
1440: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.validate_after_insert_all',
1433: END LOOP;
1434:
1435: EXCEPTION
1436: WHEN FND_API.G_EXC_ERROR THEN
1437: x_return_status := FND_API.G_RET_STS_ERROR ;
1438:
1439: WHEN OTHERS THEN
1440: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.validate_after_insert_all',
1441: 'ERROR',substr(sqlerrm,1,100),'POSITION','010');
1438:
1439: WHEN OTHERS THEN
1440: GMD_API_PUB.Log_Message('GMD_API_ERROR','PACKAGE','gmd_spec_grp.validate_after_insert_all',
1441: 'ERROR',substr(sqlerrm,1,100),'POSITION','010');
1442: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1443:
1444: END validate_after_insert_all;
1445:
1446: /*===========================================================================
1467: l_spec_out GMD_SPECIFICATIONS%ROWTYPE;
1468:
1469: BEGIN
1470: l_progress := '010';
1471: x_return_status := FND_API.G_RET_STS_SUCCESS ;
1472:
1473: -- validate for primary key
1474: -- ========================
1475: IF p_spec_id IS NULL THEN
1474: -- ========================
1475: IF p_spec_id IS NULL THEN
1476: FND_MESSAGE.SET_NAME('GMD','GMD_SPEC_ID_REQUIRED'); -- New Message
1477: FND_MSG_PUB.ADD;
1478: RAISE FND_API.G_EXC_ERROR;
1479: ELSE
1480: l_spec.spec_id := p_spec_id;
1481: END IF;
1482:
1488: fnd_message.set_token('L_TABLE_NAME','GMD_SPECIFICATIONS');
1489: fnd_message.set_token('L_COLUMN_NAME','SPEC_ID');
1490: fnd_message.set_token('L_KEY_VALUE',l_spec.spec_id);
1491: fnd_msg_pub.ADD;
1492: RAISE FND_API.G_EXC_ERROR;
1493: END IF;
1494:
1495: l_spec := l_spec_out ;
1496:
1502: fnd_message.set_token('L_TABLE_NAME','GMD_SPECIFICATIONS');
1503: fnd_message.set_token('L_COLUMN_NAME','SPEC_ID');
1504: fnd_message.set_token('L_KEY_VALUE',l_spec.spec_id);
1505: fnd_msg_pub.ADD;
1506: RAISE FND_API.G_EXC_ERROR;
1507: END IF;
1508:
1509: -- BUG 2698311
1510: -- Block deletes if the status is 400 (Approved for Lab Use) or
1513: IF l_spec.spec_status in (400,700)
1514: THEN
1515: fnd_message.set_name('GMD','GMD_SPEC_STATUS_BLOCKS_DELETE');
1516: fnd_msg_pub.ADD;
1517: RAISE FND_API.G_EXC_ERROR;
1518: END IF;
1519:
1520: -- Ensure that the status permits updates
1521: -- ======================================
1522: IF NOT GMD_SPEC_GRP.Record_Updateable_With_Status(l_spec.spec_status)
1523: THEN
1524: fnd_message.set_name('GMD','GMD_SPEC_STATUS_BLOCKS_UPDATE');
1525: fnd_msg_pub.ADD;
1526: RAISE FND_API.G_EXC_ERROR;
1527: END IF;
1528:
1529: EXCEPTION
1530: WHEN FND_API.G_EXC_ERROR THEN
1526: RAISE FND_API.G_EXC_ERROR;
1527: END IF;
1528:
1529: EXCEPTION
1530: WHEN FND_API.G_EXC_ERROR THEN
1531: x_return_status := FND_API.G_RET_STS_ERROR ;
1532: x_message_data := FND_MSG_PUB.GET(FND_MSG_PUB.G_LAST,FND_API.G_FALSE);
1533:
1534: WHEN OTHERS THEN
1527: END IF;
1528:
1529: EXCEPTION
1530: WHEN FND_API.G_EXC_ERROR THEN
1531: x_return_status := FND_API.G_RET_STS_ERROR ;
1532: x_message_data := FND_MSG_PUB.GET(FND_MSG_PUB.G_LAST,FND_API.G_FALSE);
1533:
1534: WHEN OTHERS THEN
1535: FND_MESSAGE.Set_Name('GMD','GMD_API_ERROR');
1528:
1529: EXCEPTION
1530: WHEN FND_API.G_EXC_ERROR THEN
1531: x_return_status := FND_API.G_RET_STS_ERROR ;
1532: x_message_data := FND_MSG_PUB.GET(FND_MSG_PUB.G_LAST,FND_API.G_FALSE);
1533:
1534: WHEN OTHERS THEN
1535: FND_MESSAGE.Set_Name('GMD','GMD_API_ERROR');
1536: FND_MESSAGE.Set_Token('PACKAGE','GMD_SPEC_GRP.VALIDATE_BEFORE_DELETE');
1536: FND_MESSAGE.Set_Token('PACKAGE','GMD_SPEC_GRP.VALIDATE_BEFORE_DELETE');
1537: FND_MESSAGE.Set_Token('ERROR', substr(sqlerrm,1,100));
1538: FND_MESSAGE.Set_Token('POSITION',l_progress );
1539: FND_MSG_PUB.ADD;
1540: x_message_data := FND_MSG_PUB.GET(FND_MSG_PUB.G_LAST,FND_API.G_FALSE);
1541: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1542:
1543: END VALIDATE_BEFORE_DELETE ;
1544:
1537: FND_MESSAGE.Set_Token('ERROR', substr(sqlerrm,1,100));
1538: FND_MESSAGE.Set_Token('POSITION',l_progress );
1539: FND_MSG_PUB.ADD;
1540: x_message_data := FND_MSG_PUB.GET(FND_MSG_PUB.G_LAST,FND_API.G_FALSE);
1541: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1542:
1543: END VALIDATE_BEFORE_DELETE ;
1544:
1545: /*===========================================================================
1567: l_spec_delete_mark BINARY_INTEGER;
1568:
1569: BEGIN
1570: l_progress := '010';
1571: x_return_status := FND_API.G_RET_STS_SUCCESS ;
1572:
1573: -- validate for primary key
1574: -- ========================
1575: IF p_spec_id IS NULL THEN
1574: -- ========================
1575: IF p_spec_id IS NULL THEN
1576: FND_MESSAGE.SET_NAME('GMD','GMD_SPEC_ID_REQUIRED');
1577: FND_MSG_PUB.ADD;
1578: RAISE FND_API.G_EXC_ERROR;
1579: ELSE
1580: l_spec_tests.spec_id := p_spec_id;
1581: END IF;
1582:
1582:
1583: IF p_test_id IS NULL THEN
1584: FND_MESSAGE.SET_NAME('GMD','GMD_TEST_ID_CODE_NULL');
1585: FND_MSG_PUB.ADD;
1586: RAISE FND_API.G_EXC_ERROR;
1587: ELSE
1588: l_spec_tests.test_id := p_test_id;
1589: END IF;
1590:
1596: fnd_message.set_token('L_TABLE_NAME','GMD_SPEC_TESTS');
1597: fnd_message.set_token('L_COLUMN_NAME','TEST_ID');
1598: fnd_message.set_token('L_KEY_VALUE',l_spec_tests.test_id);
1599: fnd_msg_pub.ADD;
1600: RAISE FND_API.G_EXC_ERROR;
1601: END IF;
1602:
1603: l_spec_tests := l_spec_tests_out ;
1604:
1612: fnd_message.set_token('L_TABLE_NAME','GMD_SPECIFICATIONS');
1613: fnd_message.set_token('L_COLUMN_NAME','SPEC_ID');
1614: fnd_message.set_token('L_KEY_VALUE',p_spec_id);
1615: fnd_msg_pub.ADD;
1616: RAISE FND_API.G_EXC_ERROR;
1617: END IF;
1618:
1619: EXCEPTION
1620: WHEN FND_API.G_EXC_ERROR THEN
1616: RAISE FND_API.G_EXC_ERROR;
1617: END IF;
1618:
1619: EXCEPTION
1620: WHEN FND_API.G_EXC_ERROR THEN
1621: x_return_status := FND_API.G_RET_STS_ERROR ;
1622: x_message_data := FND_MSG_PUB.GET(FND_MSG_PUB.G_LAST,FND_API.G_FALSE);
1623:
1624: WHEN OTHERS THEN
1617: END IF;
1618:
1619: EXCEPTION
1620: WHEN FND_API.G_EXC_ERROR THEN
1621: x_return_status := FND_API.G_RET_STS_ERROR ;
1622: x_message_data := FND_MSG_PUB.GET(FND_MSG_PUB.G_LAST,FND_API.G_FALSE);
1623:
1624: WHEN OTHERS THEN
1625: FND_MESSAGE.Set_Name('GMD','GMD_API_ERROR');
1618:
1619: EXCEPTION
1620: WHEN FND_API.G_EXC_ERROR THEN
1621: x_return_status := FND_API.G_RET_STS_ERROR ;
1622: x_message_data := FND_MSG_PUB.GET(FND_MSG_PUB.G_LAST,FND_API.G_FALSE);
1623:
1624: WHEN OTHERS THEN
1625: FND_MESSAGE.Set_Name('GMD','GMD_API_ERROR');
1626: FND_MESSAGE.Set_Token('PACKAGE','GMD_SPEC_GRP.VALIDATE_BEFORE_DELETE');
1626: FND_MESSAGE.Set_Token('PACKAGE','GMD_SPEC_GRP.VALIDATE_BEFORE_DELETE');
1627: FND_MESSAGE.Set_Token('ERROR', substr(sqlerrm,1,100));
1628: FND_MESSAGE.Set_Token('POSITION',l_progress );
1629: FND_MSG_PUB.ADD;
1630: x_message_data := FND_MSG_PUB.GET(FND_MSG_PUB.G_LAST,FND_API.G_FALSE);
1631: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1632:
1633: END VALIDATE_BEFORE_DELETE ;
1634:
1627: FND_MESSAGE.Set_Token('ERROR', substr(sqlerrm,1,100));
1628: FND_MESSAGE.Set_Token('POSITION',l_progress );
1629: FND_MSG_PUB.ADD;
1630: x_message_data := FND_MSG_PUB.GET(FND_MSG_PUB.G_LAST,FND_API.G_FALSE);
1631: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1632:
1633: END VALIDATE_BEFORE_DELETE ;
1634:
1635: PROCEDURE validate_after_delete_test(
1636: p_spec_id IN NUMBER,
1637: x_return_status OUT NOCOPY VARCHAR2) IS
1638:
1639: BEGIN
1640: x_return_status := FND_API.G_RET_STS_SUCCESS ;
1641:
1642: validate_after_insert_all(
1643: p_spec_id => p_spec_id,
1644: x_return_status => x_return_status) ;
1833: REQ_FIELDS_MISSING EXCEPTION;
1834:
1835: BEGIN
1836:
1837: x_return_status := FND_API.G_RET_STS_SUCCESS;
1838: FND_MSG_PUB.initialize;
1839: l_position := '010';
1840:
1841: IF p_test_id IS NULL OR p_value IS NULL THEN
1854:
1855: EXCEPTION
1856: WHEN REQ_FIELDS_MISSING THEN
1857: gmd_api_pub.log_message('GMD_REQ_FIELD_MIS','PACKAGE','GMD_SPEC_GRP.VALUE_IN_NUM_RANGE_DISPLAY');
1858: x_return_status := FND_API.G_RET_STS_ERROR ;
1859: RETURN FALSE;
1860: WHEN OTHERS THEN
1861: gmd_api_pub.log_message('GMD_API_ERROR','PACKAGE','GMD_SPEC_GRP.VALUE_IN_NUM_RANGE_DISPLAY','ERROR', SUBSTR(SQLERRM,1,100),'POSITION',l_position);
1862: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1858: x_return_status := FND_API.G_RET_STS_ERROR ;
1859: RETURN FALSE;
1860: WHEN OTHERS THEN
1861: gmd_api_pub.log_message('GMD_API_ERROR','PACKAGE','GMD_SPEC_GRP.VALUE_IN_NUM_RANGE_DISPLAY','ERROR', SUBSTR(SQLERRM,1,100),'POSITION',l_position);
1862: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1863: RETURN FALSE;
1864: END value_in_num_range_display ;
1865:
1866: --Start of comments
2465: BEGIN
2466:
2467:
2468: -- Initialize API return status to success
2469: x_return_status := FND_API.G_RET_STS_SUCCESS;
2470:
2471: FND_MSG_PUB.initialize; -- clear the message stack.
2472:
2473: l_progress := '010';
2647: l_progress := '040';
2648:
2649: EXCEPTION
2650: WHEN OTHERS THEN
2651: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2652: FND_MESSAGE.Set_Name('GMD','GMD_API_ERROR');
2653: FND_MESSAGE.Set_Token('PACKAGE','GMD_SPEC_GRP.CREATE_SPECIFICATION');
2654: FND_MESSAGE.Set_Token('ERROR', substr(sqlerrm,1,100));
2655: FND_MESSAGE.Set_Token('POSITION',l_progress );