[Home] [Help]
PACKAGE BODY: APPS.HZ_BES_BO_DEFINITION_PVT
Source
1 PACKAGE BODY HZ_BES_BO_DEFINITION_PVT AS
2 /* $Header: ARHBODVB.pls 120.2 2006/05/01 18:54:58 smattegu noship $ */
3
4 /**
5 * PROCEDURE update_bod
6 *
7 * DESCRIPTION
8 * Update Business Object Definition
9 *
10 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
11 *
12 * ARGUMENTS
13 * IN:
14 * p_init_msg_list Initialize message stack if it is set to
15 * FND_API.G_TRUE. Default is FND_API.G_FALSE.
16 * p_business_object_code Business Object Code.
17 * p_child_bo_code Child BO Code.
18 * p_entity_name Entity Name.
19 * p_user_mandated_flag User Mandated Flag.
20 * OUT:
21 * x_return_status Return status after the call. The status can
22 * be FND_API.G_RET_STS_SUCCESS (success),
23 * FND_API.G_RET_STS_ERROR (error),
24 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
25 * x_msg_count Number of messages in message stack.
26 * x_msg_data Message text if x_msg_count is 1.
27 *
28 */
29
30 PROCEDURE update_bod (
31 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
32 p_business_object_code IN VARCHAR2,
33 p_child_bo_code IN VARCHAR2,
34 p_entity_name IN VARCHAR2,
35 p_user_mandated_flag IN VARCHAR2,
36 p_object_version_number IN OUT NOCOPY NUMBER,
37 x_return_status OUT NOCOPY VARCHAR2,
38 x_msg_count OUT NOCOPY NUMBER,
39 x_msg_data OUT NOCOPY VARCHAR2
40 ) IS
41 l_debug_prefix VARCHAR2(30) := '';
42 l_tmf VARCHAR2(1);
43 l_umf VARCHAR2(1);
44 l_ovn NUMBER;
45 l_bvn NUMBER;
46 l_bo_found BOOLEAN;
47 l_count NUMBER;
48 l_top_bo VARCHAR2(30);
49 l_req_id NUMBER;
50 BEGIN
51 --Standard start of API savepoint
52 SAVEPOINT update_bod_pvt;
53
54 -- Debug info.
55 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
56 hz_utility_v2pub.debug(p_message=>'update_bod (+)',
57 p_prefix=>l_debug_prefix,
58 p_msg_level=>fnd_log.level_procedure);
59 END IF;
60
61 --Initialize message list if p_init_msg_list is set to TRUE.
62 IF FND_API.to_Boolean(p_init_msg_list) THEN
63 FND_MSG_PUB.initialize;
64 END IF;
65
66 --Initialize API return status to success.
67 x_return_status := FND_API.G_RET_STS_SUCCESS;
68
69 -- check whether record has been updated by another user. If not, lock it.
70 BEGIN
71 SELECT OBJECT_VERSION_NUMBER,
72 USER_MANDATED_FLAG,
73 TCA_MANDATED_FLAG
74 INTO l_ovn, l_umf, l_tmf
75 FROM HZ_BUS_OBJ_DEFINITIONS
76 WHERE business_object_code = p_business_object_code
77 AND entity_name = p_entity_name
78 AND nvl(child_bo_code, 'X') = nvl(p_child_bo_code, 'X')
79 FOR UPDATE NOWAIT;
80
81 IF NOT((p_object_version_number IS NULL AND l_ovn IS NULL) OR
82 (p_object_version_number IS NOT NULL AND l_ovn IS NOT NULL AND
83 p_object_version_number = l_ovn)) THEN
84 FND_MESSAGE.SET_NAME('AR', 'HZ_API_RECORD_CHANGED');
85 FND_MESSAGE.SET_TOKEN('TABLE', 'HZ_BUS_OBJ_DEFINITIONS');
86 FND_MSG_PUB.ADD;
87 RAISE FND_API.G_EXC_ERROR;
88 END IF;
89 EXCEPTION
90 WHEN NO_DATA_FOUND THEN
91 FND_MESSAGE.SET_NAME('AR', 'HZ_API_NO_RECORD');
92 FND_MESSAGE.SET_TOKEN('RECORD', 'business object definition');
93 FND_MESSAGE.SET_TOKEN('VALUE', 'Business Object Code: '||p_business_object_code||' Entity Name: '||p_entity_name||' Child BO Code: '||p_child_bo_code);
94 FND_MSG_PUB.ADD;
95 RAISE FND_API.G_EXC_ERROR;
96 END;
97
98 p_object_version_number := nvl(l_ovn, 1) + 1;
99
100 IF(l_tmf = 'Y') THEN
101 IF(p_child_bo_code IS NULL) THEN
102 FND_MESSAGE.SET_NAME('AR', 'HZ_BES_BO_BOD_MAND_ENT_ERROR');
103 FND_MESSAGE.SET_TOKEN('ENTITY_NAME', p_entity_name);
104 ELSE
105 FND_MESSAGE.SET_NAME('AR', 'HZ_BES_BO_BOD_MAND_OBJ_ERROR');
106 FND_MESSAGE.SET_TOKEN('CHILD_BO_CODE', p_child_bo_code);
107 END IF;
108 FND_MESSAGE.SET_TOKEN('BO_CODE', p_business_object_code);
109 FND_MSG_PUB.ADD;
110 RAISE FND_API.G_EXC_ERROR;
111 END IF;
112
113 -- Not doing any update if the existing flag setting is same as
114 -- user pass in
115 IF NOT(l_umf = p_user_mandated_flag) THEN
116 UPDATE HZ_BUS_OBJ_DEFINITIONS
117 SET object_version_number = p_object_version_number,
118 user_mandated_flag = p_user_mandated_flag,
119 last_update_date = HZ_UTILITY_V2PUB.last_update_date,
120 last_updated_by = HZ_UTILITY_V2PUB.last_updated_by,
121 last_update_login = HZ_UTILITY_V2PUB.last_update_login
122 WHERE business_object_code = p_business_object_code
123 AND entity_name = p_entity_name
124 AND nvl(child_bo_code, 'X') = nvl(p_child_bo_code, 'X');
125
126 -- Update bo version number
127 FOR l_count in 1..4 LOOP
128 CASE
129 WHEN l_count = 1 THEN l_top_bo := 'ORG';
130 WHEN l_count = 2 THEN l_top_bo := 'PERSON';
131 WHEN l_count = 3 THEN l_top_bo := 'ORG_CUST';
132 WHEN l_count = 4 THEN l_top_bo := 'PERSON_CUST';
133 END CASE;
134
135 HZ_BES_BO_UTIL_PKG.entity_in_bo(
136 p_bo_code => l_top_bo,
137 p_ebo_code =>p_business_object_code,
138 p_child_bo_code => p_child_bo_code,
139 p_entity_name => p_entity_name,
140 x_return_status => l_bo_found );
141
142 IF(l_bo_found) THEN
143 UPDATE HZ_BUS_OBJ_DEFINITIONS
144 SET bo_version_number = nvl(bo_version_number,1) + 1,
145 last_update_date = HZ_UTILITY_V2PUB.last_update_date,
146 last_updated_by = HZ_UTILITY_V2PUB.last_updated_by,
147 last_update_login = HZ_UTILITY_V2PUB.last_update_login
148 WHERE business_object_code = l_top_bo
149 AND root_node_flag = 'Y'
150 AND child_bo_code IS NULL;
151 END IF;
152 END LOOP;
153
154 --Run Concurrent Request
155 --TCA Business Object Events: Generate Infrastructure Packages Program
156 l_req_id := FND_REQUEST.SUBMIT_REQUEST(
157 'AR', 'ARHBOGEN', 'TCA BES - Generate Infrastructure',
158 sysdate, FALSE);
159
160 IF(l_req_id IS NULL or l_req_id = 0) THEN
161 FND_MESSAGE.SET_NAME('AR', 'AR_CUST_CONC_ERROR');
162 FND_MSG_PUB.ADD;
163 RAISE FND_API.G_EXC_ERROR;
164 END IF;
165 END IF;
166
167 --Standard call to get message count and if count is 1, get message info.
168 FND_MSG_PUB.Count_And_Get(
169 p_encoded => FND_API.G_FALSE,
170 p_count => x_msg_count,
171 p_data => x_msg_data);
172
173 -- Debug info.
174 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
175 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
176 p_msg_data=>x_msg_data,
177 p_msg_type=>'WARNING',
178 p_msg_level=>fnd_log.level_exception);
179 END IF;
180
181 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
182 hz_utility_v2pub.debug(p_message=>'update_bod (-)',
183 p_prefix=>l_debug_prefix,
184 p_msg_level=>fnd_log.level_procedure);
185 END IF;
186
187 EXCEPTION
188 WHEN FND_API.G_EXC_ERROR THEN
189 ROLLBACK TO update_bod_pvt;
190 x_return_status := FND_API.G_RET_STS_ERROR;
191
192 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
193 p_count => x_msg_count,
194 p_data => x_msg_data);
195
196 -- Debug info.
197 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
198 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
199 p_msg_data=>x_msg_data,
200 p_msg_type=>'ERROR',
201 p_msg_level=>fnd_log.level_error);
202 END IF;
203
204 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
205 hz_utility_v2pub.debug(p_message=>'update_bod (-)',
206 p_prefix=>l_debug_prefix,
207 p_msg_level=>fnd_log.level_procedure);
208 END IF;
209
210 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
211 ROLLBACK TO update_bod_pvt;
212 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
213
214 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
215 p_count => x_msg_count,
216 p_data => x_msg_data);
217
218 -- Debug info.
219 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
220 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
221 p_msg_data=>x_msg_data,
222 p_msg_type=>'UNEXPECTED ERROR',
223 p_msg_level=>fnd_log.level_error);
224 END IF;
225
226 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
227 hz_utility_v2pub.debug(p_message=>'update_bod (-)',
228 p_prefix=>l_debug_prefix,
229 p_msg_level=>fnd_log.level_procedure);
230 END IF;
231
232 WHEN OTHERS THEN
233 ROLLBACK TO update_bod_pvt;
234 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
235 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
236 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
237 FND_MSG_PUB.ADD;
238
239 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
240 p_count => x_msg_count,
241 p_data => x_msg_data);
242
243 -- Debug info.
244 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
245 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
246 p_msg_data=>x_msg_data,
247 p_msg_type=>'SQL ERROR',
248 p_msg_level=>fnd_log.level_error);
249 END IF;
250
251 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
252 hz_utility_v2pub.debug(p_message=>'update_bod (-)',
253 p_prefix=>l_debug_prefix,
254 p_msg_level=>fnd_log.level_procedure);
255 END IF;
256 END update_bod;
257
258 END HZ_BES_BO_DEFINITION_PVT;