[Home] [Help]
PACKAGE BODY: APPS.HZ_EXT_ATTRIBUTE_BO_PVT
Source
1 PACKAGE BODY hz_ext_attribute_bo_pvt AS
2 /*$Header: ARHBEXVB.pls 120.5 2007/11/27 10:32:12 kguggila ship $ */
3
4 -- PROCEDURE save_ext_attributes
5 --
6 -- DESCRIPTION
7 -- Create or update extensibility attributes.
8 --
9 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
10 --
11 -- ARGUMENTS
12 -- IN:
13 -- p_ext_attr_objs List of extensibility attribute objects.
14 -- p_parent_obj_id Parent object Id.
15 -- p_parent_obj_type Parent object type.
16 -- p_create_or_update Create or update flag.
17 -- OUT:
18 -- x_return_status Return status after the call. The status can
19 -- be fnd_api.g_ret_sts_success (success),
20 -- fnd_api.g_ret_sts_error (error),
21 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
22 -- x_msg_count Number of messages in message stack.
23 -- x_msg_data Message text if x_msg_count is 1.
24 -- x_errorcode Error code.
25 --
26 -- NOTES
27 --
28 -- MODIFICATION HISTORY
29 --
30 -- 14-DEC-2004 Arnold Ng Created.
31
32 PROCEDURE save_ext_attributes(
33 p_ext_attr_objs IN HZ_EXT_ATTRIBUTE_OBJ_TBL,
34 p_parent_obj_id IN NUMBER,
35 p_parent_obj_type IN VARCHAR2,
36 p_create_or_update IN VARCHAR2,
37 x_return_status OUT NOCOPY VARCHAR2,
38 x_errorcode OUT NOCOPY VARCHAR2,
39 x_msg_count OUT NOCOPY NUMBER,
40 x_msg_data OUT NOCOPY VARCHAR2
41 ) IS
42 l_debug_prefix VARCHAR2(30);
43 l_user_attr_data_table EGO_USER_ATTR_DATA_TABLE;
44 l_user_attr_row_table EGO_USER_ATTR_ROW_TABLE;
45 l_attr_group_type VARCHAR2(40);
46 l_trans_type VARCHAR2(10);
47 l_current_row NUMBER;
48 l_row_count NUMBER;
49 l_failed_row_id_list VARCHAR2(10000);
50 BEGIN
51 -- Standard start of API savepoint
52 SAVEPOINT save_ext_attributes_pvt;
53
54 -- initialize API return status to success.
55 x_return_status := FND_API.G_RET_STS_SUCCESS;
56
57 -- Debug info.
58 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
59 hz_utility_v2pub.debug(p_message=>'save_ext_attributes(+)',
60 p_prefix=>l_debug_prefix,
61 p_msg_level=>fnd_log.level_procedure);
62 END IF;
63
64 CASE
65 WHEN p_parent_obj_type = 'ORG' THEN
66 l_attr_group_type := 'HZ_ORG_PROFILES_GROUP';
67 WHEN p_parent_obj_type = 'PERSON' THEN
68 l_attr_group_type := 'HZ_PERSON_PROFILES_GROUP';
69 WHEN p_parent_obj_type = 'PARTY_SITE' THEN
70 l_attr_group_type := 'HZ_PARTY_SITES_GROUP';
71 WHEN p_parent_obj_type = 'LOCATION' THEN
72 l_attr_group_type := 'HZ_LOCATIONS_GROUP';
73 END CASE;
74
75 IF(p_create_or_update = 'C') THEN
76 l_trans_type := EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE;
77 ELSE
78 l_trans_type := EGO_USER_ATTRS_DATA_PVT.G_SYNC_MODE;
79 END IF;
80
81 -- Initialize Row and Data Table
82 l_user_attr_row_table := EGO_USER_ATTR_ROW_TABLE();
83 l_user_attr_data_table := EGO_USER_ATTR_DATA_TABLE();
84 l_current_row := NULL;
85 l_row_count := 1;
86 FOR i IN 1..p_ext_attr_objs.COUNT LOOP
87 IF(p_ext_attr_objs(i).row_identifier IS NULL) THEN
88 FND_MESSAGE.SET_NAME('AR', 'HZ_API_HOOK_ERROR');
89 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'hz_ext_attribute_bo_pvt.save_ext_attributes');
90 FND_MESSAGE.SET_TOKEN('ERROR', 'row identifier is null');
91 FND_MSG_PUB.ADD;
92 RAISE FND_API.G_EXC_ERROR;
93 END IF;
94 IF((l_current_row IS NULL) OR
95 (NOT (l_current_row = p_ext_attr_objs(i).row_identifier))) THEN
96 l_user_attr_row_table.EXTEND;
97 -- Start bug 6503079
98 /*l_user_attr_row_table(l_row_count) := EGO_USER_ATTR_ROW_OBJ(
99 p_ext_attr_objs(i).row_identifier, null, 222, l_attr_group_type,
100 p_ext_attr_objs(i).attr_group_name,
101 null, null, null, l_trans_type
102 );*/
103 l_user_attr_row_table(l_row_count) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object(
104 p_ext_attr_objs(i).row_identifier,
105 null,
106 222,
107 l_attr_group_type,
108 p_ext_attr_objs(i).attr_group_name,
109 null,
110 null,
111 null,
112 null,
113 null,
114 null,
115 l_trans_type);
116 -- End bug 6503079
117 l_current_row := p_ext_attr_objs(i).row_identifier;
118 l_row_count := l_row_count + 1;
119 END IF;
120
121 l_user_attr_data_table.EXTEND;
122 l_user_attr_data_table(i) := EGO_USER_ATTR_DATA_OBJ(
123 p_ext_attr_objs(i).row_identifier,
124 p_ext_attr_objs(i).attr_name,
125 p_ext_attr_objs(i).attr_value_str,
126 p_ext_attr_objs(i).attr_value_num,
127 p_ext_attr_objs(i).attr_value_date,
128 null, null, null
129 );
130 END LOOP;
131
132 CASE
133 WHEN p_parent_obj_type = 'ORG' THEN
134 HZ_EXTENSIBILITY_PUB.Process_Organization_Record(
135 p_api_version => 1.0,
136 p_org_profile_id => p_parent_obj_id,
137 p_attributes_row_table => l_user_attr_row_table,
138 p_attributes_data_table => l_user_attr_data_table,
139 p_add_errors_to_fnd_stack => FND_API.G_TRUE,
140 x_failed_row_id_list => l_failed_row_id_list,
141 x_return_status => x_return_status,
142 x_errorcode => x_errorcode,
143 x_msg_count => x_msg_count,
144 x_msg_data => x_msg_data
145 );
146 WHEN p_parent_obj_type = 'PERSON' THEN
147 HZ_EXTENSIBILITY_PUB.Process_Person_Record(
148 p_api_version => 1.0,
149 p_person_profile_id => p_parent_obj_id,
150 p_attributes_row_table => l_user_attr_row_table,
151 p_attributes_data_table => l_user_attr_data_table,
152 p_add_errors_to_fnd_stack => FND_API.G_TRUE,
153 x_failed_row_id_list => l_failed_row_id_list,
154 x_return_status => x_return_status,
155 x_errorcode => x_errorcode,
156 x_msg_count => x_msg_count,
157 x_msg_data => x_msg_data
158 );
159 WHEN p_parent_obj_type = 'PARTY_SITE' THEN
160 HZ_EXTENSIBILITY_PUB.Process_PartySite_Record(
161 p_api_version => 1.0,
162 p_party_site_id => p_parent_obj_id,
163 p_attributes_row_table => l_user_attr_row_table,
164 p_attributes_data_table => l_user_attr_data_table,
165 p_add_errors_to_fnd_stack => FND_API.G_TRUE,
166 x_failed_row_id_list => l_failed_row_id_list,
167 x_return_status => x_return_status,
168 x_errorcode => x_errorcode,
169 x_msg_count => x_msg_count,
170 x_msg_data => x_msg_data
171 );
172 WHEN p_parent_obj_type = 'LOCATION' THEN
173 HZ_EXTENSIBILITY_PUB.Process_Location_Record(
174 p_api_version => 1.0,
175 p_location_id => p_parent_obj_id,
176 p_attributes_row_table => l_user_attr_row_table,
177 p_attributes_data_table => l_user_attr_data_table,
178 p_add_errors_to_fnd_stack => FND_API.G_TRUE,
179 x_failed_row_id_list => l_failed_row_id_list,
180 x_return_status => x_return_status,
181 x_errorcode => x_errorcode,
182 x_msg_count => x_msg_count,
183 x_msg_data => x_msg_data
184 );
185 END CASE;
186
187 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
188 FND_MESSAGE.SET_NAME('AR', 'HZ_API_HOOK_ERROR');
189 FND_MESSAGE.SET_TOKEN('PROCEDURE', 'hz_ext_attribute_bo_pvt.save_ext_attributes');
190 FND_MESSAGE.SET_TOKEN('ERROR', 'save ext attributes, parent type and id: '||p_parent_obj_type||' '||p_parent_obj_id);
191 FND_MSG_PUB.ADD;
192 RAISE FND_API.G_EXC_ERROR;
193 END IF;
194
195 -- Debug info.
196 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
197 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
198 p_msg_data=>x_msg_data,
199 p_msg_type=>'WARNING',
200 p_msg_level=>fnd_log.level_exception);
201 END IF;
202 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
203 hz_utility_v2pub.debug(p_message=>'save_ext_attributes(-)',
204 p_prefix=>l_debug_prefix,
205 p_msg_level=>fnd_log.level_procedure);
206 END IF;
207 EXCEPTION
208 WHEN fnd_api.g_exc_error THEN
209 ROLLBACK TO save_ext_attributes_pvt;
210 x_return_status := fnd_api.g_ret_sts_error;
211
212 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
213 p_count => x_msg_count,
214 p_data => x_msg_data);
215
216 -- Debug info.
217 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
218 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
219 p_msg_data=>x_msg_data,
220 p_msg_type=>'ERROR',
221 p_msg_level=>fnd_log.level_error);
222 END IF;
223 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
224 hz_utility_v2pub.debug(p_message=>'save_ext_attributes(-)',
225 p_prefix=>l_debug_prefix,
226 p_msg_level=>fnd_log.level_procedure);
227 END IF;
228
229 WHEN fnd_api.g_exc_unexpected_error THEN
230 ROLLBACK TO save_ext_attributes_pvt;
231 x_return_status := fnd_api.g_ret_sts_unexp_error;
232
233 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
234 p_count => x_msg_count,
235 p_data => x_msg_data);
236
237 -- Debug info.
238 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
239 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
240 p_msg_data=>x_msg_data,
241 p_msg_type=>'UNEXPECTED ERROR',
242 p_msg_level=>fnd_log.level_error);
243 END IF;
244 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
245 hz_utility_v2pub.debug(p_message=>'save_ext_attributes(-)',
246 p_prefix=>l_debug_prefix,
247 p_msg_level=>fnd_log.level_procedure);
248 END IF;
249
250 WHEN OTHERS THEN
251 ROLLBACK TO save_ext_attributes_pvt;
252 x_return_status := fnd_api.g_ret_sts_unexp_error;
253
254 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
255 fnd_message.set_token('ERROR' ,SQLERRM);
256 fnd_msg_pub.add;
257
258 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
259 p_count => x_msg_count,
260 p_data => x_msg_data);
261
262 -- Debug info.
263 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
264 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
265 p_msg_data=>x_msg_data,
266 p_msg_type=>'SQL ERROR',
267 p_msg_level=>fnd_log.level_error);
268 END IF;
269 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
270 hz_utility_v2pub.debug(p_message=>'save_ext_attributes(-)',
271 p_prefix=>l_debug_prefix,
272 p_msg_level=>fnd_log.level_procedure);
273 END IF;
274 END save_ext_attributes;
275
276 END hz_ext_attribute_bo_pvt;