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;
142: RETURN;
143: END IF;
145: -- Check Profile value
146:
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
164:
165: --check if mr is terminated and get the mr status.
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;
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;
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;
207: RETURN;
208: END IF;
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;
224: END IF;
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;
238: RETURN;
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;
238: RETURN;
239: END IF;
242: FOR i IN 1..p_interval_tbl.count LOOP
243: IF ( p_interval_tbl(i).dml_operation <> 'D' AND
244: p_interval_tbl(i).dml_operation <> 'U' AND
245: p_interval_tbl(i).dml_operation <> 'C' ) THEN
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;
243: IF ( p_interval_tbl(i).dml_operation <> 'D' AND
244: p_interval_tbl(i).dml_operation <> 'U' AND
245: p_interval_tbl(i).dml_operation <> 'C' ) THEN
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;
244: p_interval_tbl(i).dml_operation <> 'U' AND
245: p_interval_tbl(i).dml_operation <> 'C' ) THEN
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;
255: IF ( l_pm_install_flag = 'Y' AND
256: p_interval_tbl(i).dml_operation = 'U' AND
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;
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;
283: END IF;
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;
305: END IF;
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;
320: END IF;
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
404: IF ( p_x_interval_rec.counter_name IS NULL OR
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;
410: ELSE
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;
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
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;
417:
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;
417:
418: IF ( l_position_ref_meaning IS NOT NULL ) THEN
419: FND_MESSAGE.set_token( 'FIELD2', l_position_ref_meaning );
415: FND_MESSAGE.set_token( 'FIELD1', p_x_interval_rec.counter_name );
416: END IF;
417:
418: IF ( l_position_ref_meaning IS NOT NULL ) THEN
419: FND_MESSAGE.set_token( 'FIELD2', l_position_ref_meaning );
420: ELSE
421: FND_MESSAGE.set_token( 'FIELD2', l_item_number );
422: END IF;
423: END IF;
417:
418: IF ( l_position_ref_meaning IS NOT NULL ) THEN
419: FND_MESSAGE.set_token( 'FIELD2', l_position_ref_meaning );
420: ELSE
421: FND_MESSAGE.set_token( 'FIELD2', l_item_number );
422: END IF;
423: END IF;
424:
425: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_x_interval_rec ) );
421: FND_MESSAGE.set_token( 'FIELD2', l_item_number );
422: END IF;
423: END IF;
424:
425: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_x_interval_rec ) );
426: FND_MSG_PUB.add;
427: END IF;
428:
429: END IF;
729: l_old_interval_rec.attribute15,
730: l_old_interval_rec.duedate_rule_code; --pdoki added for ADAT ER
731:
732: IF get_old_rec%NOTFOUND THEN
733: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_INVALID_INTERVAL_REC' );
734: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_x_interval_rec ) );
735: FND_MSG_PUB.add;
736: CLOSE get_old_rec;
737: RAISE FND_API.G_EXC_ERROR;
730: l_old_interval_rec.duedate_rule_code; --pdoki added for ADAT ER
731:
732: IF get_old_rec%NOTFOUND THEN
733: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_INVALID_INTERVAL_REC' );
734: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_x_interval_rec ) );
735: FND_MSG_PUB.add;
736: CLOSE get_old_rec;
737: RAISE FND_API.G_EXC_ERROR;
738: END IF;
921: p_interval_rec.counter_id IS NULL AND
922: p_interval_rec.counter_name IS NULL ) OR
923: ( p_interval_rec.counter_id = FND_API.G_MISS_NUM AND
924: p_interval_rec.counter_name = FND_API.G_MISS_CHAR ) ) THEN
925: FND_MESSAGE.set_name( 'AHL','AHL_FMP_COUNTER_NULL' );
926: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
927: FND_MSG_PUB.add;
928: END IF;
929: END IF;
922: p_interval_rec.counter_name IS NULL ) OR
923: ( p_interval_rec.counter_id = FND_API.G_MISS_NUM AND
924: p_interval_rec.counter_name = FND_API.G_MISS_CHAR ) ) THEN
925: FND_MESSAGE.set_name( 'AHL','AHL_FMP_COUNTER_NULL' );
926: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
927: FND_MSG_PUB.add;
928: END IF;
929: END IF;
930:
930:
931: -- Check if the Interval Value does not contain an invalid value
932: IF ( p_interval_rec.interval_value IS NOT NULL AND
933: p_interval_rec.interval_value <= 0 ) THEN
934: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_INTERVAL' );
935: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.interval_value ) );
936: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
937: FND_MSG_PUB.add;
938: END IF;
931: -- Check if the Interval Value does not contain an invalid value
932: IF ( p_interval_rec.interval_value IS NOT NULL AND
933: p_interval_rec.interval_value <= 0 ) THEN
934: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_INTERVAL' );
935: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.interval_value ) );
936: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
937: FND_MSG_PUB.add;
938: END IF;
939:
932: IF ( p_interval_rec.interval_value IS NOT NULL AND
933: p_interval_rec.interval_value <= 0 ) THEN
934: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_INTERVAL' );
935: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.interval_value ) );
936: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
937: FND_MSG_PUB.add;
938: END IF;
939:
940: -- Check if the earliest due Value does not contain an invalid value.
941: IF ( p_interval_rec.dml_operation <> 'D' ) THEN
942: IF ( p_interval_rec.earliest_due_value IS NOT NULL AND
943: p_interval_rec.earliest_due_value <> FND_API.G_MISS_NUM AND
944: p_interval_rec.earliest_due_value < 0 ) THEN
945: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_EARL_DUE' );
946: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.earliest_due_value ) );
947: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
948: FND_MSG_PUB.add;
949: END IF;
942: IF ( p_interval_rec.earliest_due_value IS NOT NULL AND
943: p_interval_rec.earliest_due_value <> FND_API.G_MISS_NUM AND
944: p_interval_rec.earliest_due_value < 0 ) THEN
945: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_EARL_DUE' );
946: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.earliest_due_value ) );
947: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
948: FND_MSG_PUB.add;
949: END IF;
950: END IF;
943: p_interval_rec.earliest_due_value <> FND_API.G_MISS_NUM AND
944: p_interval_rec.earliest_due_value < 0 ) THEN
945: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_EARL_DUE' );
946: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.earliest_due_value ) );
947: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
948: FND_MSG_PUB.add;
949: END IF;
950: END IF;
951:
953: IF ( p_interval_rec.dml_operation <> 'D' ) THEN
954: IF ( p_interval_rec.start_value IS NOT NULL AND
955: p_interval_rec.start_value <> FND_API.G_MISS_NUM AND
956: p_interval_rec.start_value < 0 ) THEN
957: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_START' );
958: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.start_value ) );
959: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
960: FND_MSG_PUB.add;
961: END IF;
954: IF ( p_interval_rec.start_value IS NOT NULL AND
955: p_interval_rec.start_value <> FND_API.G_MISS_NUM AND
956: p_interval_rec.start_value < 0 ) THEN
957: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_START' );
958: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.start_value ) );
959: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
960: FND_MSG_PUB.add;
961: END IF;
962: END IF;
955: p_interval_rec.start_value <> FND_API.G_MISS_NUM AND
956: p_interval_rec.start_value < 0 ) THEN
957: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_START' );
958: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.start_value ) );
959: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
960: FND_MSG_PUB.add;
961: END IF;
962: END IF;
963:
965: IF ( p_interval_rec.dml_operation <> 'D' ) THEN
966: IF ( p_interval_rec.stop_value IS NOT NULL AND
967: p_interval_rec.stop_value <> FND_API.G_MISS_NUM AND
968: p_interval_rec.stop_value <= 0 ) THEN
969: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_STOP' );
970: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.stop_value ) );
971: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
972: FND_MSG_PUB.add;
973: END IF;
966: IF ( p_interval_rec.stop_value IS NOT NULL AND
967: p_interval_rec.stop_value <> FND_API.G_MISS_NUM AND
968: p_interval_rec.stop_value <= 0 ) THEN
969: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_STOP' );
970: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.stop_value ) );
971: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
972: FND_MSG_PUB.add;
973: END IF;
974: END IF;
967: p_interval_rec.stop_value <> FND_API.G_MISS_NUM AND
968: p_interval_rec.stop_value <= 0 ) THEN
969: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_STOP' );
970: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.stop_value ) );
971: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
972: FND_MSG_PUB.add;
973: END IF;
974: END IF;
975:
977: IF ( p_interval_rec.dml_operation <> 'D' ) THEN
978: IF ( p_interval_rec.tolerance_before IS NOT NULL AND
979: p_interval_rec.tolerance_before <> FND_API.G_MISS_NUM AND
980: p_interval_rec.tolerance_before < 0 ) THEN
981: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_TOLERANCE_BF' );
982: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.tolerance_before ) );
983: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
984: FND_MSG_PUB.add;
985: END IF;
978: IF ( p_interval_rec.tolerance_before IS NOT NULL AND
979: p_interval_rec.tolerance_before <> FND_API.G_MISS_NUM AND
980: p_interval_rec.tolerance_before < 0 ) THEN
981: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_TOLERANCE_BF' );
982: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.tolerance_before ) );
983: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
984: FND_MSG_PUB.add;
985: END IF;
986: END IF;
979: p_interval_rec.tolerance_before <> FND_API.G_MISS_NUM AND
980: p_interval_rec.tolerance_before < 0 ) THEN
981: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_TOLERANCE_BF' );
982: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.tolerance_before ) );
983: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
984: FND_MSG_PUB.add;
985: END IF;
986: END IF;
987:
989: IF ( p_interval_rec.dml_operation <> 'D' ) THEN
990: IF ( p_interval_rec.tolerance_after IS NOT NULL AND
991: p_interval_rec.tolerance_after <> FND_API.G_MISS_NUM AND
992: p_interval_rec.tolerance_after < 0 ) THEN
993: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_TOLERANCE_AF' );
994: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.tolerance_after ) );
995: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
996: FND_MSG_PUB.add;
997: END IF;
990: IF ( p_interval_rec.tolerance_after IS NOT NULL AND
991: p_interval_rec.tolerance_after <> FND_API.G_MISS_NUM AND
992: p_interval_rec.tolerance_after < 0 ) THEN
993: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_TOLERANCE_AF' );
994: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.tolerance_after ) );
995: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
996: FND_MSG_PUB.add;
997: END IF;
998: END IF;
991: p_interval_rec.tolerance_after <> FND_API.G_MISS_NUM AND
992: p_interval_rec.tolerance_after < 0 ) THEN
993: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_TOLERANCE_AF' );
994: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.tolerance_after ) );
995: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
996: FND_MSG_PUB.add;
997: END IF;
998: END IF;
999:
1001: IF ( p_interval_rec.dml_operation <> 'D' ) THEN
1002: IF ( p_interval_rec.reset_value IS NOT NULL AND
1003: p_interval_rec.reset_value <> FND_API.G_MISS_NUM AND
1004: p_interval_rec.reset_value < 0 ) THEN
1005: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_RESET_VALUE' );
1006: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.reset_value ) );
1007: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1008: FND_MSG_PUB.add;
1009: END IF;
1002: IF ( p_interval_rec.reset_value IS NOT NULL AND
1003: p_interval_rec.reset_value <> FND_API.G_MISS_NUM AND
1004: p_interval_rec.reset_value < 0 ) THEN
1005: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_RESET_VALUE' );
1006: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.reset_value ) );
1007: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1008: FND_MSG_PUB.add;
1009: END IF;
1010: END IF;
1003: p_interval_rec.reset_value <> FND_API.G_MISS_NUM AND
1004: p_interval_rec.reset_value < 0 ) THEN
1005: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_RESET_VALUE' );
1006: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_interval_rec.reset_value ) );
1007: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1008: FND_MSG_PUB.add;
1009: END IF;
1010: END IF;
1011:
1012: -- Check if the mandatory Interval ID column contains a null value.
1013: IF ( p_interval_rec.dml_operation <> 'C' ) THEN
1014: IF ( p_interval_rec.mr_interval_id IS NULL OR
1015: p_interval_rec.mr_interval_id = FND_API.G_MISS_NUM ) THEN
1016: FND_MESSAGE.set_name( 'AHL','AHL_FMP_MR_INTERVAL_ID_NULL' );
1017: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1018: FND_MSG_PUB.add;
1019: END IF;
1020: END IF;
1013: IF ( p_interval_rec.dml_operation <> 'C' ) THEN
1014: IF ( p_interval_rec.mr_interval_id IS NULL OR
1015: p_interval_rec.mr_interval_id = FND_API.G_MISS_NUM ) THEN
1016: FND_MESSAGE.set_name( 'AHL','AHL_FMP_MR_INTERVAL_ID_NULL' );
1017: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1018: FND_MSG_PUB.add;
1019: END IF;
1020: END IF;
1021:
1022: -- Check if the mandatory Object Version Number column contains a null value.
1023: IF ( p_interval_rec.dml_operation <> 'C' ) THEN
1024: IF ( p_interval_rec.object_version_number IS NULL OR
1025: p_interval_rec.object_version_number = FND_API.G_MISS_NUM ) THEN
1026: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INT_OBJ_VERSION_NULL' );
1027: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1028: FND_MSG_PUB.add;
1029: END IF;
1030: END IF;
1023: IF ( p_interval_rec.dml_operation <> 'C' ) THEN
1024: IF ( p_interval_rec.object_version_number IS NULL OR
1025: p_interval_rec.object_version_number = FND_API.G_MISS_NUM ) THEN
1026: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INT_OBJ_VERSION_NULL' );
1027: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1028: FND_MSG_PUB.add;
1029: END IF;
1030: END IF;
1031:
1056: p_interval_rec.reset_value IS NOT NULL OR
1057: p_interval_rec.interval_value IS NOT NULL OR
1058: p_interval_rec.start_date IS NOT NULL OR
1059: p_interval_rec.stop_date IS NOT NULL ) ) THEN
1060: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_PGM_INPUTS' );
1061: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1062: FND_MSG_PUB.add;
1063: END IF;
1064:
1057: p_interval_rec.interval_value IS NOT NULL OR
1058: p_interval_rec.start_date IS NOT NULL OR
1059: p_interval_rec.stop_date IS NOT NULL ) ) THEN
1060: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_PGM_INPUTS' );
1061: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1062: FND_MSG_PUB.add;
1063: END IF;
1064:
1065: -- Check if the Interval Value is always passed for non-PM Programs
1067: p_mr_type_code <> 'PROGRAM' ) AND
1068: ( p_interval_rec.dml_operation = 'C' AND
1069: p_interval_rec.interval_value IS NULL ) OR
1070: ( p_interval_rec.interval_value = FND_API.G_MISS_NUM ) ) THEN
1071: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INTERVAL_NULL' );
1072: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1073: FND_MSG_PUB.add;
1074: END IF;
1075:
1068: ( p_interval_rec.dml_operation = 'C' AND
1069: p_interval_rec.interval_value IS NULL ) OR
1070: ( p_interval_rec.interval_value = FND_API.G_MISS_NUM ) ) THEN
1071: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INTERVAL_NULL' );
1072: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1073: FND_MSG_PUB.add;
1074: END IF;
1075:
1076: -- Check if Start is passed for PM Programs
1075:
1076: -- Check if Start is passed for PM Programs
1077: IF ( p_mr_type_code = 'PROGRAM' AND
1078: p_interval_rec.start_value IS NULL ) THEN
1079: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_PGM_START_NULL' );
1080: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1081: FND_MSG_PUB.add;
1082: RETURN;
1083: END IF;
1076: -- Check if Start is passed for PM Programs
1077: IF ( p_mr_type_code = 'PROGRAM' AND
1078: p_interval_rec.start_value IS NULL ) THEN
1079: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_PGM_START_NULL' );
1080: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1081: FND_MSG_PUB.add;
1082: RETURN;
1083: END IF;
1084:
1084:
1085: -- Check if Stop is passed for PM Programs
1086: IF ( p_mr_type_code = 'PROGRAM' AND
1087: p_interval_rec.stop_value IS NULL ) THEN
1088: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_PGM_STOP_NULL' );
1089: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1090: FND_MSG_PUB.add;
1091: RETURN;
1092: END IF;
1085: -- Check if Stop is passed for PM Programs
1086: IF ( p_mr_type_code = 'PROGRAM' AND
1087: p_interval_rec.stop_value IS NULL ) THEN
1088: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_PGM_STOP_NULL' );
1089: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1090: FND_MSG_PUB.add;
1091: RETURN;
1092: END IF;
1093:
1098: ( p_interval_rec.start_value IS NOT NULL OR
1099: p_interval_rec.stop_value IS NOT NULL OR
1100: p_interval_rec.start_date IS NOT NULL OR
1101: p_interval_rec.stop_date IS NOT NULL ) ) THEN
1102: FND_MESSAGE.set_name( 'AHL','AHL_FMP_RANGE_NOTNULL' );
1103: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1104: FND_MSG_PUB.add;
1105: RETURN;
1106: END IF;
1099: p_interval_rec.stop_value IS NOT NULL OR
1100: p_interval_rec.start_date IS NOT NULL OR
1101: p_interval_rec.stop_date IS NOT NULL ) ) THEN
1102: FND_MESSAGE.set_name( 'AHL','AHL_FMP_RANGE_NOTNULL' );
1103: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1104: FND_MSG_PUB.add;
1105: RETURN;
1106: END IF;
1107:
1107:
1108: -- Check if the Tolerance Before is less than the Interval Value
1109: IF ( p_interval_rec.tolerance_before IS NOT NULL AND
1110: p_interval_rec.tolerance_before >= p_interval_rec.interval_value ) THEN
1111: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_TOL_BF_INT' );
1112: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1113: FND_MSG_PUB.add;
1114: END IF;
1115:
1108: -- Check if the Tolerance Before is less than the Interval Value
1109: IF ( p_interval_rec.tolerance_before IS NOT NULL AND
1110: p_interval_rec.tolerance_before >= p_interval_rec.interval_value ) THEN
1111: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_TOL_BF_INT' );
1112: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1113: FND_MSG_PUB.add;
1114: END IF;
1115:
1116: -- Check if the Tolerance After is less than the Interval Value
1115:
1116: -- Check if the Tolerance After is less than the Interval Value
1117: IF ( p_interval_rec.tolerance_after IS NOT NULL AND
1118: p_interval_rec.tolerance_after >= p_interval_rec.interval_value ) THEN
1119: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_TOL_AF_INT' );
1120: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1121: FND_MSG_PUB.add;
1122: END IF;
1123:
1116: -- Check if the Tolerance After is less than the Interval Value
1117: IF ( p_interval_rec.tolerance_after IS NOT NULL AND
1118: p_interval_rec.tolerance_after >= p_interval_rec.interval_value ) THEN
1119: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_TOL_AF_INT' );
1120: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1121: FND_MSG_PUB.add;
1122: END IF;
1123:
1124: IF ( p_interval_rec.counter_id IS NOT NULL AND
1131: WHERE counter_id = p_interval_rec.counter_id;
1132:
1133: -- Check if the Reset Value is less than the initial reading for the counter
1134: IF ( p_interval_rec.reset_value < l_initial_reading ) THEN
1135: FND_MESSAGE.set_name( 'AHL','AHL_FMP_RESET_LESS_INIT_VALUE' );
1136: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( l_initial_reading ) );
1137: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1138: FND_MSG_PUB.add;
1139: END IF;
1132:
1133: -- Check if the Reset Value is less than the initial reading for the counter
1134: IF ( p_interval_rec.reset_value < l_initial_reading ) THEN
1135: FND_MESSAGE.set_name( 'AHL','AHL_FMP_RESET_LESS_INIT_VALUE' );
1136: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( l_initial_reading ) );
1137: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1138: FND_MSG_PUB.add;
1139: END IF;
1140:
1133: -- Check if the Reset Value is less than the initial reading for the counter
1134: IF ( p_interval_rec.reset_value < l_initial_reading ) THEN
1135: FND_MESSAGE.set_name( 'AHL','AHL_FMP_RESET_LESS_INIT_VALUE' );
1136: FND_MESSAGE.set_token( 'FIELD', TO_CHAR( l_initial_reading ) );
1137: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1138: FND_MSG_PUB.add;
1139: END IF;
1140:
1141: END IF;
1142:
1143: -- Check if the Start Value is passed if Stop Value is passed
1144: IF ( p_interval_rec.start_value IS NULL AND
1145: p_interval_rec.stop_value IS NOT NULL ) THEN
1146: FND_MESSAGE.set_name( 'AHL','AHL_FMP_MISSING_VALUE_RANGE' );
1147: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1148: FND_MSG_PUB.add;
1149: END IF;
1150:
1143: -- Check if the Start Value is passed if Stop Value is passed
1144: IF ( p_interval_rec.start_value IS NULL AND
1145: p_interval_rec.stop_value IS NOT NULL ) THEN
1146: FND_MESSAGE.set_name( 'AHL','AHL_FMP_MISSING_VALUE_RANGE' );
1147: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1148: FND_MSG_PUB.add;
1149: END IF;
1150:
1151: -- Check if the Start Value is passed if Stop Value is passed
1151: -- Check if the Start Value is passed if Stop Value is passed
1152: IF ( p_interval_rec.start_value IS NULL AND
1153: p_interval_rec.start_date IS NULL AND
1154: p_interval_rec.earliest_due_value IS NOT NULL ) THEN
1155: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_INTERVAL_RANGE' );
1156: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1157: FND_MSG_PUB.add;
1158: END IF;
1159:
1152: IF ( p_interval_rec.start_value IS NULL AND
1153: p_interval_rec.start_date IS NULL AND
1154: p_interval_rec.earliest_due_value IS NOT NULL ) THEN
1155: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_INTERVAL_RANGE' );
1156: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1157: FND_MSG_PUB.add;
1158: END IF;
1159:
1160: -- Check if the Start Date is passed if Stop Date is passed
1159:
1160: -- Check if the Start Date is passed if Stop Date is passed
1161: IF ( p_interval_rec.start_date IS NULL AND
1162: p_interval_rec.stop_date IS NOT NULL ) THEN
1163: FND_MESSAGE.set_name( 'AHL','AHL_FMP_MISSING_DATE_RANGE' );
1164: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1165: FND_MSG_PUB.add;
1166: END IF;
1167:
1160: -- Check if the Start Date is passed if Stop Date is passed
1161: IF ( p_interval_rec.start_date IS NULL AND
1162: p_interval_rec.stop_date IS NOT NULL ) THEN
1163: FND_MESSAGE.set_name( 'AHL','AHL_FMP_MISSING_DATE_RANGE' );
1164: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1165: FND_MSG_PUB.add;
1166: END IF;
1167:
1168: -- Check if the Stop Value is not greater than Start Value
1168: -- Check if the Stop Value is not greater than Start Value
1169: IF ( p_interval_rec.start_value IS NOT NULL AND
1170: p_interval_rec.stop_value IS NOT NULL AND
1171: p_interval_rec.stop_value < p_interval_rec.start_value ) THEN
1172: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_VALUE_RANGE' );
1173: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1174: FND_MSG_PUB.add;
1175: END IF;
1176:
1169: IF ( p_interval_rec.start_value IS NOT NULL AND
1170: p_interval_rec.stop_value IS NOT NULL AND
1171: p_interval_rec.stop_value < p_interval_rec.start_value ) THEN
1172: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_VALUE_RANGE' );
1173: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1174: FND_MSG_PUB.add;
1175: END IF;
1176:
1177: -- Check if the Stop date is not greater than Start date
1177: -- Check if the Stop date is not greater than Start date
1178: IF ( p_interval_rec.start_date IS NOT NULL AND
1179: p_interval_rec.stop_date IS NOT NULL AND
1180: p_interval_rec.stop_date < p_interval_rec.start_date ) THEN
1181: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_DATE_RANGE' );
1182: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1183: FND_MSG_PUB.add;
1184: END IF;
1185:
1178: IF ( p_interval_rec.start_date IS NOT NULL AND
1179: p_interval_rec.stop_date IS NOT NULL AND
1180: p_interval_rec.stop_date < p_interval_rec.start_date ) THEN
1181: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_DATE_RANGE' );
1182: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1183: FND_MSG_PUB.add;
1184: END IF;
1185:
1186: -- Check if both Date based and Value based interval ranges are not passed
1187: IF ( ( p_interval_rec.start_date IS NOT NULL OR
1188: p_interval_rec.stop_date IS NOT NULL ) AND
1189: ( p_interval_rec.start_value IS NOT NULL OR
1190: p_interval_rec.stop_value IS NOT NULL ) ) THEN
1191: FND_MESSAGE.set_name( 'AHL','AHL_FMP_BOTH_DATE_VALUE_RANGE' );
1192: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1193: FND_MSG_PUB.add;
1194: END IF;
1195:
1188: p_interval_rec.stop_date IS NOT NULL ) AND
1189: ( p_interval_rec.start_value IS NOT NULL OR
1190: p_interval_rec.stop_value IS NOT NULL ) ) THEN
1191: FND_MESSAGE.set_name( 'AHL','AHL_FMP_BOTH_DATE_VALUE_RANGE' );
1192: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1193: FND_MSG_PUB.add;
1194: END IF;
1195:
1196: -- Check if the Interval Value is between Start Value and Stop Value
1199: p_interval_rec.interval_value >
1200: --( p_interval_rec.stop_value - p_interval_rec.start_value ) ) THEN
1201: -- Fix for bug# 3482307.
1202: ( p_interval_rec.stop_value - p_interval_rec.start_value + 1) ) THEN
1203: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_INTERVAL_RANGE' );
1204: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1205: FND_MSG_PUB.add;
1206: END IF;
1207:
1200: --( p_interval_rec.stop_value - p_interval_rec.start_value ) ) THEN
1201: -- Fix for bug# 3482307.
1202: ( p_interval_rec.stop_value - p_interval_rec.start_value + 1) ) THEN
1203: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_INTERVAL_RANGE' );
1204: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1205: FND_MSG_PUB.add;
1206: END IF;
1207:
1208: -- Check if the earliest due value is less than Start Value
1207:
1208: -- Check if the earliest due value is less than Start Value
1209: IF ( p_interval_rec.start_value IS NOT NULL AND
1210: p_interval_rec.earliest_due_value > p_interval_rec.start_value ) THEN
1211: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_INTERVAL_RANGE' );
1212: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1213: FND_MSG_PUB.add;
1214: END IF;
1215:
1208: -- Check if the earliest due value is less than Start Value
1209: IF ( p_interval_rec.start_value IS NOT NULL AND
1210: p_interval_rec.earliest_due_value > p_interval_rec.start_value ) THEN
1211: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_INTERVAL_RANGE' );
1212: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_interval_rec ) );
1213: FND_MSG_PUB.add;
1214: END IF;
1215:
1216: END validate_record;
1317: l_interval_rec.counter_name;
1318:
1319: EXIT WHEN get_pm_pgm_dup_rec%NOTFOUND;
1320:
1321: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_PM_PGM_DUP_INT_REC' );
1322: FND_MESSAGE.set_token( 'FIELD', l_interval_rec.counter_name );
1323: FND_MSG_PUB.add;
1324: END LOOP;
1325:
1318:
1319: EXIT WHEN get_pm_pgm_dup_rec%NOTFOUND;
1320:
1321: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_PM_PGM_DUP_INT_REC' );
1322: FND_MESSAGE.set_token( 'FIELD', l_interval_rec.counter_name );
1323: FND_MSG_PUB.add;
1324: END LOOP;
1325:
1326: IF ( get_pm_pgm_dup_rec%ROWCOUNT > 0 ) THEN
1345: l_interval_rec.stop_date;
1346:
1347: EXIT WHEN get_dup_rec%NOTFOUND;
1348:
1349: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_DUPLICATE_INT_REC' );
1350: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( l_interval_rec ) );
1351: FND_MSG_PUB.add;
1352: END LOOP;
1353:
1346:
1347: EXIT WHEN get_dup_rec%NOTFOUND;
1348:
1349: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_DUPLICATE_INT_REC' );
1350: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( l_interval_rec ) );
1351: FND_MSG_PUB.add;
1352: END LOOP;
1353:
1354: IF ( get_dup_rec%ROWCOUNT > 0 ) THEN
1379: l_interval_rec.counter_id = l_prev_counter_id AND
1380: --l_interval_rec.start_date < l_prev_stop_date ) THEN
1381: -- Fix for bug# 3482307.
1382: l_interval_rec.start_date <= l_prev_stop_date ) THEN
1383: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_OVERLAP_DATE_RANGE' );
1384: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( l_interval_rec ) );
1385: FND_MSG_PUB.add;
1386: CLOSE get_recs_for_date_range;
1387: x_return_status := FND_API.G_RET_STS_ERROR;
1380: --l_interval_rec.start_date < l_prev_stop_date ) THEN
1381: -- Fix for bug# 3482307.
1382: l_interval_rec.start_date <= l_prev_stop_date ) THEN
1383: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_OVERLAP_DATE_RANGE' );
1384: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( l_interval_rec ) );
1385: FND_MSG_PUB.add;
1386: CLOSE get_recs_for_date_range;
1387: x_return_status := FND_API.G_RET_STS_ERROR;
1388: RETURN;
1413: l_interval_rec.counter_id = l_prev_counter_id AND
1414: --l_interval_rec.start_value < l_prev_stop_value ) THEN
1415: -- Fix for bug# 3482307.
1416: l_interval_rec.start_value <= l_prev_stop_value ) THEN
1417: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_OVERLAP_VALUE_RANGE' );
1418: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( l_interval_rec ) );
1419: FND_MSG_PUB.add;
1420: CLOSE get_recs_for_value_range;
1421: x_return_status := FND_API.G_RET_STS_ERROR;
1414: --l_interval_rec.start_value < l_prev_stop_value ) THEN
1415: -- Fix for bug# 3482307.
1416: l_interval_rec.start_value <= l_prev_stop_value ) THEN
1417: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_OVERLAP_VALUE_RANGE' );
1418: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( l_interval_rec ) );
1419: FND_MSG_PUB.add;
1420: CLOSE get_recs_for_value_range;
1421: x_return_status := FND_API.G_RET_STS_ERROR;
1422: RETURN;
1425: IF ( l_prev_counter_id IS NOT NULL AND
1426: l_prev_stop_value IS NOT NULL AND
1427: l_interval_rec.counter_id = l_prev_counter_id AND
1428: l_interval_rec.earliest_due_value <= l_prev_stop_value ) THEN
1429: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_OVERLAP_VALUE_RANGE' );
1430: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( l_interval_rec ) );
1431: FND_MSG_PUB.add;
1432: CLOSE get_recs_for_value_range;
1433: x_return_status := FND_API.G_RET_STS_ERROR;
1426: l_prev_stop_value IS NOT NULL AND
1427: l_interval_rec.counter_id = l_prev_counter_id AND
1428: l_interval_rec.earliest_due_value <= l_prev_stop_value ) THEN
1429: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_OVERLAP_VALUE_RANGE' );
1430: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( l_interval_rec ) );
1431: FND_MSG_PUB.add;
1432: CLOSE get_recs_for_value_range;
1433: x_return_status := FND_API.G_RET_STS_ERROR;
1434: RETURN;
1447: INTO l_counter_name;
1448:
1449: EXIT WHEN check_unique_reset_value%NOTFOUND;
1450:
1451: FND_MESSAGE.set_name( 'AHL','AHL_FMP_RESET_VALUE_NONUNIQUE' );
1452: FND_MESSAGE.set_token( 'FIELD', l_counter_name );
1453: FND_MSG_PUB.add;
1454: END LOOP;
1455:
1448:
1449: EXIT WHEN check_unique_reset_value%NOTFOUND;
1450:
1451: FND_MESSAGE.set_name( 'AHL','AHL_FMP_RESET_VALUE_NONUNIQUE' );
1452: FND_MESSAGE.set_token( 'FIELD', l_counter_name );
1453: FND_MSG_PUB.add;
1454: END LOOP;
1455:
1456: IF ( check_unique_reset_value%ROWCOUNT > 0 ) THEN
1570:
1571: -- Check if the Threshold date is not set for repeating MRs.
1572: IF ( p_x_threshold_rec.threshold_date IS NOT NULL AND
1573: p_repetitive_flag = 'Y' ) THEN
1574: FND_MESSAGE.set_name( 'AHL','AHL_FMP_INVALID_THRESHOLD' );
1575: FND_MSG_PUB.add;
1576: x_return_status := FND_API.G_RET_STS_ERROR;
1577: RETURN;
1578: END IF;
1580: -- Check if the Threshold date is not set for PM Programs
1581: IF ( p_x_threshold_rec.threshold_date IS NOT NULL AND
1582: p_appln_code= 'PM' AND
1583: p_mr_type_code = 'PROGRAM' ) THEN
1584: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_PGM_THRESHOLD' );
1585: FND_MSG_PUB.add;
1586: x_return_status := FND_API.G_RET_STS_ERROR;
1587: RETURN;
1588: END IF;
1590: -- Check if the Program Duration is not specified for PM Activities.
1591: IF ( p_x_threshold_rec.program_duration IS NOT NULL AND
1592: p_appln_code = 'PM' AND
1593: p_mr_type_code = 'ACTIVITY' ) THEN
1594: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_ACT_PGM_DURATION' );
1595: FND_MSG_PUB.add;
1596: x_return_status := FND_API.G_RET_STS_ERROR;
1597: RETURN;
1598: END IF;
1599:
1600: -- Check if the Program Duration is a positive number.
1601: IF ( p_x_threshold_rec.program_duration IS NOT NULL AND
1602: p_x_threshold_rec.program_duration <= 0 ) THEN
1603: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_PGM_DUR_INVALID' );
1604: FND_MSG_PUB.add;
1605: x_return_status := FND_API.G_RET_STS_ERROR;
1606: RETURN;
1607: END IF;
1608:
1609: -- Check if the Program Duration is specified then the UOM should be specified.
1610: IF ( p_x_threshold_rec.program_duration IS NOT NULL AND
1611: p_x_threshold_rec.program_duration_uom_code IS NULL ) THEN
1612: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_PGM_DUR_UOM_NULL' );
1613: FND_MSG_PUB.add;
1614: x_return_status := FND_API.G_RET_STS_ERROR;
1615: RETURN;
1616: END IF;
1627: p_x_lookup_code => p_x_threshold_rec.program_duration_uom_code
1628: );
1629:
1630: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
1631: FND_MESSAGE.set_name( 'AHL','AHL_FMP_PM_INV_PGM_DUR_UOM' );
1632: FND_MSG_PUB.add;
1633: x_return_status := FND_API.G_RET_STS_ERROR;
1634: RETURN;
1635: END IF;
1638: -- Check Profile value
1639:
1640: IF G_APPLN_USAGE IS NULL
1641: THEN
1642: FND_MESSAGE.SET_NAME('AHL','AHL_COM_APP_PRFL_UNDEF');
1643: FND_MSG_PUB.ADD;
1644: x_return_status := FND_API.G_RET_STS_ERROR;
1645: IF G_DEBUG = 'Y' THEN
1646: AHL_DEBUG_PUB.debug('APPLN USAGE CODE IS NULL IN VALIDATE_API_INPUTS' );
1692: p_effectivity_id => p_x_threshold_rec.MR_EFFECTIVITY_ID,
1693: p_eff_obj_version => p_x_threshold_rec.OBJECT_VERSION_NUMBER
1694: );
1695: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
1696: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_PROGRAM_DURATION' );
1697: FND_MSG_PUB.add;
1698: x_return_status := FND_API.G_RET_STS_ERROR;
1699: RETURN;
1700: END IF;
1711: p_effectivity_id => p_x_threshold_rec.MR_EFFECTIVITY_ID,
1712: p_eff_obj_version => p_x_threshold_rec.OBJECT_VERSION_NUMBER
1713: );
1714: IF ( NVL( l_return_status, 'X' ) <> FND_API.G_RET_STS_SUCCESS ) THEN
1715: FND_MESSAGE.set_name( 'AHL', 'AHL_FMP_PROGRAM_DURATION' );
1716: FND_MSG_PUB.add;
1717: x_return_status := FND_API.G_RET_STS_ERROR;
1718: RETURN;
1719: END IF;
1733: AND object_version_number = p_x_threshold_rec.object_version_number;
1734:
1735: -- If the record does not exist, then, abort API.
1736: IF ( SQL%ROWCOUNT = 0 ) THEN
1737: FND_MESSAGE.set_name('AHL','AHL_FMP_EFF_RECORD_CHANGED');
1738: FND_MSG_PUB.add;
1739: x_return_status := FND_API.G_RET_STS_ERROR;
1740: RETURN;
1741: END IF;
2125: AND object_version_number = p_x_interval_tbl(i).object_version_number;
2126:
2127: -- If the record does not exist, then, abort API.
2128: IF ( SQL%ROWCOUNT = 0 ) THEN
2129: FND_MESSAGE.set_name('AHL','AHL_FMP_RECORD_CHANGED');
2130: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_x_interval_tbl(i) ) );
2131: FND_MSG_PUB.add;
2132: RAISE FND_API.G_EXC_ERROR;
2133: END IF;
2126:
2127: -- If the record does not exist, then, abort API.
2128: IF ( SQL%ROWCOUNT = 0 ) THEN
2129: FND_MESSAGE.set_name('AHL','AHL_FMP_RECORD_CHANGED');
2130: FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_x_interval_tbl(i) ) );
2131: FND_MSG_PUB.add;
2132: RAISE FND_API.G_EXC_ERROR;
2133: END IF;
2134:
2143: AND object_version_number = p_x_interval_tbl(i).object_version_number;
2144:
2145: -- If the record does not exist, then, abort API.
2146: IF ( SQL%ROWCOUNT = 0 ) THEN
2147: FND_MESSAGE.set_name('AHL','AHL_FMP_RECORD_CHANGED');
2148: FND_MESSAGE.set_token( 'RECORD', TO_CHAR( i ) );
2149: FND_MSG_PUB.add;
2150: RAISE FND_API.G_EXC_ERROR;
2151: END IF;
2144:
2145: -- If the record does not exist, then, abort API.
2146: IF ( SQL%ROWCOUNT = 0 ) THEN
2147: FND_MESSAGE.set_name('AHL','AHL_FMP_RECORD_CHANGED');
2148: FND_MESSAGE.set_token( 'RECORD', TO_CHAR( i ) );
2149: FND_MSG_PUB.add;
2150: RAISE FND_API.G_EXC_ERROR;
2151: END IF;
2152:
2185:
2186: -- Add informational message if any truncation of interval values occured.
2187: -- Fix for bug#3482307
2188: IF (l_fractional_trunc_flag) THEN
2189: FND_MESSAGE.Set_Name('AHL','AHL_FMP_FRACTION_TRUNC');
2190: FND_MSG_PUB.ADD;
2191: END IF;
2192:
2193: -- Count and Get messages (optional)