DBA Data[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;