26: IF ( G_APPLN_USAGE = 'PM' AND
27: g_mr_type_code = 'PROGRAM' ) THEN
28:
29: IF ( p_interval_rec.earliest_due_value IS NOT NULL AND
30: p_interval_rec.earliest_due_value <> FND_API.G_MISS_NUM ) THEN
31: l_record_identifier := l_record_identifier || TO_CHAR( p_interval_rec.earliest_due_value );
32: END IF;
33:
34: l_record_identifier := l_record_identifier || ' - ';
33:
34: l_record_identifier := l_record_identifier || ' - ';
35:
36: IF ( p_interval_rec.start_value IS NOT NULL AND
37: p_interval_rec.start_value <> FND_API.G_MISS_NUM ) THEN
38: l_record_identifier := l_record_identifier || TO_CHAR( p_interval_rec.start_value );
39: END IF;
40:
41: l_record_identifier := l_record_identifier || ' - ';
40:
41: l_record_identifier := l_record_identifier || ' - ';
42:
43: IF ( p_interval_rec.stop_value IS NOT NULL AND
44: p_interval_rec.stop_value <> FND_API.G_MISS_NUM ) THEN
45: l_record_identifier := l_record_identifier || TO_CHAR( p_interval_rec.stop_value );
46: END IF;
47:
48: l_record_identifier := l_record_identifier || ' - ';
49:
50: -- For One-Time Maintenencce Requirements
51: ELSIF ( g_repetitive_flag = 'N' ) THEN
52: IF ( p_interval_rec.interval_value IS NOT NULL AND
53: p_interval_rec.interval_value <> FND_API.G_MISS_NUM ) THEN
54: l_record_identifier := l_record_identifier || TO_CHAR( p_interval_rec.interval_value );
55: END IF;
56:
57: l_record_identifier := l_record_identifier || ' - ';
59: -- For All other Maintenance Requirements
60: ELSE
61:
62: IF ( p_interval_rec.start_date IS NOT NULL AND
63: p_interval_rec.start_date <> FND_API.G_MISS_DATE ) THEN
64: l_record_identifier := l_record_identifier || TO_CHAR( p_interval_rec.start_date, 'DD-MON_YYYY' );
65: END IF;
66:
67: l_record_identifier := l_record_identifier || ' - ';
66:
67: l_record_identifier := l_record_identifier || ' - ';
68:
69: IF ( p_interval_rec.stop_date IS NOT NULL AND
70: p_interval_rec.stop_date <> FND_API.G_MISS_DATE ) THEN
71: l_record_identifier := l_record_identifier || TO_CHAR( p_interval_rec.stop_date, 'DD-MON-YYYY' );
72: END IF;
73:
74: l_record_identifier := l_record_identifier || ' - ';
73:
74: l_record_identifier := l_record_identifier || ' - ';
75:
76: IF ( p_interval_rec.earliest_due_value IS NOT NULL AND
77: p_interval_rec.earliest_due_value <> FND_API.G_MISS_NUM ) THEN
78: l_record_identifier := l_record_identifier || TO_CHAR( p_interval_rec.earliest_due_value );
79: END IF;
80:
81: l_record_identifier := l_record_identifier || ' - ';
80:
81: l_record_identifier := l_record_identifier || ' - ';
82:
83: IF ( p_interval_rec.start_value IS NOT NULL AND
84: p_interval_rec.start_value <> FND_API.G_MISS_NUM ) THEN
85: l_record_identifier := l_record_identifier || TO_CHAR( p_interval_rec.start_value );
86: END IF;
87:
88: l_record_identifier := l_record_identifier || ' - ';
87:
88: l_record_identifier := l_record_identifier || ' - ';
89:
90: IF ( p_interval_rec.interval_value IS NOT NULL AND
91: p_interval_rec.interval_value <> FND_API.G_MISS_NUM ) THEN
92: l_record_identifier := l_record_identifier || TO_CHAR( p_interval_rec.interval_value );
93: END IF;
94:
95: l_record_identifier := l_record_identifier || ' - ';
94:
95: l_record_identifier := l_record_identifier || ' - ';
96:
97: IF ( p_interval_rec.stop_value IS NOT NULL AND
98: p_interval_rec.stop_value <> FND_API.G_MISS_NUM ) THEN
99: l_record_identifier := l_record_identifier || TO_CHAR( p_interval_rec.stop_value );
100: END IF;
101:
102: l_record_identifier := l_record_identifier || ' - ';
104: END IF;
105:
106: -- Common Identifiers
107: IF ( p_interval_rec.counter_name IS NOT NULL AND
108: p_interval_rec.counter_name <> FND_API.G_MISS_CHAR ) THEN
109: l_record_identifier := l_record_identifier || p_interval_rec.counter_name;
110: END IF;
111:
112: RETURN l_record_identifier;
130: l_mr_type_code VARCHAR2(30);
131: l_pm_install_flag VARCHAR2(1);
132:
133: BEGIN
134: x_return_status := FND_API.G_RET_STS_SUCCESS;
135:
136: -- Check if a valid value is passed in p_mr_header_id
137: IF ( p_mr_header_id = FND_API.G_MISS_NUM OR
138: p_mr_header_id IS NULL ) THEN
133: BEGIN
134: x_return_status := FND_API.G_RET_STS_SUCCESS;
135:
136: -- Check if a valid value is passed in p_mr_header_id
137: IF ( p_mr_header_id = FND_API.G_MISS_NUM OR
138: p_mr_header_id IS NULL ) THEN
139: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_MR_HEADER_ID_NULL' );
140: FND_MSG_PUB.add;
141: x_return_status := FND_API.G_RET_STS_ERROR;
137: IF ( p_mr_header_id = FND_API.G_MISS_NUM OR
138: p_mr_header_id IS NULL ) THEN
139: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_MR_HEADER_ID_NULL' );
140: FND_MSG_PUB.add;
141: x_return_status := FND_API.G_RET_STS_ERROR;
142: RETURN;
143: END IF;
144:
145: -- Check Profile value
147: IF G_APPLN_USAGE IS NULL
148: THEN
149: FND_MESSAGE.SET_NAME('AHL','AHL_COM_APP_PRFL_UNDEF');
150: FND_MSG_PUB.ADD;
151: x_return_status := FND_API.G_RET_STS_ERROR;
152: RETURN;
153: IF G_DEBUG = 'Y' THEN
154: AHL_DEBUG_PUB.debug('APPLN USAGE CODE IS NULL IN VALIDATE_API_INPUTS' );
155: END IF;
166: l_mr_status_code :=AHL_FMP_COMMON_PVT.check_mr_status(p_mr_header_id);
167: IF l_mr_status_code IS NULL THEN
168: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_INVALID_MR' );
169: FND_MSG_PUB.add;
170: x_return_status := FND_API.G_RET_STS_ERROR;
171: RETURN;
172: END IF;
173:
174: -- Check if the Maintenance Requirement is in Updatable status based on the pm,super user,mrstatus
189: p_mr_header_id => p_mr_header_id
190: );
191: END IF;
192:
193: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
194: FND_MESSAGE.set_name( 'AHL', l_msg_data );
195: FND_MSG_PUB.add;
196: x_return_status := l_return_status;
197: RETURN;
198: END IF;
199:
200:
201: -- Check if a valid value is passed in p_mr_effectivity_id
202: IF ( p_threshold_rec.mr_effectivity_id = FND_API.G_MISS_NUM OR
203: p_threshold_rec.mr_effectivity_id IS NULL ) THEN
204: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_MRE_ID_NULL' );
205: FND_MSG_PUB.add;
206: x_return_status := FND_API.G_RET_STS_ERROR;
202: IF ( p_threshold_rec.mr_effectivity_id = FND_API.G_MISS_NUM OR
203: p_threshold_rec.mr_effectivity_id IS NULL ) THEN
204: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_MRE_ID_NULL' );
205: FND_MSG_PUB.add;
206: x_return_status := FND_API.G_RET_STS_ERROR;
207: RETURN;
208: END IF;
209:
210: -- Check if the Maintenance Requirement Effectivity exists
215: p_mr_effectivity_id => p_threshold_rec.mr_effectivity_id,
216: p_object_version_number => p_threshold_rec.object_version_number
217: );
218:
219: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
220: FND_MESSAGE.set_name( 'AHL', l_msg_data );
221: FND_MSG_PUB.add;
222: x_return_status := l_return_status;
223: RETURN;
227:
228: -- Check if atleast one record is passed in p_interval_tbl or p_threshold_rec is passed
229: IF ( p_interval_tbl.count < 1 AND
230: ( p_threshold_rec.threshold_date IS NULL OR
231: p_threshold_rec.threshold_date = FND_API.G_MISS_DATE ) AND
232: ( p_threshold_rec.program_duration IS NULL OR
233: p_threshold_rec.program_duration = FND_API.G_MISS_NUM ) ) THEN
234: FND_MESSAGE.set_name( 'AHL', 'AHL_COM_INVALID_PROCEDURE_CALL' );
235: FND_MESSAGE.set_token( 'PROCEDURE', G_PKG_NAME || '.' || G_API_NAME );
229: IF ( p_interval_tbl.count < 1 AND
230: ( p_threshold_rec.threshold_date IS NULL OR
231: p_threshold_rec.threshold_date = FND_API.G_MISS_DATE ) AND
232: ( p_threshold_rec.program_duration IS NULL OR
233: p_threshold_rec.program_duration = FND_API.G_MISS_NUM ) ) THEN
234: FND_MESSAGE.set_name( 'AHL', 'AHL_COM_INVALID_PROCEDURE_CALL' );
235: FND_MESSAGE.set_token( 'PROCEDURE', G_PKG_NAME || '.' || G_API_NAME );
236: FND_MSG_PUB.add;
237: x_return_status := FND_API.G_RET_STS_ERROR;
233: p_threshold_rec.program_duration = FND_API.G_MISS_NUM ) ) THEN
234: FND_MESSAGE.set_name( 'AHL', 'AHL_COM_INVALID_PROCEDURE_CALL' );
235: FND_MESSAGE.set_token( 'PROCEDURE', G_PKG_NAME || '.' || G_API_NAME );
236: FND_MSG_PUB.add;
237: x_return_status := FND_API.G_RET_STS_ERROR;
238: RETURN;
239: END IF;
240:
241: -- Validate DML Operation
246: FND_MESSAGE.set_name( 'AHL', 'AHL_COM_DML_INVALID' );
247: FND_MESSAGE.set_token( 'FIELD', p_interval_tbl(i).dml_operation );
248: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_tbl(i) ) );
249: FND_MSG_PUB.add;
250: x_return_status := FND_API.G_RET_STS_ERROR;
251: RETURN;
252: END IF;
253:
254: --BASED on the discussion with sracha on Nov02 2004 to show the error msg.
257: p_super_user ='Y' AND
258: l_mr_status_code = 'COMPLETE') THEN
259: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_INVALID_DML' );
260: FND_MSG_PUB.add;
261: x_return_status := FND_API.G_RET_STS_ERROR;
262: RETURN;
263: END IF;
264:
265:
274: x_msg_data => l_msg_data,
275: p_effectivity_id => p_threshold_rec.MR_EFFECTIVITY_ID,
276: p_eff_obj_version => p_threshold_rec.OBJECT_VERSION_NUMBER
277: );
278: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
279: FND_MESSAGE.set_name( 'AHL', l_msg_data );
280: FND_MSG_PUB.add;
281: x_return_status := FND_API.G_RET_STS_ERROR;
282: RETURN;
277: );
278: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
279: FND_MESSAGE.set_name( 'AHL', l_msg_data );
280: FND_MSG_PUB.add;
281: x_return_status := FND_API.G_RET_STS_ERROR;
282: RETURN;
283: END IF;
284: END IF;
285:
296: p_mr_header_id => p_mr_header_id,
297: p_effectivity_id => p_threshold_rec.MR_EFFECTIVITY_ID,
298: p_eff_obj_version => p_threshold_rec.OBJECT_VERSION_NUMBER
299: );
300: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
301: FND_MESSAGE.set_name( 'AHL', l_msg_data );
302: FND_MSG_PUB.add;
303: x_return_status := FND_API.G_RET_STS_ERROR;
304: RETURN;
299: );
300: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
301: FND_MESSAGE.set_name( 'AHL', l_msg_data );
302: FND_MSG_PUB.add;
303: x_return_status := FND_API.G_RET_STS_ERROR;
304: RETURN;
305: END IF;
306: END IF;
307: END LOOP;
307: END LOOP;
308:
309:
310: -- Check if a valid value is passed in p_threshold_rec.object_version_number if any other threshold information is passed
311: IF ( ( p_threshold_rec.threshold_date <> FND_API.G_MISS_DATE AND
312: p_threshold_rec.program_duration <> FND_API.G_MISS_NUM AND
313: p_threshold_rec.mr_effectivity_id IS NOT NULL ) AND
314: ( p_threshold_rec.object_version_number IS NULL OR
315: p_threshold_rec.object_version_number = FND_API.G_MISS_NUM ) ) THEN
308:
309:
310: -- Check if a valid value is passed in p_threshold_rec.object_version_number if any other threshold information is passed
311: IF ( ( p_threshold_rec.threshold_date <> FND_API.G_MISS_DATE AND
312: p_threshold_rec.program_duration <> FND_API.G_MISS_NUM AND
313: p_threshold_rec.mr_effectivity_id IS NOT NULL ) AND
314: ( p_threshold_rec.object_version_number IS NULL OR
315: p_threshold_rec.object_version_number = FND_API.G_MISS_NUM ) ) THEN
316: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_MRE_OBJ_VERSION_NULL' );
311: IF ( ( p_threshold_rec.threshold_date <> FND_API.G_MISS_DATE AND
312: p_threshold_rec.program_duration <> FND_API.G_MISS_NUM AND
313: p_threshold_rec.mr_effectivity_id IS NOT NULL ) AND
314: ( p_threshold_rec.object_version_number IS NULL OR
315: p_threshold_rec.object_version_number = FND_API.G_MISS_NUM ) ) THEN
316: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_MRE_OBJ_VERSION_NULL' );
317: FND_MSG_PUB.add;
318: x_return_status := FND_API.G_RET_STS_ERROR;
319: RETURN;
314: ( p_threshold_rec.object_version_number IS NULL OR
315: p_threshold_rec.object_version_number = FND_API.G_MISS_NUM ) ) THEN
316: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_MRE_OBJ_VERSION_NULL' );
317: FND_MSG_PUB.add;
318: x_return_status := FND_API.G_RET_STS_ERROR;
319: RETURN;
320: END IF;
321:
322: END validate_api_inputs;
331: BEGIN
332:
333: IF ( p_x_interval_rec.counter_name IS NULL ) THEN
334: p_x_interval_rec.counter_id := NULL;
335: ELSIF ( p_x_interval_rec.counter_name = FND_API.G_MISS_CHAR ) THEN
336: p_x_interval_rec.counter_id := FND_API.G_MISS_NUM;
337: END IF;
338:
339: END clear_lov_attribute_ids;
332:
333: IF ( p_x_interval_rec.counter_name IS NULL ) THEN
334: p_x_interval_rec.counter_id := NULL;
335: ELSIF ( p_x_interval_rec.counter_name = FND_API.G_MISS_CHAR ) THEN
336: p_x_interval_rec.counter_id := FND_API.G_MISS_NUM;
337: END IF;
338:
339: END clear_lov_attribute_ids;
340:
367: FROM AHL_MR_EFFECTIVITIES_V
368: WHERE mr_effectivity_id = c_mr_effectivity_id;
369:
370: BEGIN
371: x_return_status := FND_API.G_RET_STS_SUCCESS;
372:
373: -- Convert / Validate Counter
374: IF ( ( p_x_interval_rec.counter_id IS NOT NULL AND
375: p_x_interval_rec.counter_id <> FND_API.G_MISS_NUM ) OR
371: x_return_status := FND_API.G_RET_STS_SUCCESS;
372:
373: -- Convert / Validate Counter
374: IF ( ( p_x_interval_rec.counter_id IS NOT NULL AND
375: p_x_interval_rec.counter_id <> FND_API.G_MISS_NUM ) OR
376: ( p_x_interval_rec.counter_name IS NOT NULL AND
377: p_x_interval_rec.counter_name <> FND_API.G_MISS_CHAR ) ) THEN
378:
379: OPEN get_item_effectivity( p_mr_effectivity_id );
373: -- Convert / Validate Counter
374: IF ( ( p_x_interval_rec.counter_id IS NOT NULL AND
375: p_x_interval_rec.counter_id <> FND_API.G_MISS_NUM ) OR
376: ( p_x_interval_rec.counter_name IS NOT NULL AND
377: p_x_interval_rec.counter_name <> FND_API.G_MISS_CHAR ) ) THEN
378:
379: OPEN get_item_effectivity( p_mr_effectivity_id );
380:
381: FETCH get_item_effectivity INTO
395: p_counter_name => p_x_interval_rec.counter_name,
396: p_x_counter_id => p_x_interval_rec.counter_id
397: );
398:
399: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
400: FND_MESSAGE.set_name( 'AHL', l_msg_data );
401:
402: IF ( l_msg_data = 'AHL_FMP_INVALID_COUNTER' OR
403: l_msg_data = 'AHL_FMP_TOO_MANY_COUNTERS' ) THEN
401:
402: IF ( l_msg_data = 'AHL_FMP_INVALID_COUNTER' OR
403: l_msg_data = 'AHL_FMP_TOO_MANY_COUNTERS' ) THEN
404: IF ( p_x_interval_rec.counter_name IS NULL OR
405: p_x_interval_rec.counter_name = FND_API.G_MISS_CHAR ) THEN
406: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_x_interval_rec.counter_id ));
407: ELSE
408: FND_MESSAGE.set_token( 'FIELD', p_x_interval_rec.counter_name );
409: END IF;
408: FND_MESSAGE.set_token( 'FIELD', p_x_interval_rec.counter_name );
409: END IF;
410: ELSE
411: IF ( p_x_interval_rec.counter_name IS NULL OR
412: p_x_interval_rec.counter_name = FND_API.G_MISS_CHAR ) THEN
413: FND_MESSAGE.set_token( 'FIELD1', TO_CHAR( p_x_interval_rec.counter_id ) );
414: ELSE
415: FND_MESSAGE.set_token( 'FIELD1', p_x_interval_rec.counter_name );
416: END IF;
455: END IF;
456:
457: -- Fix for bug# 3482307.
458: IF (p_x_interval_rec.earliest_due_value IS NOT NULL AND
459: p_x_interval_rec.earliest_due_value <> FND_API.G_MISS_NUM) THEN
460: l_value := p_x_interval_rec.earliest_due_value;
461: p_x_interval_rec.earliest_due_value := trunc(p_x_interval_rec.earliest_due_value);
462: IF (l_value <> p_x_interval_rec.earliest_due_value) THEN
463: x_fractional_trunc_flag := TRUE;
464: END IF;
465: END IF;
466:
467: IF (p_x_interval_rec.start_value IS NOT NULL AND
468: p_x_interval_rec.start_value <> FND_API.G_MISS_NUM) THEN
469: l_value := p_x_interval_rec.start_value;
470: p_x_interval_rec.start_value := trunc(p_x_interval_rec.start_value);
471: IF (l_value <> p_x_interval_rec.start_value) THEN
472: x_fractional_trunc_flag := TRUE;
473: END IF;
474: END IF;
475:
476: IF (p_x_interval_rec.stop_value IS NOT NULL AND
477: p_x_interval_rec.stop_value <> FND_API.G_MISS_NUM) THEN
478: l_value := p_x_interval_rec.stop_value;
479: p_x_interval_rec.stop_value := trunc(p_x_interval_rec.stop_value);
480: IF (l_value <> p_x_interval_rec.stop_value) THEN
481: x_fractional_trunc_flag := TRUE;
482: END IF;
483: END IF;
484:
485: IF (p_x_interval_rec.interval_value IS NOT NULL AND
486: p_x_interval_rec.interval_value <> FND_API.G_MISS_NUM) THEN
487: l_value := p_x_interval_rec.interval_value;
488: p_x_interval_rec.interval_value := trunc(p_x_interval_rec.interval_value);
489: IF (l_value <> p_x_interval_rec.interval_value) THEN
490: x_fractional_trunc_flag := TRUE;
491: END IF;
492: END IF;
493:
494: IF (p_x_interval_rec.tolerance_before IS NOT NULL AND
495: p_x_interval_rec.tolerance_before <> FND_API.G_MISS_NUM) THEN
496: l_value := p_x_interval_rec.tolerance_before;
497: p_x_interval_rec.tolerance_before := trunc(p_x_interval_rec.tolerance_before);
498: IF (l_value <> p_x_interval_rec.tolerance_before) THEN
499: x_fractional_trunc_flag := TRUE;
500: END IF;
501: END IF;
502:
503: IF (p_x_interval_rec.tolerance_after IS NOT NULL AND
504: p_x_interval_rec.tolerance_after <> FND_API.G_MISS_NUM) THEN
505: l_value := p_x_interval_rec.tolerance_after;
506: p_x_interval_rec.tolerance_after := trunc(p_x_interval_rec.tolerance_after);
507: IF (l_value <> p_x_interval_rec.tolerance_after) THEN
508: x_fractional_trunc_flag := TRUE;
520:
521: BEGIN
522:
523: -- Convert G_MISS values to NULL
524: IF ( p_x_interval_rec.earliest_due_value = FND_API.G_MISS_NUM ) THEN
525: p_x_interval_rec.earliest_due_value := null;
526: END IF;
527:
528: IF ( p_x_interval_rec.start_value = FND_API.G_MISS_NUM ) THEN
524: IF ( p_x_interval_rec.earliest_due_value = FND_API.G_MISS_NUM ) THEN
525: p_x_interval_rec.earliest_due_value := null;
526: END IF;
527:
528: IF ( p_x_interval_rec.start_value = FND_API.G_MISS_NUM ) THEN
529: p_x_interval_rec.start_value := null;
530: END IF;
531:
532: IF ( p_x_interval_rec.stop_value = FND_API.G_MISS_NUM ) THEN
528: IF ( p_x_interval_rec.start_value = FND_API.G_MISS_NUM ) THEN
529: p_x_interval_rec.start_value := null;
530: END IF;
531:
532: IF ( p_x_interval_rec.stop_value = FND_API.G_MISS_NUM ) THEN
533: p_x_interval_rec.stop_value := null;
534: END IF;
535:
536: IF ( p_x_interval_rec.tolerance_before = FND_API.G_MISS_NUM ) THEN
532: IF ( p_x_interval_rec.stop_value = FND_API.G_MISS_NUM ) THEN
533: p_x_interval_rec.stop_value := null;
534: END IF;
535:
536: IF ( p_x_interval_rec.tolerance_before = FND_API.G_MISS_NUM ) THEN
537: p_x_interval_rec.tolerance_before := null;
538: END IF;
539:
540: IF ( p_x_interval_rec.tolerance_after = FND_API.G_MISS_NUM ) THEN
536: IF ( p_x_interval_rec.tolerance_before = FND_API.G_MISS_NUM ) THEN
537: p_x_interval_rec.tolerance_before := null;
538: END IF;
539:
540: IF ( p_x_interval_rec.tolerance_after = FND_API.G_MISS_NUM ) THEN
541: p_x_interval_rec.tolerance_after := null;
542: END IF;
543:
544: IF ( p_x_interval_rec.reset_value = FND_API.G_MISS_NUM ) THEN
540: IF ( p_x_interval_rec.tolerance_after = FND_API.G_MISS_NUM ) THEN
541: p_x_interval_rec.tolerance_after := null;
542: END IF;
543:
544: IF ( p_x_interval_rec.reset_value = FND_API.G_MISS_NUM ) THEN
545: p_x_interval_rec.reset_value := null;
546: END IF;
547:
548: IF ( p_x_interval_rec.start_date = FND_API.G_MISS_DATE ) THEN
544: IF ( p_x_interval_rec.reset_value = FND_API.G_MISS_NUM ) THEN
545: p_x_interval_rec.reset_value := null;
546: END IF;
547:
548: IF ( p_x_interval_rec.start_date = FND_API.G_MISS_DATE ) THEN
549: p_x_interval_rec.start_date := null;
550: END IF;
551:
552: IF ( p_x_interval_rec.stop_date = FND_API.G_MISS_DATE ) THEN
548: IF ( p_x_interval_rec.start_date = FND_API.G_MISS_DATE ) THEN
549: p_x_interval_rec.start_date := null;
550: END IF;
551:
552: IF ( p_x_interval_rec.stop_date = FND_API.G_MISS_DATE ) THEN
553: p_x_interval_rec.stop_date := null;
554: END IF;
555:
556: IF ( p_x_interval_rec.attribute_category = FND_API.G_MISS_CHAR ) THEN
552: IF ( p_x_interval_rec.stop_date = FND_API.G_MISS_DATE ) THEN
553: p_x_interval_rec.stop_date := null;
554: END IF;
555:
556: IF ( p_x_interval_rec.attribute_category = FND_API.G_MISS_CHAR ) THEN
557: p_x_interval_rec.attribute_category := null;
558: END IF;
559:
560: IF ( p_x_interval_rec.attribute1 = FND_API.G_MISS_CHAR ) THEN
556: IF ( p_x_interval_rec.attribute_category = FND_API.G_MISS_CHAR ) THEN
557: p_x_interval_rec.attribute_category := null;
558: END IF;
559:
560: IF ( p_x_interval_rec.attribute1 = FND_API.G_MISS_CHAR ) THEN
561: p_x_interval_rec.attribute1 := null;
562: END IF;
563:
564: IF ( p_x_interval_rec.attribute2 = FND_API.G_MISS_CHAR ) THEN
560: IF ( p_x_interval_rec.attribute1 = FND_API.G_MISS_CHAR ) THEN
561: p_x_interval_rec.attribute1 := null;
562: END IF;
563:
564: IF ( p_x_interval_rec.attribute2 = FND_API.G_MISS_CHAR ) THEN
565: p_x_interval_rec.attribute2 := null;
566: END IF;
567:
568: IF ( p_x_interval_rec.attribute3 = FND_API.G_MISS_CHAR ) THEN
564: IF ( p_x_interval_rec.attribute2 = FND_API.G_MISS_CHAR ) THEN
565: p_x_interval_rec.attribute2 := null;
566: END IF;
567:
568: IF ( p_x_interval_rec.attribute3 = FND_API.G_MISS_CHAR ) THEN
569: p_x_interval_rec.attribute3 := null;
570: END IF;
571:
572: IF ( p_x_interval_rec.attribute4 = FND_API.G_MISS_CHAR ) THEN
568: IF ( p_x_interval_rec.attribute3 = FND_API.G_MISS_CHAR ) THEN
569: p_x_interval_rec.attribute3 := null;
570: END IF;
571:
572: IF ( p_x_interval_rec.attribute4 = FND_API.G_MISS_CHAR ) THEN
573: p_x_interval_rec.attribute4 := null;
574: END IF;
575:
576: IF ( p_x_interval_rec.attribute5 = FND_API.G_MISS_CHAR ) THEN
572: IF ( p_x_interval_rec.attribute4 = FND_API.G_MISS_CHAR ) THEN
573: p_x_interval_rec.attribute4 := null;
574: END IF;
575:
576: IF ( p_x_interval_rec.attribute5 = FND_API.G_MISS_CHAR ) THEN
577: p_x_interval_rec.attribute5 := null;
578: END IF;
579:
580: IF ( p_x_interval_rec.attribute6 = FND_API.G_MISS_CHAR ) THEN
576: IF ( p_x_interval_rec.attribute5 = FND_API.G_MISS_CHAR ) THEN
577: p_x_interval_rec.attribute5 := null;
578: END IF;
579:
580: IF ( p_x_interval_rec.attribute6 = FND_API.G_MISS_CHAR ) THEN
581: p_x_interval_rec.attribute6 := null;
582: END IF;
583:
584: IF ( p_x_interval_rec.attribute7 = FND_API.G_MISS_CHAR ) THEN
580: IF ( p_x_interval_rec.attribute6 = FND_API.G_MISS_CHAR ) THEN
581: p_x_interval_rec.attribute6 := null;
582: END IF;
583:
584: IF ( p_x_interval_rec.attribute7 = FND_API.G_MISS_CHAR ) THEN
585: p_x_interval_rec.attribute7 := null;
586: END IF;
587:
588: IF ( p_x_interval_rec.attribute8 = FND_API.G_MISS_CHAR ) THEN
584: IF ( p_x_interval_rec.attribute7 = FND_API.G_MISS_CHAR ) THEN
585: p_x_interval_rec.attribute7 := null;
586: END IF;
587:
588: IF ( p_x_interval_rec.attribute8 = FND_API.G_MISS_CHAR ) THEN
589: p_x_interval_rec.attribute8 := null;
590: END IF;
591:
592: IF ( p_x_interval_rec.attribute9 = FND_API.G_MISS_CHAR ) THEN
588: IF ( p_x_interval_rec.attribute8 = FND_API.G_MISS_CHAR ) THEN
589: p_x_interval_rec.attribute8 := null;
590: END IF;
591:
592: IF ( p_x_interval_rec.attribute9 = FND_API.G_MISS_CHAR ) THEN
593: p_x_interval_rec.attribute9 := null;
594: END IF;
595:
596: IF ( p_x_interval_rec.attribute10 = FND_API.G_MISS_CHAR ) THEN
592: IF ( p_x_interval_rec.attribute9 = FND_API.G_MISS_CHAR ) THEN
593: p_x_interval_rec.attribute9 := null;
594: END IF;
595:
596: IF ( p_x_interval_rec.attribute10 = FND_API.G_MISS_CHAR ) THEN
597: p_x_interval_rec.attribute10 := null;
598: END IF;
599:
600: IF ( p_x_interval_rec.attribute11 = FND_API.G_MISS_CHAR ) THEN
596: IF ( p_x_interval_rec.attribute10 = FND_API.G_MISS_CHAR ) THEN
597: p_x_interval_rec.attribute10 := null;
598: END IF;
599:
600: IF ( p_x_interval_rec.attribute11 = FND_API.G_MISS_CHAR ) THEN
601: p_x_interval_rec.attribute11 := null;
602: END IF;
603:
604: IF ( p_x_interval_rec.attribute12 = FND_API.G_MISS_CHAR ) THEN
600: IF ( p_x_interval_rec.attribute11 = FND_API.G_MISS_CHAR ) THEN
601: p_x_interval_rec.attribute11 := null;
602: END IF;
603:
604: IF ( p_x_interval_rec.attribute12 = FND_API.G_MISS_CHAR ) THEN
605: p_x_interval_rec.attribute12 := null;
606: END IF;
607:
608: IF ( p_x_interval_rec.attribute13 = FND_API.G_MISS_CHAR ) THEN
604: IF ( p_x_interval_rec.attribute12 = FND_API.G_MISS_CHAR ) THEN
605: p_x_interval_rec.attribute12 := null;
606: END IF;
607:
608: IF ( p_x_interval_rec.attribute13 = FND_API.G_MISS_CHAR ) THEN
609: p_x_interval_rec.attribute13 := null;
610: END IF;
611:
612: IF ( p_x_interval_rec.attribute14 = FND_API.G_MISS_CHAR ) THEN
608: IF ( p_x_interval_rec.attribute13 = FND_API.G_MISS_CHAR ) THEN
609: p_x_interval_rec.attribute13 := null;
610: END IF;
611:
612: IF ( p_x_interval_rec.attribute14 = FND_API.G_MISS_CHAR ) THEN
613: p_x_interval_rec.attribute14 := null;
614: END IF;
615:
616: IF ( p_x_interval_rec.attribute15 = FND_API.G_MISS_CHAR ) THEN
612: IF ( p_x_interval_rec.attribute14 = FND_API.G_MISS_CHAR ) THEN
613: p_x_interval_rec.attribute14 := null;
614: END IF;
615:
616: IF ( p_x_interval_rec.attribute15 = FND_API.G_MISS_CHAR ) THEN
617: p_x_interval_rec.attribute15 := null;
618: END IF;
619:
620: END default_missing_attributes;
696: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_INVALID_INTERVAL_REC' );
697: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_x_interval_rec ) );
698: FND_MSG_PUB.add;
699: CLOSE get_old_rec;
700: RAISE FND_API.G_EXC_ERROR;
701: END IF;
702:
703: CLOSE get_old_rec;
704:
706: IF ( p_x_interval_rec.counter_id IS NULL ) THEN
707: p_x_interval_rec.counter_id := l_old_interval_rec.counter_id;
708: END IF;
709:
710: IF ( p_x_interval_rec.interval_value = FND_API.G_MISS_NUM ) THEN
711: p_x_interval_rec.interval_value := null;
712: ELSIF ( p_x_interval_rec.interval_value IS NULL ) THEN
713: p_x_interval_rec.interval_value := l_old_interval_rec.interval_value;
714: END IF;
712: ELSIF ( p_x_interval_rec.interval_value IS NULL ) THEN
713: p_x_interval_rec.interval_value := l_old_interval_rec.interval_value;
714: END IF;
715:
716: IF ( p_x_interval_rec.earliest_due_value = FND_API.G_MISS_NUM ) THEN
717: p_x_interval_rec.earliest_due_value := null;
718: ELSIF ( p_x_interval_rec.earliest_due_value IS NULL ) THEN
719: p_x_interval_rec.earliest_due_value := l_old_interval_rec.earliest_due_value;
720: END IF;
718: ELSIF ( p_x_interval_rec.earliest_due_value IS NULL ) THEN
719: p_x_interval_rec.earliest_due_value := l_old_interval_rec.earliest_due_value;
720: END IF;
721:
722: IF ( p_x_interval_rec.start_value = FND_API.G_MISS_NUM ) THEN
723: p_x_interval_rec.start_value := null;
724: ELSIF ( p_x_interval_rec.start_value IS NULL ) THEN
725: p_x_interval_rec.start_value := l_old_interval_rec.start_value;
726: END IF;
724: ELSIF ( p_x_interval_rec.start_value IS NULL ) THEN
725: p_x_interval_rec.start_value := l_old_interval_rec.start_value;
726: END IF;
727:
728: IF ( p_x_interval_rec.stop_value = FND_API.G_MISS_NUM ) THEN
729: p_x_interval_rec.stop_value := null;
730: ELSIF ( p_x_interval_rec.stop_value IS NULL ) THEN
731: p_x_interval_rec.stop_value := l_old_interval_rec.stop_value;
732: END IF;
730: ELSIF ( p_x_interval_rec.stop_value IS NULL ) THEN
731: p_x_interval_rec.stop_value := l_old_interval_rec.stop_value;
732: END IF;
733:
734: IF ( p_x_interval_rec.tolerance_before = FND_API.G_MISS_NUM ) THEN
735: p_x_interval_rec.tolerance_before := null;
736: ELSIF ( p_x_interval_rec.tolerance_before IS NULL ) THEN
737: p_x_interval_rec.tolerance_before := l_old_interval_rec.tolerance_before;
738: END IF;
736: ELSIF ( p_x_interval_rec.tolerance_before IS NULL ) THEN
737: p_x_interval_rec.tolerance_before := l_old_interval_rec.tolerance_before;
738: END IF;
739:
740: IF ( p_x_interval_rec.tolerance_after = FND_API.G_MISS_NUM ) THEN
741: p_x_interval_rec.tolerance_after := null;
742: ELSIF ( p_x_interval_rec.tolerance_after IS NULL ) THEN
743: p_x_interval_rec.tolerance_after := l_old_interval_rec.tolerance_after;
744: END IF;
742: ELSIF ( p_x_interval_rec.tolerance_after IS NULL ) THEN
743: p_x_interval_rec.tolerance_after := l_old_interval_rec.tolerance_after;
744: END IF;
745:
746: IF ( p_x_interval_rec.reset_value = FND_API.G_MISS_NUM ) THEN
747: p_x_interval_rec.reset_value := null;
748: ELSIF ( p_x_interval_rec.reset_value IS NULL ) THEN
749: p_x_interval_rec.reset_value := l_old_interval_rec.reset_value;
750: END IF;
749: p_x_interval_rec.reset_value := l_old_interval_rec.reset_value;
750: END IF;
751:
752:
753: IF ( p_x_interval_rec.start_date = FND_API.G_MISS_DATE ) THEN
754: p_x_interval_rec.start_date := null;
755: ELSIF ( p_x_interval_rec.start_date IS NULL ) THEN
756: p_x_interval_rec.start_date := l_old_interval_rec.start_date;
757: END IF;
755: ELSIF ( p_x_interval_rec.start_date IS NULL ) THEN
756: p_x_interval_rec.start_date := l_old_interval_rec.start_date;
757: END IF;
758:
759: IF ( p_x_interval_rec.stop_date = FND_API.G_MISS_DATE ) THEN
760: p_x_interval_rec.stop_date := null;
761: ELSIF ( p_x_interval_rec.stop_date IS NULL ) THEN
762: p_x_interval_rec.stop_date := l_old_interval_rec.stop_date;
763: END IF;
761: ELSIF ( p_x_interval_rec.stop_date IS NULL ) THEN
762: p_x_interval_rec.stop_date := l_old_interval_rec.stop_date;
763: END IF;
764:
765: IF ( p_x_interval_rec.attribute_category = FND_API.G_MISS_CHAR ) THEN
766: p_x_interval_rec.attribute_category := null;
767: ELSIF ( p_x_interval_rec.attribute_category IS NULL ) THEN
768: p_x_interval_rec.attribute_category := l_old_interval_rec.attribute_category;
769: END IF;
767: ELSIF ( p_x_interval_rec.attribute_category IS NULL ) THEN
768: p_x_interval_rec.attribute_category := l_old_interval_rec.attribute_category;
769: END IF;
770:
771: IF ( p_x_interval_rec.attribute1 = FND_API.G_MISS_CHAR ) THEN
772: p_x_interval_rec.attribute1 := null;
773: ELSIF ( p_x_interval_rec.attribute1 IS NULL ) THEN
774: p_x_interval_rec.attribute1 := l_old_interval_rec.attribute1;
775: END IF;
773: ELSIF ( p_x_interval_rec.attribute1 IS NULL ) THEN
774: p_x_interval_rec.attribute1 := l_old_interval_rec.attribute1;
775: END IF;
776:
777: IF ( p_x_interval_rec.attribute2 = FND_API.G_MISS_CHAR ) THEN
778: p_x_interval_rec.attribute2 := null;
779: ELSIF ( p_x_interval_rec.attribute2 IS NULL ) THEN
780: p_x_interval_rec.attribute2 := l_old_interval_rec.attribute2;
781: END IF;
779: ELSIF ( p_x_interval_rec.attribute2 IS NULL ) THEN
780: p_x_interval_rec.attribute2 := l_old_interval_rec.attribute2;
781: END IF;
782:
783: IF ( p_x_interval_rec.attribute3 = FND_API.G_MISS_CHAR ) THEN
784: p_x_interval_rec.attribute3 := null;
785: ELSIF ( p_x_interval_rec.attribute3 IS NULL ) THEN
786: p_x_interval_rec.attribute3 := l_old_interval_rec.attribute3;
787: END IF;
785: ELSIF ( p_x_interval_rec.attribute3 IS NULL ) THEN
786: p_x_interval_rec.attribute3 := l_old_interval_rec.attribute3;
787: END IF;
788:
789: IF ( p_x_interval_rec.attribute4 = FND_API.G_MISS_CHAR ) THEN
790: p_x_interval_rec.attribute4 := null;
791: ELSIF ( p_x_interval_rec.attribute4 IS NULL ) THEN
792: p_x_interval_rec.attribute4 := l_old_interval_rec.attribute4;
793: END IF;
791: ELSIF ( p_x_interval_rec.attribute4 IS NULL ) THEN
792: p_x_interval_rec.attribute4 := l_old_interval_rec.attribute4;
793: END IF;
794:
795: IF ( p_x_interval_rec.attribute5 = FND_API.G_MISS_CHAR ) THEN
796: p_x_interval_rec.attribute5 := null;
797: ELSIF ( p_x_interval_rec.attribute5 IS NULL ) THEN
798: p_x_interval_rec.attribute5 := l_old_interval_rec.attribute5;
799: END IF;
797: ELSIF ( p_x_interval_rec.attribute5 IS NULL ) THEN
798: p_x_interval_rec.attribute5 := l_old_interval_rec.attribute5;
799: END IF;
800:
801: IF ( p_x_interval_rec.attribute6 = FND_API.G_MISS_CHAR ) THEN
802: p_x_interval_rec.attribute6 := null;
803: ELSIF ( p_x_interval_rec.attribute6 IS NULL ) THEN
804: p_x_interval_rec.attribute6 := l_old_interval_rec.attribute6;
805: END IF;
803: ELSIF ( p_x_interval_rec.attribute6 IS NULL ) THEN
804: p_x_interval_rec.attribute6 := l_old_interval_rec.attribute6;
805: END IF;
806:
807: IF ( p_x_interval_rec.attribute7 = FND_API.G_MISS_CHAR ) THEN
808: p_x_interval_rec.attribute7 := null;
809: ELSIF ( p_x_interval_rec.attribute7 IS NULL ) THEN
810: p_x_interval_rec.attribute7 := l_old_interval_rec.attribute7;
811: END IF;
809: ELSIF ( p_x_interval_rec.attribute7 IS NULL ) THEN
810: p_x_interval_rec.attribute7 := l_old_interval_rec.attribute7;
811: END IF;
812:
813: IF ( p_x_interval_rec.attribute8 = FND_API.G_MISS_CHAR ) THEN
814: p_x_interval_rec.attribute8 := null;
815: ELSIF ( p_x_interval_rec.attribute8 IS NULL ) THEN
816: p_x_interval_rec.attribute8 := l_old_interval_rec.attribute8;
817: END IF;
815: ELSIF ( p_x_interval_rec.attribute8 IS NULL ) THEN
816: p_x_interval_rec.attribute8 := l_old_interval_rec.attribute8;
817: END IF;
818:
819: IF ( p_x_interval_rec.attribute9 = FND_API.G_MISS_CHAR ) THEN
820: p_x_interval_rec.attribute9 := null;
821: ELSIF ( p_x_interval_rec.attribute9 IS NULL ) THEN
822: p_x_interval_rec.attribute9 := l_old_interval_rec.attribute9;
823: END IF;
821: ELSIF ( p_x_interval_rec.attribute9 IS NULL ) THEN
822: p_x_interval_rec.attribute9 := l_old_interval_rec.attribute9;
823: END IF;
824:
825: IF ( p_x_interval_rec.attribute10 = FND_API.G_MISS_CHAR ) THEN
826: p_x_interval_rec.attribute10 := null;
827: ELSIF ( p_x_interval_rec.attribute10 IS NULL ) THEN
828: p_x_interval_rec.attribute10 := l_old_interval_rec.attribute10;
829: END IF;
827: ELSIF ( p_x_interval_rec.attribute10 IS NULL ) THEN
828: p_x_interval_rec.attribute10 := l_old_interval_rec.attribute10;
829: END IF;
830:
831: IF ( p_x_interval_rec.attribute11 = FND_API.G_MISS_CHAR ) THEN
832: p_x_interval_rec.attribute11 := null;
833: ELSIF ( p_x_interval_rec.attribute11 IS NULL ) THEN
834: p_x_interval_rec.attribute11 := l_old_interval_rec.attribute11;
835: END IF;
833: ELSIF ( p_x_interval_rec.attribute11 IS NULL ) THEN
834: p_x_interval_rec.attribute11 := l_old_interval_rec.attribute11;
835: END IF;
836:
837: IF ( p_x_interval_rec.attribute12 = FND_API.G_MISS_CHAR ) THEN
838: p_x_interval_rec.attribute12 := null;
839: ELSIF ( p_x_interval_rec.attribute12 IS NULL ) THEN
840: p_x_interval_rec.attribute12 := l_old_interval_rec.attribute12;
841: END IF;
839: ELSIF ( p_x_interval_rec.attribute12 IS NULL ) THEN
840: p_x_interval_rec.attribute12 := l_old_interval_rec.attribute12;
841: END IF;
842:
843: IF ( p_x_interval_rec.attribute13 = FND_API.G_MISS_CHAR ) THEN
844: p_x_interval_rec.attribute13 := null;
845: ELSIF ( p_x_interval_rec.attribute13 IS NULL ) THEN
846: p_x_interval_rec.attribute13 := l_old_interval_rec.attribute13;
847: END IF;
845: ELSIF ( p_x_interval_rec.attribute13 IS NULL ) THEN
846: p_x_interval_rec.attribute13 := l_old_interval_rec.attribute13;
847: END IF;
848:
849: IF ( p_x_interval_rec.attribute14 = FND_API.G_MISS_CHAR ) THEN
850: p_x_interval_rec.attribute14 := null;
851: ELSIF ( p_x_interval_rec.attribute14 IS NULL ) THEN
852: p_x_interval_rec.attribute14 := l_old_interval_rec.attribute14;
853: END IF;
851: ELSIF ( p_x_interval_rec.attribute14 IS NULL ) THEN
852: p_x_interval_rec.attribute14 := l_old_interval_rec.attribute14;
853: END IF;
854:
855: IF ( p_x_interval_rec.attribute15 = FND_API.G_MISS_CHAR ) THEN
856: p_x_interval_rec.attribute15 := null;
857: ELSIF ( p_x_interval_rec.attribute15 IS NULL ) THEN
858: p_x_interval_rec.attribute15 := l_old_interval_rec.attribute15;
859: END IF;
868: )
869: IS
870:
871: BEGIN
872: x_return_status := FND_API.G_RET_STS_SUCCESS;
873:
874: -- Check if the Counter ID does not contain a null value.
875: IF ( p_interval_rec.dml_operation <> 'D' ) THEN
876: IF ( ( p_interval_rec.dml_operation = 'C' AND
875: IF ( p_interval_rec.dml_operation <> 'D' ) THEN
876: IF ( ( p_interval_rec.dml_operation = 'C' AND
877: p_interval_rec.counter_id IS NULL AND
878: p_interval_rec.counter_name IS NULL ) OR
879: ( p_interval_rec.counter_id = FND_API.G_MISS_NUM AND
880: p_interval_rec.counter_name = FND_API.G_MISS_CHAR ) ) THEN
881: FND_MESSAGE.set_name( 'AHL','AHL_FMP_COUNTER_NULL' );
882: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
883: FND_MSG_PUB.add;
876: IF ( ( p_interval_rec.dml_operation = 'C' AND
877: p_interval_rec.counter_id IS NULL AND
878: p_interval_rec.counter_name IS NULL ) OR
879: ( p_interval_rec.counter_id = FND_API.G_MISS_NUM AND
880: p_interval_rec.counter_name = FND_API.G_MISS_CHAR ) ) THEN
881: FND_MESSAGE.set_name( 'AHL','AHL_FMP_COUNTER_NULL' );
882: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
883: FND_MSG_PUB.add;
884: END IF;
895:
896: -- Check if the earliest due Value does not contain an invalid value.
897: IF ( p_interval_rec.dml_operation <> 'D' ) THEN
898: IF ( p_interval_rec.earliest_due_value IS NOT NULL AND
899: p_interval_rec.earliest_due_value <> FND_API.G_MISS_NUM AND
900: p_interval_rec.earliest_due_value < 0 ) THEN
901: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_EARL_DUE' );
902: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.earliest_due_value ) );
903: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
907:
908: -- Check if the Start Value does not contain an invalid value.
909: IF ( p_interval_rec.dml_operation <> 'D' ) THEN
910: IF ( p_interval_rec.start_value IS NOT NULL AND
911: p_interval_rec.start_value <> FND_API.G_MISS_NUM AND
912: p_interval_rec.start_value < 0 ) THEN
913: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_START' );
914: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.start_value ) );
915: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
919:
920: -- Check if the Stop Value does not contain an invalid value.
921: IF ( p_interval_rec.dml_operation <> 'D' ) THEN
922: IF ( p_interval_rec.stop_value IS NOT NULL AND
923: p_interval_rec.stop_value <> FND_API.G_MISS_NUM AND
924: p_interval_rec.stop_value <= 0 ) THEN
925: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_STOP' );
926: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.stop_value ) );
927: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
931:
932: -- Check if the Tolerance Before does not contain an invalid value.
933: IF ( p_interval_rec.dml_operation <> 'D' ) THEN
934: IF ( p_interval_rec.tolerance_before IS NOT NULL AND
935: p_interval_rec.tolerance_before <> FND_API.G_MISS_NUM AND
936: p_interval_rec.tolerance_before < 0 ) THEN
937: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_TOLERANCE_BF' );
938: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.tolerance_before ) );
939: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
943:
944: -- Check if the Tolerance After does not contain an invalid value.
945: IF ( p_interval_rec.dml_operation <> 'D' ) THEN
946: IF ( p_interval_rec.tolerance_after IS NOT NULL AND
947: p_interval_rec.tolerance_after <> FND_API.G_MISS_NUM AND
948: p_interval_rec.tolerance_after < 0 ) THEN
949: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_TOLERANCE_AF' );
950: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.tolerance_after ) );
951: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
955:
956: -- Check if the Reset After does not contain an invalid value.
957: IF ( p_interval_rec.dml_operation <> 'D' ) THEN
958: IF ( p_interval_rec.reset_value IS NOT NULL AND
959: p_interval_rec.reset_value <> FND_API.G_MISS_NUM AND
960: p_interval_rec.reset_value < 0 ) THEN
961: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_RESET_VALUE' );
962: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.reset_value ) );
963: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
967:
968: -- Check if the mandatory Interval ID column contains a null value.
969: IF ( p_interval_rec.dml_operation <> 'C' ) THEN
970: IF ( p_interval_rec.mr_interval_id IS NULL OR
971: p_interval_rec.mr_interval_id = FND_API.G_MISS_NUM ) THEN
972: FND_MESSAGE.set_name( 'AHL','AHL_FMP_MR_INTERVAL_ID_NULL' );
973: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
974: FND_MSG_PUB.add;
975: END IF;
977:
978: -- Check if the mandatory Object Version Number column contains a null value.
979: IF ( p_interval_rec.dml_operation <> 'C' ) THEN
980: IF ( p_interval_rec.object_version_number IS NULL OR
981: p_interval_rec.object_version_number = FND_API.G_MISS_NUM ) THEN
982: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INT_OBJ_VERSION_NULL' );
983: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
984: FND_MSG_PUB.add;
985: END IF;
1002: l_msg_data VARCHAR2(2000);
1003: l_initial_reading NUMBER;
1004:
1005: BEGIN
1006: x_return_status := FND_API.G_RET_STS_SUCCESS;
1007:
1008: -- Check if the appropriate attributes are passed for PM Programs
1009: IF ( p_mr_type_code = 'PROGRAM' AND
1010: ( p_interval_rec.tolerance_before IS NOT NULL OR
1022: IF ( ( p_mr_type_code IS NULL OR
1023: p_mr_type_code <> 'PROGRAM' ) AND
1024: ( p_interval_rec.dml_operation = 'C' AND
1025: p_interval_rec.interval_value IS NULL ) OR
1026: ( p_interval_rec.interval_value = FND_API.G_MISS_NUM ) ) THEN
1027: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INTERVAL_NULL' );
1028: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1029: FND_MSG_PUB.add;
1030: END IF;
1256: GROUP BY counter_name
1257: HAVING count(*) > 1;
1258:
1259: BEGIN
1260: x_return_status := FND_API.G_RET_STS_SUCCESS;
1261:
1262: -- Check whether any duplicate Interval record (based on Counter) exist
1263: -- For Preventive Maintenance Programs
1264:
1279: FND_MSG_PUB.add;
1280: END LOOP;
1281:
1282: IF ( get_pm_pgm_dup_rec%ROWCOUNT > 0 ) THEN
1283: x_return_status := FND_API.G_RET_STS_ERROR;
1284: END IF;
1285:
1286: CLOSE get_pm_pgm_dup_rec;
1287: RETURN;
1308: END LOOP;
1309:
1310: IF ( get_dup_rec%ROWCOUNT > 0 ) THEN
1311: CLOSE get_dup_rec;
1312: x_return_status := FND_API.G_RET_STS_ERROR;
1313: RETURN;
1314: END IF;
1315:
1316: CLOSE get_dup_rec;
1339: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_OVERLAP_DATE_RANGE' );
1340: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( l_interval_rec ) );
1341: FND_MSG_PUB.add;
1342: CLOSE get_recs_for_date_range;
1343: x_return_status := FND_API.G_RET_STS_ERROR;
1344: RETURN;
1345: END IF;
1346:
1347: l_prev_counter_id := l_interval_rec.counter_id;
1373: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_OVERLAP_VALUE_RANGE' );
1374: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( l_interval_rec ) );
1375: FND_MSG_PUB.add;
1376: CLOSE get_recs_for_value_range;
1377: x_return_status := FND_API.G_RET_STS_ERROR;
1378: RETURN;
1379: END IF;
1380:
1381: IF ( l_prev_counter_id IS NOT NULL AND
1385: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_OVERLAP_VALUE_RANGE' );
1386: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( l_interval_rec ) );
1387: FND_MSG_PUB.add;
1388: CLOSE get_recs_for_value_range;
1389: x_return_status := FND_API.G_RET_STS_ERROR;
1390: RETURN;
1391: END IF;
1392:
1393: l_prev_counter_id := l_interval_rec.counter_id;
1410: END LOOP;
1411:
1412: IF ( check_unique_reset_value%ROWCOUNT > 0 ) THEN
1413: CLOSE check_unique_reset_value;
1414: x_return_status := FND_API.G_RET_STS_ERROR;
1415: RETURN;
1416: END IF;
1417:
1418: CLOSE check_unique_reset_value;
1475: l_old_rec.program_duration_uom_code;
1476:
1477: CLOSE get_old_rec;
1478:
1479: IF ( p_x_threshold_rec.threshold_date = FND_API.G_MISS_DATE ) THEN
1480: p_x_threshold_rec.threshold_date := null;
1481: ELSIF ( p_x_threshold_rec.threshold_date IS NULL ) THEN
1482: p_x_threshold_rec.threshold_date := l_old_rec.threshold_date;
1483: END IF;
1481: ELSIF ( p_x_threshold_rec.threshold_date IS NULL ) THEN
1482: p_x_threshold_rec.threshold_date := l_old_rec.threshold_date;
1483: END IF;
1484:
1485: IF ( p_x_threshold_rec.program_duration = FND_API.G_MISS_NUM ) THEN
1486: p_x_threshold_rec.program_duration := null;
1487: ELSIF ( p_x_threshold_rec.program_duration IS NULL ) THEN
1488: p_x_threshold_rec.program_duration := l_old_rec.program_duration;
1489: END IF;
1487: ELSIF ( p_x_threshold_rec.program_duration IS NULL ) THEN
1488: p_x_threshold_rec.program_duration := l_old_rec.program_duration;
1489: END IF;
1490:
1491: IF ( p_x_threshold_rec.program_duration_uom_code = FND_API.G_MISS_CHAR ) THEN
1492: p_x_threshold_rec.program_duration_uom_code := null;
1493: ELSIF ( p_x_threshold_rec.program_duration_uom_code IS NULL ) THEN
1494: p_x_threshold_rec.program_duration_uom_code := l_old_rec.program_duration_uom_code;
1495: END IF;
1515: l_mr_status_code VARCHAR2(30);
1516: l_pm_install_flag VARCHAR2(1);
1517:
1518: BEGIN
1519: x_return_status := FND_API.G_RET_STS_SUCCESS;
1520:
1521: -- Default unchanged value of Threshold attributes
1522: default_threshold_attributes
1523: (
1528: IF ( p_x_threshold_rec.threshold_date IS NOT NULL AND
1529: p_repetitive_flag = 'Y' ) THEN
1530: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_THRESHOLD' );
1531: FND_MSG_PUB.add;
1532: x_return_status := FND_API.G_RET_STS_ERROR;
1533: RETURN;
1534: END IF;
1535:
1536: -- Check if the Threshold date is not set for PM Programs
1538: p_appln_code= 'PM' AND
1539: p_mr_type_code = 'PROGRAM' ) THEN
1540: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_PGM_THRESHOLD' );
1541: FND_MSG_PUB.add;
1542: x_return_status := FND_API.G_RET_STS_ERROR;
1543: RETURN;
1544: END IF;
1545:
1546: -- Check if the Program Duration is not specified for PM Activities.
1548: p_appln_code = 'PM' AND
1549: p_mr_type_code = 'ACTIVITY' ) THEN
1550: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_ACT_PGM_DURATION' );
1551: FND_MSG_PUB.add;
1552: x_return_status := FND_API.G_RET_STS_ERROR;
1553: RETURN;
1554: END IF;
1555:
1556: -- Check if the Program Duration is a positive number.
1557: IF ( p_x_threshold_rec.program_duration IS NOT NULL AND
1558: p_x_threshold_rec.program_duration <= 0 ) THEN
1559: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_PGM_DUR_INVALID' );
1560: FND_MSG_PUB.add;
1561: x_return_status := FND_API.G_RET_STS_ERROR;
1562: RETURN;
1563: END IF;
1564:
1565: -- Check if the Program Duration is specified then the UOM should be specified.
1566: IF ( p_x_threshold_rec.program_duration IS NOT NULL AND
1567: p_x_threshold_rec.program_duration_uom_code IS NULL ) THEN
1568: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_PGM_DUR_UOM_NULL' );
1569: FND_MSG_PUB.add;
1570: x_return_status := FND_API.G_RET_STS_ERROR;
1571: RETURN;
1572: END IF;
1573:
1574: -- Check if the Program Duration UOM is a valid value.
1582: p_lookup_meaning => NULL,
1583: p_x_lookup_code => p_x_threshold_rec.program_duration_uom_code
1584: );
1585:
1586: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
1587: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_INV_PGM_DUR_UOM' );
1588: FND_MSG_PUB.add;
1589: x_return_status := FND_API.G_RET_STS_ERROR;
1590: RETURN;
1585:
1586: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
1587: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_INV_PGM_DUR_UOM' );
1588: FND_MSG_PUB.add;
1589: x_return_status := FND_API.G_RET_STS_ERROR;
1590: RETURN;
1591: END IF;
1592: END IF;
1593:
1596: IF G_APPLN_USAGE IS NULL
1597: THEN
1598: FND_MESSAGE.SET_NAME('AHL','AHL_COM_APP_PRFL_UNDEF');
1599: FND_MSG_PUB.ADD;
1600: x_return_status := FND_API.G_RET_STS_ERROR;
1601: IF G_DEBUG = 'Y' THEN
1602: AHL_DEBUG_PUB.debug('APPLN USAGE CODE IS NULL IN VALIDATE_API_INPUTS' );
1603: END IF;
1604: END IF;
1647: p_mr_header_id => p_mr_header_id,
1648: p_effectivity_id => p_x_threshold_rec.MR_EFFECTIVITY_ID,
1649: p_eff_obj_version => p_x_threshold_rec.OBJECT_VERSION_NUMBER
1650: );
1651: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
1652: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_PROGRAM_DURATION' );
1653: FND_MSG_PUB.add;
1654: x_return_status := FND_API.G_RET_STS_ERROR;
1655: RETURN;
1650: );
1651: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
1652: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_PROGRAM_DURATION' );
1653: FND_MSG_PUB.add;
1654: x_return_status := FND_API.G_RET_STS_ERROR;
1655: RETURN;
1656: END IF;
1657: END IF;
1658:
1666: x_msg_data => l_msg_data,
1667: p_effectivity_id => p_x_threshold_rec.MR_EFFECTIVITY_ID,
1668: p_eff_obj_version => p_x_threshold_rec.OBJECT_VERSION_NUMBER
1669: );
1670: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
1671: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_PROGRAM_DURATION' );
1672: FND_MSG_PUB.add;
1673: x_return_status := FND_API.G_RET_STS_ERROR;
1674: RETURN;
1669: );
1670: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
1671: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_PROGRAM_DURATION' );
1672: FND_MSG_PUB.add;
1673: x_return_status := FND_API.G_RET_STS_ERROR;
1674: RETURN;
1675: END IF;
1676: END IF;
1677:
1691: -- If the record does not exist, then, abort API.
1692: IF ( SQL%ROWCOUNT = 0 ) THEN
1693: FND_MESSAGE.set_name('AHL','AHL_FMP_EFF_RECORD_CHANGED');
1694: FND_MSG_PUB.add;
1695: x_return_status := FND_API.G_RET_STS_ERROR;
1696: RETURN;
1697: END IF;
1698:
1699: END IF;
1702:
1703: PROCEDURE process_interval
1704: (
1705: p_api_version IN NUMBER := '1.0',
1706: p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE,
1707: p_commit IN VARCHAR2 := FND_API.G_FALSE,
1708: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1709: p_default IN VARCHAR2 := FND_API.G_FALSE,
1710: p_module_type IN VARCHAR2 := NULL,
1703: PROCEDURE process_interval
1704: (
1705: p_api_version IN NUMBER := '1.0',
1706: p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE,
1707: p_commit IN VARCHAR2 := FND_API.G_FALSE,
1708: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1709: p_default IN VARCHAR2 := FND_API.G_FALSE,
1710: p_module_type IN VARCHAR2 := NULL,
1711: x_return_status OUT NOCOPY VARCHAR2,
1704: (
1705: p_api_version IN NUMBER := '1.0',
1706: p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE,
1707: p_commit IN VARCHAR2 := FND_API.G_FALSE,
1708: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1709: p_default IN VARCHAR2 := FND_API.G_FALSE,
1710: p_module_type IN VARCHAR2 := NULL,
1711: x_return_status OUT NOCOPY VARCHAR2,
1712: x_msg_count OUT NOCOPY NUMBER,
1705: p_api_version IN NUMBER := '1.0',
1706: p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE,
1707: p_commit IN VARCHAR2 := FND_API.G_FALSE,
1708: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1709: p_default IN VARCHAR2 := FND_API.G_FALSE,
1710: p_module_type IN VARCHAR2 := NULL,
1711: x_return_status OUT NOCOPY VARCHAR2,
1712: x_msg_count OUT NOCOPY NUMBER,
1713: x_msg_data OUT NOCOPY VARCHAR2,
1725: l_fractional_trunc_flag BOOLEAN := FALSE;
1726:
1727: BEGIN
1728: -- Initialize API return status to success
1729: x_return_status := FND_API.G_RET_STS_SUCCESS;
1730:
1731: -- Standard Start of API savepoint
1732: SAVEPOINT process_interval_PVT;
1733:
1731: -- Standard Start of API savepoint
1732: SAVEPOINT process_interval_PVT;
1733:
1734: -- Standard call to check for call compatibility.
1735: IF NOT FND_API.compatible_api_call
1736: (
1737: l_api_version,
1738: p_api_version,
1739: G_API_NAME,
1739: G_API_NAME,
1740: G_PKG_NAME
1741: )
1742: THEN
1743: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1744: END IF;
1745:
1746: -- Initialize message list if p_init_msg_list is set to TRUE.
1747: IF FND_API.to_boolean( p_init_msg_list ) THEN
1743: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1744: END IF;
1745:
1746: -- Initialize message list if p_init_msg_list is set to TRUE.
1747: IF FND_API.to_boolean( p_init_msg_list ) THEN
1748: FND_MSG_PUB.initialize;
1749: END IF;
1750:
1751: -- Enable Debug (optional)
1773: p_super_user
1774: );
1775:
1776: -- If any severe error occurs, then, abort API.
1777: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1778: RAISE FND_API.G_EXC_ERROR;
1779: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1780: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1781: END IF;
1774: );
1775:
1776: -- If any severe error occurs, then, abort API.
1777: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1778: RAISE FND_API.G_EXC_ERROR;
1779: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1780: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1781: END IF;
1782:
1775:
1776: -- If any severe error occurs, then, abort API.
1777: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1778: RAISE FND_API.G_EXC_ERROR;
1779: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1780: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1781: END IF;
1782:
1783: -- Get the Details for the given MR
1776: -- If any severe error occurs, then, abort API.
1777: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1778: RAISE FND_API.G_EXC_ERROR;
1779: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1780: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1781: END IF;
1782:
1783: -- Get the Details for the given MR
1784: get_mr_header_details
1801:
1802: );
1803:
1804: -- If any severe error occurs, then, abort API.
1805: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1806: RAISE FND_API.G_EXC_ERROR;
1807: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1808: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1809: END IF;
1802: );
1803:
1804: -- If any severe error occurs, then, abort API.
1805: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1806: RAISE FND_API.G_EXC_ERROR;
1807: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1808: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1809: END IF;
1810:
1803:
1804: -- If any severe error occurs, then, abort API.
1805: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1806: RAISE FND_API.G_EXC_ERROR;
1807: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1808: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1809: END IF;
1810:
1811: -- If the module type is JSP, then default values for ID columns of LOV attributes
1804: -- If any severe error occurs, then, abort API.
1805: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1806: RAISE FND_API.G_EXC_ERROR;
1807: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1808: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1809: END IF;
1810:
1811: -- If the module type is JSP, then default values for ID columns of LOV attributes
1812: IF ( p_module_type = 'JSP' ) THEN
1820: END LOOP;
1821: END IF;
1822:
1823: -- Convert Values into Ids.
1824: IF ( p_validation_level = FND_API.G_VALID_LEVEL_FULL ) THEN
1825: FOR i IN 1..p_x_interval_tbl.count LOOP
1826: IF ( p_x_interval_tbl(i).dml_operation <> 'D' ) THEN
1827: convert_values_to_ids
1828: (
1831: l_return_status -- OUT
1832: );
1833:
1834: -- If any severe error occurs, then, abort API.
1835: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1836: RAISE FND_API.G_EXC_ERROR;
1837: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1838: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1839: END IF;
1832: );
1833:
1834: -- If any severe error occurs, then, abort API.
1835: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1836: RAISE FND_API.G_EXC_ERROR;
1837: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1838: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1839: END IF;
1840: END IF;
1833:
1834: -- If any severe error occurs, then, abort API.
1835: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1836: RAISE FND_API.G_EXC_ERROR;
1837: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1838: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1839: END IF;
1840: END IF;
1841: END LOOP;
1834: -- If any severe error occurs, then, abort API.
1835: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1836: RAISE FND_API.G_EXC_ERROR;
1837: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1838: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1839: END IF;
1840: END IF;
1841: END LOOP;
1842: END IF;
1860: AHL_DEBUG_PUB.debug( G_PKG_NAME || '.' || G_API_NAME || ' : after default_attributes' );
1861: END IF;
1862:
1863: -- Validate all attributes (Item level validation)
1864: IF ( p_validation_level = FND_API.G_VALID_LEVEL_FULL ) THEN
1865: FOR i IN 1..p_x_interval_tbl.count LOOP
1866: validate_attributes
1867: (
1868: p_x_interval_tbl(i), -- IN
1869: l_return_status -- OUT
1870: );
1871:
1872: -- If any severe error occurs, then, abort API.
1873: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1874: RAISE FND_API.G_EXC_ERROR;
1875: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1876: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1877: END IF;
1870: );
1871:
1872: -- If any severe error occurs, then, abort API.
1873: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1874: RAISE FND_API.G_EXC_ERROR;
1875: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1876: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1877: END IF;
1878: END LOOP;
1871:
1872: -- If any severe error occurs, then, abort API.
1873: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1874: RAISE FND_API.G_EXC_ERROR;
1875: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1876: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1877: END IF;
1878: END LOOP;
1879: END IF;
1872: -- If any severe error occurs, then, abort API.
1873: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1874: RAISE FND_API.G_EXC_ERROR;
1875: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1876: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1877: END IF;
1878: END LOOP;
1879: END IF;
1880:
1901: AHL_DEBUG_PUB.debug( G_PKG_NAME || '.' || G_API_NAME || ' : after default_unchanged_attributes / default_missing_attributes' );
1902: END IF;
1903:
1904: -- Perform cross attribute validation and missing attribute checks (Record level validation)
1905: IF ( p_validation_level = FND_API.G_VALID_LEVEL_FULL ) THEN
1906: FOR i IN 1..p_x_interval_tbl.count LOOP
1907: IF ( p_x_interval_tbl(i).dml_operation <> 'D' ) THEN
1908: validate_record
1909: (
1914: l_return_status -- OUT
1915: );
1916:
1917: -- If any severe error occurs, then, abort API.
1918: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1919: RAISE FND_API.G_EXC_ERROR;
1920: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1921: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1922: END IF;
1915: );
1916:
1917: -- If any severe error occurs, then, abort API.
1918: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1919: RAISE FND_API.G_EXC_ERROR;
1920: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1921: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1922: END IF;
1923: END IF;
1916:
1917: -- If any severe error occurs, then, abort API.
1918: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1919: RAISE FND_API.G_EXC_ERROR;
1920: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1921: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1922: END IF;
1923: END IF;
1924: END LOOP;
1917: -- If any severe error occurs, then, abort API.
1918: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1919: RAISE FND_API.G_EXC_ERROR;
1920: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1921: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1922: END IF;
1923: END IF;
1924: END LOOP;
1925: END IF;
1931: -- Get all the error messages from the previous steps (if any) and raise the appropriate Exception
1932: l_msg_count := FND_MSG_PUB.count_msg;
1933: IF l_msg_count > 0 THEN
1934: x_msg_count := l_msg_count;
1935: RAISE FND_API.G_EXC_ERROR;
1936: END IF;
1937:
1938: -- Perform the DML statement directly.
1939: FOR i IN 1..p_x_interval_tbl.count LOOP
2058: IF ( SQL%ROWCOUNT = 0 ) THEN
2059: FND_MESSAGE.set_name('AHL','AHL_FMP_RECORD_CHANGED');
2060: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_x_interval_tbl(i) ) );
2061: FND_MSG_PUB.add;
2062: RAISE FND_API.G_EXC_ERROR;
2063: END IF;
2064:
2065: -- Set OUT values
2066: p_x_interval_tbl(i).object_version_number := p_x_interval_tbl(i).object_version_number + 1;
2076: IF ( SQL%ROWCOUNT = 0 ) THEN
2077: FND_MESSAGE.set_name('AHL','AHL_FMP_RECORD_CHANGED');
2078: FND_MESSAGE.set_token( 'RECORD', TO_CHAR( i ) );
2079: FND_MSG_PUB.add;
2080: RAISE FND_API.G_EXC_ERROR;
2081: END IF;
2082:
2083: END IF;
2084: END LOOP;
2097: l_return_status -- OUT
2098: );
2099:
2100: -- If any severe error occurs, then, abort API.
2101: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2102: RAISE FND_API.G_EXC_ERROR;
2103: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2104: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2105: END IF;
2098: );
2099:
2100: -- If any severe error occurs, then, abort API.
2101: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2102: RAISE FND_API.G_EXC_ERROR;
2103: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2104: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2105: END IF;
2106:
2099:
2100: -- If any severe error occurs, then, abort API.
2101: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2102: RAISE FND_API.G_EXC_ERROR;
2103: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2104: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2105: END IF;
2106:
2107: IF G_DEBUG = 'Y' THEN
2100: -- If any severe error occurs, then, abort API.
2101: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2102: RAISE FND_API.G_EXC_ERROR;
2103: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2104: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2105: END IF;
2106:
2107: IF G_DEBUG = 'Y' THEN
2108: AHL_DEBUG_PUB.debug( G_PKG_NAME || '.' || G_API_NAME || ' : after validate_records' );
2108: AHL_DEBUG_PUB.debug( G_PKG_NAME || '.' || G_API_NAME || ' : after validate_records' );
2109: END IF;
2110:
2111: -- Perform the Commit (if requested)
2112: IF FND_API.to_boolean( p_commit ) THEN
2113: COMMIT WORK;
2114: END IF;
2115:
2116: -- Add informational message if any truncation of interval values occured.
2122:
2123: -- Count and Get messages (optional)
2124: FND_MSG_PUB.count_and_get
2125: (
2126: p_encoded => FND_API.G_FALSE,
2127: p_count => x_msg_count,
2128: p_data => x_msg_data
2129: );
2130:
2134: END IF;
2135:
2136: EXCEPTION
2137:
2138: WHEN FND_API.G_EXC_ERROR THEN
2139: ROLLBACK TO process_interval_PVT;
2140: x_return_status := FND_API.G_RET_STS_ERROR ;
2141: FND_MSG_PUB.count_and_get
2142: (
2136: EXCEPTION
2137:
2138: WHEN FND_API.G_EXC_ERROR THEN
2139: ROLLBACK TO process_interval_PVT;
2140: x_return_status := FND_API.G_RET_STS_ERROR ;
2141: FND_MSG_PUB.count_and_get
2142: (
2143: p_encoded => FND_API.G_FALSE,
2144: p_count => x_msg_count,
2139: ROLLBACK TO process_interval_PVT;
2140: x_return_status := FND_API.G_RET_STS_ERROR ;
2141: FND_MSG_PUB.count_and_get
2142: (
2143: p_encoded => FND_API.G_FALSE,
2144: p_count => x_msg_count,
2145: p_data => x_msg_data
2146: );
2147:
2149: IF ( G_DEBUG = 'Y' ) THEN
2150: AHL_DEBUG_PUB.disable_debug;
2151: END IF;
2152:
2153: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2154: ROLLBACK TO process_interval_PVT;
2155: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2156: FND_MSG_PUB.count_and_get
2157: (
2151: END IF;
2152:
2153: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2154: ROLLBACK TO process_interval_PVT;
2155: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2156: FND_MSG_PUB.count_and_get
2157: (
2158: p_encoded => FND_API.G_FALSE,
2159: p_count => x_msg_count,
2154: ROLLBACK TO process_interval_PVT;
2155: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2156: FND_MSG_PUB.count_and_get
2157: (
2158: p_encoded => FND_API.G_FALSE,
2159: p_count => x_msg_count,
2160: p_data => x_msg_data
2161: );
2162:
2166: END IF;
2167:
2168: WHEN OTHERS THEN
2169: ROLLBACK TO process_interval_PVT;
2170: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2171: IF FND_MSG_PUB.check_msg_level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
2172: THEN
2173: FND_MSG_PUB.add_exc_msg
2174: (
2178: );
2179: END IF;
2180: FND_MSG_PUB.count_and_get
2181: (
2182: p_encoded => FND_API.G_FALSE,
2183: p_count => x_msg_count,
2184: p_data => x_msg_data
2185: );
2186: