[Home] [Help]
PACKAGE BODY: APPS.AHL_UC_UNITCONFIG_PUB
Source
1 PACKAGE BODY AHL_UC_UNITCONFIG_PUB AS
2 /* $Header: AHLPUCXB.pls 115.9 2003/10/28 23:12:40 jeli noship $ */
3
4 -- Define global internal variables
5 G_PKG_NAME VARCHAR2(30) := 'AHL_UC_UNITCONFIG_PUB';
6
7 -- Define Procedure process_uc_header --
8 -- This API is used to create, update or expire a UC header record in ahl_unit_config_headers
9 PROCEDURE process_uc_header(
10 p_api_version IN NUMBER := 1.0,
11 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
12 p_commit IN VARCHAR2 := FND_API.G_FALSE,
13 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
14 x_return_status OUT NOCOPY VARCHAR2,
15 x_msg_count OUT NOCOPY NUMBER,
16 x_msg_data OUT NOCOPY VARCHAR2,
17 p_dml_flag IN VARCHAR2,
18 p_x_uc_header_rec IN OUT NOCOPY ahl_uc_instance_pvt.uc_header_rec_type)
19 IS
20 l_api_name CONSTANT VARCHAR2(30) := 'process_uc_header';
21 l_api_version CONSTANT NUMBER := 1.0;
22 l_uc_header_ovn NUMBER;
23 l_csi_instance_ovn NUMBEr;
24 l_return_status VARCHAR2(1);
25 l_msg_count NUMBER;
26 l_msg_data VARCHAR2(2000);
27
28 CURSOR get_ovns(c_uc_header_id number) IS
29 SELECT u.object_version_number,
30 c.object_version_number
31 FROM ahl_unit_config_headers u,
32 csi_item_instances c
33 WHERE u.unit_config_header_id = c_uc_header_id
34 AND u.csi_item_instance_id = c.instance_id
35 AND trunc(nvl(u.active_end_date, SYSDATE+1)) > trunc(SYSDATE);
36
37 BEGIN
38 --Initialize API return status to success
39 x_return_status := FND_API.G_RET_STS_SUCCESS;
40
41 --Standard Start of API savepoint
42 SAVEPOINT process_uc_header;
43
44 --Standard call to check for call compatibility.
45 IF NOT FND_API.compatible_api_call(
46 l_api_version,
47 p_api_version,
48 l_api_name,
49 G_PKG_NAME)
50 THEN
51 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
52 END IF;
53
54 --Initialize message list if p_init_msg_list is set to TRUE.
55 IF FND_API.to_boolean(p_init_msg_list) THEN
56 FND_MSG_PUB.initialize;
57 END IF;
58
59 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
60 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
61 'ahl.plsql.'||G_PKG_NAME||'.'||l_api_name||': Begin API',
62 'At the start of the procedure');
63 END IF;
64
65 --Validate p_dml_flag is one of 'C', 'U' or 'D', where
66 --'C','U','D' refer to 'CREATE','UPDATE','DELETE(EXPIRE)' respectively
67 IF (p_dml_flag NOT IN ('C', 'U', 'D')) THEN
68 FND_MESSAGE.set_name('AHL','AHL_UC_API_PARAMETER_INVALID');
69 FND_MESSAGE.set_token('NAME', 'dml_flag');
70 FND_MESSAGE.set_token('VALUE', p_dml_flag);
71 FND_MSG_PUB.add;
72 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
73 END IF;
74
75 IF p_dml_flag = 'C' THEN
76 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
77 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
78 'ahl.plsql.'||G_PKG_NAME||'.'||l_api_name,
79 ': before calling ahl_uc_unitconfig_pvt.create_uc_header');
80 END IF;
81 ahl_uc_unitconfig_pvt.create_uc_header(
82 p_api_version => 1.0,
83 p_init_msg_list => FND_API.G_FALSE,
84 p_commit => FND_API.G_FALSE,
85 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
86 p_module_type => NULL,
87 x_return_status => l_return_status,
88 x_msg_count => l_msg_count,
89 x_msg_data => l_msg_data,
90 p_x_uc_header_rec => p_x_uc_header_rec);
91 ELSIF p_dml_flag = 'U' THEN
92 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
93 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
94 'ahl.plsql.'||G_PKG_NAME||'.'||l_api_name,
95 ': before calling ahl_uc_unitconfig_pvt.update_uc_header');
96 END IF;
97 ahl_uc_unitconfig_pvt.update_uc_header(
98 p_api_version => 1.0,
99 p_init_msg_list => FND_API.G_FALSE,
100 p_commit => FND_API.G_FALSE,
101 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
102 p_module_type => NULL,
103 x_return_status => l_return_status,
104 x_msg_count => l_msg_count,
105 x_msg_data => l_msg_data,
106 p_x_uc_header_rec => p_x_uc_header_rec,
107 p_uc_instance_rec => NULL);
108 ELSIF p_dml_flag = 'D' THEN
109 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
110 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
111 'ahl.plsql.'||G_PKG_NAME||'.'||l_api_name,
112 ': before calling ahl_uc_unitconfig_pvt.delete_uc_header');
113 END IF;
114
115 --Get the object_version_number of the uc_header and csi instance record
116 OPEN get_ovns(p_x_uc_header_rec.uc_header_id);
117 FETCH get_ovns INTO l_uc_header_ovn, l_csi_instance_ovn;
118 IF get_ovns%NOTFOUND THEN
119 FND_MESSAGE.set_name('AHL','AHL_UC_API_PARAMETER_INVALID');
120 FND_MESSAGE.set_token('NAME', 'uc_header_id');
121 FND_MESSAGE.set_token('VALUE', p_x_uc_header_rec.uc_header_id);
122 FND_MSG_PUB.add;
123 CLOSE get_ovns;
124 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
125 END IF;
126 CLOSE get_ovns;
127 ahl_uc_unitconfig_pvt.delete_uc_header(
128 p_api_version => 1.0,
129 p_init_msg_list => FND_API.G_FALSE,
130 p_commit => FND_API.G_FALSE,
131 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
132 x_return_status => l_return_status,
133 x_msg_count => l_msg_count,
134 x_msg_data => l_msg_data,
135 p_uc_header_id => p_x_uc_header_rec.uc_header_id,
136 p_object_version_number => l_uc_header_ovn,
137 p_csi_instance_ovn => l_csi_instance_ovn);
138 END IF;
139
140 --Check the return status after calling private APIs
141 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
142 RAISE FND_API.G_EXC_ERROR;
143 ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
144 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
145 END IF;
146
147 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
148 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
149 'ahl.plsql.'||G_PKG_NAME||'.'||l_api_name||': After normal execution','At the end of the procedure');
150 END IF;
151
152 -- Get all the error messages from the previous steps (if any) and raise the appropriate Exception
153 l_msg_count := FND_MSG_PUB.count_msg;
154 IF l_msg_count > 0 THEN
155 RAISE FND_API.G_EXC_ERROR;
156 END IF;
157 -- Perform the Commit (if requested)
158 IF FND_API.to_boolean( p_commit ) THEN
159 COMMIT;
160 END IF;
161 -- Count and Get messages (optional)
162 FND_MSG_PUB.count_and_get(
163 p_encoded => FND_API.G_FALSE,
164 p_count => x_msg_count,
165 p_data => x_msg_data);
166
167 EXCEPTION
168 WHEN FND_API.G_EXC_ERROR THEN
169 ROLLBACK TO process_uc_header;
170 x_return_status := FND_API.G_RET_STS_ERROR ;
171 FND_MSG_PUB.count_and_get(
172 p_encoded => FND_API.G_FALSE,
173 p_count => x_msg_count,
174 p_data => x_msg_data);
175 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
176 ROLLBACK TO process_uc_header;
177 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
178 FND_MSG_PUB.count_and_get(
179 p_encoded => FND_API.G_FALSE,
180 p_count => x_msg_count,
181 p_data => x_msg_data);
182 WHEN OTHERS THEN
183 ROLLBACK TO process_uc_header;
184 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
185 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
186 THEN
187 FND_MSG_PUB.add_exc_msg(
188 p_pkg_name => G_PKG_NAME,
189 p_procedure_name => l_api_name,
190 p_error_text => SUBSTRB(SQLERRM,1,240));
191 END IF;
192 FND_MSG_PUB.count_and_get(
193 p_encoded => FND_API.G_FALSE,
194 p_count => x_msg_count,
195 p_data => x_msg_data);
196 END process_uc_header;
197
198 END AHL_UC_UNITCONFIG_PUB; -- Package Body