DBA Data[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;