[Home] [Help]
PACKAGE BODY: APPS.AHL_PC_NODE_PUB
Source
1 PACKAGE BODY AHL_PC_NODE_PUB AS
2 /* $Header: AHLPPCNB.pls 115.7 2003/10/20 19:36:20 sikumar noship $ */
3
4 -------------------
5 -- PROCESS_NODES --
6 -------------------
7 --G_DEBUG VARCHAR2(1):=FND_PROFILE.VALUE('AHL_API_FILE_DEBUG_ON');
8 G_DEBUG VARCHAR2(1) := AHL_DEBUG_PUB.is_log_enabled;
9
10 PROCEDURE PROCESS_NODES (
11 p_api_version IN NUMBER,
12 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE,
13 p_commit IN VARCHAR2 := FND_API.G_FALSE,
14 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
15 p_module_type IN VARCHAR2 := NULL,
16 p_x_nodes_tbl IN OUT NOCOPY AHL_PC_NODE_PUB.PC_NODE_TBL,
17 x_return_status OUT NOCOPY VARCHAR2,
18 x_msg_count OUT NOCOPY NUMBER,
19 x_msg_data OUT NOCOPY VARCHAR2
20 ) IS
21
22 l_api_name CONSTANT VARCHAR2(30) := 'PROCESS_NODES';
23 l_api_version CONSTANT NUMBER := 1.0;
24 l_return_status VARCHAR2(1);
25
26 BEGIN
27 -- Standard start of API savepoint
28 SAVEPOINT PROCESS_NODE_PUB;
29
30 -- Standard call to check for call compatibility
31 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
32 THEN
33 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
34 END IF;
35
36 -- Initialize message list if p_init_msg_list is set to TRUE
37 IF FND_API.To_Boolean(p_init_msg_list)
38 THEN
39 FND_MSG_PUB.Initialize;
40 END IF;
41
42 -- Initialize API return status to success
43 x_return_status := FND_API.G_RET_STS_SUCCESS;
44
45 IF G_DEBUG='Y' THEN
46 AHL_DEBUG_PUB.ENABLE_DEBUG;
47 END IF;
48
49 IF (p_x_nodes_tbl.COUNT > 0)
50 THEN
51 FOR i IN p_x_nodes_tbl.FIRST..p_x_nodes_tbl.LAST
52 LOOP
53 IF (p_x_nodes_tbl(i).operation_flag <> G_DML_DELETE)
54 THEN
55 p_x_nodes_tbl(i).name := TRIM(p_x_nodes_tbl(i).name);
56 p_x_nodes_tbl(i).description := TRIM(p_x_nodes_tbl(i).description);
57
58 -- Node name is mandatory
59 IF (p_x_nodes_tbl(i).name IS NULL)
60 THEN
61 FND_MESSAGE.Set_Name('AHL','AHL_PC_NODE_NAME_REQD');
62 FND_MSG_PUB.ADD;
63 RAISE FND_API.G_EXC_ERROR;
64 END IF;
65
66 -- Node child count is default 0
67 IF (p_x_nodes_tbl(i).child_count IS NULL)
68 THEN
69 p_x_nodes_tbl(i).child_count := 0;
70 END IF;
71
72 IF (p_x_nodes_tbl(i).pc_node_id IS NULL)
73 THEN
74 p_x_nodes_tbl(i).object_version_number := 1;
75 END IF;
76 END IF;
77
78 -- Call PVT APIs
79 IF (p_x_nodes_tbl(i).operation_flag = G_DML_CREATE)
80 THEN
81 IF G_DEBUG='Y' THEN
82 AHL_DEBUG_PUB.debug('PCN -- PUB -- Calling CREATE_NODE for Name='||p_x_nodes_tbl(i).name);
83 END IF;
84
85 AHL_PC_NODE_PVT.CREATE_NODE(
86 p_api_version => l_api_version,
87 p_init_msg_list => FND_API.G_FALSE,
88 p_commit => FND_API.G_FALSE,
89 p_validation_level => p_validation_level,
90 p_x_node_rec => p_x_nodes_tbl(i),
91 x_return_status => x_return_status,
92 x_msg_count => x_msg_count,
93 x_msg_data => x_msg_data
94 );
95 ELSIF (p_x_nodes_tbl(i).operation_flag = G_DML_UPDATE)
96 THEN
97 IF G_DEBUG='Y' THEN
98 AHL_DEBUG_PUB.debug('PCN -- PUB -- Calling UPDATE_NODE for ID='||p_x_nodes_tbl(i).pc_node_id);
99 END IF;
100
101 AHL_PC_NODE_PVT.UPDATE_NODE(
102 p_api_version => l_api_version,
103 p_init_msg_list => FND_API.G_FALSE,
104 p_commit => FND_API.G_FALSE,
105 p_validation_level => p_validation_level,
106 p_x_node_rec => p_x_nodes_tbl(i),
107 x_return_status => x_return_status,
108 x_msg_count => x_msg_count,
109 x_msg_data => x_msg_data
110 );
111 ELSIF (p_x_nodes_tbl(i).operation_flag = G_DML_DELETE)
112 THEN
113 IF G_DEBUG='Y' THEN
114 AHL_DEBUG_PUB.debug('PCN -- PUB -- Calling DELETE_NODE for ID='||p_x_nodes_tbl(i).pc_node_id);
115 END IF;
116
117 AHL_PC_NODE_PVT.DELETE_NODES(
118 p_api_version => l_api_version,
119 p_init_msg_list => FND_API.G_FALSE,
120 p_commit => FND_API.G_FALSE,
121 p_validation_level => p_validation_level,
122 p_x_node_rec => p_x_nodes_tbl(i),
123 x_return_status => x_return_status,
124 x_msg_count => x_msg_count,
125 x_msg_data => x_msg_data
126 );
127 END IF;
128 END LOOP;
129 END IF;
130
131 -- Check Error Message stack.
132 x_msg_count := FND_MSG_PUB.count_msg;
133 IF x_msg_count > 0 THEN
134 RAISE FND_API.G_EXC_ERROR;
135 END IF;
136
137 -- Standard check for p_commit
138 IF FND_API.To_Boolean (p_commit)
139 THEN
140 COMMIT WORK;
141 END IF;
142
143 -- Standard call to get message count and if count is 1, get message info
144 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
145 p_data => x_msg_data,
146 p_encoded => fnd_api.g_false );
147
148 EXCEPTION
149 WHEN FND_API.G_EXC_ERROR THEN
150 x_return_status := FND_API.G_RET_STS_ERROR;
151 Rollback to PROCESS_NODE_PUB;
152 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
153 p_data => x_msg_data,
154 p_encoded => fnd_api.g_false );
155
156 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
157 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
158 Rollback to PROCESS_NODE_PUB;
159 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
160 p_data => x_msg_data,
161 p_encoded => fnd_api.g_false );
162
163 WHEN OTHERS THEN
164 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
165 Rollback to PROCESS_NODE_PUB;
166 IF FND_MSG_PUB.check_msg_level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
167 THEN
168 fnd_msg_pub.add_exc_msg( p_pkg_name => G_PKG_NAME,
169 p_procedure_name => 'PROCESS_NODES',
170 p_error_text => SUBSTR(SQLERRM,1,240) );
171 END IF;
172 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
173 p_data => x_msg_data,
174 p_encoded => fnd_api.g_false );
175
176 END PROCESS_NODES;
177
178 END AHL_PC_NODE_PUB;