DBA Data[Home] [Help]

PACKAGE BODY: APPS.PON_PROJECTS_INTEGRATION_GRP

Source


1 PACKAGE BODY PON_PROJECTS_INTEGRATION_GRP  AS
2 --$Header: PONGPRJB.pls 120.0 2005/11/08 14:51 smhanda noship $
3 
4 -- module name for logging message
5 g_module_prefix CONSTANT VARCHAR2(40) := 'pon.plsql.PON_PROJECTS_INTEGRATION_GRP.';
6 
7 -- Read the profile option that enables/disables the debug log
8 g_fnd_debug CONSTANT VARCHAR2(1) :=
9   NVL (FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
10 
11 
12 --checks if passed in project_id being used in any negotiation
13 --This API is called by Oracle Projects before deleting any project in Oracle Projects
14 PROCEDURE CHECK_DELETE_PROJECT_OK(
15                     p_api_version                 IN          NUMBER,
16                     p_init_msg_list               IN          VARCHAR2,
17                     p_project_id                  IN         NUMBER,
18                     x_return_status               OUT NOCOPY  VARCHAR2,
19                     x_msg_count                   OUT NOCOPY  NUMBER,
20                     x_msg_data                    OUT NOCOPY  VARCHAR2
21                     ) IS
22     -- Remember to change the l_api_version for change in the API
23     --
24     l_api_version    CONSTANT  NUMBER := 1.0;
25 
26 
27     --
28     -- define local variables
29     --
30     l_api_name       CONSTANT  VARCHAR2(30) := 'CHECK_DELETE_PROJECT_OK';
31     l_delete_ok      varchar2(1);
32 
33 BEGIN
34       IF g_fnd_debug = 'Y' then
35                       IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL <= FND_LOG.LEVEL_STATEMENT) THEN
36                         FND_LOG.string(LOG_LEVEL=>FND_LOG.LEVEL_STATEMENT,
37                       MODULE   =>g_module_prefix||l_api_name,
38                       MESSAGE  =>'100: Start' ||l_api_name);
39                       END IF;
40        End if;
41 
42 
43         --
44         -- Standard call to check for call compatibility
45         --
46         IF NOT FND_API.COMPATIBLE_API_CALL ( l_api_version,
47                                              p_api_version,
48                                              l_api_name,
49                                              'PON_PROJECTS_INTEGRATION_GRP' )
50         THEN
51             RAISE FND_API.G_EXC_ERROR;
52         END IF;
53 
54         --
55         -- Initialize message list if p_init_msg_list is set to TRUE
56         -- We initialize the list by default. User should pass proper
57         -- value to p_init_msg_list in case this initialization is not
58         -- wanted
59         --
60         IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
61            FND_MSG_PUB.INITIALIZE;
62         END IF;
63 
64         --
65         --  Initialize API to return the status as success initially
66         x_return_status := FND_API.G_RET_STS_SUCCESS;
67         l_delete_ok   := 'Y';
68 
69         -- The below query looks for project_id reference at aution header, line
70         -- and payment level
71         SELECT 'N'
72           INTO l_delete_ok
73           FROM dual
74         WHERE EXISTS
75                 (SELECT '1'
76                    FROM pon_auction_headers_all
77                   WHERE project_id = p_project_id
78                 )  OR
79               EXISTS
80                 (SELECT '1'
81                    FROM pon_auction_item_prices_all
82                   WHERE project_id = p_project_id
83                 ) OR
84               EXISTS
85                 (SELECT '1'
86                    FROM pon_auc_payments_shipments
87                   WHERE project_id = p_project_id
88                 );
89 
90 
91         -- if control reaches here , that means passed in project_id was found in
92         -- some table and should not be deleted
93         IF ( l_delete_ok = 'N')
94         THEN
95              x_return_status := FND_API.G_RET_STS_ERROR;
96 
97              -- add message in queue
98              FND_MESSAGE.set_name('PON', 'PON_PROJECT_USED_NO_DELETE');
99              FND_MSG_PUB.Add;
100              x_msg_data := 'PON_PROJECT_USED_NO_DELETE';
101 
102              IF g_fnd_debug = 'Y' then
103                       IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL <= FND_LOG.LEVEL_STATEMENT) THEN
104                         FND_LOG.string(LOG_LEVEL=>FND_LOG.LEVEL_STATEMENT,
105                       MODULE   =>g_module_prefix||l_api_name,
106                       MESSAGE  =>'300: The Project Id refrenced in Sourcing');
107                       END IF;
108             End IF;
109         END IF;
110         IF g_fnd_debug = 'Y' then
111                       IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL <= FND_LOG.LEVEL_STATEMENT) THEN
112                         FND_LOG.string(LOG_LEVEL=>FND_LOG.LEVEL_STATEMENT,
113                       MODULE   =>g_module_prefix||l_api_name,
114                       MESSAGE  =>'400: End' ||l_api_name);
115                       END IF;
116         End IF;
117      EXCEPTION
118        WHEN NO_DATA_FOUND THEN
119           x_return_status := FND_API.G_RET_STS_SUCCESS;
120           IF g_fnd_debug = 'Y' then
121                       IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL <= FND_LOG.LEVEL_EXCEPTION) THEN
122                         FND_LOG.string(LOG_LEVEL=>FND_LOG.LEVEL_EXCEPTION,
123                       MODULE   =>g_module_prefix||l_api_name,
124                       MESSAGE  =>'450:Exception when no data found ');
125                       END IF;
126           END IF;
127 
128 
129        WHEN FND_API.G_EXC_ERROR then
130          x_return_status := FND_API.G_RET_STS_ERROR;
131          FND_MSG_PUB.Count_And_Get
132               (p_count  =>      x_msg_count,
133                p_data   =>      x_msg_data );
134 
135 
136          IF g_fnd_debug = 'Y' then
137             IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL <= FND_LOG.LEVEL_EXCEPTION) THEN
138               FND_LOG.string(LOG_LEVEL=>FND_LOG.LEVEL_EXCEPTION,
139                            MODULE   =>g_module_prefix||l_api_name,
140                            MESSAGE  =>'470: expected error ');
141               FND_LOG.string(LOG_LEVEL=>FND_LOG.LEVEL_EXCEPTION,
142                            MODULE   =>g_module_prefix||l_api_name,
143                            MESSAGE  =>'470:errors '||FND_MSG_PUB.Get(p_msg_index=>nvl(x_msg_count,1),p_encoded =>'F' ));
144                            END IF;
145             END IF;
146 
147 
148        WHEN OTHERS THEN
149          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
150          IF FND_MSG_PUB.Check_Msg_Level
151 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
152          THEN
153             FND_MSG_PUB.Add_Exc_Msg
154         	   (p_pkg_name       => 'PON_PROJECTS_INTEGRATION_GRP',
155 		        p_procedure_name  => l_api_name);
156           END IF;
157 
158           FND_MSG_PUB.Count_And_Get
159                   (p_count  =>      x_msg_count,
160                    p_data   =>      x_msg_data );
161 
162 
163            IF g_fnd_debug = 'Y' then
164                       IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL <= FND_LOG.LEVEL_EXCEPTION) THEN
165                           FND_LOG.string(LOG_LEVEL=>FND_LOG.LEVEL_EXCEPTION,
166                                          MODULE   =>g_module_prefix||l_api_name,
167                                          MESSAGE  =>'500:Exception UnExpected error '||sqlcode||':'||sqlerrm);
168                       END IF;
169            END IF;
170 
171  END CHECK_DELETE_PROJECT_OK;
172 
173 END PON_PROJECTS_INTEGRATION_GRP;