DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_PROJECT_SUBTEAMS_PUB

Source


1 PACKAGE BODY pa_project_subteams_pub AS
2 --$Header: PARTSTPB.pls 120.1 2005/09/28 04:53:18 sunkalya noship $
3 
4 PROCEDURE Create_Subteam
5 (
6  p_api_version                 IN     NUMBER :=  1.0,
7  p_init_msg_list               IN     VARCHAR2 := fnd_api.g_true,
8  p_commit                      IN     VARCHAR2 := FND_API.g_false,
9  p_validate_only               IN     VARCHAR2 := FND_API.g_true,
10  p_validation_level            IN     NUMBER   := FND_API.g_valid_level_full,
11  p_calling_module              IN     VARCHAR2 := 'SELF_SERVICE',
12  p_debug_mode                  IN     VARCHAR2 := 'N',
13  p_max_msg_count               IN     NUMBER   := FND_API.g_miss_num,
14  p_subteam_name                IN     pa_project_subteams.name%TYPE        := FND_API.g_miss_char,
15  p_object_type                 IN     pa_project_subteams.object_type%TYPE := FND_API.g_miss_char,
16  p_object_id                   IN     pa_project_subteams.object_id%TYPE   := FND_API.g_miss_num,
17  --p_project_number            IN     VARCHAR2   := FND_API.g_miss_char,
18  p_object_name                 IN     VARCHAR2   := FND_API.g_miss_char,
19  p_description                 IN     pa_project_subteams.description%TYPE := FND_API.g_miss_char,
20  p_record_version_number       IN     pa_project_subteams.record_version_number%TYPE := FND_API.g_miss_num,
21  p_attribute_category          IN     pa_project_subteams.attribute_category%TYPE    := FND_API.g_miss_char,
22  p_attribute1                  IN pa_project_subteams.attribute1%TYPE      := FND_API.G_MISS_CHAR,
23  p_attribute2                  IN pa_project_subteams.attribute2%TYPE   := FND_API.G_MISS_CHAR,
24  p_attribute3                  IN pa_project_subteams.attribute3%TYPE   := FND_API.G_MISS_CHAR,
25  p_attribute4                  IN pa_project_subteams.attribute4%TYPE   := FND_API.G_MISS_CHAR,
26  p_attribute5                  IN pa_project_subteams.attribute5%TYPE   := FND_API.G_MISS_CHAR,
27  p_attribute6                  IN pa_project_subteams.attribute6%TYPE   := FND_API.G_MISS_CHAR,
28  p_attribute7                  IN pa_project_subteams.attribute7%TYPE   := FND_API.G_MISS_CHAR,
29  p_attribute8                  IN pa_project_subteams.attribute8%TYPE   := FND_API.G_MISS_CHAR,
30  p_attribute9                  IN pa_project_subteams.attribute9%TYPE   := FND_API.G_MISS_CHAR,
31  p_attribute10                 IN pa_project_subteams.attribute10%TYPE := FND_API.G_MISS_CHAR,
32  p_attribute11                 IN pa_project_subteams.attribute11%TYPE := FND_API.G_MISS_CHAR,
33  p_attribute12                 IN pa_project_subteams.attribute12%TYPE := FND_API.G_MISS_CHAR,
34  p_attribute13                 IN pa_project_subteams.attribute13%TYPE := FND_API.G_MISS_CHAR,
35  p_attribute14                 IN pa_project_subteams.attribute14%TYPE := FND_API.G_MISS_CHAR,
36  p_attribute15                 IN pa_project_subteams.attribute15%TYPE := FND_API.G_MISS_CHAR,
37 --Bug: 4537865
38  x_new_subteam_id              OUT NOCOPY    pa_project_subteams.project_subteam_id%TYPE,
39  x_subteam_row_id              OUT NOCOPY   ROWID,
40  x_return_status               OUT NOCOPY   VARCHAR2,
41  x_msg_count                   OUT NOCOPY   NUMBER,
42  x_msg_data                    OUT NOCOPY   VARCHAR2
43 --Bug: 4537865
44 )
45 IS
46 
47  l_object_id                  number      := FND_API.g_miss_num;
48  l_msg_index_out              NUMBER;
49  l_error_message_code         varchar2(30);
50 BEGIN
51 
52   -- Initialize the Error Stack
53   PA_DEBUG.init_err_stack('PA_PROJECT_SUBTEAMS_PUB.Create_Subteam');
54 
55   -- Initialize the error flag
56   PA_PROJECT_SUBTEAMS_PUB.g_error_exists := FND_API.G_FALSE;
57 
58   -- Initialize the return status to success
59   x_return_status := FND_API.G_RET_STS_SUCCESS;
60 
61   --Clear the global PL/SQL message table
62   IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
63     FND_MSG_PUB.initialize;
64   END IF;
65 
66   -- Issue API savepoint if the transaction is to be committed
67   IF p_commit  = FND_API.G_TRUE THEN
68      --DBMS_OUTPUT.Put_Line('Commit is set to '||FND_API.G_TRUE);
69      SAVEPOINT   SBT_PUB_CREATE_SUBTEAM;
70   END IF;
71 
72   -- Do all Value to ID conversions and validations
73   IF ((p_object_id IS NULL OR p_object_id = FND_API.G_MISS_NUM)
74      AND (p_object_name IS NOT NULL AND p_object_name <> FND_API.G_MISS_CHAR)) THEN
75      pa_project_subteam_utils.get_object_id(p_object_type => p_object_type
76 					   ,p_object_id   => l_object_id
77 					   ,p_object_name => p_object_name
78 					   ,x_return_status => x_return_status
79 					   ,x_error_message_code => l_error_message_code);
80      if(x_return_status = FND_API.G_RET_STS_ERROR) then
81        PA_UTILS.Add_Message( p_app_short_name => 'PA'
82                          ,p_msg_name       => l_error_message_code);
83        PA_PROJECT_SUBTEAMS_PUB.g_error_exists := FND_API.G_TRUE;
84        return;
85      end if;
86     /****
87      l_project_id := PA_UTILS.GetProjId (x_project_num => p_project_number);
88     ELSIF (p_project_id IS NULL OR p_project_id = FND_API.G_MISS_NUM)
89      AND p_project_name IS NOT NULL THEN
90 
91      SELECT project_id
92      INTO l_project_id
93      FROM pa_projects_all
94      WHERE name = p_project_name;
95     *****/
96   ELSE
97      l_object_id := p_object_id;
98   END IF;
99 
100 
101   -- Call the private package
102   PA_PROJECT_SUBTEAMS_PVT.Create_Subteam
103   (
104    p_api_version                   => p_api_version
105    ,p_init_msg_list                => p_init_msg_list
106    ,p_commit                       => p_commit
107    ,p_validate_only                => p_validate_only
108    ,p_validation_level               => p_validation_level
109    ,p_calling_module               => p_calling_module
110    ,p_debug_mode                   => p_debug_mode
111    ,p_max_msg_count                => p_max_msg_count
112    ,p_subteam_name                 => p_subteam_name
113    ,p_object_type                  => p_object_type
114    ,p_object_id                   => l_object_id
115    ,p_description                  => p_description
116    ,p_record_version_number        => p_record_version_number
117    ,p_attribute_category           => p_attribute_category
118    ,p_attribute1                   => p_attribute1
119    ,p_attribute2                   => p_attribute2
120    ,p_attribute3                   => p_attribute3
121    ,p_attribute4                   => p_attribute4
122    ,p_attribute5                   => p_attribute5
123    ,p_attribute6                   => p_attribute6
124    ,p_attribute7                   => p_attribute7
125    ,p_attribute8                   => p_attribute8
126    ,p_attribute9                   => p_attribute9
127    ,p_attribute10                  => p_attribute10
128    ,p_attribute11                  => p_attribute11
129    ,p_attribute12                  => p_attribute12
130    ,p_attribute13                  => p_attribute13
131    ,p_attribute14                  => p_attribute14
132    ,p_attribute15                  => p_attribute15
133    ,x_new_subteam_id               => x_new_subteam_id
134    ,x_subteam_row_id               => x_subteam_row_id
135    ,x_return_status                => x_return_status
136    ,x_msg_count                    => x_msg_count
137    ,x_msg_data                     => x_msg_data
138  );
139 
140   --
141   -- IF the number of messaages is 1 then fetch the message code from the stack
142   -- and return its text
143   --
144 
145   x_msg_count :=  FND_MSG_PUB.Count_Msg;
146   IF x_msg_count = 1 THEN
147     pa_interface_utils_pub.get_messages ( p_encoded       => FND_API.G_TRUE
148                                          ,p_msg_index     => 1
149                                          ,p_data          => x_msg_data
150                                          ,p_msg_index_out => l_msg_index_out
151                                         );
152   END IF;
153 
154   -- Reset the error stack when returning to the calling program
155   PA_DEBUG.Reset_Err_Stack;
156 
157   -- If g_error_exists is TRUE then set the x_return_status to 'E'
158 
159   IF PA_PROJECT_SUBTEAMS_PUB.g_error_exists = FND_API.G_TRUE  THEN
160     x_return_status := FND_API.G_RET_STS_ERROR;
161   END IF;
162 
163 
164   -- Put any message text from message stack into the Message ARRAY
165   EXCEPTION
166     WHEN OTHERS THEN
167         IF p_commit = FND_API.G_TRUE THEN
168           ROLLBACK TO SBT_PUB_CREATE_SUBTEAM;
169         END IF;
170 
171        -- Set the excetption Message and the stack
172        FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_PROJECT_SUBTEAMS_PUB.Create_Subteam'
173                                 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
174        --
175        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
176        RAISE;  -- This is optional depending on the needs
177 
178 END Create_Subteam;
179 
180 
181 PROCEDURE Update_Subteam
182 (
183  p_api_version           IN     NUMBER :=  1.0,
184  p_init_msg_list         IN     VARCHAR2 			:= fnd_api.g_true,
185  p_commit                IN     VARCHAR2                        := FND_API.g_false,
186  p_validate_only         IN     VARCHAR2                        := FND_API.g_true,
187  p_validation_level      IN     NUMBER                          := FND_API.g_valid_level_full,
188  p_calling_module        IN     VARCHAR2 			:= 'SELF_SERVICE',
189  p_debug_mode            IN     VARCHAR2 			:= 'N',
190  p_max_msg_count         IN     NUMBER 				:= FND_API.g_miss_num,
191  p_subteam_row_id        IN     ROWID 				:= NULL,
192  p_subteam_id            IN     pa_project_subteams.project_subteam_id%TYPE := fnd_api.g_miss_num,
193  p_subteam_name          IN     pa_project_subteams.name%TYPE   := FND_API.g_miss_char,
194  p_object_type           IN     pa_project_subteams.object_type%TYPE   := FND_API.g_miss_char,
195  p_object_id             IN     pa_project_subteams.object_id%TYPE  := FND_API.g_miss_num,
196  p_object_name           IN     VARCHAR2                        := FND_API.g_miss_char,
197  p_description           IN     pa_project_subteams.description%TYPE  := FND_API.g_miss_char,
198  p_record_version_number IN     pa_project_subteams.record_version_number%TYPE := FND_API.g_miss_num,
199  p_attribute_category    IN     pa_project_subteams.attribute_category%TYPE    := FND_API.g_miss_char,
200  p_attribute1            IN     pa_project_subteams.attribute1%TYPE                := FND_API.G_MISS_CHAR,
201  p_attribute2            IN     pa_project_subteams.attribute2%TYPE                := FND_API.G_MISS_CHAR,
202  p_attribute3            IN     pa_project_subteams.attribute3%TYPE                := FND_API.G_MISS_CHAR,
203  p_attribute4            IN     pa_project_subteams.attribute4%TYPE                := FND_API.G_MISS_CHAR,
204  p_attribute5            IN     pa_project_subteams.attribute5%TYPE                := FND_API.G_MISS_CHAR,
205  p_attribute6            IN     pa_project_subteams.attribute6%TYPE                := FND_API.G_MISS_CHAR,
206  p_attribute7            IN     pa_project_subteams.attribute7%TYPE                := FND_API.G_MISS_CHAR,
207  p_attribute8            IN     pa_project_subteams.attribute8%TYPE                := FND_API.G_MISS_CHAR,
208  p_attribute9            IN     pa_project_subteams.attribute9%TYPE                := FND_API.G_MISS_CHAR,
209  p_attribute10           IN     pa_project_subteams.attribute10%TYPE               := FND_API.G_MISS_CHAR,
210  p_attribute11           IN     pa_project_subteams.attribute11%TYPE               := FND_API.G_MISS_CHAR,
211  p_attribute12           IN     pa_project_subteams.attribute12%TYPE               := FND_API.G_MISS_CHAR,
212  p_attribute13           IN     pa_project_subteams.attribute13%TYPE               := FND_API.G_MISS_CHAR,
213  p_attribute14           IN     pa_project_subteams.attribute14%TYPE               := FND_API.G_MISS_CHAR,
214  p_attribute15           IN     pa_project_subteams.attribute15%TYPE               := FND_API.G_MISS_CHAR,
215  --Bug: 4537865
216  x_return_status         OUT 		NOCOPY    	VARCHAR2,
217  x_msg_count             OUT 		NOCOPY    	NUMBER,
218  --x_record_version_number      OUT 	NOCOPY   	NUMBER,
219  x_msg_data              OUT  		NOCOPY  	VARCHAR2
220  --Bug: 4537865
221 )
222 IS
223 
224 CURSOR check_record_version IS
225 SELECT ROWID
226 FROM   pa_project_subteams
227 WHERE  (project_subteam_id = p_subteam_id
228 	OR ROWID = p_subteam_row_id)
229 	AND    record_version_number = p_record_version_number;
230 
231 l_subteam_row_id ROWID := NULL;
232 l_object_id     number                   := FND_API.g_miss_num;
233 l_msg_index_out number;
234  l_error_message_code         varchar2(30);
235 BEGIN
236 
237   -- Initialize the Error Stack
238   PA_DEBUG.init_err_stack('PA_PROJECT_SUBTEAMS_PUB.Update_Subteam');
239 
240   -- Initialize the error flag
241   PA_PROJECT_SUBTEAMS_PUB.g_error_exists := FND_API.G_FALSE;
242 
243   --  Issue API savepoint if the transaction is to be committed
244   IF p_commit  = FND_API.G_TRUE THEN
245     SAVEPOINT   SBT_PUB_UPDATE_SUBTEAM;
246   END IF;
247 
248   --Clear the global PL/SQL message table
249   IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
250     FND_MSG_PUB.initialize;
251   END IF;
252 
253   OPEN check_record_version;
254 
255   FETCH check_record_version INTO l_subteam_row_id;
256 
257   IF check_record_version%NOTFOUND THEN
258      PA_UTILS.Add_Message( p_app_short_name => 'PA'
259                            ,p_msg_name       => 'PA_XC_RECORD_CHANGED');
260      PA_PROJECT_SUBTEAMS_PUB.g_error_exists := FND_API.G_TRUE;
261   ELSE
262      -- Do all Value to ID conversions and validations
263      IF (p_object_id IS NULL OR p_object_id = FND_API.G_MISS_NUM)
264        AND (p_object_name IS NOT NULL AND p_object_name <> FND_API.G_MISS_CHAR) THEN
265        pa_project_subteam_utils.get_object_id(p_object_type => p_object_type
266                                            ,p_object_id   => l_object_id
267                                            ,p_object_name => p_object_name
268                                            ,x_return_status => x_return_status
269                                            ,x_error_message_code => l_error_message_code);
270        if(x_return_status = FND_API.G_RET_STS_ERROR) then
271           PA_UTILS.Add_Message( p_app_short_name => 'PA'
272                          ,p_msg_name       =>l_error_message_code );
273           PA_PROJECT_SUBTEAMS_PUB.g_error_exists := FND_API.G_TRUE;
274           return;
275        end if;
276     	--l_project_id := PA_UTILS.GetProjId (x_project_num => p_project_number);
277      ELSE
278         l_object_id := p_object_id;
279      END IF;
280 
281 
282     -- Call the private package
283      PA_PROJECT_SUBTEAMS_PVT.Update_Subteam
284        (
285 	p_api_version                   => p_api_version
286 	,p_init_msg_list                => p_init_msg_list
287 	,p_commit                       => p_commit
288 	,p_validate_only                => p_validate_only
289 	,p_validation_level             => p_validation_level
290 	,p_calling_module               => p_calling_module
291 	,p_debug_mode                   => p_debug_mode
292 	,p_max_msg_count                => p_max_msg_count
293 
294 	,p_subteam_row_id               => l_subteam_row_id
295         ,p_subteam_id                   => p_subteam_id
296 	,p_subteam_name                 => p_subteam_name
297 	,p_object_type                 => p_object_type
298 	,p_object_id                   => l_object_id
299 	,p_description                  => p_description
300 	,p_record_version_number        => p_record_version_number
301 	,p_attribute_category           => p_attribute_category
302 	,p_attribute1                   => p_attribute1
303 	,p_attribute2                   => p_attribute2
304 	,p_attribute3                   => p_attribute3
305 	,p_attribute4                   => p_attribute4
306 	,p_attribute5                   => p_attribute5
307        ,p_attribute6                   => p_attribute6
308        ,p_attribute7                   => p_attribute7
309        ,p_attribute8                   => p_attribute8
310        ,p_attribute9                   => p_attribute9
311        ,p_attribute10                  => p_attribute10
312        ,p_attribute11                  => p_attribute11
313        ,p_attribute12                  => p_attribute12
314        ,p_attribute13                  => p_attribute13
315        ,p_attribute14                  => p_attribute14
316        ,p_attribute15                  => p_attribute15
317        ,x_return_status                => x_return_status
318        ,x_msg_count                    => x_msg_count
319      --  ,x_record_version_number        => x_record_version_number
320        ,x_msg_data                     => x_msg_data
321 	);
322 
323   END IF;
324 
325   CLOSE check_record_version;
326   --
327   -- IF the number of messaages is 1 then fetch the message code from the
328   -- stack and return its text
329   --
330   x_msg_count :=  FND_MSG_PUB.Count_Msg;
331   IF x_msg_count = 1 THEN
332     pa_interface_utils_pub.get_messages ( p_encoded       => FND_API.G_TRUE
333                                          ,p_msg_index     => 1
334                                          ,p_data          => x_msg_data
335                                          ,p_msg_index_out => l_msg_index_out
336                                         );
337   END IF;
338 
339 
340   -- Reset the error stack when returning to the calling program
341   PA_DEBUG.Reset_Err_Stack;
342 
343   -- If g_error_exists is TRUE then set the x_return_status to 'E'
344 
345   IF PA_PROJECT_SUBTEAMS_PUB.g_error_exists = FND_API.G_TRUE  THEN
346      x_return_status := FND_API.G_RET_STS_ERROR;
347     /***
348      SELECT record_version_number
349      into  x_record_version_number
350      FROM pa_project_subteams
351      WHERE project_subteam_id = p_subteam_id;
352 
353   ELSE
354         x_record_version_number := p_record_version_number + 1;
355    **/
356   END IF;
357 
358   -- Put any message text from message stack into the Message ARRAY
359   EXCEPTION
360     WHEN OTHERS THEN
361         IF p_commit = FND_API.G_TRUE THEN
362           ROLLBACK TO  SBT_PUB_UPDATE_SUBTEAM;
363         END IF;
364 
365       -- Set the exception Message and the stack
366       FND_MSG_PUB.add_exc_msg ( p_pkg_name       => 'PA_PROJECT_SUBTEAMS_PUB.Update_Subteam'
367                                ,p_procedure_name => PA_DEBUG.G_Err_Stack );
368        --
369        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
370        RAISE;  -- This is optional depending on the needs
371        --
372 END Update_Subteam;
373 
374 
375 
376 PROCEDURE Delete_Subteam
377 (
378  p_api_version                 IN     NUMBER :=  1.0,
379  p_init_msg_list               IN     VARCHAR2 := fnd_api.g_true,
380  p_commit                      IN     VARCHAR2                                        := FND_API.g_false,
381 
382  p_validate_only               IN     VARCHAR2                                        := FND_API.g_true,
383 
384  p_validation_level            IN     NUMBER                                        := FND_API.g_valid_level_full,
385 
386  p_calling_module              IN     VARCHAR2
387      := 'SELF_SERVICE',
388 
389  p_debug_mode                  IN     VARCHAR2 := 'N',
390 
391  p_max_msg_count               IN     NUMBER := FND_API.g_miss_num,
392 
393  p_subteam_row_id           IN     ROWID                                           := NULL,
394 
395  p_subteam_id               IN     pa_project_subteams.project_subteam_id%TYPE       := FND_API.G_MISS_NUM,
396 
397  p_object_type             IN pa_project_subteams.object_type%TYPE := fnd_api.g_miss_char,
398  p_object_id                  IN     pa_project_subteams.object_id%TYPE                   := FND_API.g_miss_num,
399 
400  p_subteam_name             IN pa_project_subteams.name%TYPE := fnd_api.g_miss_char,
401 
402  p_record_version_number       IN     NUMBER                                          := FND_API.G_MISS_NUM ,
403 
404 --Bug: 4537865
405  x_return_status               OUT NOCOPY   VARCHAR2,
406 
407  x_msg_count                   OUT NOCOPY   NUMBER,
408 
409  x_msg_data                    OUT NOCOPY   VARCHAR2
410  --Bug: 4537865
411 ) IS
412 
413  l_subteam_row_id              ROWID;
414  l_msg_index_out               NUMBER;
415 
416 CURSOR check_subteam IS
417 SELECT ROWID
418 FROM   pa_project_subteams
419 WHERE  (project_subteam_id = p_subteam_id AND p_subteam_id IS NOT NULL)
420   OR (name = p_subteam_name
421       AND p_subteam_name IS NOT NULL
422       AND object_type = p_object_type
423       AND object_id   = p_object_id
424       AND p_object_id IS NOT null)
425   OR ROWID = p_subteam_row_id ;
426 
427 
428 BEGIN
429 
430   -- Initialize the Error Stack
431   PA_DEBUG.init_err_stack('PA_PROJECT_SUBTEAMS_PUB.Delete_Subteam');
432 
433   -- Initialize the error flag
434   PA_PROJECT_SUBTEAMS_PUB.g_error_exists := FND_API.G_FALSE;
435 
436   --  Issue API savepoint if the transaction is to be committed
437   IF p_commit  = FND_API.G_TRUE THEN
438     SAVEPOINT   SBT_PUB_DELETE_SUBTEAM;
439   END IF;
440 
441   --Clear the global PL/SQL message table
442   IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
443     FND_MSG_PUB.initialize;
444   END IF;
445 
446   OPEN check_subteam;
447 
448   FETCH check_subteam INTO l_subteam_row_id;
449 
450   IF check_subteam%NOTFOUND THEN
451 
452       PA_UTILS.Add_Message( p_app_short_name => 'PA'
453                            ,p_msg_name       => 'PA_XC_RECORD_CHANGED');
454       PA_PROJECT_SUBTEAMS_PUB.g_error_exists := FND_API.G_TRUE;
455 
456    ELSE
457 
458      -- Call the private API
459      PA_PROJECT_SUBTEAMS_PVT.Delete_Subteam
460      (
461       p_api_version      => p_api_version
462       ,p_init_msg_list   => p_init_msg_list
463       ,p_commit                => p_commit
464       ,p_validate_only         => p_validate_only
465       ,p_validation_level         => p_validation_level
466       ,p_calling_module        => p_calling_module
467       ,p_debug_mode        => p_debug_mode
468       ,p_max_msg_count     => p_max_msg_count
469       ,p_subteam_row_id     => l_subteam_row_id
470       ,p_subteam_id         => p_subteam_id
471       ,p_record_version_number  => p_record_version_number
472       ,x_return_status         => x_return_status
473       ,x_msg_count             => x_msg_count
474       ,x_msg_data              => x_msg_data
475       );
476 
477 
478   END IF;
479 
480   CLOSE check_subteam;
481   --
482   -- IF the number of messages is 1 then fetch the message code from the stack and return its text
483   --
484   x_msg_count :=  FND_MSG_PUB.Count_Msg;
485   IF x_msg_count = 1 THEN
486     pa_interface_utils_pub.get_messages ( p_encoded       => FND_API.G_TRUE
487                                          ,p_msg_index     => 1
488                                          ,p_data          => x_msg_data
489                                          ,p_msg_index_out => l_msg_index_out
490                                         );
491   END IF;
492 
493   -- Reset the error stack when returning to the calling program
494   PA_DEBUG.Reset_Err_Stack;
495 
496   -- If g_error_exists is TRUE then set the x_return_status to 'E'
497 
498   IF PA_PROJECT_SUBTEAMS_PUB.g_error_exists = FND_API.G_TRUE  THEN
499 
500         x_return_status := FND_API.G_RET_STS_ERROR;
501 
502   END IF;
503 
504 
505    -- Put any message text from message stack into the Message ARRAY
506    --
507    EXCEPTION
508      WHEN OTHERS THEN
509          IF p_commit = FND_API.G_TRUE THEN
510            ROLLBACK TO SBT_PUB_DELETE_SUBTEAM;
511          END IF;
512          -- Set the excetption Message and the stack
513          FND_MSG_PUB.add_exc_msg( p_pkg_name       => 'PA_PROJECT_SUBTEAMS_PUB.Delete_Subteam'
514                                  ,p_procedure_name => PA_DEBUG.G_Err_Stack );
515          --
516          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
517          RAISE;  -- This is optional depending on the needs
518 --
519 END Delete_Subteam;
520 
521 PROCEDURE Delete_Subteam_By_Obj
522 (
523  p_api_version                 IN     NUMBER :=  1.0,
524  p_init_msg_list               IN     VARCHAR2 := fnd_api.g_true,
525  p_commit                      IN     VARCHAR2                                        := FND_API.g_false,
526 
527  p_validate_only               IN     VARCHAR2                                        := FND_API.g_true,
528 
529  p_validation_level            IN     NUMBER                                        := FND_API.g_valid_level_full,
530 
531  p_calling_module              IN     VARCHAR2
532      := 'SELF_SERVICE',
533 
534  p_debug_mode                  IN     VARCHAR2 := 'N',
535 
536  p_max_msg_count               IN     NUMBER := FND_API.g_miss_num,
537 
538  p_object_type             IN pa_project_subteams.object_type%TYPE := fnd_api.g_miss_char,
539  p_object_id                  IN     pa_project_subteams.object_id%TYPE                   := FND_API.g_miss_num,
540 
541  --Bug: 4537865
542  x_return_status               OUT NOCOPY    VARCHAR2,
543 
544  x_msg_count                   OUT NOCOPY   NUMBER,
545 
546  x_msg_data                    OUT NOCOPY   VARCHAR2
547  --Bug: 4537865
548 ) IS
549 
550  l_subteam_row_id              ROWID;
551  l_msg_index_out               NUMBER;
552 
553 CURSOR check_subteam IS
554 SELECT ROWID
555 FROM   pa_project_subteams
556 WHERE
557       object_type = p_object_type
558       AND object_id   = p_object_id ;
559 
560 
561 BEGIN
562 
563   -- Initialize the Error Stack
564   PA_DEBUG.init_err_stack('PA_PROJECT_SUBTEAMS_PUB.Delete_Subteam_By_Obj');
565 
566   -- Initialize the error flag
567   PA_PROJECT_SUBTEAMS_PUB.g_error_exists := FND_API.G_FALSE;
568 
569   --  Issue API savepoint if the transaction is to be committed
570   IF p_commit  = FND_API.G_TRUE THEN
571     SAVEPOINT   SBT_PUB_DELETE_SUBTEAM_BY_OBJ;
572   END IF;
573 
574   --Clear the global PL/SQL message table
575   IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
576     FND_MSG_PUB.initialize;
577   END IF;
578 
579   OPEN check_subteam;
580 
581   LOOP
582      FETCH check_subteam INTO l_subteam_row_id;
583      EXIT WHEN check_subteam%notfound;
584 
585      --IF check_subteam%NOTFOUND THEN
586 
587 	--PA_UTILS.Add_Message( p_app_short_name => 'PA'
588 --                           ,p_msg_name       => 'PA_XC_RECORD_CHANGED');
589 	--PA_PROJECT_SUBTEAMS_PUB.g_error_exists := FND_API.G_TRUE;
590 
591       --ELSE
592 
593 	-- Call the private API
594 	PA_PROJECT_SUBTEAMS_PVT.Delete_Subteam
595 	(
596 	 p_api_version      => p_api_version
597 	 ,p_init_msg_list   => p_init_msg_list
598 	 ,p_commit                => p_commit
599 	 ,p_validate_only         => p_validate_only
600 	 ,p_validation_level         => p_validation_level
601 	 ,p_calling_module        => p_calling_module
602 	 ,p_debug_mode        => p_debug_mode
603 	 ,p_max_msg_count     => p_max_msg_count
604 	 ,p_subteam_row_id     => l_subteam_row_id
605 	 --,p_subteam_id         => p_subteam_id
606 	 --,p_record_version_number  => p_record_version_number
607 	 ,x_return_status         => x_return_status
608 	 ,x_msg_count             => x_msg_count
609 	 ,x_msg_data              => x_msg_data
610 	 );
611   END LOOP;
612 
613   CLOSE check_subteam;
614 
615   --
616   -- IF the number of messages is 1 then fetch the message code from the stack and return its text
617   --
618   x_msg_count :=  FND_MSG_PUB.Count_Msg;
619   IF x_msg_count = 1 THEN
620     pa_interface_utils_pub.get_messages ( p_encoded       => FND_API.G_TRUE
621                                          ,p_msg_index     => 1
622                                          ,p_data          => x_msg_data
623                                          ,p_msg_index_out => l_msg_index_out
624                                         );
625   END IF;
626 
627   -- Reset the error stack when returning to the calling program
628   PA_DEBUG.Reset_Err_Stack;
629 
630   -- If g_error_exists is TRUE then set the x_return_status to 'E'
631 
632   IF PA_PROJECT_SUBTEAMS_PUB.g_error_exists = FND_API.G_TRUE  THEN
633 
634         x_return_status := FND_API.G_RET_STS_ERROR;
635 
636   END IF;
637 
638 
639    -- Put any message text from message stack into the Message ARRAY
640    --
641    EXCEPTION
642      WHEN OTHERS THEN
643          IF p_commit = FND_API.G_TRUE THEN
644            ROLLBACK TO SBT_PUB_DELETE_SUBTEAM_BY_OBJ;
645          END IF;
646          -- Set the excetption Message and the stack
647          FND_MSG_PUB.add_exc_msg( p_pkg_name       => 'PA_PROJECT_SUBTEAMS_PUB.Delete_Subteam_By_Obj'
648                                  ,p_procedure_name => PA_DEBUG.G_Err_Stack );
649          --
650          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
651          RAISE;  -- This is optional depending on the needs
652 --
653 END Delete_Subteam_By_Obj;
654 
655 --
656 --
657 END pa_project_subteams_pub;
658 --