[Home] [Help]
PACKAGE BODY: APPS.HZ_LOCATION_BO_PUB
Source
1 PACKAGE BODY hz_location_bo_pub AS
2 /*$Header: ARHBLCBB.pls 120.5 2006/05/18 22:25:40 acng noship $ */
3
4 PROCEDURE do_create_location_bo(
5 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
6 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
7 p_location_obj IN OUT NOCOPY HZ_LOCATION_OBJ,
8 p_created_by_module IN VARCHAR2,
9 p_obj_source IN VARCHAR2 := null,
10 x_return_status OUT NOCOPY VARCHAR2,
11 x_msg_count OUT NOCOPY NUMBER,
12 x_msg_data OUT NOCOPY VARCHAR2,
13 x_location_id OUT NOCOPY NUMBER,
14 x_location_os OUT NOCOPY VARCHAR2,
15 x_location_osr OUT NOCOPY VARCHAR2
16 );
17
18 PROCEDURE do_update_location_bo(
19 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
20 p_location_obj IN OUT NOCOPY HZ_LOCATION_OBJ,
21 p_created_by_module IN VARCHAR2,
22 p_obj_source IN VARCHAR2 := null,
23 x_return_status OUT NOCOPY VARCHAR2,
24 x_msg_count OUT NOCOPY NUMBER,
25 x_msg_data OUT NOCOPY VARCHAR2,
26 x_location_id OUT NOCOPY NUMBER,
27 x_location_os OUT NOCOPY VARCHAR2,
28 x_location_osr OUT NOCOPY VARCHAR2
29 );
30
31 PROCEDURE do_save_location_bo(
32 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
33 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
34 p_location_obj IN OUT NOCOPY HZ_LOCATION_OBJ,
35 p_created_by_module IN VARCHAR2,
36 p_obj_source IN VARCHAR2 := null,
37 x_return_status OUT NOCOPY VARCHAR2,
38 x_msg_count OUT NOCOPY NUMBER,
39 x_msg_data OUT NOCOPY VARCHAR2,
40 x_location_id OUT NOCOPY NUMBER,
41 x_location_os OUT NOCOPY VARCHAR2,
42 x_location_osr OUT NOCOPY VARCHAR2
43 );
44
45 -- PUBLIC PROCEDURE assign_location_rec
46 --
47 -- DESCRIPTION
48 -- Assign attribute value from location object to plsql record.
49 --
50 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
51 --
52 -- ARGUMENTS
53 -- IN:
54 -- p_location_obj Location object.
55 -- p_loc_os Location original system.
56 -- p_loc_osr Location original system reference.
57 -- p_create_or_update Create or update flag.
58 -- IN/OUT:
59 -- px_location_rec Location plsql record.
60 --
61 -- NOTES
62 --
63 -- MODIFICATION HISTORY
64 --
65 -- 14-DEC-2004 Arnold Ng Created.
66 --
67
68 PROCEDURE assign_location_rec(
69 p_location_obj IN HZ_LOCATION_OBJ,
70 p_loc_os IN VARCHAR2,
71 p_loc_osr IN VARCHAR2,
72 p_create_or_update IN VARCHAR2 := 'C',
73 px_location_rec IN OUT NOCOPY HZ_LOCATION_V2PUB.LOCATION_REC_TYPE
74 ) IS
75 BEGIN
76 px_location_rec.location_id:= p_location_obj.location_id;
77 px_location_rec.country:= p_location_obj.country;
78 px_location_rec.address1:= p_location_obj.address1;
79 px_location_rec.address2:= p_location_obj.address2;
80 px_location_rec.address3:= p_location_obj.address3;
81 px_location_rec.address4:= p_location_obj.address4;
82 px_location_rec.city:= p_location_obj.city;
83 px_location_rec.postal_code:= p_location_obj.postal_code;
84 px_location_rec.state:= p_location_obj.state;
85 px_location_rec.province:= p_location_obj.province;
86 px_location_rec.county:= p_location_obj.county;
87 px_location_rec.address_key:= p_location_obj.address_key;
88 px_location_rec.address_style:= p_location_obj.address_style;
89 px_location_rec.validated_flag:= p_location_obj.validated_flag;
90 px_location_rec.address_lines_phonetic:= p_location_obj.address_lines_phonetic;
91 px_location_rec.postal_plus4_code:= p_location_obj.postal_plus4_code;
92 px_location_rec.position:= p_location_obj.position;
93 px_location_rec.location_directions:= p_location_obj.location_directions;
94 px_location_rec.address_effective_date:= p_location_obj.address_effective_date;
95 px_location_rec.address_expiration_date:= p_location_obj.address_expiration_date;
96 px_location_rec.clli_code:= p_location_obj.clli_code;
97 px_location_rec.language:= p_location_obj.language;
98 px_location_rec.short_description:= p_location_obj.short_description;
99 px_location_rec.description:= p_location_obj.description;
100 px_location_rec.geometry:= p_location_obj.geometry;
101 px_location_rec.geometry_status_code:= p_location_obj.geometry_status_code;
102 px_location_rec.loc_hierarchy_id:= p_location_obj.loc_hierarchy_id;
103 px_location_rec.sales_tax_geocode:= p_location_obj.sales_tax_geocode;
104 px_location_rec.sales_tax_inside_city_limits:= p_location_obj.sales_tax_inside_city_limits;
105 px_location_rec.fa_location_id:= p_location_obj.fa_location_id;
106 px_location_rec.attribute_category:= p_location_obj.attribute_category;
107 px_location_rec.attribute1:= p_location_obj.attribute1;
108 px_location_rec.attribute2:= p_location_obj.attribute2;
109 px_location_rec.attribute3:= p_location_obj.attribute3;
110 px_location_rec.attribute4:= p_location_obj.attribute4;
111 px_location_rec.attribute5:= p_location_obj.attribute5;
112 px_location_rec.attribute6:= p_location_obj.attribute6;
113 px_location_rec.attribute7:= p_location_obj.attribute7;
114 px_location_rec.attribute8:= p_location_obj.attribute8;
115 px_location_rec.attribute9:= p_location_obj.attribute9;
116 px_location_rec.attribute10:= p_location_obj.attribute10;
117 px_location_rec.attribute11:= p_location_obj.attribute11;
118 px_location_rec.attribute12:= p_location_obj.attribute12;
119 px_location_rec.attribute13:= p_location_obj.attribute13;
120 px_location_rec.attribute14:= p_location_obj.attribute14;
121 px_location_rec.attribute15:= p_location_obj.attribute15;
122 px_location_rec.attribute16:= p_location_obj.attribute16;
123 px_location_rec.attribute17:= p_location_obj.attribute17;
124 px_location_rec.attribute18:= p_location_obj.attribute18;
125 px_location_rec.attribute19:= p_location_obj.attribute19;
126 px_location_rec.attribute20:= p_location_obj.attribute20;
127 px_location_rec.timezone_id:= p_location_obj.timezone_id;
128 IF(p_create_or_update = 'C') THEN
129 px_location_rec.orig_system:= p_loc_os;
130 px_location_rec.orig_system_reference:= p_loc_osr;
131 px_location_rec.created_by_module:= HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
132 END IF;
133 px_location_rec.actual_content_source:= p_location_obj.actual_content_source;
134 px_location_rec.delivery_point_code:= p_location_obj.delivery_point_code;
135 END assign_location_rec;
136
137 -- PROCEDURE do_create_location_bo
138 --
139 -- DESCRIPTION
140 -- Create a location business object.
141 PROCEDURE do_create_location_bo(
142 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
143 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
144 p_location_obj IN OUT NOCOPY HZ_LOCATION_OBJ,
145 p_created_by_module IN VARCHAR2,
146 p_obj_source IN VARCHAR2 := null,
147 x_return_status OUT NOCOPY VARCHAR2,
148 x_msg_count OUT NOCOPY NUMBER,
149 x_msg_data OUT NOCOPY VARCHAR2,
150 x_location_id OUT NOCOPY NUMBER,
151 x_location_os OUT NOCOPY VARCHAR2,
152 x_location_osr OUT NOCOPY VARCHAR2
153 ) IS
154 l_debug_prefix VARCHAR2(30);
155 l_location_rec HZ_LOCATION_V2PUB.LOCATION_REC_TYPE;
156 l_location_id NUMBER;
157 l_location_id NUMBER;
158 l_valid_obj BOOLEAN;
159 l_bus_object HZ_REGISTRY_VALIDATE_BO_PVT.COMPLETENESS_REC_TYPE;
160 l_errorcode NUMBER;
161 BEGIN
162 -- Standard start of API savepoint
163 SAVEPOINT do_create_location_bo_pub;
164
165 -- initialize API return status to success.
166 x_return_status := FND_API.G_RET_STS_SUCCESS;
167
168 -- Initialize message list of p_init_msg_list is set to TRUE.
169 IF FND_API.to_Boolean(p_init_msg_list) THEN
170 FND_MSG_PUB.initialize;
171 END IF;
172
173 -- initialize Global variable
174 HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
175 IF(p_created_by_module IS NULL) THEN
176 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
177 ELSE
178 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
179 END IF;
180
181 -- Debug info.
182 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
183 hz_utility_v2pub.debug(p_message=>'do_create_location_bo(+)',
184 p_prefix=>l_debug_prefix,
185 p_msg_level=>fnd_log.level_procedure);
186 END IF;
187
188 /* Currently, business object definition cannot be altered. The seeded completeness
189 for LOCATION business object has no mandatory embedded objects. So, comment out
190 this line of code
191 -- Base on p_validate_bo_flag, check the completeness of business objects
192 IF(p_validate_bo_flag = FND_API.G_TRUE) THEN
193 HZ_REGISTRY_VALIDATE_BO_PVT.get_bus_obj_struct(
194 p_bus_object_code => 'LOCATION',
195 x_bus_object => l_bus_object
196 );
197
198 l_valid_obj := HZ_REGISTRY_VALIDATE_BO_PVT.is_loc_bo_comp(
199 p_ps_objs => p_location_obj,
200 p_bus_object => l_bus_object
201 );
202 IF NOT(l_valid_obj) THEN
203 RAISE fnd_api.g_exc_error;
204 END IF;
205 END IF;
206 */
207 x_location_id := p_location_obj.location_id;
208 x_location_os := p_location_obj.orig_system;
209 x_location_osr := p_location_obj.orig_system_reference;
210
211 -- check if pass in location_id and os+osr
212 hz_registry_validate_bo_pvt.validate_ssm_id(
213 px_id => x_location_id,
214 px_os => x_location_os,
215 px_osr => x_location_osr,
216 p_obj_type => 'HZ_LOCATIONS',
217 p_create_or_update => 'C',
218 x_return_status => x_return_status,
219 x_msg_count => x_msg_count,
220 x_msg_data => x_msg_data);
221
222 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
223 RAISE FND_API.G_EXC_ERROR;
224 END IF;
225
226 assign_location_rec(
227 p_location_obj => p_location_obj,
228 p_loc_os => x_location_os,
229 p_loc_osr => x_location_osr,
230 px_location_rec => l_location_rec
231 );
232
233 HZ_LOCATION_V2PUB.create_location(
234 p_location_rec => l_location_rec,
235 x_location_id => x_location_id,
236 x_return_status => x_return_status,
237 x_msg_count => x_msg_count,
238 x_msg_data => x_msg_data
239 );
240
241 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
242 RAISE FND_API.G_EXC_ERROR;
243 END IF;
244
245 -- assign location_id
246 p_location_obj.location_id := x_location_id;
247 ----------------------------
248 -- Create Location Ext Attrs
249 ----------------------------
250 IF((p_location_obj.ext_attributes_objs IS NOT NULL) AND
251 (p_location_obj.ext_attributes_objs.COUNT > 0)) THEN
252 HZ_EXT_ATTRIBUTE_BO_PVT.save_ext_attributes(
253 p_ext_attr_objs => p_location_obj.ext_attributes_objs,
254 p_parent_obj_id => x_location_id,
255 p_parent_obj_type => 'LOCATION',
256 p_create_or_update => 'C',
257 x_return_status => x_return_status,
258 x_errorcode => l_errorcode,
259 x_msg_count => x_msg_count,
260 x_msg_data => x_msg_data
261 );
262
263 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
264 RAISE FND_API.G_EXC_ERROR;
265 END IF;
266 END IF;
267
268 -- reset Global variable
269 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
270 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
271
272 -- Debug info.
273 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
274 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
275 p_msg_data=>x_msg_data,
276 p_msg_type=>'WARNING',
277 p_msg_level=>fnd_log.level_exception);
278 END IF;
279 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
280 hz_utility_v2pub.debug(p_message=>'do_create_location_bo(-)',
281 p_prefix=>l_debug_prefix,
282 p_msg_level=>fnd_log.level_procedure);
283 END IF;
284
285 EXCEPTION
286 WHEN fnd_api.g_exc_error THEN
287 ROLLBACK TO do_create_location_bo_pub;
288
289 -- reset Global variable
290 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
291 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
292
293 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
294 FND_MESSAGE.SET_TOKEN('OBJECT', 'LOCATION');
295 FND_MSG_PUB.ADD;
296
297 x_return_status := fnd_api.g_ret_sts_error;
298
299 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
300 p_count => x_msg_count,
301 p_data => x_msg_data);
302
303 -- Debug info.
304 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
305 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
306 p_msg_data=>x_msg_data,
307 p_msg_type=>'ERROR',
308 p_msg_level=>fnd_log.level_error);
309 END IF;
310 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
311 hz_utility_v2pub.debug(p_message=>'do_create_location_bo(-)',
312 p_prefix=>l_debug_prefix,
313 p_msg_level=>fnd_log.level_procedure);
314 END IF;
315
316 WHEN fnd_api.g_exc_unexpected_error THEN
317 ROLLBACK TO do_create_location_bo_pub;
318
319 -- reset Global variable
320 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
321 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
322
323 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
324 FND_MESSAGE.SET_TOKEN('OBJECT', 'LOCATION');
325 FND_MSG_PUB.ADD;
326
327 x_return_status := fnd_api.g_ret_sts_unexp_error;
328
329 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
330 p_count => x_msg_count,
331 p_data => x_msg_data);
332
333 -- Debug info.
334 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
335 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
336 p_msg_data=>x_msg_data,
337 p_msg_type=>'UNEXPECTED ERROR',
338 p_msg_level=>fnd_log.level_error);
339 END IF;
340 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
341 hz_utility_v2pub.debug(p_message=>'do_create_location_bo(-)',
342 p_prefix=>l_debug_prefix,
343 p_msg_level=>fnd_log.level_procedure);
344 END IF;
345
346 WHEN OTHERS THEN
347 ROLLBACK TO do_create_location_bo_pub;
348
349 -- reset Global variable
350 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
351 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
352
353 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
354 FND_MESSAGE.SET_TOKEN('OBJECT', 'LOCATION');
355 FND_MSG_PUB.ADD;
356
357 x_return_status := fnd_api.g_ret_sts_unexp_error;
358
359 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
360 fnd_message.set_token('ERROR' ,SQLERRM);
361 fnd_msg_pub.add;
362
363 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
364 p_count => x_msg_count,
365 p_data => x_msg_data);
366
367 -- Debug info.
368 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
369 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
370 p_msg_data=>x_msg_data,
371 p_msg_type=>'SQL ERROR',
372 p_msg_level=>fnd_log.level_error);
373 END IF;
374 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
375 hz_utility_v2pub.debug(p_message=>'do_create_location_bo(-)',
376 p_prefix=>l_debug_prefix,
377 p_msg_level=>fnd_log.level_procedure);
378 END IF;
379 END do_create_location_bo;
380
381 PROCEDURE create_location_bo(
382 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
383 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
384 p_location_obj IN HZ_LOCATION_OBJ,
385 p_created_by_module IN VARCHAR2,
386 x_return_status OUT NOCOPY VARCHAR2,
387 x_msg_count OUT NOCOPY NUMBER,
388 x_msg_data OUT NOCOPY VARCHAR2,
389 x_location_id OUT NOCOPY NUMBER,
390 x_location_os OUT NOCOPY VARCHAR2,
391 x_location_osr OUT NOCOPY VARCHAR2
392 ) IS
393 l_location_obj HZ_LOCATION_OBJ;
394 BEGIN
395 l_location_obj := p_location_obj;
396 do_create_location_bo(
397 p_init_msg_list => p_init_msg_list,
398 p_validate_bo_flag => p_validate_bo_flag,
399 p_location_obj => l_location_obj,
400 p_created_by_module => p_created_by_module,
401 p_obj_source => null,
402 x_return_status => x_return_status,
403 x_msg_count => x_msg_count,
404 x_msg_data => x_msg_data,
405 x_location_id => x_location_id,
406 x_location_os => x_location_os,
407 x_location_osr => x_location_osr
408 );
409 END create_location_bo;
410
411 PROCEDURE create_location_bo(
412 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
413 p_location_obj IN HZ_LOCATION_OBJ,
414 p_created_by_module IN VARCHAR2,
415 p_obj_source IN VARCHAR2 := null,
416 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
417 x_return_status OUT NOCOPY VARCHAR2,
418 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
419 x_return_obj OUT NOCOPY HZ_LOCATION_OBJ,
420 x_location_id OUT NOCOPY NUMBER,
421 x_location_os OUT NOCOPY VARCHAR2,
422 x_location_osr OUT NOCOPY VARCHAR2
423 ) IS
424 l_msg_count NUMBER;
425 l_msg_data VARCHAR2(2000);
426 l_location_obj HZ_LOCATION_OBJ;
427 BEGIN
428 l_location_obj := p_location_obj;
429 do_create_location_bo(
430 p_init_msg_list => fnd_api.g_true,
431 p_validate_bo_flag => p_validate_bo_flag,
432 p_location_obj => l_location_obj,
433 p_created_by_module => p_created_by_module,
434 p_obj_source => null,
435 x_return_status => x_return_status,
436 x_msg_count => l_msg_count,
437 x_msg_data => l_msg_data,
438 x_location_id => x_location_id,
439 x_location_os => x_location_os,
440 x_location_osr => x_location_osr
441 );
442 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
443 x_return_status => x_return_status,
444 x_msg_count => l_msg_count,
445 x_msg_data => l_msg_data);
446 IF FND_API.to_Boolean(p_return_obj_flag) THEN
447 x_return_obj := l_location_obj;
448 END IF;
449 END create_location_bo;
450
451 -- PROCEDURE do_update_location_bo
452 --
453 -- DESCRIPTION
454 -- Update a location business object.
455 PROCEDURE do_update_location_bo(
456 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
457 p_location_obj IN OUT NOCOPY HZ_LOCATION_OBJ,
458 p_created_by_module IN VARCHAR2,
459 p_obj_source IN VARCHAR2 := null,
460 x_return_status OUT NOCOPY VARCHAR2,
461 x_msg_count OUT NOCOPY NUMBER,
462 x_msg_data OUT NOCOPY VARCHAR2,
463 x_location_id OUT NOCOPY NUMBER,
464 x_location_os OUT NOCOPY VARCHAR2,
465 x_location_osr OUT NOCOPY VARCHAR2
466 )IS
467 l_debug_prefix VARCHAR2(30);
468 l_location_rec HZ_LOCATION_V2PUB.LOCATION_REC_TYPE;
469 l_loc_ovn NUMBER;
470 l_location_id NUMBER;
471 l_create_update_flag VARCHAR2(1);
472 l_errorcode NUMBER;
473
474 CURSOR get_ovn(l_loc_id NUMBER) IS
475 SELECT loc.object_version_number
476 FROM HZ_LOCATIONS loc
477 WHERE loc.location_id = l_loc_id;
478
479 BEGIN
480 -- Standard start of API savepoint
481 SAVEPOINT do_update_location_bo_pub;
482
483 -- initialize API return status to success.
484 x_return_status := FND_API.G_RET_STS_SUCCESS;
485
486 -- Initialize message list of p_init_msg_list is set to TRUE.
487 IF FND_API.to_Boolean(p_init_msg_list) THEN
488 FND_MSG_PUB.initialize;
489 END IF;
490
491 -- initialize Global variable
492 HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
493 IF(p_created_by_module IS NULL) THEN
494 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
495 ELSE
496 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
497 END IF;
498
499 -- Debug info.
500 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
501 hz_utility_v2pub.debug(p_message=>'do_update_location_bo(+)',
502 p_prefix=>l_debug_prefix,
503 p_msg_level=>fnd_log.level_procedure);
504 END IF;
505
506 x_location_id := p_location_obj.location_id;
507 x_location_os := p_location_obj.orig_system;
508 x_location_osr := p_location_obj.orig_system_reference;
509
510 -- check if pass in location_id and ssm is
511 -- valid for update
512 hz_registry_validate_bo_pvt.validate_ssm_id(
513 px_id => x_location_id,
514 px_os => x_location_os,
515 px_osr => x_location_osr,
516 p_obj_type => 'HZ_LOCATIONS',
517 p_create_or_update => 'U',
518 x_return_status => x_return_status,
519 x_msg_count => x_msg_count,
520 x_msg_data => x_msg_data);
521
522 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
523 RAISE FND_API.G_EXC_ERROR;
524 END IF;
525
526 OPEN get_ovn(x_location_id);
527 FETCH get_ovn INTO l_loc_ovn;
528 CLOSE get_ovn;
529
530 ----------------------
531 -- For Location
532 ----------------------
533 assign_location_rec(
534 p_location_obj => p_location_obj,
535 p_loc_os => x_location_os,
536 p_loc_osr => x_location_osr,
537 p_create_or_update => 'U',
538 px_location_rec => l_location_rec
539 );
540
541 l_location_rec.location_id := x_location_id;
542
543 HZ_LOCATION_V2PUB.update_location(
544 p_location_rec => l_location_rec,
545 p_object_version_number => l_loc_ovn,
546 x_return_status => x_return_status,
547 x_msg_count => x_msg_count,
548 x_msg_data => x_msg_data
549 );
550
551 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
552 RAISE FND_API.G_EXC_ERROR;
553 END IF;
554
555 -- assign location_id
556 p_location_obj.location_id := x_location_id;
557 ----------------------------
558 -- Create Location Ext Attrs
559 ----------------------------
560 IF((p_location_obj.ext_attributes_objs IS NOT NULL) AND
561 (p_location_obj.ext_attributes_objs.COUNT > 0)) THEN
562 HZ_EXT_ATTRIBUTE_BO_PVT.save_ext_attributes(
563 p_ext_attr_objs => p_location_obj.ext_attributes_objs,
564 p_parent_obj_id => x_location_id,
565 p_parent_obj_type => 'LOCATION',
566 p_create_or_update => 'U',
567 x_return_status => x_return_status,
568 x_errorcode => l_errorcode,
569 x_msg_count => x_msg_count,
570 x_msg_data => x_msg_data
571 );
572
573 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
574 RAISE FND_API.G_EXC_ERROR;
575 END IF;
576 END IF;
577
578 -- reset Global variable
579 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
580 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
581
582 -- Debug info.
583 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
584 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
585 p_msg_data=>x_msg_data,
586 p_msg_type=>'WARNING',
587 p_msg_level=>fnd_log.level_exception);
588 END IF;
589 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
590 hz_utility_v2pub.debug(p_message=>'do_update_location_bo(-)',
591 p_prefix=>l_debug_prefix,
592 p_msg_level=>fnd_log.level_procedure);
593 END IF;
594
595 EXCEPTION
596 WHEN fnd_api.g_exc_error THEN
597 ROLLBACK TO do_update_location_bo_pub;
598
599 -- reset Global variable
600 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
601 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
602
603 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
604 FND_MESSAGE.SET_TOKEN('OBJECT', 'LOCATION');
605 FND_MSG_PUB.ADD;
606
607 x_return_status := fnd_api.g_ret_sts_error;
608
609 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
610 p_count => x_msg_count,
611 p_data => x_msg_data);
612
613 -- Debug info.
614 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
615 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
616 p_msg_data=>x_msg_data,
617 p_msg_type=>'ERROR',
618 p_msg_level=>fnd_log.level_error);
619 END IF;
620 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
621 hz_utility_v2pub.debug(p_message=>'do_update_location_bo(-)',
622 p_prefix=>l_debug_prefix,
623 p_msg_level=>fnd_log.level_procedure);
624 END IF;
625
626 WHEN fnd_api.g_exc_unexpected_error THEN
627 ROLLBACK TO do_update_location_bo_pub;
628
629 -- reset Global variable
630 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
631 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
632
633 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
634 FND_MESSAGE.SET_TOKEN('OBJECT', 'LOCATION');
635 FND_MSG_PUB.ADD;
636
637 x_return_status := fnd_api.g_ret_sts_unexp_error;
638
639 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
640 p_count => x_msg_count,
641 p_data => x_msg_data);
642
643 -- Debug info.
644 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
645 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
646 p_msg_data=>x_msg_data,
647 p_msg_type=>'UNEXPECTED ERROR',
648 p_msg_level=>fnd_log.level_error);
649 END IF;
650 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
651 hz_utility_v2pub.debug(p_message=>'do_update_location_bo(-)',
652 p_prefix=>l_debug_prefix,
653 p_msg_level=>fnd_log.level_procedure);
654 END IF;
655
656 WHEN OTHERS THEN
657 ROLLBACK TO do_update_location_bo_pub;
658
659 -- reset Global variable
660 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
661 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
662
663 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
664 FND_MESSAGE.SET_TOKEN('OBJECT', 'LOCATION');
665 FND_MSG_PUB.ADD;
666
667 x_return_status := fnd_api.g_ret_sts_unexp_error;
668
669 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
670 fnd_message.set_token('ERROR' ,SQLERRM);
671 fnd_msg_pub.add;
672
673 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
674 p_count => x_msg_count,
675 p_data => x_msg_data);
676
677 -- Debug info.
678 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
679 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
680 p_msg_data=>x_msg_data,
681 p_msg_type=>'SQL ERROR',
682 p_msg_level=>fnd_log.level_error);
683 END IF;
684 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
685 hz_utility_v2pub.debug(p_message=>'do_update_location_bo(-)',
686 p_prefix=>l_debug_prefix,
687 p_msg_level=>fnd_log.level_procedure);
688 END IF;
689 END do_update_location_bo;
690
691 PROCEDURE update_location_bo(
692 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
693 p_location_obj IN HZ_LOCATION_OBJ,
694 p_created_by_module IN VARCHAR2,
695 x_return_status OUT NOCOPY VARCHAR2,
696 x_msg_count OUT NOCOPY NUMBER,
697 x_msg_data OUT NOCOPY VARCHAR2,
698 x_location_id OUT NOCOPY NUMBER,
699 x_location_os OUT NOCOPY VARCHAR2,
700 x_location_osr OUT NOCOPY VARCHAR2
701 ) IS
702 l_location_obj HZ_LOCATION_OBJ;
703 BEGIN
704 l_location_obj := p_location_obj;
705 do_update_location_bo(
706 p_init_msg_list => p_init_msg_list,
707 p_location_obj => l_location_obj,
708 p_created_by_module => p_created_by_module,
709 p_obj_source => null,
710 x_return_status => x_return_status,
711 x_msg_count => x_msg_count,
712 x_msg_data => x_msg_data,
713 x_location_id => x_location_id,
714 x_location_os => x_location_os,
715 x_location_osr => x_location_osr
716 );
717 END update_location_bo;
718
719 PROCEDURE update_location_bo(
720 p_location_obj IN HZ_LOCATION_OBJ,
721 p_created_by_module IN VARCHAR2,
722 p_obj_source IN VARCHAR2 := null,
723 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
724 x_return_status OUT NOCOPY VARCHAR2,
725 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
726 x_return_obj OUT NOCOPY HZ_LOCATION_OBJ,
727 x_location_id OUT NOCOPY NUMBER,
728 x_location_os OUT NOCOPY VARCHAR2,
729 x_location_osr OUT NOCOPY VARCHAR2
730 ) IS
731 l_msg_count NUMBER;
732 l_msg_data VARCHAR2(2000);
733 l_location_obj HZ_LOCATION_OBJ;
734 BEGIN
735 l_location_obj := p_location_obj;
736 do_update_location_bo(
737 p_init_msg_list => fnd_api.g_true,
738 p_location_obj => l_location_obj,
739 p_created_by_module => p_created_by_module,
740 p_obj_source => p_obj_source,
741 x_return_status => x_return_status,
742 x_msg_count => l_msg_count,
743 x_msg_data => l_msg_data,
744 x_location_id => x_location_id,
745 x_location_os => x_location_os,
746 x_location_osr => x_location_osr
747 );
748 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
749 x_return_status => x_return_status,
750 x_msg_count => l_msg_count,
751 x_msg_data => l_msg_data);
752 IF FND_API.to_Boolean(p_return_obj_flag) THEN
753 x_return_obj := l_location_obj;
754 END IF;
755 END update_location_bo;
756
757 -- PROCEDURE do_save_location_bo
758 --
759 -- DESCRIPTION
760 -- Create or update a location business object.
761 PROCEDURE do_save_location_bo(
762 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
763 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
764 p_location_obj IN OUT NOCOPY HZ_LOCATION_OBJ,
765 p_created_by_module IN VARCHAR2,
766 p_obj_source IN VARCHAR2 := null,
767 x_return_status OUT NOCOPY VARCHAR2,
768 x_msg_count OUT NOCOPY NUMBER,
769 x_msg_data OUT NOCOPY VARCHAR2,
770 x_location_id OUT NOCOPY NUMBER,
771 x_location_os OUT NOCOPY VARCHAR2,
772 x_location_osr OUT NOCOPY VARCHAR2
773 ) IS
774 l_return_status VARCHAR2(30);
775 l_msg_count NUMBER;
776 l_msg_data VARCHAR2(2000);
777 l_create_update_flag VARCHAR2(1);
778 l_debug_prefix VARCHAR2(30);
779 BEGIN
780 -- initialize API return status to success.
781 x_return_status := FND_API.G_RET_STS_SUCCESS;
782
783 -- Initialize message list of p_init_msg_list is set to TRUE.
784 IF FND_API.to_Boolean(p_init_msg_list) THEN
785 FND_MSG_PUB.initialize;
786 END IF;
787
788 -- Debug info.
789 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
790 hz_utility_v2pub.debug(p_message=>'do_save_location_bo(+)',
791 p_prefix=>l_debug_prefix,
792 p_msg_level=>fnd_log.level_procedure);
793 END IF;
794
795 x_location_id := p_location_obj.location_id;
796 x_location_os := p_location_obj.orig_system;
797 x_location_osr := p_location_obj.orig_system_reference;
798
799 -- check root business object to determine that it should be
800 -- create or update, call HZ_REGISTRY_VALIDATE_BO_PVT
801 l_create_update_flag := HZ_REGISTRY_VALIDATE_BO_PVT.check_bo_op(
802 p_entity_id => x_location_id,
803 p_entity_os => x_location_os,
804 p_entity_osr => x_location_osr,
805 p_entity_type => 'HZ_LOCATIONS',
806 p_parent_id => NULL,
807 p_parent_obj_type => NULL);
808
809 IF(l_create_update_flag = 'E') THEN
810 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
811 FND_MSG_PUB.ADD;
812 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
813 FND_MESSAGE.SET_TOKEN('OBJECT', 'LOCATION');
814 FND_MSG_PUB.ADD;
815 RAISE FND_API.G_EXC_ERROR;
816 END IF;
817
818 IF(l_create_update_flag = 'C') THEN
819 do_create_location_bo(
820 p_init_msg_list => fnd_api.g_false,
821 p_validate_bo_flag => p_validate_bo_flag,
822 p_location_obj => p_location_obj,
823 p_created_by_module => p_created_by_module,
824 p_obj_source => p_obj_source,
825 x_return_status => x_return_status,
826 x_msg_count => x_msg_count,
827 x_msg_data => x_msg_data,
828 x_location_id => x_location_id,
829 x_location_os => x_location_os,
830 x_location_osr => x_location_osr);
831 ELSIF(l_create_update_flag = 'U') THEN
832 do_update_location_bo(
833 p_init_msg_list => fnd_api.g_false,
834 p_location_obj => p_location_obj,
835 p_created_by_module => p_created_by_module,
836 p_obj_source => p_obj_source,
837 x_return_status => x_return_status,
838 x_msg_count => x_msg_count,
839 x_msg_data => x_msg_data,
840 x_location_id => x_location_id,
841 x_location_os => x_location_os,
842 x_location_osr => x_location_osr);
843 ELSE
844 RAISE FND_API.G_EXC_ERROR;
845 END IF;
846
847 -- Debug info.
848 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
849 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
850 p_msg_data=>x_msg_data,
851 p_msg_type=>'WARNING',
852 p_msg_level=>fnd_log.level_exception);
853 END IF;
854 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
855 hz_utility_v2pub.debug(p_message=>'do_save_location_bo(-)',
856 p_prefix=>l_debug_prefix,
857 p_msg_level=>fnd_log.level_procedure);
858 END IF;
859
860 EXCEPTION
861 WHEN fnd_api.g_exc_error THEN
862 x_return_status := fnd_api.g_ret_sts_error;
863
864 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
865 p_count => x_msg_count,
866 p_data => x_msg_data);
867
868 -- Debug info.
869 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
870 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
871 p_msg_data=>x_msg_data,
872 p_msg_type=>'ERROR',
873 p_msg_level=>fnd_log.level_error);
874 END IF;
875 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
876 hz_utility_v2pub.debug(p_message=>'do_save_location_bo(-)',
877 p_prefix=>l_debug_prefix,
878 p_msg_level=>fnd_log.level_procedure);
879 END IF;
880
881 WHEN fnd_api.g_exc_unexpected_error THEN
882 x_return_status := fnd_api.g_ret_sts_unexp_error;
883
884 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
885 p_count => x_msg_count,
886 p_data => x_msg_data);
887
888 -- Debug info.
889 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
890 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
891 p_msg_data=>x_msg_data,
892 p_msg_type=>'UNEXPECTED ERROR',
893 p_msg_level=>fnd_log.level_error);
894 END IF;
895 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
896 hz_utility_v2pub.debug(p_message=>'do_save_location_bo(-)',
897 p_prefix=>l_debug_prefix,
898 p_msg_level=>fnd_log.level_procedure);
899 END IF;
900 WHEN OTHERS THEN
901 x_return_status := fnd_api.g_ret_sts_unexp_error;
902
903 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
904 fnd_message.set_token('ERROR' ,SQLERRM);
905 fnd_msg_pub.add;
906
907 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
908 p_count => x_msg_count,
909 p_data => x_msg_data);
910
911 -- Debug info.
912 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
913 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
914 p_msg_data=>x_msg_data,
915 p_msg_type=>'SQL ERROR',
916 p_msg_level=>fnd_log.level_error);
917 END IF;
918 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
919 hz_utility_v2pub.debug(p_message=>'do_save_location_bo(-)',
920 p_prefix=>l_debug_prefix,
921 p_msg_level=>fnd_log.level_procedure);
922 END IF;
923 END do_save_location_bo;
924
925 PROCEDURE save_location_bo(
926 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
927 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
928 p_location_obj IN HZ_LOCATION_OBJ,
929 p_created_by_module IN VARCHAR2,
930 x_return_status OUT NOCOPY VARCHAR2,
931 x_msg_count OUT NOCOPY NUMBER,
932 x_msg_data OUT NOCOPY VARCHAR2,
933 x_location_id OUT NOCOPY NUMBER,
934 x_location_os OUT NOCOPY VARCHAR2,
935 x_location_osr OUT NOCOPY VARCHAR2
936 ) IS
937 l_msg_count NUMBER;
938 l_msg_data VARCHAR2(2000);
939 l_location_obj HZ_LOCATION_OBJ;
940 BEGIN
941 l_location_obj := p_location_obj;
942 do_save_location_bo(
943 p_init_msg_list => p_init_msg_list,
944 p_validate_bo_flag => p_validate_bo_flag,
945 p_location_obj => l_location_obj,
946 p_created_by_module => p_created_by_module,
947 p_obj_source => null,
948 x_return_status => x_return_status,
949 x_msg_count => x_msg_count,
950 x_msg_data => x_msg_data,
951 x_location_id => x_location_id,
952 x_location_os => x_location_os,
953 x_location_osr => x_location_osr
954 );
955 END save_location_bo;
956
957 PROCEDURE save_location_bo(
958 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
959 p_location_obj IN HZ_LOCATION_OBJ,
960 p_created_by_module IN VARCHAR2,
961 p_obj_source IN VARCHAR2 := null,
962 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
963 x_return_status OUT NOCOPY VARCHAR2,
964 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
965 x_return_obj OUT NOCOPY HZ_LOCATION_OBJ,
966 x_location_id OUT NOCOPY NUMBER,
967 x_location_os OUT NOCOPY VARCHAR2,
968 x_location_osr OUT NOCOPY VARCHAR2
969 ) IS
970 l_msg_count NUMBER;
971 l_msg_data VARCHAR2(2000);
972 l_location_obj HZ_LOCATION_OBJ;
973 BEGIN
974 l_location_obj := p_location_obj;
975 do_save_location_bo(
976 p_init_msg_list => fnd_api.g_true,
977 p_validate_bo_flag => p_validate_bo_flag,
978 p_location_obj => l_location_obj,
979 p_created_by_module => p_created_by_module,
980 p_obj_source => p_obj_source,
981 x_return_status => x_return_status,
982 x_msg_count => l_msg_count,
983 x_msg_data => l_msg_data,
984 x_location_id => x_location_id,
985 x_location_os => x_location_os,
986 x_location_osr => x_location_osr
987 );
988 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
989 x_return_status => x_return_status,
990 x_msg_count => l_msg_count,
991 x_msg_data => l_msg_data);
992 IF FND_API.to_Boolean(p_return_obj_flag) THEN
993 x_return_obj := l_location_obj;
994 END IF;
995 END save_location_bo;
996
997 --------------------------------------
998 --
999 -- PROCEDURE get_location_bo
1000 --
1001 -- DESCRIPTION
1002 -- Get a logical location.
1003 --
1004 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1005 --
1006 -- ARGUMENTS
1007 -- IN:
1008 -- p_init_msg_list Initialize message stack if it is set to FND_API.G_TRUE. Default is FND_API.G_FALSE.
1009 -- p_party_id party ID.
1010 -- p_location_id location ID. If this id is not passed in, multiple site objects will be returned.
1011 -- p_location_os location orig system.
1012 -- p_location_osr location orig system reference.
1013 --
1014 -- OUT:
1015 -- x_location_objs Logical location records.
1016 -- x_return_status Return status after the call. The status can
1017 -- be fnd_api.g_ret_sts_success (success),
1018 -- fnd_api.g_ret_sts_error (error),
1019 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1020 -- x_msg_count Number of messages in message stack.
1021 -- x_msg_data Message text if x_msg_count is 1.
1022 --
1023 -- NOTES
1024 --
1025 -- MODIFICATION HISTORY
1026 --
1027 --
1028 -- 1-JUNE-2005 AWU Created.
1029 --
1030
1031 /*
1032 The Get location API Procedure is a retrieval service that returns a full location business object.
1033 The user identifies a particular location business object using the TCA identifier and/or
1034 the object Source System information. Upon proper validation of the object,
1035 the full location business object is returned. The object consists of all data included within
1036 the location business object, at all embedded levels. This includes the set of all data stored
1037 in the TCA tables for each embedded entity.
1038
1039 To retrieve the appropriate embedded business objects within the location business object,
1040 the Get procedure calls the equivalent procedure for the following embedded objects:
1041
1042 To retrieve the appropriate embedded entities within the location business object,
1043 the Get procedure returns all records for the particular location from these TCA entity tables:
1044
1045 Embedded TCA Entity Mandatory Multiple TCA Table Entities
1046
1047 Location Y N HZ_LOCATIONS
1048 */
1049
1050 PROCEDURE get_location_bo (
1051 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1052 p_location_id IN NUMBER,
1053 p_location_os IN VARCHAR2,
1054 p_location_osr IN VARCHAR2,
1055 x_location_obj OUT NOCOPY HZ_LOCATION_OBJ,
1056 x_return_status OUT NOCOPY VARCHAR2,
1057 x_msg_count OUT NOCOPY NUMBER,
1058 x_msg_data OUT NOCOPY VARCHAR2
1059 ) IS
1060 l_debug_prefix VARCHAR2(30) := '';
1061 l_location_id NUMBER;
1062 l_location_os VARCHAR2(30);
1063 l_location_osr VARCHAR2(255);
1064
1065 CURSOR c1(l_loc_id NUMBER) IS
1066 SELECT HZ_LOCATION_OBJ(
1067 NULL, --P_ACTION_TYPE,
1068 NULL, --COMMON_OBJ_ID
1069 LOC.LOCATION_ID,
1070 NULL, --ORIG_SYSTEM,
1071 NULL, --ORIG_SYSTEM_REFERENCE,
1072 LOC.COUNTRY,
1073 LOC.ADDRESS1,
1074 LOC.ADDRESS2,
1075 LOC.ADDRESS3,
1076 LOC.ADDRESS4,
1077 LOC.CITY,
1078 LOC.POSTAL_CODE,
1079 LOC.STATE,
1080 LOC.PROVINCE,
1081 LOC.COUNTY,
1082 LOC.ADDRESS_KEY,
1083 LOC.ADDRESS_STYLE,
1084 LOC.VALIDATED_FLAG,
1085 LOC.ADDRESS_LINES_PHONETIC,
1086 LOC.POSTAL_PLUS4_CODE,
1087 LOC.POSITION,
1088 LOC.LOCATION_DIRECTIONS,
1089 LOC.ADDRESS_EFFECTIVE_DATE,
1090 LOC.ADDRESS_EXPIRATION_DATE,
1091 LOC.CLLI_CODE,
1092 LOC.LANGUAGE,
1093 LOC.SHORT_DESCRIPTION,
1094 LOC.DESCRIPTION,
1095 LOC_HIERARCHY_ID,
1096 LOC.SALES_TAX_GEOCODE,
1097 LOC.SALES_TAX_INSIDE_CITY_LIMITS,
1098 LOC.FA_LOCATION_ID,
1099 LOC.TIMEZONE_ID,
1100 LOC.ATTRIBUTE_CATEGORY,
1101 LOC.ATTRIBUTE1, LOC.ATTRIBUTE2, LOC.ATTRIBUTE3, LOC.ATTRIBUTE4,
1102 LOC.ATTRIBUTE5, LOC.ATTRIBUTE6, LOC.ATTRIBUTE7, LOC.ATTRIBUTE8,
1103 LOC.ATTRIBUTE9, LOC.ATTRIBUTE10, LOC.ATTRIBUTE11, LOC.ATTRIBUTE12,
1104 LOC.ATTRIBUTE13, LOC.ATTRIBUTE14, LOC.ATTRIBUTE15, LOC.ATTRIBUTE16,
1105 LOC.ATTRIBUTE17, LOC.ATTRIBUTE18, LOC.ATTRIBUTE19, LOC.ATTRIBUTE20,
1106 LOC.PROGRAM_UPDATE_DATE,
1107 LOC.CREATED_BY_MODULE,
1108 HZ_EXTRACT_BO_UTIL_PVT.GET_USER_NAME(LOC.CREATED_BY),
1109 LOC.CREATION_DATE,
1110 LOC.LAST_UPDATE_DATE,
1111 HZ_EXTRACT_BO_UTIL_PVT.GET_USER_NAME(LOC.LAST_UPDATED_BY),
1112 LOC.ACTUAL_CONTENT_SOURCE,
1113 LOC.DELIVERY_POINT_CODE,
1114 LOC.GEOMETRY_STATUS_CODE,
1115 LOC.GEOMETRY,
1116 HZ_ORIG_SYS_REF_OBJ_TBL(),
1117 HZ_EXT_ATTRIBUTE_OBJ_TBL())
1118 FROM HZ_LOCATIONS LOC
1119 WHERE LOCATION_ID = l_loc_id;
1120
1121 BEGIN
1122 -- initialize API return status to success.
1123 x_return_status := FND_API.G_RET_STS_SUCCESS;
1124
1125 -- Initialize message list if p_init_msg_list is set to TRUE
1126 IF FND_API.to_Boolean(p_init_msg_list) THEN
1127 FND_MSG_PUB.initialize;
1128 END IF;
1129
1130 -- Debug info.
1131 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1132 hz_utility_v2pub.debug(p_message=>'hz_location_bo_pub.get_location_bo(+)',
1133 p_prefix=>l_debug_prefix,
1134 p_msg_level=>fnd_log.level_procedure);
1135 END IF;
1136
1137 -- check if pass in contact_point_id and/or os+osr
1138 -- extraction validation logic is same as update
1139
1140 l_location_id := p_location_id;
1141 l_location_os := p_location_os;
1142 l_location_osr := p_location_osr;
1143
1144 HZ_EXTRACT_BO_UTIL_PVT.validate_ssm_id(
1145 px_id => l_location_id,
1146 px_os => l_location_os,
1147 px_osr => l_location_osr,
1148 p_obj_type => 'HZ_LOCATIONS',
1149 x_return_status => x_return_status,
1150 x_msg_count => x_msg_count,
1151 x_msg_data => x_msg_data);
1152
1153 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1154 RAISE fnd_api.g_exc_error;
1155 END IF;
1156
1157 OPEN c1(l_location_id);
1158 FETCH c1 into x_location_obj;
1159 CLOSE c1;
1160
1161 hz_extract_ext_attri_bo_pvt.get_ext_attribute_bos(
1162 p_init_msg_list => fnd_api.g_false,
1163 p_ext_object_id => x_location_obj.location_id,
1164 p_ext_object_name => 'HZ_LOCATIONS',
1165 p_action_type => NULL,
1166 x_ext_attribute_objs => x_location_obj.ext_attributes_objs,
1167 x_return_status => x_return_status,
1168 x_msg_count => x_msg_count,
1169 x_msg_data => x_msg_data);
1170
1171 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1172 RAISE FND_API.G_EXC_ERROR;
1173 END IF;
1174
1175 -- Debug info.
1176 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1177 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1178 p_msg_data=>x_msg_data,
1179 p_msg_type=>'WARNING',
1180 p_msg_level=>fnd_log.level_exception);
1181 END IF;
1182
1183 -- Debug info.
1184 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1185 hz_utility_v2pub.debug(p_message=>'hz_location_bo_pub.get_location_bo (-)',
1186 p_prefix=>l_debug_prefix,
1187 p_msg_level=>fnd_log.level_procedure);
1188 END IF;
1189 EXCEPTION
1190 WHEN fnd_api.g_exc_error THEN
1191 x_return_status := fnd_api.g_ret_sts_error;
1192 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1193 p_count => x_msg_count,
1194 p_data => x_msg_data);
1195
1196 -- Debug info.
1197 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1198 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1199 p_msg_data=>x_msg_data,
1200 p_msg_type=>'ERROR',
1201 p_msg_level=>fnd_log.level_error);
1202 END IF;
1203 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1204 hz_utility_v2pub.debug(p_message=>'hz_location_bo_pub.get_location_bo (-)',
1205 p_prefix=>l_debug_prefix,
1206 p_msg_level=>fnd_log.level_procedure);
1207 END IF;
1208 WHEN fnd_api.g_exc_unexpected_error THEN
1209 x_return_status := fnd_api.g_ret_sts_unexp_error;
1210 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1211 p_count => x_msg_count,
1212 p_data => x_msg_data);
1213
1214 -- Debug info.
1215 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1216 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1217 p_msg_data=>x_msg_data,
1218 p_msg_type=>'UNEXPECTED ERROR',
1219 p_msg_level=>fnd_log.level_error);
1220 END IF;
1221 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1222 hz_utility_v2pub.debug(p_message=>'hz_location_bo_pub.get_location_bo (-)',
1223 p_prefix=>l_debug_prefix,
1224 p_msg_level=>fnd_log.level_procedure);
1225 END IF;
1226 WHEN OTHERS THEN
1227 x_return_status := fnd_api.g_ret_sts_unexp_error;
1228 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1229 fnd_message.set_token('ERROR' ,SQLERRM);
1230 fnd_msg_pub.add;
1231
1232 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1233 p_count => x_msg_count,
1234 p_data => x_msg_data);
1235
1236 -- Debug info.
1237 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1238 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1239 p_msg_data=>x_msg_data,
1240 p_msg_type=>'SQL ERROR',
1241 p_msg_level=>fnd_log.level_error);
1242 END IF;
1243 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1244 hz_utility_v2pub.debug(p_message=>'hz_location_bo_pub.get_location_bo (-)',
1245 p_prefix=>l_debug_prefix,
1246 p_msg_level=>fnd_log.level_procedure);
1247 END IF;
1248 END get_location_bo;
1249
1250 PROCEDURE get_location_bo (
1251 p_location_id IN NUMBER,
1252 p_location_os IN VARCHAR2,
1253 p_location_osr IN VARCHAR2,
1254 x_location_obj OUT NOCOPY HZ_LOCATION_OBJ,
1255 x_return_status OUT NOCOPY VARCHAR2,
1256 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL
1257 ) IS
1258 l_msg_count NUMBER;
1259 l_msg_data VARCHAR2(2000);
1260 BEGIN
1261 get_location_bo(
1262 p_init_msg_list => FND_API.g_true,
1263 p_location_id => p_location_id,
1264 p_location_os => p_location_os,
1265 p_location_osr => p_location_osr,
1266 x_location_obj => x_location_obj,
1267 x_return_status => x_return_status,
1268 x_msg_count => l_msg_count,
1269 x_msg_data => l_msg_data
1270 );
1271 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1272 x_return_status => x_return_status,
1273 x_msg_count => l_msg_count,
1274 x_msg_data => l_msg_data);
1275 END get_location_bo;
1276
1277 END hz_location_bo_pub;