44: close repetitive_check;
45: END IF;
46:
47: IF (res_count <> 0) OR (subres_count <> 0) THEN
48: FND_MESSAGE.set_name('WIP', 'WIP_ALREADY_EXISTS');
49: FND_MESSAGE.set_token('ENTITY1', 'resource sequence number-cap', TRUE);
50: FND_MESSAGE.raise_error;
51: APP_EXCEPTION.raise_exception;
52: END IF;
45: END IF;
46:
47: IF (res_count <> 0) OR (subres_count <> 0) THEN
48: FND_MESSAGE.set_name('WIP', 'WIP_ALREADY_EXISTS');
49: FND_MESSAGE.set_token('ENTITY1', 'resource sequence number-cap', TRUE);
50: FND_MESSAGE.raise_error;
51: APP_EXCEPTION.raise_exception;
52: END IF;
53: END Check_Unique;
46:
47: IF (res_count <> 0) OR (subres_count <> 0) THEN
48: FND_MESSAGE.set_name('WIP', 'WIP_ALREADY_EXISTS');
49: FND_MESSAGE.set_token('ENTITY1', 'resource sequence number-cap', TRUE);
50: FND_MESSAGE.raise_error;
51: APP_EXCEPTION.raise_exception;
52: END IF;
53: END Check_Unique;
54:
85: fetch repetitive_check into res_count;
86: close repetitive_check;
87: END IF;
88: IF (res_count <> 0) THEN
89: FND_MESSAGE.SET_NAME('WIP','WIP_ONE_POMOVE');
90: FND_MESSAGE.raise_error;
91: APP_EXCEPTION.RAISE_EXCEPTION;
92: END IF;
93: END Check_One_Pomove;
86: close repetitive_check;
87: END IF;
88: IF (res_count <> 0) THEN
89: FND_MESSAGE.SET_NAME('WIP','WIP_ONE_POMOVE');
90: FND_MESSAGE.raise_error;
91: APP_EXCEPTION.RAISE_EXCEPTION;
92: END IF;
93: END Check_One_Pomove;
94:
125: fetch repetitive_check into res_count;
126: close repetitive_check;
127: END IF;
128: IF (res_count <> 0) THEN
129: FND_MESSAGE.SET_NAME('WIP','WIP_ONE_SCHEDULED_PRIOR');
130: FND_MESSAGE.raise_error;
131: APP_EXCEPTION.RAISE_EXCEPTION;
132: END IF;
133: END Check_One_Prior;
126: close repetitive_check;
127: END IF;
128: IF (res_count <> 0) THEN
129: FND_MESSAGE.SET_NAME('WIP','WIP_ONE_SCHEDULED_PRIOR');
130: FND_MESSAGE.raise_error;
131: APP_EXCEPTION.RAISE_EXCEPTION;
132: END IF;
133: END Check_One_Prior;
134:
165: fetch repetitive_check into res_count;
166: close repetitive_check;
167: END IF;
168: IF (res_count <> 0) THEN
169: FND_MESSAGE.SET_NAME('WIP','WIP_ONE_SCHEDULED_NEXT');
170: FND_MESSAGE.raise_error;
171: APP_EXCEPTION.raise_exception;
172: END IF;
173: END Check_One_Next;
166: close repetitive_check;
167: END IF;
168: IF (res_count <> 0) THEN
169: FND_MESSAGE.SET_NAME('WIP','WIP_ONE_SCHEDULED_NEXT');
170: FND_MESSAGE.raise_error;
171: APP_EXCEPTION.raise_exception;
172: END IF;
173: END Check_One_Next;
174:
358: /* For bug 4747951. Skip below validation for setup resources */
359: if ((nvl(last_sched_seq,last_res_seq) = nvl(cur_opres.schedule_seq_num, cur_opres.resource_seq_num)) and
360: (last_parent_resource_seq is null and cur_opres.parent_resource_seq is null)) then
361: if (nvl(last_sub_group,-1) <> nvl(cur_opres.substitute_group_num,-1)) then
362: FND_MESSAGE.SET_NAME('WIP', 'SIM_RES_SAME_SUB_GROUP');
363: FND_MESSAGE.set_token( token => 'OP_SEQ',
364: value=> to_char(cur_op.operation_seq_num),
365: translate => FALSE);
366: FND_MESSAGE.set_token( token => 'RES_SEQ_1',
359: if ((nvl(last_sched_seq,last_res_seq) = nvl(cur_opres.schedule_seq_num, cur_opres.resource_seq_num)) and
360: (last_parent_resource_seq is null and cur_opres.parent_resource_seq is null)) then
361: if (nvl(last_sub_group,-1) <> nvl(cur_opres.substitute_group_num,-1)) then
362: FND_MESSAGE.SET_NAME('WIP', 'SIM_RES_SAME_SUB_GROUP');
363: FND_MESSAGE.set_token( token => 'OP_SEQ',
364: value=> to_char(cur_op.operation_seq_num),
365: translate => FALSE);
366: FND_MESSAGE.set_token( token => 'RES_SEQ_1',
367: value=> to_char(last_res_seq),
362: FND_MESSAGE.SET_NAME('WIP', 'SIM_RES_SAME_SUB_GROUP');
363: FND_MESSAGE.set_token( token => 'OP_SEQ',
364: value=> to_char(cur_op.operation_seq_num),
365: translate => FALSE);
366: FND_MESSAGE.set_token( token => 'RES_SEQ_1',
367: value=> to_char(last_res_seq),
368: translate => FALSE);
369: FND_MESSAGE.set_token( token => 'RES_SEQ_2',
370: value=> to_char(cur_opres.resource_seq_num),
365: translate => FALSE);
366: FND_MESSAGE.set_token( token => 'RES_SEQ_1',
367: value=> to_char(last_res_seq),
368: translate => FALSE);
369: FND_MESSAGE.set_token( token => 'RES_SEQ_2',
370: value=> to_char(cur_opres.resource_seq_num),
371: translate => FALSE);
372: error_exists := true;
373: -- simultaneous resources: if one resource is Prior/Next, the others must also have the same
374: -- scheduling flag
375: elsif (last_scheduled_flag <> cur_opres.scheduled_flag) then
376: if ((((cur_opres.scheduled_flag = wip_constants.sched_prior) OR (cur_opres.scheduled_flag = wip_constants.sched_next)) AND (last_scheduled_flag <> wip_constants.sched_no))
377: OR (((last_scheduled_flag = wip_constants.sched_prior) OR (last_scheduled_flag = wip_constants.sched_next)) AND (cur_opres.scheduled_flag <> wip_constants.sched_no))) then
378: FND_MESSAGE.SET_NAME('WIP', 'SIM_RES_SAME_PRIOR_NEXT');
379: FND_MESSAGE.set_token( token => 'OP_SEQ',
380: value=> to_char(cur_op.operation_seq_num),
381: translate => FALSE);
382: FND_MESSAGE.set_token( token => 'RES_SEQ_1',
375: elsif (last_scheduled_flag <> cur_opres.scheduled_flag) then
376: if ((((cur_opres.scheduled_flag = wip_constants.sched_prior) OR (cur_opres.scheduled_flag = wip_constants.sched_next)) AND (last_scheduled_flag <> wip_constants.sched_no))
377: OR (((last_scheduled_flag = wip_constants.sched_prior) OR (last_scheduled_flag = wip_constants.sched_next)) AND (cur_opres.scheduled_flag <> wip_constants.sched_no))) then
378: FND_MESSAGE.SET_NAME('WIP', 'SIM_RES_SAME_PRIOR_NEXT');
379: FND_MESSAGE.set_token( token => 'OP_SEQ',
380: value=> to_char(cur_op.operation_seq_num),
381: translate => FALSE);
382: FND_MESSAGE.set_token( token => 'RES_SEQ_1',
383: value=> to_char(last_res_seq),
378: FND_MESSAGE.SET_NAME('WIP', 'SIM_RES_SAME_PRIOR_NEXT');
379: FND_MESSAGE.set_token( token => 'OP_SEQ',
380: value=> to_char(cur_op.operation_seq_num),
381: translate => FALSE);
382: FND_MESSAGE.set_token( token => 'RES_SEQ_1',
383: value=> to_char(last_res_seq),
384: translate => FALSE);
385: FND_MESSAGE.set_token( token => 'RES_SEQ_2',
386: value=> to_char(cur_opres.resource_seq_num),
381: translate => FALSE);
382: FND_MESSAGE.set_token( token => 'RES_SEQ_1',
383: value=> to_char(last_res_seq),
384: translate => FALSE);
385: FND_MESSAGE.set_token( token => 'RES_SEQ_2',
386: value=> to_char(cur_opres.resource_seq_num),
387: translate => FALSE);
388: error_exists := true;
389: end if;
392: end if;
393:
394: if (error_exists = true) then
395: x_return_status := fnd_api.g_ret_sts_error;
396: x_msg_data := fnd_message.get;
397: x_operation_seq_num := cur_op.operation_seq_num;
398: return;
399: end if;
400: