29: x_project_start_date OUT NOCOPY DATE, --File.Sql.39 bug 4440895
30: x_project_end_date OUT NOCOPY DATE, --File.Sql.39 bug 4440895
31: x_return_status OUT NOCOPY VARCHAR2) IS --File.Sql.39 bug 4440895
32: BEGIN
33: x_return_status := FND_API.G_RET_STS_SUCCESS;
34:
35: /* Bug 2636791 - changes begin */
36: /* Commenting this query and selecting start date from PA_PROJECT_DATES_UTILS.GET_PROJECT_START_DATE */
37: /* select start_date, completion_date
50: fnd_message.set_name('PA','PA_NO_PROJECT_ID');
51: fnd_message.set_token('PKG_NAME','PA_PROJECT_PARTIES_UTILS');
52: fnd_message.set_token('PROCEDURE_NAME','GET_PROJECT_DATES');
53: fnd_msg_pub.ADD;
54: x_return_status := FND_API.G_RET_STS_ERROR;
55: END;
56:
57:
58: PROCEDURE VALIDATE_PROJECT_PARTY( p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
54: x_return_status := FND_API.G_RET_STS_ERROR;
55: END;
56:
57:
58: PROCEDURE VALIDATE_PROJECT_PARTY( p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
59: p_debug_mode IN VARCHAR2 DEFAULT 'N',
60: p_object_id IN NUMBER,
61: p_OBJECT_TYPE IN VARCHAR2,
62: p_project_role_id IN NUMBER,
98: l_dummy VARCHAR2(1);
99:
100:
101: BEGIN
102: x_return_status := FND_API.G_RET_STS_SUCCESS;
103: pa_debug.set_err_stack('Validate_project_party');
104:
105: l_end_date_active := p_end_date_active; --Bug 4565156 NOCOPY changes
106:
105: l_end_date_active := p_end_date_active; --Bug 4565156 NOCOPY changes
106:
107: --MT OrgRole changes: ext people are not schedulable
108: IF p_resource_type_id = 112 AND p_scheduled_flag = 'Y' THEN
109: x_return_status := FND_API.G_RET_STS_ERROR;
110: fnd_message.set_name('PA','PA_NO_SCHEDULE_HZ_PARTY');
111: fnd_msg_pub.ADD;
112: RETURN;
113: END IF;
115:
116: /*Code Addition for bug 2983546 -- Ext people are not allowed as project Managers */
117:
118: IF p_resource_type_id = 112 AND p_project_role_id=1 THEN
119: x_return_status := FND_API.G_RET_STS_ERROR;
120: fnd_message.set_name('PA','PA_NO_EXT_MANAGER');
121: fnd_msg_pub.ADD;
122: RETURN;
123: END IF;
137: p_project_end_date => p_project_end_date,
138: p_scheduled_flag => p_scheduled_flag,
139: x_error_occured => l_error_occured);
140: IF (l_error_occured = 'Y') THEN
141: x_return_status := FND_API.G_RET_STS_ERROR;
142: END IF;
143:
144:
145:
156: p_resource_source_id => p_resource_source_id,
157: x_error_occured => l_error_occured);
158:
159: IF (l_error_occured = 'Y') THEN
160: x_return_status := FND_API.G_RET_STS_ERROR;
161: END IF;
162: -- bug2671210 ended.
163:
164: --- call to validate the start and end dates for the person
169: p_end_date_active => p_end_date_active,
170: x_error_occured => l_error_occured);
171:
172: IF (l_error_occured = 'Y') THEN
173: x_return_status := FND_API.G_RET_STS_ERROR;
174: END IF;
175:
176: /* Start of Bug 3096700 */
177: /* Adding a validation for checking if the project role start date lies between specified start active and end active date */
185: AND (p_end_date_active IS NULL
186: OR p_end_date_active BETWEEN start_date_active AND NVL(end_date_active,p_end_date_active));
187: EXCEPTION
188: WHEN NO_DATA_FOUND THEN
189: x_return_status := FND_API.G_RET_STS_ERROR;
190: fnd_message.set_name('PA','PA_ROLE_INACTIVE');
191: fnd_msg_pub.ADD;
192: END;
193: /* End of 3096700 */
205:
206: OPEN c_duplicate_customer_org;
207: FETCH c_duplicate_customer_org INTO l_dummy;
208: IF c_duplicate_customer_org%FOUND THEN
209: x_return_status := FND_API.G_RET_STS_ERROR;
210: fnd_message.set_name('PA','PA_DUPLICATE_CUSTOMER_ORG');
211: fnd_msg_pub.ADD;
212: CLOSE c_duplicate_customer_org;
213: RETURN;
225: --dbms_output.put_line('schedule is allowed for this role');
226: x_assignment_action := 'CREATE';
227: ELSE
228: --dbms_output.put_line('schedule is not allowed for this role');
229: x_return_status := FND_API.G_RET_STS_ERROR;
230: fnd_message.set_name('PA','PA_NO_SCHEDULE_ALLOWED');
231: --fnd_message.set_token('PKG_NAME','PA_PROJECT_PARTIES_UTILS');
232: --fnd_message.set_token('PROCEDURE_NAME','VALIDATE_PROJECT_PARTY');
233: fnd_msg_pub.ADD;
273: p_project_party_id := l_project_party_id;
274: p_record_version_number := l_record_version_number;
275: ELSE
276: --dbms_output.put_line('cannot create duplicate record');
277: x_return_status := FND_API.G_RET_STS_ERROR;
278: fnd_message.set_name('PA','PA_XC_TOO_MANY_OMGRS');
279: --fnd_message.set_token('PKG_NAME','PA_PROJECT_PARTIES_UTILS');
280: --fnd_message.set_token('PROCEDURE_NAME','VALIDATE_PROJECT_PARTY');
281: fnd_msg_pub.ADD;
298: p_start_date_active => p_start_date_active,
299: p_end_date_active => p_end_date_active,
300: x_error_occured => l_error_occured);
301: IF (l_error_occured = 'Y') THEN
302: x_return_status := FND_API.G_RET_STS_ERROR;
303: END IF;
304: --dbms_output.put_line('validating manager');
305: ELSE
306: IF (p_debug_mode = 'Y') THEN
315: p_start_date_active => p_start_date_active,
316: p_end_date_active => p_end_date_active,
317: x_error_occured => l_error_occured);
318: IF (l_error_occured = 'Y') THEN
319: x_return_status := FND_API.G_RET_STS_ERROR;
320: END IF;
321: --dbms_output.put_line('validating overlap');
322: END IF;
323: END IF;
323: END IF;
324:
325: EXCEPTION WHEN OTHERS THEN
326: p_end_date_active := l_end_date_active; --Bug 4565156 NOCOPY changes
327: x_return_status := fnd_api.g_ret_sts_unexp_error;
328: fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROJECT_PARTIES_UTILS',
329: p_procedure_name => 'VALIDATE_PROJECT_PARTY',
330: p_error_text => SUBSTRB(SQLERRM,1,240));
331: RAISE;
689: x_project_role_name OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
690: x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
691: x_error_message_code OUT NOCOPY VARCHAR2) IS --File.Sql.39 bug 4440895
692: BEGIN
693: x_return_status := FND_API.G_RET_STS_SUCCESS;
694:
695: pa_debug.set_err_stack('get_current_project_manager_details');
696:
697: BEGIN
750:
751: pa_debug.reset_err_stack;
752: EXCEPTION
753: WHEN NO_DATA_FOUND THEN
754: x_return_status := FND_API.G_RET_STS_ERROR;
755: x_error_message_code := 'PA_NO_PROJ_MGR_EXISTS';
756: WHEN OTHERS THEN
757: fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROJECT_PARTIES_UTILS',
758: p_procedure_name => pa_debug.g_err_stack,
1224: BEGIN
1225:
1226: pa_debug.set_err_stack('VALIDATE_ONE_MANAGER_EXISTS');
1227: x_msg_count := 0;
1228: x_return_status := FND_API.G_RET_STS_SUCCESS;
1229:
1230: /* Do the checking for the Manager date only for an Approved Contract Type project. */
1231: IF p_project_id IS NOT NULL THEN
1232: OPEN c_prj;
1248: pa_utils.add_message
1249: ( p_app_short_name => 'PA'
1250: ,p_msg_name => 'PA_PR_INSUF_PROJ_MGR'
1251: );
1252: x_return_status := FND_API.G_RET_STS_ERROR;
1253: x_msg_count := 1;
1254: x_msg_data := 'PA_PR_INSUF_PROJ_MGR';
1255: END IF;
1256: END IF;
1259:
1260: EXCEPTION
1261:
1262: WHEN OTHERS THEN
1263: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1264: x_msg_count := 1;
1265: x_msg_data := SQLERRM;
1266: FND_MSG_PUB.add_exc_msg
1267: ( p_pkg_name => 'PA_PROJECT_PARTIES_UTILS.VALIDATE_ONE_MANAGER_EXISTS'
1270: pa_debug.write('VALIDATE_ONE_MANAGER_EXISTS: ', SQLERRM, 3);
1271: pa_debug.write('VALIDATE_ONE_MANAGER_EXISTS: ', pa_debug.G_Err_Stack, 3);
1272: END IF;
1273: pa_debug.reset_err_stack;
1274: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1275:
1276: END VALIDATE_ONE_MANAGER_EXISTS;
1277:
1278: -- API name : get_current_project_manager