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