[Home] [Help]
PACKAGE BODY: APPS.PA_WORKPLAN_AMG_PUB
Source
1 PACKAGE BODY PA_WORKPLAN_AMG_PUB AS
2 /* $Header: PAPMWKPB.pls 115.3 2002/12/21 01:01:15 mwasowic noship $*/
3 -- =========================================================================
4 /* valid p_stautus_code are: STRUCTURE_PUBLISHED, STRUCTURE_SUBMITTED, STRUCTURE_WORKING */
5 PROCEDURE change_structure_status
6 (p_api_version_number IN NUMBER
7 , p_init_msg_list IN VARCHAR2 := 'F'
8 , p_commit IN VARCHAR2 := 'F'
9 , p_return_status OUT NOCOPY VARCHAR2
10 , p_msg_count OUT NOCOPY NUMBER
11 , p_msg_data OUT NOCOPY VARCHAR2
12 , p_structure_version_id IN NUMBER
13 , p_pa_project_id IN NUMBER
14 , p_status_code IN VARCHAR2
15 , p_published_struct_ver_id OUT NOCOPY NUMBER
16
17 )IS
18
19 cursor version_info IS
20 select record_version_number
21 from pa_proj_elem_ver_structure
22 where element_version_id = p_structure_version_id
23 and project_id = p_pa_project_id;
24
25 cursor struct_info is
26 select pev_structure_id
27 from pa_proj_elem_ver_structure
28 where element_version_id = p_structure_version_id
29 and project_id = p_pa_project_id;
30
31
32
33 l_structure_id NUMBER := 0;
34 l_api_version_number CONSTANT NUMBER := G_API_VERSION_NUMBER;
35 l_api_name CONSTANT VARCHAR2(30) := 'change_structure_status';
36 l_module_name VARCHAR2(80);
37 l_responsibility_id NUMBER := 0;
38 l_user_id NUMBER := 0;
39 l_record_version_number NUMBER := 0;
40 l_function_allowed VARCHAR2(1) := 'N';
41
42 BEGIN
43 SAVEPOINT change_structure_status;
44 p_return_status := FND_API.G_RET_STS_SUCCESS;
45 IF NOT FND_API.Compatible_API_Call ( l_api_version_number
46 ,p_api_version_number
47 ,l_api_name
48 ,G_PKG_NAME) THEN
49 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
50 END IF;
51 IF FND_API.to_boolean(p_init_msg_list) THEN
52 FND_MSG_PUB.initialize;
53 END IF;
54 l_responsibility_id := FND_GLOBAL.Resp_id;
55 l_user_id := FND_GLOBAL.User_id;
56
57 pa_security.initialize (x_user_id => l_user_id,
58 x_calling_module => l_module_name);
59
60 PA_INTERFACE_UTILS_PUB.g_project_id := p_pa_project_id;
61
62 PA_PM_FUNCTION_SECURITY_PUB.check_function_security
63 (p_api_version_number => p_api_version_number,
64 p_responsibility_id => l_responsibility_id,
65 p_function_name => 'PA_PM_UPDATE_PROJECT',
66 p_msg_count => p_msg_count,
67 p_msg_data => p_msg_data,
68 p_return_status => p_return_status,
69 p_function_allowed => l_function_allowed );
70
71 IF p_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
72 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
73 ELSIF p_return_status = FND_API.G_RET_STS_ERROR THEN
74 RAISE FND_API.G_EXC_ERROR;
75 END IF;
76
77 IF l_function_allowed is NULL OR l_function_allowed = 'N' THEN
78 FND_MESSAGE.SET_NAME('PA','PA_FUNCTION_SECURITY_ENFORCED');
79 FND_MSG_PUB.add;
80 p_return_status := FND_API.G_RET_STS_ERROR;
81 RAISE FND_API.G_EXC_ERROR;
82 END IF;
83
84 OPEN version_info;
85 FETCH version_info INTO l_record_version_number;
86 IF version_info%NOTFOUND THEN
87 RAISE NO_DATA_FOUND;
88 END IF;
89 CLOSE version_info;
90
91 IF p_status_code is not NULL and p_status_code = 'STRUCTURE_PUBLISHED' THEN
92 PA_PROJECT_STRUCTURE_PUB1.PUBLISH_STRUCTURE(
93 p_api_version => p_api_version_number
94 ,p_init_msg_list => p_init_msg_list
95 ,p_commit => p_commit
96 ,p_validate_only => 'N'
97 ,p_calling_module => 'AMG'
98 ,p_responsibility_id => l_responsibility_id
99 ,p_structure_version_id => p_structure_version_id
100 --,p_publish_structure_ver_name => p_publish_structure_ver_name
101 --,p_structure_ver_desc => p_structure_ver_desc
102 --,p_effective_date => p_effective_date
103 --,p_original_baseline_flag => p_original_baseline_flag
104 --,p_current_baseline_flag => p_current_baseline_flag
105 ,x_published_struct_ver_id => p_published_struct_ver_id
106 ,x_return_status => p_return_status
107 ,x_msg_count => p_msg_count
108 ,x_msg_data => p_msg_data);
109 ELSE
110 IF p_status_code is not NULL and p_status_code = 'STRUCTURE_SUBMITTED' THEN
111 OPEN struct_info;
112 FETCH struct_info into l_structure_id;
113 IF (struct_info%NOTFOUND) THEN
114 CLOSE struct_info;
115 RAISE NO_DATA_FOUND;
116 END IF;
117 CLOSE struct_info;
118
119 pa_project_structure_pub1.submit_workplan
120 (
121 p_api_version => p_api_version_number
122 ,p_init_msg_list => p_init_msg_list
123 ,p_commit => p_commit
124 ,p_validate_only => FND_API.G_FALSE
125 ,p_calling_module => 'AMG'
126 ,p_project_id => p_pa_project_id
127 ,p_structure_id => l_structure_id
128 ,p_structure_version_id => p_structure_version_id
129 ,p_responsibility_id => l_responsibility_id
130 ,x_return_status => p_return_status
131 ,x_msg_count => p_msg_count
132 ,x_msg_data => p_msg_data
133 );
134 ELSE
135 PA_PROJECT_STRUCTURE_PVT1.CHANGE_WORKPLAN_STATUS
136 (
137 p_api_version => p_api_version_number
138 ,p_init_msg_list => p_init_msg_list
139 ,p_commit => p_commit
140 ,p_project_id => p_pa_project_id
141 ,p_structure_version_id => p_structure_version_id
142 ,p_status_code => p_status_code
143 ,p_record_version_number => l_record_version_number
144 ,x_return_status => p_return_status
145 ,x_msg_count => p_msg_count
146 ,x_msg_data => p_msg_data
147 );
148 END IF;
149 END IF;
150
151 IF FND_API.to_boolean(p_commit) THEN
152 IF (p_return_status is NOT NULL and p_return_status = 'S') THEN
153 COMMIT;
154 END IF;
155 END IF;
156
157 EXCEPTION
158
159 WHEN NO_DATA_FOUND THEN
160 pa_interface_utils_pub.map_new_amg_msg
161 ( p_old_message_code => 'PA_NO_DATA_FOUND'
162 ,p_msg_attribute => 'CHANGE'
163 ,p_resize_flag => 'N'
164 ,p_msg_context => 'GENERAL'
165 ,p_attribute1 => ''
166 ,p_attribute2 => ''
167 ,p_attribute3 => ''
168 ,p_attribute4 => ''
169 ,p_attribute5 => '');
170
171 WHEN FND_API.G_EXC_ERROR THEN
172 p_return_status := FND_API.G_RET_STS_ERROR;
173 ROLLBACK TO change_structure_status;
174 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count
175 ,p_data => p_msg_data);
176
177 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
178 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
179 ROLLBACK TO change_structure_status;
180 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count
181 ,p_data => p_msg_data);
182
183 WHEN OTHERS THEN
184 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
185 ROLLBACK TO change_structure_status;
186
187 IF FND_MSG_PUB.Check_Msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
188 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,l_api_name);
189 END IF;
190
191 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count
192 ,p_data => p_msg_data);
193
194
195 END change_structure_status;
196
197 PROCEDURE baseline_structure
198 (p_api_version_number IN NUMBER
199 , p_init_msg_list IN VARCHAR2 := 'F'
200 , p_commit IN VARCHAR2 := 'F'
201 , p_return_status OUT NOCOPY VARCHAR2
202 , p_msg_count OUT NOCOPY NUMBER
203 , p_msg_data OUT NOCOPY VARCHAR2
204 , p_structure_version_id IN NUMBER
205 , p_pa_project_id IN NUMBER
206
207 )IS
208 cursor version_info IS
209 select pev_structure_id, record_version_number,name
210 from PA_proj_elem_ver_structure
211 where element_version_id = p_structure_version_id
212 and project_id = p_pa_project_id;
213
214 l_api_version_number CONSTANT NUMBER := G_API_VERSION_NUMBER;
215 l_api_name CONSTANT VARCHAR2(30) := 'baseline_structure';
216 l_module_name VARCHAR2(80);
217 l_responsibility_id NUMBER := 0;
218 l_user_id NUMBER := 0;
219 l_function_allowed VARCHAR2(1) := 'N';
220 l_record_version_number pa_proj_elem_ver_structure.record_version_number%type;
221 l_name pa_proj_elem_ver_structure.name%type;
222 l_structure_id pa_proj_elem_ver_structure.pev_structure_id%type;
223
224
225
226 str version_info%ROWTYPE;
227 BEGIN
228
229 SAVEPOINT change_structure_status;
230 p_return_status := FND_API.G_RET_STS_SUCCESS;
231 IF NOT FND_API.Compatible_API_Call ( l_api_version_number
232 ,p_api_version_number
233 ,l_api_name
234 ,G_PKG_NAME) THEN
235 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
236 END IF;
237 IF FND_API.to_boolean(p_init_msg_list) THEN
238 FND_MSG_PUB.initialize;
239 END IF;
240 l_responsibility_id := FND_GLOBAL.Resp_id;
241 l_user_id := FND_GLOBAL.User_id;
242
243 pa_security.initialize (x_user_id => l_user_id,
244 x_calling_module => l_module_name);
245
246 PA_INTERFACE_UTILS_PUB.g_project_id := p_pa_project_id;
247
248 PA_PM_FUNCTION_SECURITY_PUB.check_function_security
249 (p_api_version_number => p_api_version_number,
250 p_responsibility_id => l_responsibility_id,
251 p_function_name => 'PA_PM_UPDATE_PROJECT',
252 p_msg_count => p_msg_count,
253 p_msg_data => p_msg_data,
254 p_return_status => p_return_status,
255 p_function_allowed => l_function_allowed );
256
257 IF p_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
258 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
259 ELSIF p_return_status = FND_API.G_RET_STS_ERROR THEN
260 RAISE FND_API.G_EXC_ERROR;
261 END IF;
262
263 IF l_function_allowed is NULL OR l_function_allowed = 'N' THEN
264 FND_MESSAGE.SET_NAME('PA','PA_FUNCTION_SECURITY_ENFORCED');
265 FND_MSG_PUB.add;
266 p_return_status := FND_API.G_RET_STS_ERROR;
267 RAISE FND_API.G_EXC_ERROR;
268 END IF;
269
270 OPEN version_info;
271 FETCH version_info INTO str;
272 IF version_info%NOTFOUND THEN
273 RAISE NO_DATA_FOUND;
274 END IF;
275 l_record_version_number := str.record_version_number;
276 l_name := str.name;
277 l_structure_id := str.pev_structure_id;
278 CLOSE version_info;
279
280 PA_PROJECT_STRUCTURE_PUB1.Update_Structure_Version_Attr
281 (
282 p_api_version => p_api_version_number
283 ,p_init_msg_list => p_init_msg_list
284 ,p_commit => p_commit
285 ,p_calling_module => 'AMG'
286 -- ,p_project_id => p_project_id
287 -- ,p_structure_version_id => p_structure_version_id
288 ,p_pev_structure_id => l_structure_id
289 ,p_baseline_current_flag => 'Y'
290 ,p_structure_version_name => l_name
291 ,p_record_version_number => l_record_version_number
292 ,x_return_status => p_return_status
293 ,x_msg_count => p_msg_count
294 ,x_msg_data => p_msg_data
295 );
296
297 IF FND_API.to_boolean(p_commit) THEN
298 IF (p_return_status is NOT NULL and p_return_status = 'S') THEN
299 COMMIT;
300 END IF;
301 END IF;
302
303 EXCEPTION
304
305 WHEN NO_DATA_FOUND THEN
306 pa_interface_utils_pub.map_new_amg_msg
307 ( p_old_message_code => 'PA_NO_DATA_FOUND'
308 ,p_msg_attribute => 'CHANGE'
309 ,p_resize_flag => 'N'
310 ,p_msg_context => 'GENERAL'
311 ,p_attribute1 => ''
312 ,p_attribute2 => ''
313 ,p_attribute3 => ''
314 ,p_attribute4 => ''
315 ,p_attribute5 => '');
316
317 WHEN FND_API.G_EXC_ERROR THEN
318 p_return_status := FND_API.G_RET_STS_ERROR;
319 ROLLBACK TO change_structure_status;
320 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count
321 ,p_data => p_msg_data);
322
323 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
324 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
325 ROLLBACK TO change_structure_status;
326 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count
327 ,p_data => p_msg_data);
328
329 WHEN OTHERS THEN
330 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
331 ROLLBACK TO change_structure_status;
332
333 IF FND_MSG_PUB.Check_Msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
334 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,l_api_name);
335 END IF;
336
337 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count
338 ,p_data => p_msg_data);
339
340 END baseline_structure;
341
342 END PA_WORKPLAN_AMG_PUB;