[Home] [Help]
PACKAGE BODY: APPS.HZ_ADAPTER_PUB
Source
1 PACKAGE BODY HZ_ADAPTER_PUB AS
2 /*$Header: ARHADPUB.pls 115.1 2003/09/02 21:41:50 acng noship $*/
3
4 PROCEDURE log(
5 message IN VARCHAR2,
6 newline IN BOOLEAN DEFAULT TRUE);
7
8 FUNCTION logerror(SQLERRM VARCHAR2 DEFAULT NULL)
9 RETURN VARCHAR2;
10
11 PROCEDURE create_adapter (
12 p_adapter_rec IN adapter_rec_type
13 ,x_adapter_id OUT NOCOPY NUMBER
14 ,x_return_status OUT NOCOPY VARCHAR2
15 ,x_msg_count OUT NOCOPY NUMBER
16 ,x_msg_data OUT NOCOPY VARCHAR2
17 ) IS
18 l_rowid VARCHAR2(64);
19 l_adapter_rec adapter_rec_type;
20 BEGIN
21
22 savepoint create_adapter_pub;
23 FND_MSG_PUB.initialize;
24
25 l_adapter_rec := p_adapter_rec;
26
27 --Initialize API return status to success.
28 x_return_status := FND_API.G_RET_STS_SUCCESS;
29
30 validate_adapter(
31 p_create_update_flag => 'C'
32 ,p_adapter_rec => l_adapter_rec
33 ,x_return_status => x_return_status );
34
35 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
36 RAISE FND_API.G_EXC_ERROR;
37 ELSIF(x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
38 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
39 END IF;
40
41 HZ_ADAPTERS_PKG.Insert_Row (
42 x_adapter_id => l_adapter_rec.adapter_id
43 ,x_adapter_content_source => l_adapter_rec.adapter_content_source
44 ,x_enabled_flag => l_adapter_rec.enabled_flag
45 ,x_synchronous_flag => l_adapter_rec.synchronous_flag
46 ,x_invoke_method_code => l_adapter_rec.invoke_method_code
47 ,x_message_format_code => l_adapter_rec.message_format_code
48 ,x_host_address => l_adapter_rec.host_address
49 ,x_username => l_adapter_rec.username
50 ,x_encrypted_password => l_adapter_rec.encrypted_password
51 ,x_maximum_batch_size => l_adapter_rec.maximum_batch_size
52 ,x_default_batch_size => l_adapter_rec.default_batch_size
53 ,x_default_replace_status_level => l_adapter_rec.default_replace_status_level
54 ,x_object_version_number => 1 );
55
56 x_adapter_id := l_adapter_rec.adapter_id;
57
58 -- insert new lookup code into CONTENT_SOURCE_TYPE
59 FND_LOOKUP_VALUES_PKG.INSERT_ROW(
60 x_rowid => l_rowid,
61 x_lookup_type => 'CONTENT_SOURCE_TYPE',
62 x_security_group_id => 0,
63 x_view_application_id => 222,
64 x_lookup_code => l_adapter_rec.adapter_content_source,
65 x_enabled_flag => 'Y',
66 x_start_date_active => sysdate,
67 x_end_date_active => null,
68 x_territory_code => null,
69 x_tag => null,
70 x_attribute_category => null,
71 x_attribute1 => null,
72 x_attribute2 => null,
73 x_attribute3 => null,
74 x_attribute4 => null,
75 x_attribute5 => null,
76 x_attribute6 => null,
77 x_attribute7 => null,
78 x_attribute8 => null,
79 x_attribute9 => null,
80 x_attribute10 => null,
81 x_attribute11 => null,
82 x_attribute12 => null,
83 x_attribute13 => null,
84 x_attribute14 => null,
85 x_attribute15 => sysdate,
86 x_meaning => l_adapter_rec.adapter_meaning,
87 x_description => l_adapter_rec.adapter_description,
88 x_creation_date => hz_utility_v2pub.creation_date,
89 x_created_by => hz_utility_v2pub.created_by,
90 x_last_update_date => hz_utility_v2pub.last_update_date,
91 x_last_updated_by => hz_utility_v2pub.last_updated_by,
92 x_last_update_login => hz_utility_v2pub.last_update_login );
93
94 EXCEPTION
95
96 WHEN FND_API.G_EXC_ERROR THEN
97 ROLLBACK TO create_adapter_pub;
98 x_return_status := FND_API.G_RET_STS_ERROR;
99 FND_MSG_PUB.Count_And_Get(
100 p_encoded => FND_API.G_FALSE,
101 p_count => x_msg_count,
102 p_data => x_msg_data);
103
104 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
105 ROLLBACK TO create_adapter_pub;
106 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
107 FND_MSG_PUB.Count_And_Get(
108 p_encoded => FND_API.G_FALSE,
109 p_count => x_msg_count,
110 p_data => x_msg_data);
111
112 WHEN OTHERS THEN
113 ROLLBACK TO create_adapter_pub;
114 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
115 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
116 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
117 FND_MSG_PUB.ADD;
118 FND_MSG_PUB.Count_And_Get(
119 p_encoded => FND_API.G_FALSE,
120 p_count => x_msg_count,
121 p_data => x_msg_data);
122 END create_adapter;
123
124 -- This procedure create a record in location adapter territory by passing
125 -- location adapter territory record type
126 PROCEDURE create_adapter_terr (
127 p_adapter_terr_rec IN adapter_terr_rec_type
128 ,x_return_status OUT NOCOPY VARCHAR2
129 ,x_msg_count OUT NOCOPY NUMBER
130 ,x_msg_data OUT NOCOPY VARCHAR2
131 ) IS
132
133 BEGIN
134
135 savepoint create_adapter_terr_pub;
136 FND_MSG_PUB.initialize;
137
138 --Initialize API return status to success.
139 x_return_status := FND_API.G_RET_STS_SUCCESS;
140
141 validate_adapter_terr(
142 p_create_update_flag => 'C'
143 ,p_adapter_terr_rec => p_adapter_terr_rec
144 ,x_return_status => x_return_status );
145
146 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
147 RAISE FND_API.G_EXC_ERROR;
148 ELSIF(x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
149 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
150 END IF;
151
152 HZ_ADAPTER_TERRITORIES_PKG.Insert_Row (
153 x_adapter_id => p_adapter_terr_rec.adapter_id
154 ,x_territory_code => p_adapter_terr_rec.territory_code
155 ,x_enabled_flag => p_adapter_terr_rec.enabled_flag
156 ,x_default_flag => p_adapter_terr_rec.default_flag
157 ,x_object_version_number => 1 );
158
159 EXCEPTION
160
161 WHEN FND_API.G_EXC_ERROR THEN
162 ROLLBACK TO create_adapter_terr_pub;
163 x_return_status := FND_API.G_RET_STS_ERROR;
164 FND_MSG_PUB.Count_And_Get(
165 p_encoded => FND_API.G_FALSE,
166 p_count => x_msg_count,
167 p_data => x_msg_data);
168
169 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
170 ROLLBACK TO create_adapter_terr_pub;
171 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
172 FND_MSG_PUB.Count_And_Get(
173 p_encoded => FND_API.G_FALSE,
174 p_count => x_msg_count,
175 p_data => x_msg_data);
176
177 WHEN OTHERS THEN
178 ROLLBACK TO create_adapter_terr_pub;
179 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
180 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
181 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
182 FND_MSG_PUB.ADD;
183 FND_MSG_PUB.Count_And_Get(
184 p_encoded => FND_API.G_FALSE,
185 p_count => x_msg_count,
186 p_data => x_msg_data);
187 END create_adapter_terr;
188
189 -- This procedure update a record in location adapater
190 PROCEDURE update_adapter (
191 p_adapter_rec IN adapter_rec_type
192 ,px_object_version_number IN OUT NOCOPY NUMBER
193 ,x_return_status OUT NOCOPY VARCHAR2
194 ,x_msg_count OUT NOCOPY NUMBER
195 ,x_msg_data OUT NOCOPY VARCHAR2
196 ) IS
197 l_object_version_number NUMBER;
198 l_rowid ROWID := NULL;
199 l_adapter_content_source VARCHAR2(30);
200 l_adapter_id NUMBER;
201 BEGIN
202
203 savepoint update_adapter_pub;
204 FND_MSG_PUB.initialize;
205
206 --Initialize API return status to success.
207 x_return_status := FND_API.G_RET_STS_SUCCESS;
208
209 -- Lock record.
210 BEGIN
211
212 l_adapter_id := p_adapter_rec.adapter_id;
213
214 SELECT ROWID, OBJECT_VERSION_NUMBER
215 INTO l_rowid, l_object_version_number
216 FROM HZ_ADAPTERS
217 WHERE ADAPTER_ID = l_adapter_id
218 FOR UPDATE NOWAIT;
219
220 IF NOT (
221 ( px_object_version_number IS NULL AND l_object_version_number IS NULL ) OR
222 ( px_object_version_number IS NOT NULL AND
223 l_object_version_number IS NOT NULL AND
224 px_object_version_number = l_object_version_number ) )
225 THEN
226 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_RECORD_CHANGED' );
227 FND_MESSAGE.SET_TOKEN( 'TABLE', 'HZ_ADAPTERS' );
228 FND_MSG_PUB.ADD;
229 RAISE FND_API.G_EXC_ERROR;
230 END IF;
231
232 px_object_version_number := NVL(l_object_version_number,1)+1;
233
234 EXCEPTION
235 WHEN NO_DATA_FOUND THEN
236 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_NO_RECORD' );
237 FND_MESSAGE.SET_TOKEN( 'RECORD', 'Adapter' );
238 FND_MESSAGE.SET_TOKEN( 'VALUE', l_adapter_id);
239 FND_MSG_PUB.ADD;
240 RAISE FND_API.G_EXC_ERROR;
241 END;
242
243 validate_adapter(
244 p_create_update_flag => 'U'
245 ,p_adapter_rec => p_adapter_rec
246 ,x_return_status => x_return_status );
247
248 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
249 RAISE FND_API.G_EXC_ERROR;
250 ELSIF(x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
251 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
252 END IF;
253
254 HZ_ADAPTERS_PKG.Update_Row(
255 x_rowid => l_rowid
256 ,x_adapter_id => p_adapter_rec.adapter_id
257 ,x_adapter_content_source => p_adapter_rec.adapter_content_source
258 ,x_enabled_flag => p_adapter_rec.enabled_flag
259 ,x_synchronous_flag => p_adapter_rec.synchronous_flag
260 ,x_invoke_method_code => p_adapter_rec.invoke_method_code
261 ,x_message_format_code => p_adapter_rec.message_format_code
262 ,x_host_address => p_adapter_rec.host_address
263 ,x_username => p_adapter_rec.username
264 ,x_encrypted_password => p_adapter_rec.encrypted_password
265 ,x_maximum_batch_size => p_adapter_rec.maximum_batch_size
266 ,x_default_batch_size => p_adapter_rec.default_batch_size
267 ,x_default_replace_status_level => p_adapter_rec.default_replace_status_level
268 ,x_object_version_number => px_object_version_number );
269
270 EXCEPTION
271 WHEN FND_API.G_EXC_ERROR THEN
272 ROLLBACK TO update_adapter_pub;
273 x_return_status := FND_API.G_RET_STS_ERROR;
274 FND_MSG_PUB.Count_And_Get(
275 p_encoded => FND_API.G_FALSE,
276 p_count => x_msg_count,
277 p_data => x_msg_data);
278
279 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
280 ROLLBACK TO update_adapter_pub;
281 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
282 FND_MSG_PUB.Count_And_Get(
283 p_encoded => FND_API.G_FALSE,
284 p_count => x_msg_count,
285 p_data => x_msg_data);
286
287 WHEN OTHERS THEN
288 ROLLBACK TO update_adapter_pub;
289 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
290 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
291 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
292 FND_MSG_PUB.ADD;
293 FND_MSG_PUB.Count_And_Get(
294 p_encoded => FND_API.G_FALSE,
295 p_count => x_msg_count,
296 p_data => x_msg_data);
297 END update_adapter;
298
299 -- This procedure update a record in location adapter territory
300 PROCEDURE update_adapter_terr (
301 p_adapter_terr_rec IN adapter_terr_rec_type
302 ,px_object_version_number IN OUT NOCOPY NUMBER
303 ,x_return_status OUT NOCOPY VARCHAR2
304 ,x_msg_count OUT NOCOPY NUMBER
305 ,x_msg_data OUT NOCOPY VARCHAR2
306 ) IS
307 l_rowid ROWID := NULL;
308 l_object_version_number NUMBER;
309 l_adapter_id NUMBER;
310 l_territory_code VARCHAR2(30);
311 BEGIN
312
313 savepoint update_adapter_terr_pub;
314 FND_MSG_PUB.initialize;
315
316 --Initialize API return status to success.
317 x_return_status := FND_API.G_RET_STS_SUCCESS;
318
319 -- Lock record.
320 BEGIN
321
322 l_adapter_id := p_adapter_terr_rec.adapter_id;
323 l_territory_code := p_adapter_terr_rec.territory_code;
324
325 SELECT ROWID, OBJECT_VERSION_NUMBER
326 INTO l_rowid, l_object_version_number
327 FROM HZ_ADAPTER_TERRITORIES
328 WHERE ADAPTER_ID = l_adapter_id
329 AND TERRITORY_CODE = l_territory_code
330 FOR UPDATE NOWAIT;
331
332 IF NOT (
333 ( px_object_version_number IS NULL AND l_object_version_number IS NULL ) OR
334 ( px_object_version_number IS NOT NULL AND
335 l_object_version_number IS NOT NULL AND
336 px_object_version_number = l_object_version_number ) )
337 THEN
338 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_RECORD_CHANGED' );
339 FND_MESSAGE.SET_TOKEN( 'TABLE', 'HZ_ADAPTERS' );
340 FND_MSG_PUB.ADD;
341 RAISE FND_API.G_EXC_ERROR;
342 END IF;
343
344 px_object_version_number := NVL(l_object_version_number,1)+1;
345
346 EXCEPTION
347 WHEN NO_DATA_FOUND THEN
348 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_NO_RECORD' );
349 FND_MESSAGE.SET_TOKEN( 'RECORD', 'Adapter' );
350 FND_MESSAGE.SET_TOKEN( 'VALUE', l_adapter_id);
351 FND_MSG_PUB.ADD;
352 RAISE FND_API.G_EXC_ERROR;
353 END;
354
355 validate_adapter_terr(
356 p_create_update_flag => 'U'
357 ,p_adapter_terr_rec => p_adapter_terr_rec
358 ,x_return_status => x_return_status );
359
360 IF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
361 RAISE FND_API.G_EXC_ERROR;
362 ELSIF(x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
363 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
364 END IF;
365
366 HZ_ADAPTER_TERRITORIES_PKG.Update_Row(
367 x_rowid => l_rowid
368 ,x_adapter_id => p_adapter_terr_rec.adapter_id
369 ,x_territory_code => p_adapter_terr_rec.territory_code
370 ,x_enabled_flag => p_adapter_terr_rec.enabled_flag
371 ,x_default_flag => p_adapter_terr_rec.default_flag
372 ,x_object_version_number => px_object_version_number );
373
374 EXCEPTION
375
376 WHEN FND_API.G_EXC_ERROR THEN
377 ROLLBACK TO update_adapter_terr_pub;
378 x_return_status := FND_API.G_RET_STS_ERROR;
379 FND_MSG_PUB.Count_And_Get(
380 p_encoded => FND_API.G_FALSE,
381 p_count => x_msg_count,
382 p_data => x_msg_data);
383
384 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
385 ROLLBACK TO update_adapter_terr_pub;
386 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
387 FND_MSG_PUB.Count_And_Get(
388 p_encoded => FND_API.G_FALSE,
389 p_count => x_msg_count,
390 p_data => x_msg_data);
391
392 WHEN OTHERS THEN
393 ROLLBACK TO update_adapter_terr_pub;
394 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
395 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
396 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
397 FND_MSG_PUB.ADD;
398 FND_MSG_PUB.Count_And_Get(
399 p_encoded => FND_API.G_FALSE,
400 p_count => x_msg_count,
401 p_data => x_msg_data);
402 END update_adapter_terr;
403
404 PROCEDURE log(
405 message IN VARCHAR2,
406 newline IN BOOLEAN DEFAULT TRUE
407 ) IS
408 BEGIN
409 IF message = 'NEWLINE' THEN
413 ELSE
410 FND_FILE.NEW_LINE(FND_FILE.LOG, 1);
411 ELSIF (newline) THEN
412 FND_FILE.put_line(fnd_file.log,message);
414 FND_FILE.put(fnd_file.log,message);
415 END IF;
416 END log;
417
418 /*-----------------------------------------------------------------------
419 | Function to fetch messages of the stack and log the error
420 | Also returns the error
421 |-----------------------------------------------------------------------*/
422 FUNCTION logerror(SQLERRM VARCHAR2 DEFAULT NULL)
423 RETURN VARCHAR2 IS
424 l_msg_data VARCHAR2(2000);
425 BEGIN
426 FND_MSG_PUB.Reset;
427
428 FOR I IN 1..FND_MSG_PUB.Count_Msg LOOP
429 l_msg_data := l_msg_data || FND_MSG_PUB.Get(p_encoded => FND_API.G_FALSE );
430 END LOOP;
431 IF (SQLERRM IS NOT NULL) THEN
432 l_msg_data := l_msg_data || SQLERRM;
433 END IF;
434 log(l_msg_data);
435 RETURN l_msg_data;
436 END logerror;
437
438 PROCEDURE validate_adapter(
439 p_create_update_flag IN VARCHAR2,
440 p_adapter_rec IN adapter_rec_type,
441 x_return_status IN OUT NOCOPY VARCHAR2
442 ) IS
443
444 l_dummy VARCHAR2(1);
445 l_adapter_content_source VARCHAR2(30);
446 l_message_format_code VARCHAR2(30);
447 l_invoke_method_code VARCHAR2(30);
448 l_maximum_batch_size NUMBER;
449 l_default_batch_size NUMBER;
450
451 CURSOR check_lookup(l_lookup_code VARCHAR2, l_lookup_type VARCHAR2) IS
452 select 'X'
453 from AR_LOOKUPS
454 where lookup_type = l_lookup_type
455 and lookup_code = l_lookup_code;
456
457 BEGIN
458
459 l_adapter_content_source := p_adapter_rec.adapter_content_source;
460 l_message_format_code := p_adapter_rec.message_format_code;
461 l_invoke_method_code := p_adapter_rec.invoke_method_code;
462 l_maximum_batch_size := p_adapter_rec.maximum_batch_size;
463 l_default_batch_size := p_adapter_rec.default_batch_size;
464
465 -- check not null first
466 IF(l_adapter_content_source IS NULL OR l_adapter_content_source = FND_API.G_MISS_CHAR) THEN
467 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MISSING_COLUMN' );
468 FND_MESSAGE.SET_TOKEN('COLUMN' ,'ADAPTER_CONTENT_SOURCE');
469 FND_MSG_PUB.ADD;
470 RAISE FND_API.G_EXC_ERROR;
471 END IF;
472
473 IF(l_message_format_code IS NULL OR l_message_format_code = FND_API.G_MISS_CHAR) THEN
474 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MISSING_COLUMN' );
475 FND_MESSAGE.SET_TOKEN('COLUMN' ,'MESSAGE_FORMAT_CODE');
476 FND_MSG_PUB.ADD;
477 RAISE FND_API.G_EXC_ERROR;
478 END IF;
479
480 IF(l_invoke_method_code IS NULL OR l_invoke_method_code = FND_API.G_MISS_CHAR) THEN
481 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MISSING_COLUMN' );
482 FND_MESSAGE.SET_TOKEN('COLUMN' ,'INVOKE_METHOD_CODE');
483 FND_MSG_PUB.ADD;
484 RAISE FND_API.G_EXC_ERROR;
485 END IF;
486
487 IF(l_maximum_batch_size IS NULL OR l_maximum_batch_size = FND_API.G_MISS_NUM) THEN
488 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MISSING_COLUMN' );
489 FND_MESSAGE.SET_TOKEN('COLUMN' ,'MAXIMUM_BATCH_SIZE');
490 FND_MSG_PUB.ADD;
491 RAISE FND_API.G_EXC_ERROR;
492 END IF;
493
494 IF(l_default_batch_size IS NULL OR l_default_batch_size = FND_API.G_MISS_NUM) THEN
495 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MISSING_COLUMN' );
496 FND_MESSAGE.SET_TOKEN('COLUMN' ,'DEFAULT_BATCH_SIZE');
497 FND_MSG_PUB.ADD;
498 RAISE FND_API.G_EXC_ERROR;
499 END IF;
500
501 -- check adapter_content_source
502 IF(p_create_update_flag = 'C') THEN
503 OPEN check_lookup(l_adapter_content_source, 'CONTENT_SOURCE_TYPE');
504 FETCH check_lookup INTO l_dummy;
505 -- if found, then raise error saying already exist
506 IF(check_lookup%FOUND) THEN
507 -- error saying that content source already exist
508 FND_MESSAGE.SET_NAME('AR', 'HZ_LOC_DUP_ADPT');
509 FND_MSG_PUB.ADD;
510 RAISE FND_API.G_EXC_ERROR;
511 END IF;
512 CLOSE check_lookup;
513 ELSIF(p_create_update_flag = 'U') THEN
514 OPEN check_lookup(l_adapter_content_source, 'CONTENT_SOURCE_TYPE');
515 FETCH check_lookup INTO l_dummy;
516 IF(check_lookup%NOTFOUND) THEN
517 -- error saying that content source not found
518 FND_MESSAGE.SET_NAME('AR', 'HZ_LOC_INVALID_ADAPTER');
519 FND_MSG_PUB.ADD;
520 RAISE FND_API.G_EXC_ERROR;
521 END IF;
522 CLOSE check_lookup;
523 END IF;
524
525 -- check message_format_code
526 OPEN check_lookup(l_message_format_code, 'HZ_MESSAGE_FORMAT');
527 FETCH check_lookup INTO l_dummy;
528 IF(check_lookup%NOTFOUND) THEN
529 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_LOOKUP');
530 FND_MESSAGE.SET_TOKEN('COLUMN' ,'MESSAGE_FORMAT_CODE');
531 FND_MESSAGE.SET_TOKEN('LOOKUP_TYPE' , 'HZ_MESSAGE_FORMAT');
532 FND_MSG_PUB.ADD;
533 RAISE FND_API.G_EXC_ERROR;
534 END IF;
535 CLOSE check_lookup;
536
537 -- check invoke_method_code
538 OPEN check_lookup(l_invoke_method_code, 'HZ_INVOKE_METHOD');
539 FETCH check_lookup INTO l_dummy;
540 IF(check_lookup%NOTFOUND) THEN
541 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_LOOKUP');
542 FND_MESSAGE.SET_TOKEN('COLUMN' ,'INVOKE_METHOD_CODE');
543 FND_MESSAGE.SET_TOKEN('LOOKUP_TYPE' , 'HZ_INVOKE_METHOD');
544 FND_MSG_PUB.ADD;
545 RAISE FND_API.G_EXC_ERROR;
546 END IF;
547 CLOSE check_lookup;
548
549 -- check maximum_batch_size and default_batch_size
550 IF((l_maximum_batch_size < 1) OR (l_default_batch_size < 1))THEN
551 FND_MESSAGE.SET_NAME('AR', 'HZ_LOC_INVALID_BATCH_SIZE');
552 FND_MSG_PUB.ADD;
556 EXCEPTION
553 RAISE FND_API.G_EXC_ERROR;
554 END IF;
555
557 WHEN FND_API.G_EXC_ERROR THEN
558 x_return_status := FND_API.G_RET_STS_ERROR;
559
560 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
561 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
562
563 WHEN OTHERS THEN
564 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
565 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
566 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
567 FND_MSG_PUB.ADD;
568 END validate_adapter;
569
570 PROCEDURE validate_adapter_terr(
571 p_create_update_flag IN VARCHAR2,
572 p_adapter_terr_rec IN adapter_terr_rec_type,
573 x_return_status IN OUT NOCOPY VARCHAR2
574 ) IS
575
576 l_dummy VARCHAR2(1);
577 l_adapter_id NUMBER;
578 l_territory_code VARCHAR2(30);
579 l_enabled_flag VARCHAR2(1);
580 l_default_flag VARCHAR2(1);
581
582 CURSOR check_adapter(l_adapter_id NUMBER) IS
583 select 'X'
584 from HZ_ADAPTERS
585 where adapter_id = l_adapter_id;
586
587 CURSOR check_terr(l_territory_code VARCHAR2) IS
588 select 'X'
589 from FND_TERRITORIES
590 where territory_code = l_territory_code;
591
592 CURSOR check_terr_default(l_adapter_id NUMBER, l_territory_code VARCHAR2) IS
593 select 'X'
594 from HZ_ADAPTERS la, HZ_ADAPTER_TERRITORIES lat
595 where la.adapter_id = lat.adapter_id
596 and lat.default_flag = 'Y'
597 and lat.enabled_flag = 'Y'
598 and lat.territory_code = l_territory_code
599 and la.adapter_id <> l_adapter_id;
600
601 BEGIN
602
603 l_adapter_id := p_adapter_terr_rec.adapter_id;
604 l_territory_code := p_adapter_terr_rec.territory_code;
605 l_enabled_flag := p_adapter_terr_rec.enabled_flag;
606 l_default_flag := p_adapter_terr_rec.default_flag;
607
608 -- check not null
609 IF(l_adapter_id IS NULL OR l_adapter_id = FND_API.G_MISS_NUM) THEN
610 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MISSING_COLUMN' );
611 FND_MESSAGE.SET_TOKEN('COLUMN' ,'ADAPTER_ID');
612 FND_MSG_PUB.ADD;
613 RAISE FND_API.G_EXC_ERROR;
614 END IF;
615
616 IF(l_territory_code IS NULL OR l_territory_code = FND_API.G_MISS_CHAR) THEN
617 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MISSING_COLUMN' );
621 END IF;
618 FND_MESSAGE.SET_TOKEN('COLUMN' ,'TERRITORY_CODE');
619 FND_MSG_PUB.ADD;
620 RAISE FND_API.G_EXC_ERROR;
622
623 -- if create a loc adapter territory, it can't be disabled and set to default 'Y'
624 -- give message saying that this setting is not allowed
625 IF((l_enabled_flag = 'N') AND (l_default_flag = 'Y')) THEN
626 FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MISSING_COLUMN' );
627 FND_MESSAGE.SET_TOKEN('COLUMN' ,'TERRITORY_CODE');
628 FND_MSG_PUB.ADD;
629 RAISE FND_API.G_EXC_ERROR;
630 END IF;
631
632 -- check adapter_content_source
633 -- if not found, then raise error saying adapter_content_source not exist
634 OPEN check_adapter(l_adapter_id);
635 FETCH check_adapter INTO l_dummy;
636 IF(check_adapter%NOTFOUND) THEN
637 FND_MESSAGE.SET_NAME('AR', 'HZ_LOC_INVALID_ADAPTER');
638 FND_MSG_PUB.ADD;
639 RAISE FND_API.G_EXC_ERROR;
640 END IF;
641 CLOSE check_adapter;
642
643 -- check territory_code
644 -- if not found, then raise error saying territory_code not exist
645 OPEN check_terr(l_territory_code);
646 FETCH check_terr INTO l_dummy;
647 IF(check_terr%NOTFOUND) THEN
648 FND_MESSAGE.SET_NAME('AR', 'HZ_LOC_INVALID_TERRITORY');
649 FND_MSG_PUB.ADD;
650 RAISE FND_API.G_EXC_ERROR;
651 END IF;
652 CLOSE check_terr;
653
654 -- check default flag for this country. Only one active default adapter for each country
655 IF(l_default_flag = 'Y') THEN
656 OPEN check_terr_default(l_adapter_id, l_territory_code);
657 FETCH check_terr_default INTO l_dummy;
658 IF(check_terr_default%FOUND) THEN
659 FND_MESSAGE.SET_NAME('AR', 'HZ_LOC_INVALID_DEFAULT');
660 FND_MSG_PUB.ADD;
661 RAISE FND_API.G_EXC_ERROR;
662 END IF;
663 CLOSE check_terr_default;
664 END IF;
665
666 EXCEPTION
667 WHEN FND_API.G_EXC_ERROR THEN
668 x_return_status := FND_API.G_RET_STS_ERROR;
669
670 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
671 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
672
673 WHEN OTHERS THEN
674 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
675 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
676 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
677 FND_MSG_PUB.ADD;
678
679 END validate_adapter_terr;
680
681 END HZ_ADAPTER_PUB;