24: p_index_name VARCHAR2(30);
25:
26: BEGIN
27:
28: x_return_status := FND_API.G_RET_STS_SUCCESS;
29: l_error_code := NULL;
30:
31: -- Standard start of API savepoint
32: SAVEPOINT do_create_address_usages;
33:
34: -- Map Id is mandatory
35:
36: IF p_address_usages_rec.map_id IS NULL THEN
37: x_return_status := FND_API.G_RET_STS_ERROR;
38: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_MAP_ID');
39: -- The Map Id passed is NULL. Please use a valid Map Id to create a Address Usage.
40: FND_MSG_PUB.ADD;
41: RAISE FND_API.G_EXC_ERROR;
37: x_return_status := FND_API.G_RET_STS_ERROR;
38: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_MAP_ID');
39: -- The Map Id passed is NULL. Please use a valid Map Id to create a Address Usage.
40: FND_MSG_PUB.ADD;
41: RAISE FND_API.G_EXC_ERROR;
42: ELSE
43: BEGIN
44: SELECT map_id
45: INTO l_map_id
46: FROM hz_geo_struct_map
47: WHERE map_id = p_address_usages_rec.map_id;
48:
49: EXCEPTION WHEN NO_DATA_FOUND THEN
50: x_return_status := FND_API.G_RET_STS_ERROR;
51: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_MAP_ID');
52: -- The mapping record that you are trying to create address usage does not exist.
53: FND_MSG_PUB.ADD;
54: RAISE FND_API.G_EXC_ERROR;
50: x_return_status := FND_API.G_RET_STS_ERROR;
51: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_MAP_ID');
52: -- The mapping record that you are trying to create address usage does not exist.
53: FND_MSG_PUB.ADD;
54: RAISE FND_API.G_EXC_ERROR;
55:
56: END;
57: END IF;
58:
58:
59: -- Usage code is mandatory
60:
61: IF p_address_usages_rec.usage_code IS NULL THEN
62: x_return_status := FND_API.G_RET_STS_ERROR;
63: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_CODE');
64: -- Please enter a valid usage.
65: FND_MSG_PUB.ADD;
66: RAISE FND_API.G_EXC_ERROR;
62: x_return_status := FND_API.G_RET_STS_ERROR;
63: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_CODE');
64: -- Please enter a valid usage.
65: FND_MSG_PUB.ADD;
66: RAISE FND_API.G_EXC_ERROR;
67: ELSE
68: BEGIN
69: SELECT lookup_code
70: INTO l_usage_code
71: FROM ar_lookups
72: WHERE lookup_type = 'HZ_GEOGRAPHY_USAGE'
73: AND lookup_code = p_address_usages_rec.usage_code;
74: EXCEPTION WHEN NO_DATA_FOUND THEN
75: x_return_status := FND_API.G_RET_STS_ERROR;
76: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_CODE');
77: -- The Usage Code is invalid. Please pass a valid Usage Code
78: FND_MSG_PUB.ADD;
79: RAISE FND_API.G_EXC_ERROR;
75: x_return_status := FND_API.G_RET_STS_ERROR;
76: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_CODE');
77: -- The Usage Code is invalid. Please pass a valid Usage Code
78: FND_MSG_PUB.ADD;
79: RAISE FND_API.G_EXC_ERROR;
80: END;
81: END IF;
82:
83: IF p_address_usage_dtls_tbl.COUNT < 2 THEN
80: END;
81: END IF;
82:
83: IF p_address_usage_dtls_tbl.COUNT < 2 THEN
84: x_return_status := FND_API.G_RET_STS_ERROR;
85: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_2_USAGE_DTL_MAND');
86: -- Please enter two or more geography types for a usage.
87: FND_MSG_PUB.ADD;
88: RAISE FND_API.G_EXC_ERROR;
84: x_return_status := FND_API.G_RET_STS_ERROR;
85: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_2_USAGE_DTL_MAND');
86: -- Please enter two or more geography types for a usage.
87: FND_MSG_PUB.ADD;
88: RAISE FND_API.G_EXC_ERROR;
89: END IF;
90:
91: -- Validate that one of the geography_type passed is COUNTRY
92: i := p_address_usage_dtls_tbl.first;
101: i := p_address_usage_dtls_tbl.NEXT(i);
102: END LOOP;
103:
104: IF l_usg_country_found <> 'Y' then
105: x_return_status := FND_API.G_RET_STS_ERROR;
106: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GEO_TYPE_NOT_COUNTRY');
107: -- Please enter a geography type COUNTRY
108: FND_MSG_PUB.ADD;
109: RAISE FND_API.G_EXC_ERROR;
105: x_return_status := FND_API.G_RET_STS_ERROR;
106: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GEO_TYPE_NOT_COUNTRY');
107: -- Please enter a geography type COUNTRY
108: FND_MSG_PUB.ADD;
109: RAISE FND_API.G_EXC_ERROR;
110: END IF;
111:
112: -- Call table handler to insert row and make a
113: -- call to create map packages
136: i := p_address_usage_dtls_tbl.first;
137: WHILE i IS NOT NULL LOOP
138:
139: IF p_address_usage_dtls_tbl(i).geography_type IS NULL THEN
140: x_return_status := FND_API.G_RET_STS_ERROR;
141: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GEOGRAPHY_TYPE_MAND');
142: -- Please enter a valid geography type
143: FND_MSG_PUB.ADD;
144: RAISE FND_API.G_EXC_ERROR;
140: x_return_status := FND_API.G_RET_STS_ERROR;
141: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GEOGRAPHY_TYPE_MAND');
142: -- Please enter a valid geography type
143: FND_MSG_PUB.ADD;
144: RAISE FND_API.G_EXC_ERROR;
145: ELSE
146: BEGIN
147: SELECT 'X'
148: INTO l_map_dtl_extsts
150: WHERE map_id = p_address_usages_rec.map_id
151: AND geography_type = p_address_usage_dtls_tbl(i).geography_type;
152:
153: EXCEPTION WHEN NO_DATA_FOUND THEN
154: x_return_status := FND_API.G_RET_STS_ERROR;
155: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GEOTYPE_INVALID');
156: -- Geography Type does not mapped with a location
157: FND_MSG_PUB.ADD;
158: RAISE FND_API.G_EXC_ERROR;
154: x_return_status := FND_API.G_RET_STS_ERROR;
155: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GEOTYPE_INVALID');
156: -- Geography Type does not mapped with a location
157: FND_MSG_PUB.ADD;
158: RAISE FND_API.G_EXC_ERROR;
159:
160: END;
161: END IF;
162:
183:
184: EXCEPTION
185: WHEN DUP_VAL_ON_INDEX THEN
186: ROLLBACK TO do_create_address_usages;
187: x_return_status := FND_API.G_RET_STS_ERROR;
188: HZ_UTILITY_V2PUB.find_index_name(p_index_name);
189: IF p_index_name = 'HZ_ADDRESS_USAGES_U1' THEN
190: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_DUP_USAGE_ID');
191: FND_MESSAGE.SET_TOKEN('P_USAGE_ID',l_usage_id);
216:
217: PROCEDURE create_address_usages(
218: p_address_usages_rec IN address_usages_rec_type,
219: p_address_usage_dtls_tbl IN address_usage_dtls_tbl_type,
220: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
221: x_usage_id OUT NOCOPY NUMBER,
222: x_return_status OUT NOCOPY VARCHAR2,
223: x_msg_count OUT NOCOPY NUMBER,
224: x_msg_data OUT NOCOPY VARCHAR2) IS
232: -- Standard start of API savepoint
233: SAVEPOINT create_address_usages;
234:
235: -- Initialize message list if p_init_msg_list is set to TRUE.
236: IF FND_API.to_Boolean(p_init_msg_list) THEN
237: FND_MSG_PUB.initialize;
238: END IF;
239:
240: -- Initialize API return status to success.
237: FND_MSG_PUB.initialize;
238: END IF;
239:
240: -- Initialize API return status to success.
241: x_return_status := FND_API.G_RET_STS_SUCCESS;
242:
243: -- Call to business logic.
244: do_create_address_usages(
245: p_address_usages_rec,
249: );
250:
251:
252: -- if validation failed at any point, then raise an exception to stop processing
253: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
254: RAISE FND_API.G_EXC_ERROR;
255: END IF;
256:
257: IF p_address_usages_rec.status_flag = 'A' THEN
250:
251:
252: -- if validation failed at any point, then raise an exception to stop processing
253: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
254: RAISE FND_API.G_EXC_ERROR;
255: END IF;
256:
257: IF p_address_usages_rec.status_flag = 'A' THEN
258: --dbms_output.put_line('Before Gen pkg Create usage : map id :'|| p_address_usages_rec.map_id);
257: IF p_address_usages_rec.status_flag = 'A' THEN
258: --dbms_output.put_line('Before Gen pkg Create usage : map id :'|| p_address_usages_rec.map_id);
259: BEGIN
260: hz_gnr_gen_pkg.genpkg(p_address_usages_rec.map_id,l_pkgname,l_status);
261: IF l_status = FND_API.G_RET_STS_ERROR THEN
262: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_PKG_ERR');
263: FND_MSG_PUB.ADD;
264: RAISE FND_API.G_EXC_ERROR;
265: END IF;
260: hz_gnr_gen_pkg.genpkg(p_address_usages_rec.map_id,l_pkgname,l_status);
261: IF l_status = FND_API.G_RET_STS_ERROR THEN
262: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_PKG_ERR');
263: FND_MSG_PUB.ADD;
264: RAISE FND_API.G_EXC_ERROR;
265: END IF;
266: EXCEPTION WHEN OTHERS THEN
267: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_INTERNAL_ERROR');
268: FND_MSG_PUB.ADD;
265: END IF;
266: EXCEPTION WHEN OTHERS THEN
267: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_INTERNAL_ERROR');
268: FND_MSG_PUB.ADD;
269: RAISE FND_API.G_EXC_ERROR;
270: END;
271: --dbms_output.put_line('After Gen pkg Create usage : map id :'|| p_address_usages_rec.map_id);
272: END IF;
273:
272: END IF;
273:
274: -- Standard call to get message count and if count is 1, get message info.
275: FND_MSG_PUB.Count_And_Get(
276: p_encoded => FND_API.G_FALSE,
277: p_count => x_msg_count,
278: p_data => x_msg_data);
279:
280: EXCEPTION
277: p_count => x_msg_count,
278: p_data => x_msg_data);
279:
280: EXCEPTION
281: WHEN FND_API.G_EXC_ERROR THEN
282: ROLLBACK TO create_address_usages;
283: x_return_status := FND_API.G_RET_STS_ERROR;
284: FND_MSG_PUB.Count_And_Get(
285: p_encoded => FND_API.G_FALSE,
279:
280: EXCEPTION
281: WHEN FND_API.G_EXC_ERROR THEN
282: ROLLBACK TO create_address_usages;
283: x_return_status := FND_API.G_RET_STS_ERROR;
284: FND_MSG_PUB.Count_And_Get(
285: p_encoded => FND_API.G_FALSE,
286: p_count => x_msg_count,
287: p_data => x_msg_data);
281: WHEN FND_API.G_EXC_ERROR THEN
282: ROLLBACK TO create_address_usages;
283: x_return_status := FND_API.G_RET_STS_ERROR;
284: FND_MSG_PUB.Count_And_Get(
285: p_encoded => FND_API.G_FALSE,
286: p_count => x_msg_count,
287: p_data => x_msg_data);
288: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
289: ROLLBACK TO create_address_usages;
284: FND_MSG_PUB.Count_And_Get(
285: p_encoded => FND_API.G_FALSE,
286: p_count => x_msg_count,
287: p_data => x_msg_data);
288: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
289: ROLLBACK TO create_address_usages;
290: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
291: FND_MSG_PUB.Count_And_Get(
292: p_encoded => FND_API.G_FALSE,
286: p_count => x_msg_count,
287: p_data => x_msg_data);
288: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
289: ROLLBACK TO create_address_usages;
290: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
291: FND_MSG_PUB.Count_And_Get(
292: p_encoded => FND_API.G_FALSE,
293: p_count => x_msg_count,
294: p_data => x_msg_data);
288: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
289: ROLLBACK TO create_address_usages;
290: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
291: FND_MSG_PUB.Count_And_Get(
292: p_encoded => FND_API.G_FALSE,
293: p_count => x_msg_count,
294: p_data => x_msg_data);
295: WHEN OTHERS THEN
296: ROLLBACK TO create_address_usages;
293: p_count => x_msg_count,
294: p_data => x_msg_data);
295: WHEN OTHERS THEN
296: ROLLBACK TO create_address_usages;
297: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
298: FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
299: FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
300: FND_MSG_PUB.ADD;
301: FND_MSG_PUB.Count_And_Get(
298: FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
299: FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
300: FND_MSG_PUB.ADD;
301: FND_MSG_PUB.Count_And_Get(
302: p_encoded => FND_API.G_FALSE,
303: p_count => x_msg_count,
304: p_data => x_msg_data);
305:
306: END create_address_usages;
309: (p_usage_id IN NUMBER,
310: p_map_id IN NUMBER,
311: p_usage_code IN VARCHAR2,
312: p_status_flag IN VARCHAR2,
313: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
314: x_object_version_number IN OUT NOCOPY NUMBER,
315: x_return_status OUT NOCOPY VARCHAR2,
316: x_msg_count OUT NOCOPY NUMBER,
317: x_msg_data OUT NOCOPY VARCHAR2
344: -- Standard start of API savepoint
345: SAVEPOINT update_address_usages;
346:
347: -- Initialize message list if p_init_msg_list is set to TRUE.
348: IF FND_API.to_Boolean(p_init_msg_list) THEN
349: FND_MSG_PUB.initialize;
350: END IF;
351:
352: -- Initialize API return status to success.
349: FND_MSG_PUB.initialize;
350: END IF;
351:
352: -- Initialize API return status to success.
353: x_return_status := FND_API.G_RET_STS_SUCCESS;
354:
355: IF p_usage_id IS NOT NULL THEN
356:
357: -- Check the passed usage_id is valid or not
364: db_last_update_date, db_last_update_login, db_created_by_module, db_application_id
365: FROM hz_address_usages
366: WHERE usage_id = p_usage_id;
367: EXCEPTION WHEN NO_DATA_FOUND THEN
368: x_return_status := FND_API.G_RET_STS_ERROR;
369: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_ID');
370: -- Usage record does not exists for updation
371: FND_MSG_PUB.ADD;
372: RAISE FND_API.G_EXC_ERROR;
368: x_return_status := FND_API.G_RET_STS_ERROR;
369: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_ID');
370: -- Usage record does not exists for updation
371: FND_MSG_PUB.ADD;
372: RAISE FND_API.G_EXC_ERROR;
373: END;
374: ELSE
375:
376: IF p_map_id IS NULL THEN
373: END;
374: ELSE
375:
376: IF p_map_id IS NULL THEN
377: x_return_status := FND_API.G_RET_STS_ERROR;
378: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_MAP_ID');
379: -- The Map Id passed is NULL. Please use a valid Map Id to create an Address Usage.
380: FND_MSG_PUB.ADD;
381: RAISE FND_API.G_EXC_ERROR;
377: x_return_status := FND_API.G_RET_STS_ERROR;
378: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_MAP_ID');
379: -- The Map Id passed is NULL. Please use a valid Map Id to create an Address Usage.
380: FND_MSG_PUB.ADD;
381: RAISE FND_API.G_EXC_ERROR;
382: END IF;
383:
384: IF p_usage_code IS NULL THEN
385: x_return_status := FND_API.G_RET_STS_ERROR;
381: RAISE FND_API.G_EXC_ERROR;
382: END IF;
383:
384: IF p_usage_code IS NULL THEN
385: x_return_status := FND_API.G_RET_STS_ERROR;
386: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_CODE');
387: -- The usage code passed is NULL. Please use a valid usage code.
388: FND_MSG_PUB.ADD;
389: RAISE FND_API.G_EXC_ERROR;
385: x_return_status := FND_API.G_RET_STS_ERROR;
386: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_CODE');
387: -- The usage code passed is NULL. Please use a valid usage code.
388: FND_MSG_PUB.ADD;
389: RAISE FND_API.G_EXC_ERROR;
390: END IF;
391:
392: -- Check the valid combination for map_id and usage_code
393: BEGIN
400: FROM hz_address_usages
401: WHERE map_id = p_map_id
402: AND usage_code = p_usage_code;
403: EXCEPTION WHEN NO_DATA_FOUND THEN
404: x_return_status := FND_API.G_RET_STS_ERROR;
405: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_ID');
406: -- Usage record does not exists for updation
407: FND_MSG_PUB.ADD;
408: RAISE FND_API.G_EXC_ERROR;
404: x_return_status := FND_API.G_RET_STS_ERROR;
405: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_ID');
406: -- Usage record does not exists for updation
407: FND_MSG_PUB.ADD;
408: RAISE FND_API.G_EXC_ERROR;
409: END;
410:
411: END IF;
412:
413: IF db_object_version_number <> x_object_version_number THEN
414: FND_MESSAGE.SET_NAME('AR', 'HZ_API_RECORD_CHANGED');
415: FND_MESSAGE.SET_TOKEN('TABLE', 'HZ_ADDRESS_USAGES');
416: FND_MSG_PUB.ADD;
417: RAISE FND_API.G_EXC_ERROR;
418: END IF;
419:
420: hz_address_usages_pkg.Lock_Row (
421: x_rowid => l_usage_row_id,
460: IF l_count > 0 THEN
461: --dbms_output.put_line('Before Gen pkg Create usage : map id :'|| p_address_usages_rec.map_id);
462: BEGIN
463: hz_gnr_gen_pkg.genpkg(db_map_id,l_pkgname,l_status);
464: IF l_status = FND_API.G_RET_STS_ERROR THEN
465: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_PKG_ERR');
466: FND_MSG_PUB.ADD;
467: RAISE FND_API.G_EXC_ERROR;
468: END IF;
463: hz_gnr_gen_pkg.genpkg(db_map_id,l_pkgname,l_status);
464: IF l_status = FND_API.G_RET_STS_ERROR THEN
465: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_PKG_ERR');
466: FND_MSG_PUB.ADD;
467: RAISE FND_API.G_EXC_ERROR;
468: END IF;
469: EXCEPTION WHEN OTHERS THEN
470: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_INTERNAL_ERROR');
471: FND_MSG_PUB.ADD;
468: END IF;
469: EXCEPTION WHEN OTHERS THEN
470: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_INTERNAL_ERROR');
471: FND_MSG_PUB.ADD;
472: RAISE FND_API.G_EXC_ERROR;
473: END;
474: --dbms_output.put_line('After Gen pkg Create usage : map id :'|| p_address_usages_rec.map_id);
475: ELSE
476: BEGIN
487: END IF;
488:
489: -- Standard call to get message count and if count is 1, get message info.
490: FND_MSG_PUB.Count_And_Get(
491: p_encoded => FND_API.G_FALSE,
492: p_count => x_msg_count,
493: p_data => x_msg_data);
494:
495: EXCEPTION
492: p_count => x_msg_count,
493: p_data => x_msg_data);
494:
495: EXCEPTION
496: WHEN FND_API.G_EXC_ERROR THEN
497: ROLLBACK TO update_address_usages;
498: x_return_status := FND_API.G_RET_STS_ERROR;
499: FND_MSG_PUB.Count_And_Get(
500: p_encoded => FND_API.G_FALSE,
494:
495: EXCEPTION
496: WHEN FND_API.G_EXC_ERROR THEN
497: ROLLBACK TO update_address_usages;
498: x_return_status := FND_API.G_RET_STS_ERROR;
499: FND_MSG_PUB.Count_And_Get(
500: p_encoded => FND_API.G_FALSE,
501: p_count => x_msg_count,
502: p_data => x_msg_data);
496: WHEN FND_API.G_EXC_ERROR THEN
497: ROLLBACK TO update_address_usages;
498: x_return_status := FND_API.G_RET_STS_ERROR;
499: FND_MSG_PUB.Count_And_Get(
500: p_encoded => FND_API.G_FALSE,
501: p_count => x_msg_count,
502: p_data => x_msg_data);
503: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
504: ROLLBACK TO update_address_usages;
499: FND_MSG_PUB.Count_And_Get(
500: p_encoded => FND_API.G_FALSE,
501: p_count => x_msg_count,
502: p_data => x_msg_data);
503: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
504: ROLLBACK TO update_address_usages;
505: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
506: FND_MSG_PUB.Count_And_Get(
507: p_encoded => FND_API.G_FALSE,
501: p_count => x_msg_count,
502: p_data => x_msg_data);
503: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
504: ROLLBACK TO update_address_usages;
505: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
506: FND_MSG_PUB.Count_And_Get(
507: p_encoded => FND_API.G_FALSE,
508: p_count => x_msg_count,
509: p_data => x_msg_data);
503: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
504: ROLLBACK TO update_address_usages;
505: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
506: FND_MSG_PUB.Count_And_Get(
507: p_encoded => FND_API.G_FALSE,
508: p_count => x_msg_count,
509: p_data => x_msg_data);
510: WHEN OTHERS THEN
511: ROLLBACK TO update_address_usages;
508: p_count => x_msg_count,
509: p_data => x_msg_data);
510: WHEN OTHERS THEN
511: ROLLBACK TO update_address_usages;
512: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
513: FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
514: FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
515: FND_MSG_PUB.ADD;
516: FND_MSG_PUB.Count_And_Get(
513: FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
514: FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
515: FND_MSG_PUB.ADD;
516: FND_MSG_PUB.Count_And_Get(
517: p_encoded => FND_API.G_FALSE,
518: p_count => x_msg_count,
519: p_data => x_msg_data);
520:
521: END update_address_usages;
523: PROCEDURE create_address_usage_dtls(
524: p_usage_id IN NUMBER,
525: p_address_usage_dtls_tbl IN address_usage_dtls_tbl_type,
526: x_usage_dtl_id OUT NOCOPY NUMBER,
527: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
528: x_return_status OUT NOCOPY VARCHAR2,
529: x_msg_count OUT NOCOPY NUMBER,
530: x_msg_data OUT NOCOPY VARCHAR2) IS
531:
552: -- Standard start of API savepoint
553: SAVEPOINT create_address_usage_dtls;
554:
555: -- Initialize message list if p_init_msg_list is set to TRUE.
556: IF FND_API.to_Boolean(p_init_msg_list) THEN
557: FND_MSG_PUB.initialize;
558: END IF;
559:
560: -- Initialize API return status to success.
557: FND_MSG_PUB.initialize;
558: END IF;
559:
560: -- Initialize API return status to success.
561: x_return_status := FND_API.G_RET_STS_SUCCESS;
562:
563: IF p_usage_id IS NULL THEN
564: x_return_status := FND_API.G_RET_STS_ERROR;
565: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_ID');
560: -- Initialize API return status to success.
561: x_return_status := FND_API.G_RET_STS_SUCCESS;
562:
563: IF p_usage_id IS NULL THEN
564: x_return_status := FND_API.G_RET_STS_ERROR;
565: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_ID');
566: -- Usage Id cannot be null. Please enter a valid Usage Id
567: FND_MSG_PUB.ADD;
568: RAISE FND_API.G_EXC_ERROR;
564: x_return_status := FND_API.G_RET_STS_ERROR;
565: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_ID');
566: -- Usage Id cannot be null. Please enter a valid Usage Id
567: FND_MSG_PUB.ADD;
568: RAISE FND_API.G_EXC_ERROR;
569: ELSE
570: BEGIN
571: SELECT map_id, usage_code, status_flag
572: INTO l_map_id, l_usage_code, l_status_flag
573: FROM hz_address_usages
574: WHERE usage_id = p_usage_id;
575:
576: EXCEPTION WHEN NO_DATA_FOUND THEN
577: x_return_status := FND_API.G_RET_STS_ERROR;
578: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_ID');
579: -- Usage Id passed is not valid. Please enter a valid Usage Id.
580: FND_MSG_PUB.ADD;
581: RAISE FND_API.G_EXC_ERROR;
577: x_return_status := FND_API.G_RET_STS_ERROR;
578: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_ID');
579: -- Usage Id passed is not valid. Please enter a valid Usage Id.
580: FND_MSG_PUB.ADD;
581: RAISE FND_API.G_EXC_ERROR;
582:
583: END;
584: END IF;
585:
591: i := p_address_usage_dtls_tbl.first;
592: WHILE i IS NOT NULL LOOP
593:
594: IF p_address_usage_dtls_tbl(i).geography_type IS NULL THEN
595: x_return_status := FND_API.G_RET_STS_ERROR;
596: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GEOGRAPHY_TYPE_MAND');
597: -- Please enter a valid geography type
598: FND_MSG_PUB.ADD;
599: RAISE FND_API.G_EXC_ERROR;
595: x_return_status := FND_API.G_RET_STS_ERROR;
596: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GEOGRAPHY_TYPE_MAND');
597: -- Please enter a valid geography type
598: FND_MSG_PUB.ADD;
599: RAISE FND_API.G_EXC_ERROR;
600: ELSE
601: BEGIN
602: SELECT 'X'
603: INTO l_map_dtl_extsts
605: WHERE map_id = l_map_id
606: AND geography_type = p_address_usage_dtls_tbl(i).geography_type;
607:
608: EXCEPTION WHEN NO_DATA_FOUND THEN
609: x_return_status := FND_API.G_RET_STS_ERROR;
610: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GEOTYPE_INVALID');
611: -- Geography Type does not mapped with a location
612: FND_MSG_PUB.ADD;
613: RAISE FND_API.G_EXC_ERROR;
609: x_return_status := FND_API.G_RET_STS_ERROR;
610: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GEOTYPE_INVALID');
611: -- Geography Type does not mapped with a location
612: FND_MSG_PUB.ADD;
613: RAISE FND_API.G_EXC_ERROR;
614:
615: END;
616: END IF;
617:
636:
637: x_usage_dtl_id := l_usage_dtl_id;
638:
639: -- if validation failed at any point, then raise an exception to stop processing
640: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
641: RAISE FND_API.G_EXC_ERROR;
642: END IF;
643:
644: IF l_status_flag = 'A' THEN
637: x_usage_dtl_id := l_usage_dtl_id;
638:
639: -- if validation failed at any point, then raise an exception to stop processing
640: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
641: RAISE FND_API.G_EXC_ERROR;
642: END IF;
643:
644: IF l_status_flag = 'A' THEN
645: --dbms_output.put_line('Before Gen pkg Create usage dtls : map id :'|| l_map_id);
644: IF l_status_flag = 'A' THEN
645: --dbms_output.put_line('Before Gen pkg Create usage dtls : map id :'|| l_map_id);
646: BEGIN
647: hz_gnr_gen_pkg.genpkg(l_map_id,l_pkgname,l_status);
648: IF l_status = FND_API.G_RET_STS_ERROR THEN
649: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_PKG_ERR');
650: FND_MSG_PUB.ADD;
651: RAISE FND_API.G_EXC_ERROR;
652: END IF;
647: hz_gnr_gen_pkg.genpkg(l_map_id,l_pkgname,l_status);
648: IF l_status = FND_API.G_RET_STS_ERROR THEN
649: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_PKG_ERR');
650: FND_MSG_PUB.ADD;
651: RAISE FND_API.G_EXC_ERROR;
652: END IF;
653: EXCEPTION WHEN OTHERS THEN
654: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_INTERNAL_ERROR');
655: FND_MSG_PUB.ADD;
652: END IF;
653: EXCEPTION WHEN OTHERS THEN
654: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_INTERNAL_ERROR');
655: FND_MSG_PUB.ADD;
656: RAISE FND_API.G_EXC_ERROR;
657: END;
658: --dbms_output.put_line('After Gen pkg Create usage dtls : map id :'|| l_map_id);
659: END IF;
660:
659: END IF;
660:
661: -- Standard call to get message count and if count is 1, get message info.
662: FND_MSG_PUB.Count_And_Get(
663: p_encoded => FND_API.G_FALSE,
664: p_count => x_msg_count,
665: p_data => x_msg_data);
666:
667: EXCEPTION
664: p_count => x_msg_count,
665: p_data => x_msg_data);
666:
667: EXCEPTION
668: WHEN FND_API.G_EXC_ERROR THEN
669: ROLLBACK TO create_address_usage_dtls;
670: x_return_status := FND_API.G_RET_STS_ERROR;
671: FND_MSG_PUB.Count_And_Get(
672: p_encoded => FND_API.G_FALSE,
666:
667: EXCEPTION
668: WHEN FND_API.G_EXC_ERROR THEN
669: ROLLBACK TO create_address_usage_dtls;
670: x_return_status := FND_API.G_RET_STS_ERROR;
671: FND_MSG_PUB.Count_And_Get(
672: p_encoded => FND_API.G_FALSE,
673: p_count => x_msg_count,
674: p_data => x_msg_data);
668: WHEN FND_API.G_EXC_ERROR THEN
669: ROLLBACK TO create_address_usage_dtls;
670: x_return_status := FND_API.G_RET_STS_ERROR;
671: FND_MSG_PUB.Count_And_Get(
672: p_encoded => FND_API.G_FALSE,
673: p_count => x_msg_count,
674: p_data => x_msg_data);
675: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
676: ROLLBACK TO create_address_usage_dtls;
671: FND_MSG_PUB.Count_And_Get(
672: p_encoded => FND_API.G_FALSE,
673: p_count => x_msg_count,
674: p_data => x_msg_data);
675: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
676: ROLLBACK TO create_address_usage_dtls;
677: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
678: FND_MSG_PUB.Count_And_Get(
679: p_encoded => FND_API.G_FALSE,
673: p_count => x_msg_count,
674: p_data => x_msg_data);
675: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
676: ROLLBACK TO create_address_usage_dtls;
677: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
678: FND_MSG_PUB.Count_And_Get(
679: p_encoded => FND_API.G_FALSE,
680: p_count => x_msg_count,
681: p_data => x_msg_data);
675: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
676: ROLLBACK TO create_address_usage_dtls;
677: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
678: FND_MSG_PUB.Count_And_Get(
679: p_encoded => FND_API.G_FALSE,
680: p_count => x_msg_count,
681: p_data => x_msg_data);
682:
683: WHEN DUP_VAL_ON_INDEX THEN
681: p_data => x_msg_data);
682:
683: WHEN DUP_VAL_ON_INDEX THEN
684: ROLLBACK TO create_address_usage_dtls;
685: x_return_status := FND_API.G_RET_STS_ERROR;
686: HZ_UTILITY_V2PUB.find_index_name(p_index_name);
687: IF p_index_name = 'HZ_ADDRESS_USAGE_DTLS_U1' THEN
688: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_DUP_USAGE_DTL_ID');
689: -- Usage detail ID already exists. Please use a unique ID.
697: FND_MSG_PUB.ADD;
698: END IF;
699:
700: FND_MSG_PUB.Count_And_Get(
701: p_encoded => FND_API.G_FALSE,
702: p_count => x_msg_count,
703: p_data => x_msg_data);
704: WHEN OTHERS THEN
705: ROLLBACK TO create_address_usage_dtls;
702: p_count => x_msg_count,
703: p_data => x_msg_data);
704: WHEN OTHERS THEN
705: ROLLBACK TO create_address_usage_dtls;
706: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
707: FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
708: FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
709: FND_MSG_PUB.ADD;
710: FND_MSG_PUB.Count_And_Get(
707: FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
708: FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
709: FND_MSG_PUB.ADD;
710: FND_MSG_PUB.Count_And_Get(
711: p_encoded => FND_API.G_FALSE,
712: p_count => x_msg_count,
713: p_data => x_msg_data);
714:
715: END create_address_usage_dtls;
716:
717: PROCEDURE delete_address_usages(
718: p_usage_id IN NUMBER,
719: p_address_usage_dtls_tbl IN address_usage_dtls_tbl_type,
720: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
721: x_return_status OUT NOCOPY VARCHAR2,
722: x_msg_count OUT NOCOPY NUMBER,
723: x_msg_data OUT NOCOPY VARCHAR2
724: ) IS
745: -- Standard start of API savepoint
746: SAVEPOINT delete_address_usages;
747:
748: -- Initialize message list if p_init_msg_list is set to TRUE.
749: IF FND_API.to_Boolean(p_init_msg_list) THEN
750: FND_MSG_PUB.initialize;
751: END IF;
752:
753: -- Initialize API return status to success.
750: FND_MSG_PUB.initialize;
751: END IF;
752:
753: -- Initialize API return status to success.
754: x_return_status := FND_API.G_RET_STS_SUCCESS;
755:
756: IF p_usage_id IS NULL THEN
757:
758: x_return_status := FND_API.G_RET_STS_ERROR;
754: x_return_status := FND_API.G_RET_STS_SUCCESS;
755:
756: IF p_usage_id IS NULL THEN
757:
758: x_return_status := FND_API.G_RET_STS_ERROR;
759: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_ID');
760: -- Usage Id cannot be null. Please enter a valid Usage Id
761: FND_MSG_PUB.ADD;
762: RAISE FND_API.G_EXC_ERROR;
758: x_return_status := FND_API.G_RET_STS_ERROR;
759: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_ID');
760: -- Usage Id cannot be null. Please enter a valid Usage Id
761: FND_MSG_PUB.ADD;
762: RAISE FND_API.G_EXC_ERROR;
763:
764: ELSE
765:
766: BEGIN
769: FROM hz_address_usages
770: WHERE usage_id = p_usage_id;
771:
772: EXCEPTION WHEN NO_DATA_FOUND THEN
773: x_return_status := FND_API.G_RET_STS_ERROR;
774: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_ID');
775: -- Usage Id passed is not valid. Please enter a valid Usage Id.
776: FND_MSG_PUB.ADD;
777: RAISE FND_API.G_EXC_ERROR;
773: x_return_status := FND_API.G_RET_STS_ERROR;
774: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_INVALID_USAGE_ID');
775: -- Usage Id passed is not valid. Please enter a valid Usage Id.
776: FND_MSG_PUB.ADD;
777: RAISE FND_API.G_EXC_ERROR;
778: END;
779:
780: IF p_address_usage_dtls_tbl.COUNT > 0 THEN
781:
789: WHERE usage_id = p_usage_id
790: AND geography_type = p_address_usage_dtls_tbl(i).geography_type;
791:
792: EXCEPTION WHEN NO_DATA_FOUND THEN
793: x_return_status := FND_API.G_RET_STS_ERROR;
794: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_USAGE_GEOTYPE_INVALID');
795: FND_MESSAGE.SET_TOKEN('P_GEOTYPE',p_address_usage_dtls_tbl(i).geography_type);
796: FND_MESSAGE.SET_TOKEN('P_USAGE',l_usage_code);
797: -- Geography type does not exists for the given usage
795: FND_MESSAGE.SET_TOKEN('P_GEOTYPE',p_address_usage_dtls_tbl(i).geography_type);
796: FND_MESSAGE.SET_TOKEN('P_USAGE',l_usage_code);
797: -- Geography type does not exists for the given usage
798: FND_MSG_PUB.ADD;
799: RAISE FND_API.G_EXC_ERROR;
800: END;
801:
802: BEGIN
803: SELECT count(*)
825: EXCEPTION WHEN NO_DATA_FOUND THEN
826: -- it means only 1 usage detail was there. Delete the usage only
827: -- usage detail will be deleted below
828: /*
829: x_return_status := FND_API.G_RET_STS_ERROR;
830: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_2_USAGE_DTL_MAND');
831: -- At least two geography types are required for a usage
832: FND_MSG_PUB.ADD;
833: RAISE FND_API.G_EXC_ERROR;
829: x_return_status := FND_API.G_RET_STS_ERROR;
830: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_2_USAGE_DTL_MAND');
831: -- At least two geography types are required for a usage
832: FND_MSG_PUB.ADD;
833: RAISE FND_API.G_EXC_ERROR;
834: */
835: hz_address_usages_pkg.delete_row(p_usage_id);
836: i := p_address_usage_dtls_tbl.LAST;
837: END;
879: IF l_status_flag = 'A' THEN
880: --dbms_output.put_line('Before Gen pkg Delete usage : map id :'|| l_map_id);
881: BEGIN
882: hz_gnr_gen_pkg.genpkg(l_map_id,l_pkgname,l_status);
883: IF l_status = FND_API.G_RET_STS_ERROR THEN
884: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_PKG_ERR');
885: FND_MSG_PUB.ADD;
886: RAISE FND_API.G_EXC_ERROR;
887: END IF;
882: hz_gnr_gen_pkg.genpkg(l_map_id,l_pkgname,l_status);
883: IF l_status = FND_API.G_RET_STS_ERROR THEN
884: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_PKG_ERR');
885: FND_MSG_PUB.ADD;
886: RAISE FND_API.G_EXC_ERROR;
887: END IF;
888: EXCEPTION WHEN OTHERS THEN
889: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_INTERNAL_ERROR');
890: FND_MSG_PUB.ADD;
887: END IF;
888: EXCEPTION WHEN OTHERS THEN
889: FND_MESSAGE.SET_NAME('AR', 'HZ_GEO_GNR_INTERNAL_ERROR');
890: FND_MSG_PUB.ADD;
891: RAISE FND_API.G_EXC_ERROR;
892: END;
893: --dbms_output.put_line('After Gen pkg Delete usage : map id :'|| l_map_id);
894: END IF;
895: END IF;
896: END IF;
897:
898: -- Standard call to get message count and if count is 1, get message info.
899: FND_MSG_PUB.Count_And_Get(
900: p_encoded => FND_API.G_FALSE,
901: p_count => x_msg_count,
902: p_data => x_msg_data);
903:
904: EXCEPTION
901: p_count => x_msg_count,
902: p_data => x_msg_data);
903:
904: EXCEPTION
905: WHEN FND_API.G_EXC_ERROR THEN
906: ROLLBACK TO delete_address_usages;
907: x_return_status := FND_API.G_RET_STS_ERROR;
908: FND_MSG_PUB.Count_And_Get(
909: p_encoded => FND_API.G_FALSE,
903:
904: EXCEPTION
905: WHEN FND_API.G_EXC_ERROR THEN
906: ROLLBACK TO delete_address_usages;
907: x_return_status := FND_API.G_RET_STS_ERROR;
908: FND_MSG_PUB.Count_And_Get(
909: p_encoded => FND_API.G_FALSE,
910: p_count => x_msg_count,
911: p_data => x_msg_data);
905: WHEN FND_API.G_EXC_ERROR THEN
906: ROLLBACK TO delete_address_usages;
907: x_return_status := FND_API.G_RET_STS_ERROR;
908: FND_MSG_PUB.Count_And_Get(
909: p_encoded => FND_API.G_FALSE,
910: p_count => x_msg_count,
911: p_data => x_msg_data);
912: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
913: ROLLBACK TO delete_address_usages;
908: FND_MSG_PUB.Count_And_Get(
909: p_encoded => FND_API.G_FALSE,
910: p_count => x_msg_count,
911: p_data => x_msg_data);
912: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
913: ROLLBACK TO delete_address_usages;
914: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
915: FND_MSG_PUB.Count_And_Get(
916: p_encoded => FND_API.G_FALSE,
910: p_count => x_msg_count,
911: p_data => x_msg_data);
912: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
913: ROLLBACK TO delete_address_usages;
914: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
915: FND_MSG_PUB.Count_And_Get(
916: p_encoded => FND_API.G_FALSE,
917: p_count => x_msg_count,
918: p_data => x_msg_data);
912: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
913: ROLLBACK TO delete_address_usages;
914: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
915: FND_MSG_PUB.Count_And_Get(
916: p_encoded => FND_API.G_FALSE,
917: p_count => x_msg_count,
918: p_data => x_msg_data);
919: WHEN OTHERS THEN
920: ROLLBACK TO delete_address_usages;
917: p_count => x_msg_count,
918: p_data => x_msg_data);
919: WHEN OTHERS THEN
920: ROLLBACK TO delete_address_usages;
921: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
922: FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
923: FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
924: FND_MSG_PUB.ADD;
925: FND_MSG_PUB.Count_And_Get(
922: FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
923: FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
924: FND_MSG_PUB.ADD;
925: FND_MSG_PUB.Count_And_Get(
926: p_encoded => FND_API.G_FALSE,
927: p_count => x_msg_count,
928: p_data => x_msg_data);
929:
930: END delete_address_usages;