DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_PERSON_INFO_V2PUB

Source


1 PACKAGE BODY HZ_PERSON_INFO_V2PUB AS
2 /* $Header: ARH2PISB.pls 120.12 2005/12/07 19:31:14 acng noship $ */
3 
4 --------------------------------------
5 -- declaration of private global varibles
6 --------------------------------------
7 
8 --G_DEBUG             BOOLEAN := FALSE;
9 
10 --------------------------------------
11 -- declaration of private procedures and functions
12 --------------------------------------
13 
14 /*PROCEDURE enable_debug;
15 
16 PROCEDURE disable_debug;
17 */
18 
19 
20 PROCEDURE do_create_person_language(
21     p_person_language_rec               IN OUT  NOCOPY PERSON_LANGUAGE_REC_TYPE,
22     x_language_use_reference_id         OUT NOCOPY     NUMBER,
23     x_return_status                     IN OUT NOCOPY  VARCHAR2
24 );
25 
26 PROCEDURE do_update_person_language(
27     p_person_language_rec               IN OUT  NOCOPY PERSON_LANGUAGE_REC_TYPE,
28     p_object_version_number             IN OUT NOCOPY  NUMBER,
29     x_return_status                     IN OUT NOCOPY  VARCHAR2
30 );
31 
32 PROCEDURE do_create_citizenship(
33     p_citizenship_rec                   IN OUT  NOCOPY CITIZENSHIP_REC_TYPE,
34     x_citizenship_id                    OUT NOCOPY     NUMBER,
35     x_return_status                     IN OUT NOCOPY  VARCHAR2
36 );
37 
38 PROCEDURE do_update_citizenship(
39     p_citizenship_rec                   IN OUT  NOCOPY CITIZENSHIP_REC_TYPE,
40     p_object_version_number             IN OUT NOCOPY  NUMBER,
41     x_return_status                     IN OUT NOCOPY  VARCHAR2
42 );
43 
44 PROCEDURE do_create_education(
45     p_education_rec                     IN OUT  NOCOPY EDUCATION_REC_TYPE,
46     x_education_id                      OUT NOCOPY  NUMBER,
47     x_return_status                     IN OUT NOCOPY  VARCHAR2
48 );
49 
50 PROCEDURE do_update_education(
51     p_education_rec                     IN OUT  NOCOPY EDUCATION_REC_TYPE,
52     p_object_version_number             IN OUT NOCOPY  NUMBER,
53     x_return_status                     IN OUT NOCOPY  VARCHAR2
54 );
55 
56 PROCEDURE do_create_employment_history(
57     p_employment_history_rec            IN OUT  NOCOPY EMPLOYMENT_HISTORY_REC_TYPE,
58     x_employment_history_id             OUT NOCOPY  NUMBER,
59     x_return_status                     IN OUT NOCOPY  VARCHAR2
60 );
61 
62 PROCEDURE do_update_employment_history(
63     p_employment_history_rec            IN OUT  NOCOPY EMPLOYMENT_HISTORY_REC_TYPE,
64     p_object_version_number             IN OUT NOCOPY  NUMBER,
65     x_return_status                     IN OUT NOCOPY  VARCHAR2
66 );
67 
68 PROCEDURE do_create_work_class(
69     p_work_class_rec                    IN OUT  NOCOPY WORK_CLASS_REC_TYPE,
70     x_work_class_id                     OUT NOCOPY  NUMBER,
71     x_return_status                     IN OUT NOCOPY  VARCHAR2
72 );
73 
74 PROCEDURE do_update_work_class(
75     p_work_class_rec                    IN OUT  NOCOPY WORK_CLASS_REC_TYPE,
76     p_object_version_number             IN OUT NOCOPY  NUMBER,
77     x_return_status                     IN OUT NOCOPY  VARCHAR2
78 );
79 
80 PROCEDURE do_create_person_interest(
81     p_person_interest_rec               IN OUT  NOCOPY PERSON_INTEREST_REC_TYPE,
82     x_person_interest_id                OUT NOCOPY  NUMBER,
83     x_return_status                     IN OUT NOCOPY  VARCHAR2
84 );
85 
86 PROCEDURE do_update_person_interest(
87     p_person_interest_rec               IN OUT  NOCOPY PERSON_INTEREST_REC_TYPE,
88     p_object_version_number             IN OUT NOCOPY  NUMBER,
89     x_return_status                     IN OUT NOCOPY  VARCHAR2
90 );
91 
92 --------------------------------------
93 -- private procedures and functions
94 --------------------------------------
95 
96 /**
97  * PRIVATE PROCEDURE enable_debug
98  *
99  * DESCRIPTION
100  *     Turn on debug mode.
101  *
102  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
103  *     HZ_UTILITY_V2PUB.enable_debug
104  *
105  * MODIFICATION HISTORY
106  *
107  *   07-23-2001    Jianying Huang      o Created.
108  *
109  */
110 
111 /*PROCEDURE enable_debug IS
112 
113 BEGIN
114 
115     IF FND_PROFILE.value( 'HZ_API_FILE_DEBUG_ON' ) = 'Y' OR
116        FND_PROFILE.value( 'HZ_API_DBMS_DEBUG_ON' ) = 'Y'
117     THEN
118         HZ_UTILITY_V2PUB.enable_debug;
119         G_DEBUG := TRUE;
120     END IF;
121 
122 END enable_debug;
123 */
124 
125 
126 /**
127  * PRIVATE PROCEDURE disable_debug
128  *
129  * DESCRIPTION
130  *     Turn off debug mode.
131  *
132  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
133  *     HZ_UTILITY_V2PUB.disable_debug
134  *
135  * MODIFICATION HISTORY
136  *
137  *   07-23-2001    Jianying Huang      o Created.
138  *
139  */
140 
141 /*PROCEDURE disable_debug IS
142 
143 BEGIN
144 
145     IF G_DEBUG THEN
146         HZ_UTILITY_V2PUB.disable_debug;
147         G_DEBUG := FALSE;
148     END IF;
149 
150 END disable_debug;
151 */
152 
153 /*===========================================================================+
154  | PROCEDURE
155  |              do_create_person_language
156  |
157  | DESCRIPTION
158  |              Creates person language
159  |
160  | SCOPE - PRIVATE
161  |
162  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
163  |
164  | ARGUMENTS  : IN:
165  |              OUT:
166  |                    x_language_use_reference_id
167  |          IN/ OUT:
168  |                    p_person_language_rec
169  |                    x_return_status
170  |
171  | RETURNS    : NONE
172  |
173  | NOTES
174  |
175  | MODIFICATION HISTORY
176  |
177  |   19-March-2003    Porkodi C      o 2820135, Validation for primary lanugage
178  |				       and native language has been added here
179  +===========================================================================*/
180 
181 PROCEDURE do_create_person_language(
182     p_person_language_rec               IN OUT  NOCOPY PERSON_LANGUAGE_REC_TYPE,
183     x_language_use_reference_id         OUT NOCOPY     NUMBER,
184     x_return_status                     IN OUT NOCOPY  VARCHAR2
185 ) IS
186 
187     l_dummy                             VARCHAR2(1);
188     l_rowid                             ROWID;
189     l_debug_prefix                      VARCHAR2(30) := '';
190     l_language_use_reference_id         NUMBER;
191 
192 BEGIN
193 
194     -- if primary key value is passed, check for uniqueness.
195 
196     IF p_person_language_rec.language_use_reference_id IS NOT NULL AND
197         p_person_language_rec.language_use_reference_id <> FND_API.G_MISS_NUM
198     THEN
199         BEGIN
200             SELECT 'Y' INTO l_dummy
201             FROM   HZ_PERSON_LANGUAGE
202             WHERE  LANGUAGE_USE_REFERENCE_ID = p_person_language_rec.language_use_reference_id;
203 
204             FND_MESSAGE.SET_NAME('AR', 'HZ_API_DUPLICATE_COLUMN');
205             FND_MESSAGE.SET_TOKEN('COLUMN', 'language_use_reference_id');
206             FND_MSG_PUB.ADD;
207             RAISE FND_API.G_EXC_ERROR;
208 
209         EXCEPTION
210             WHEN NO_DATA_FOUND THEN
211                 NULL;
212         END;
213     END IF;
214 
215     -- 2820135, Added this new feature. Actually this should have been party of hzk
216     -- a party can have only one primary language
217     IF p_person_language_rec.primary_language_indicator = 'Y' THEN
218          BEGIN
219            SELECT LANGUAGE_USE_REFERENCE_ID
220          	  INTO   l_language_use_reference_id
221 		  FROM   HZ_PERSON_LANGUAGE
222 		  WHERE  PARTY_ID = p_person_language_rec.party_id
223 		  AND    PRIMARY_LANGUAGE_INDICATOR = 'Y'
224 		  AND    LANGUAGE_USE_REFERENCE_ID <> NVL(p_person_language_rec.language_use_reference_id, fnd_api.g_miss_num);
225 
226 	   UPDATE HZ_PERSON_LANGUAGE
227 		  SET primary_language_indicator='N'
228 		  WHERE PARTY_ID = p_person_language_rec.party_id AND
229 		  PRIMARY_LANGUAGE_INDICATOR ='Y' AND
230 		  LANGUAGE_USE_REFERENCE_ID = l_language_use_reference_id;
231 
232            EXCEPTION
233 	     WHEN NO_DATA_FOUND THEN
234 	     NULL;
235          END;
236 
237       IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
238 	   hz_utility_v2pub.debug(p_message=>'a party can have only one primary language. ' ||
239 	      'x_return_status = ' || x_return_status,
240 			          p_prefix =>l_debug_prefix,
241 			          p_msg_level=>fnd_log.level_statement);
242       END IF;
243 
244     END IF;
245 
246 
247     -- 2820135, Added this new feature. Actually this should have been party of hzk
248     -- a party can have only one native language
249     IF p_person_language_rec.native_language = 'Y' THEN
250          BEGIN
251            SELECT LANGUAGE_USE_REFERENCE_ID
252          	  INTO   l_language_use_reference_id
253 		  FROM   HZ_PERSON_LANGUAGE
254 		  WHERE  PARTY_ID = p_person_language_rec.party_id
255 		  AND    NATIVE_LANGUAGE = 'Y'
256 		  AND    LANGUAGE_USE_REFERENCE_ID <> NVL(p_person_language_rec.language_use_reference_id, fnd_api.g_miss_num);
257 
258 	   UPDATE HZ_PERSON_LANGUAGE
259 		  SET native_language='N'
260 		  WHERE PARTY_ID = p_person_language_rec.party_id AND
261 		  NATIVE_LANGUAGE ='Y' AND
262 		  LANGUAGE_USE_REFERENCE_ID = l_language_use_reference_id;
263 
264            EXCEPTION
265 	     WHEN NO_DATA_FOUND THEN
266 	     NULL;
267          END;
268 
269       IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
270 	   hz_utility_v2pub.debug(p_message=>'a party can have only one native language. ' ||
271 	      'x_return_status = ' || x_return_status,
272 			          p_prefix =>l_debug_prefix,
273 			          p_msg_level=>fnd_log.level_statement);
274       END IF;
275 
276     END IF;
277 
278 
279     -- validate person language  record
280     HZ_REGISTRY_VALIDATE_V2PUB.validate_person_language(
281         'C',
282         p_person_language_rec,
283         l_rowid,
284         x_return_status);
285 
286     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
287         RAISE FND_API.G_EXC_ERROR;
288     END IF;
289 
290     -- call table handler to insert a row
291     HZ_PERSON_LANGUAGE_PKG.Insert_Row (
292         X_LANGUAGE_USE_REFERENCE_ID             => p_person_language_rec.language_use_reference_id,
293         X_LANGUAGE_NAME                         => p_person_language_rec.language_name,
294         X_PARTY_ID                              => p_person_language_rec.party_id,
295         X_NATIVE_LANGUAGE                       => p_person_language_rec.native_language,
296         X_PRIMARY_LANGUAGE_INDICATOR            => p_person_language_rec.primary_language_indicator,
297         X_READS_LEVEL                           => p_person_language_rec.reads_level,
298         X_SPEAKS_LEVEL                          => p_person_language_rec.speaks_level,
299         X_WRITES_LEVEL                          => p_person_language_rec.writes_level,
300         X_SPOKEN_COMPREHENSION_LEVEL            => p_person_language_rec.spoken_comprehension_level,
301         X_STATUS                                => p_person_language_rec.status,
302         X_OBJECT_VERSION_NUMBER                 => 1,
303         X_CREATED_BY_MODULE                     => p_person_language_rec.created_by_module,
304         X_APPLICATION_ID                        => p_person_language_rec.application_id
305     );
306 
307     -- assign the primary key back
308     x_language_use_reference_id := p_person_language_rec.language_use_reference_id;
309 
310     -- update the language_name in hz_parties based on native_language.
311     IF p_person_language_rec.NATIVE_LANGUAGE = 'Y'
312         AND nvl(p_person_language_rec.status,'A') = 'A'
313  THEN
314         UPDATE hz_parties
315         SET    language_name = p_person_language_rec.language_name
316         WHERE  party_id = p_person_language_rec.party_id;
317     END IF;
318 
319 END do_create_person_language;
320 
321 
322 /*===========================================================================+
323  | PROCEDURE
324  |              do_update_person_language
325  |
326  | DESCRIPTION
327  |              Updates person language
328  |
329  | SCOPE - PRIVATE
330  |
331  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
332  |
333  | ARGUMENTS  : IN:
334  |              OUT:
335  |          IN/ OUT:
336  |                    p_person_language_rec
337  |                    p_object_version_number
338  |                    x_return_status
339  |
340  | RETURNS    : NONE
341  |
342  | NOTES
343  |
344  | MODIFICATION HISTORY
345  |
346  |   19-March-2003    Porkodi C      o 2820135, Validation for primary lanugage
347  |				       and native language has been added here
348  |
349  +===========================================================================*/
350 
351 PROCEDURE do_update_person_language(
352     p_person_language_rec               IN OUT  NOCOPY PERSON_LANGUAGE_REC_TYPE,
353     p_object_version_number             IN OUT NOCOPY  NUMBER,
354     x_return_status                     IN OUT NOCOPY  VARCHAR2
355 ) IS
356 
357     l_rowid                                     ROWID  := NULL;
358     l_object_version_number                     NUMBER;
359     l_party_id                                  NUMBER;
360     l_native_language                           VARCHAR2(1);
361     l_language_name                             VARCHAR2(4);
362     l_debug_prefix                              VARCHAR2(30) := '';
363     l_language_use_reference_id                 NUMBER;
364     l_status                                    VARCHAR2(1);
365     l_orig_language_name                        VARCHAR2(4);
366 BEGIN
367 
368     -- check whether record has been updated by another user
369     BEGIN
370         -- check object_version_number
371         SELECT rowid, object_version_number, party_id,
372                native_language, language_name,status
373         INTO l_rowid, l_object_version_number, l_party_id,
374              l_native_language, l_language_name,l_status
375         FROM HZ_PERSON_LANGUAGE
376         WHERE language_use_reference_id = p_person_language_rec.language_use_reference_id
377         FOR UPDATE NOWAIT;
378 
379         IF NOT
380              (
381               ( p_object_version_number IS NULL AND l_object_version_number IS NULL )
382               OR
383               ( p_object_version_number IS NOT NULL AND
384                 l_object_version_number IS NOT NULL AND
385                 p_object_version_number = l_object_version_number
386               )
387              )
388         THEN
389             FND_MESSAGE.SET_NAME('AR', 'HZ_API_RECORD_CHANGED');
390             FND_MESSAGE.SET_TOKEN('TABLE', 'HZ_PERSON_LANGUAGE');
391             FND_MSG_PUB.ADD;
392             RAISE FND_API.G_EXC_ERROR;
393         END IF;
394 
395         p_object_version_number := nvl(l_object_version_number, 1) + 1;
396 
397     EXCEPTION
398         WHEN NO_DATA_FOUND THEN
399             FND_MESSAGE.SET_NAME('AR', 'HZ_API_NO_RECORD');
400             FND_MESSAGE.SET_TOKEN('RECORD', 'HZ_PERSON_LANGUAGE');
401             FND_MESSAGE.SET_TOKEN('VALUE', NVL( TO_CHAR( p_person_language_rec.language_use_reference_id ), 'null' ) );
402             FND_MSG_PUB.ADD;
403             RAISE FND_API.G_EXC_ERROR;
404     END;
405 
406     -- 2820135, Added this new feature. Actually this should have been party of hzk
407     -- a party can have only one primary language
408     IF p_person_language_rec.primary_language_indicator = 'Y' THEN
409          BEGIN
410            SELECT LANGUAGE_USE_REFERENCE_ID
411          	  INTO   l_language_use_reference_id
412 		  FROM   HZ_PERSON_LANGUAGE
413 		  WHERE  PARTY_ID = l_party_id
414 		  AND    PRIMARY_LANGUAGE_INDICATOR = 'Y'
415 		  AND    LANGUAGE_USE_REFERENCE_ID <> NVL(p_person_language_rec.language_use_reference_id, fnd_api.g_miss_num);
416 
417 	   UPDATE HZ_PERSON_LANGUAGE
418 		  SET primary_language_indicator='N'
419 		  WHERE PARTY_ID = l_party_id AND
420 		  PRIMARY_LANGUAGE_INDICATOR ='Y' AND
421 		  LANGUAGE_USE_REFERENCE_ID = l_language_use_reference_id;
422 
423            EXCEPTION
424 	     WHEN NO_DATA_FOUND THEN
425 	     NULL;
426          END;
427 
428       IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
429 	   hz_utility_v2pub.debug(p_message=>'a party can have only one primary language. ' ||
430 	      'x_return_status = ' || x_return_status,
431 			          p_prefix =>l_debug_prefix,
432 			          p_msg_level=>fnd_log.level_statement);
433       END IF;
434 
435     END IF;
436 
437     -- 2820135, Added this new feature. Actually this should have been party of hzk
438     -- a party can have only one native language
439     IF p_person_language_rec.native_language = 'Y' THEN
440          BEGIN
441            SELECT LANGUAGE_USE_REFERENCE_ID
442          	  INTO   l_language_use_reference_id
443 		  FROM   HZ_PERSON_LANGUAGE
444 		  WHERE  PARTY_ID = l_party_id
445 		  AND    NATIVE_LANGUAGE = 'Y'
446 		  AND    LANGUAGE_USE_REFERENCE_ID <> NVL(p_person_language_rec.language_use_reference_id, fnd_api.g_miss_num);
447 
448 	   UPDATE HZ_PERSON_LANGUAGE
449 		  SET native_language='N'
450 		  WHERE PARTY_ID = l_party_id AND
451 		  NATIVE_LANGUAGE ='Y' AND
452 		  LANGUAGE_USE_REFERENCE_ID = l_language_use_reference_id;
453 
454            EXCEPTION
455 	     WHEN NO_DATA_FOUND THEN
456 	     NULL;
457          END;
458 
459       IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
460 	   hz_utility_v2pub.debug(p_message=>'a party can have only one native language. ' ||
461 	      'x_return_status = ' || x_return_status,
462 			          p_prefix =>l_debug_prefix,
463 			          p_msg_level=>fnd_log.level_statement);
464       END IF;
465     END IF;
466 
467 
468     -- validate person interest record
469     HZ_REGISTRY_VALIDATE_V2PUB.validate_person_language(
470         'U',
471         p_person_language_rec,
472         l_rowid,
473         x_return_status);
474 
475     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
476         RAISE FND_API.G_EXC_ERROR;
477     END IF;
478 
479     -- call table handler to update a row
480     HZ_PERSON_LANGUAGE_PKG.Update_Row (
481         X_Rowid                                 => l_rowid,
482         X_LANGUAGE_USE_REFERENCE_ID             => p_person_language_rec.language_use_reference_id,
483         X_LANGUAGE_NAME                         => p_person_language_rec.language_name,
484         X_PARTY_ID                              => p_person_language_rec.party_id,
485         X_NATIVE_LANGUAGE                       => p_person_language_rec.native_language,
486         X_PRIMARY_LANGUAGE_INDICATOR            => p_person_language_rec.primary_language_indicator,
487         X_READS_LEVEL                           => p_person_language_rec.reads_level,
488         X_SPEAKS_LEVEL                          => p_person_language_rec.speaks_level,
489         X_WRITES_LEVEL                          => p_person_language_rec.writes_level,
490         X_SPOKEN_COMPREHENSION_LEVEL            => p_person_language_rec.spoken_comprehension_level,
491         X_STATUS                                => p_person_language_rec.status,
492         X_OBJECT_VERSION_NUMBER                 => p_object_version_number,
493         X_CREATED_BY_MODULE                     => p_person_language_rec.created_by_module,
494         X_APPLICATION_ID                        => p_person_language_rec.application_id
495     );
496 
497 
498     -- To update the language_name in hz_parties.
499 ------------------Bug No. 4095604
500 IF nvl(p_person_language_rec.native_language,l_native_language)='Y' AND nvl(p_person_language_rec.status,l_status)='A' AND
501  (nvl(p_person_language_rec.native_language,l_native_language)<>l_native_language OR nvl(p_person_language_rec.status,l_status)<>l_status)
502 THEN   UPDATE hz_parties
503 SET language_name= nvl(p_person_language_rec.language_name,l_language_name)
504 WHERE party_id=l_party_id;
505 ELSIF  l_native_language='Y' AND l_status='A'
506 AND ((p_person_language_rec.native_language is not null AND  p_person_language_rec.native_language <> l_native_language) OR
507 (p_person_language_rec.status is not null AND p_person_language_rec.status <> l_status)) THEN
508 UPDATE hz_parties
509   SET language_name=NULL
510   WHERE party_id=l_party_id;
511 END IF;
512 -------------------------Bug No. 4095604
513 
514 
515 END do_update_person_language;
516 
517 
518 /*===========================================================================+
519  | PROCEDURE
520  |              do_create_citizenship
521  |
522  | DESCRIPTION
523  |              Creates citizenship
524  |
525  | SCOPE - PRIVATE
526  |
527  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
528  |
529  | ARGUMENTS  : IN:
530  |              OUT:
531  |                    x_citizenship_id
532  |          IN/ OUT:
533  |                    p_citizenship_rec
534  |                    x_return_status
535  |
536  | RETURNS    : NONE
537  |
538  | NOTES
539  |
540  | MODIFICATION HISTORY
541  |
542  +===========================================================================*/
543 
544 PROCEDURE do_create_citizenship(
545     p_citizenship_rec               IN OUT  NOCOPY CITIZENSHIP_REC_TYPE,
546     x_citizenship_id                OUT NOCOPY     NUMBER,
547     x_return_status                 IN OUT NOCOPY  VARCHAR2
548 ) IS
549 
550     l_dummy                             VARCHAR2(1);
551     l_rowid                             ROWID;
552 
553 BEGIN
554 
555     -- if primary key value is passed, check for uniqueness.
556     IF p_citizenship_rec.citizenship_id IS NOT NULL AND
557         p_citizenship_rec.citizenship_id <> FND_API.G_MISS_NUM
558     THEN
559         BEGIN
560             SELECT 'Y' INTO l_dummy
561             FROM   HZ_CITIZENSHIP
562             WHERE  CITIZENSHIP_ID = p_citizenship_rec.citizenship_id;
563 
564             FND_MESSAGE.SET_NAME('AR', 'HZ_API_DUPLICATE_COLUMN');
565             FND_MESSAGE.SET_TOKEN('COLUMN', 'citizenship_id');
566             FND_MSG_PUB.ADD;
567             RAISE FND_API.G_EXC_ERROR;
568 
569         EXCEPTION
570             WHEN NO_DATA_FOUND THEN
571                 NULL;
572         END;
573     END IF;
574 
575     -- validate citizenship  record
576     HZ_REGISTRY_VALIDATE_V2PUB.validate_citizenship(
577         'C',
578         p_citizenship_rec,
579         l_rowid,
580         x_return_status);
581 
582     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
583         RAISE FND_API.G_EXC_ERROR;
584     END IF;
585 
586     -- call table handler to insert a row
587     HZ_CITIZENSHIP_PKG.INSERT_ROW(
588              X_CITIZENSHIP_ID 		=> p_citizenship_rec.citizenship_id,
589              X_BIRTH_OR_SELECTED 	=> p_citizenship_rec.BIRTH_OR_SELECTED,
590              X_PARTY_ID 		=> p_citizenship_rec.PARTY_ID,
591              X_COUNTRY_CODE 		=> p_citizenship_rec.COUNTRY_CODE,
592              X_DATE_DISOWNED		=> p_citizenship_rec.DATE_DISOWNED,
593              X_DATE_RECOGNIZED 		=> p_citizenship_rec.DATE_RECOGNIZED,
594              X_DOCUMENT_REFERENCE 	=> p_citizenship_rec.DOCUMENT_REFERENCE,
595              X_DOCUMENT_TYPE 		=> p_citizenship_rec.DOCUMENT_TYPE,
596              X_END_DATE 		=> p_citizenship_rec.END_DATE,
597              X_STATUS  			=> p_citizenship_rec.STATUS,
598              X_OBJECT_VERSION_NUMBER    => 1,
599              X_CREATED_BY_MODULE        => p_citizenship_rec.created_by_module,
600              X_APPLICATION_ID           => p_citizenship_rec.application_id
601         );
602 
603 
604     -- assign the primary key back
605     x_citizenship_id := p_citizenship_rec.citizenship_id;
606 
607 END do_create_citizenship;
608 
609 
610 /*===========================================================================+
611  | PROCEDURE
612  |              do_update_citizenship
613  |
614  | DESCRIPTION
615  |              Updates citizenship
616  |
617  | SCOPE - PRIVATE
618  |
619  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
620  |
621  | ARGUMENTS  : IN:
622  |              OUT:
623  |          IN/ OUT:
624  |                    p_citizenship_rec
625  |                    p_object_version_number
626  |                    x_return_status
627  |
628  | RETURNS    : NONE
629  |
630  | NOTES
631  |
632  | MODIFICATION HISTORY
633  |
634  +===========================================================================*/
635 
636 PROCEDURE do_update_citizenship(
637     p_citizenship_rec               IN OUT  NOCOPY citizenship_REC_TYPE,
638     p_object_version_number             IN OUT NOCOPY  NUMBER,
639     x_return_status                     IN OUT NOCOPY  VARCHAR2
640 ) IS
641 
642     l_rowid                                     ROWID  := NULL;
643     l_object_version_number                     NUMBER;
644     l_party_id                                  NUMBER;
645 
646 
647 BEGIN
648 
649     -- check whether record has been updated by another user
650     BEGIN
651         -- check object_version_number
652         SELECT rowid, object_version_number, party_id
653         INTO l_rowid, l_object_version_number, l_party_id
654         FROM HZ_citizenship
655         WHERE citizenship_id = p_citizenship_rec.citizenship_id
656         FOR UPDATE NOWAIT;
657 
658         IF NOT
659              (
660               ( p_object_version_number IS NULL AND l_object_version_number IS NULL )
661               OR
662               ( p_object_version_number IS NOT NULL AND
663                 l_object_version_number IS NOT NULL AND
664                 p_object_version_number = l_object_version_number
665               )
666              )
667         THEN
668             FND_MESSAGE.SET_NAME('AR', 'HZ_API_RECORD_CHANGED');
669             FND_MESSAGE.SET_TOKEN('TABLE', 'HZ_CITIZENSHIP');
670             FND_MSG_PUB.ADD;
671             RAISE FND_API.G_EXC_ERROR;
672         END IF;
673 
674         p_object_version_number := nvl(l_object_version_number, 1) + 1;
675 
676     EXCEPTION
677         WHEN NO_DATA_FOUND THEN
678             FND_MESSAGE.SET_NAME('AR', 'HZ_API_NO_RECORD');
679             FND_MESSAGE.SET_TOKEN('RECORD', 'HZ_CITIZENSHIP');
680             FND_MESSAGE.SET_TOKEN('VALUE', NVL( TO_CHAR( p_citizenship_rec.citizenship_id ), 'null' ) );
681             FND_MSG_PUB.ADD;
682             RAISE FND_API.G_EXC_ERROR;
683     END;
684 
685     -- validate person interest record
686     HZ_REGISTRY_VALIDATE_V2PUB.validate_citizenship(
687         'U',
688         p_citizenship_rec,
689         l_rowid,
690         x_return_status);
691 
692     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
693         RAISE FND_API.G_EXC_ERROR;
694     END IF;
695 
696     -- call table handler to update a row
697         HZ_CITIZENSHIP_PKG.UPDATE_ROW(
698 		  X_Rowid 			=> l_rowid,
699 		  X_CITIZENSHIP_ID 		=> p_citizenship_rec.CITIZENSHIP_ID,
700 		  X_BIRTH_OR_SELECTED 		=> p_citizenship_rec.BIRTH_OR_SELECTED,
701 		  X_PARTY_ID 			=> p_citizenship_rec.PARTY_ID,
702 		  X_COUNTRY_CODE 		=> p_citizenship_rec.COUNTRY_CODE,
703 		  X_DATE_DISOWNED 		=> p_citizenship_rec.DATE_DISOWNED,
704 		  X_DATE_RECOGNIZED 		=> p_citizenship_rec.DATE_RECOGNIZED,
705 		  X_DOCUMENT_REFERENCE  	=> p_citizenship_rec.DOCUMENT_REFERENCE,
706 		  X_DOCUMENT_TYPE 		=> p_citizenship_rec.DOCUMENT_TYPE,
707 		  X_END_DATE 			=> p_citizenship_rec.END_DATE,
708 		  X_STATUS  			=> p_citizenship_rec.STATUS,
709 		  X_OBJECT_VERSION_NUMBER       => p_object_version_number,
710 		  X_CREATED_BY_MODULE           => p_citizenship_rec.created_by_module,
711 		  X_APPLICATION_ID              => p_citizenship_rec.application_id
712 
713          );
714 
715 
716 END do_update_citizenship;
717 
718 
719 /*===========================================================================+
720  | PROCEDURE
721  |              do_create_education
722  |
723  | DESCRIPTION
724  |              Creates education
725  |
726  | SCOPE - PRIVATE
727  |
728  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
729  |
730  | ARGUMENTS  : IN:
731  |              OUT:
732  |                    x_education_id
733  |          IN/ OUT:
734  |                    p_education_rec
735  |                    x_return_status
736  |
737  | RETURNS    : NONE
738  |
739  | NOTES
740  |
741  | MODIFICATION HISTORY
742  |
743  +===========================================================================*/
744 
745 
746 
747 PROCEDURE do_create_education(
748     p_education_rec               IN OUT  NOCOPY  EDUCATION_REC_TYPE,
749     x_education_id                OUT     NOCOPY  NUMBER,
750     x_return_status               IN OUT  NOCOPY  VARCHAR2
751 ) IS
752 
753     l_dummy                             VARCHAR2(1);
754     l_rowid                             ROWID;
755 
756 BEGIN
757 
758     -- if primary key value is passed, check for uniqueness.
759     IF p_education_rec.education_id IS NOT NULL AND
760         p_education_rec.education_id <> FND_API.G_MISS_NUM
761     THEN
762         BEGIN
763             SELECT 'Y' INTO l_dummy
764             FROM   HZ_EDUCATION
765             WHERE  EDUCATION_ID = p_education_rec.education_id;
766 
767             FND_MESSAGE.SET_NAME('AR', 'HZ_API_DUPLICATE_COLUMN');
768             FND_MESSAGE.SET_TOKEN('COLUMN', 'education_id');
769             FND_MSG_PUB.ADD;
770             RAISE FND_API.G_EXC_ERROR;
771 
772         EXCEPTION
773             WHEN NO_DATA_FOUND THEN
774                 NULL;
775         END;
776     END IF;
777 
778     -- validate education  record
779     HZ_REGISTRY_VALIDATE_V2PUB.validate_education(
780         'C',
781         p_education_rec,
782         l_rowid,
783         x_return_status);
784 
785     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
786         RAISE FND_API.G_EXC_ERROR;
787     END IF;
788 
789     -- call table handler to insert a row
790     HZ_EDUCATION_PKG.Insert_Row (
791 	x_EDUCATION_ID               =>   p_education_rec.education_id,
792 	x_COURSE_MAJOR               =>   p_education_rec.course_major,
793 	x_PARTY_ID                   =>   p_education_rec.party_id,
794         x_SCHOOL_PARTY_ID            =>   p_education_rec.school_party_id,
795 	x_DEGREE_RECEIVED            =>   p_education_rec.degree_received,
796 	x_LAST_DATE_ATTENDED         =>   p_education_rec.last_date_attended,
797 	x_SCHOOL_ATTENDED_NAME       =>   p_education_rec.school_attended_name,
798 	x_TYPE_OF_SCHOOL             =>   p_education_rec.type_of_school,
799 	x_START_DATE_ATTENDED        =>   p_education_rec.start_date_attended,
800 	x_STATUS                     =>   p_education_rec.status,
801 	X_OBJECT_VERSION_NUMBER      =>   1,
802 	X_CREATED_BY_MODULE          =>   p_education_rec.created_by_module,
803 	X_APPLICATION_ID             =>   p_education_rec.application_id
804 
805     );
806 
807     -- assign the primary key back
808     x_education_id := p_education_rec.education_id;
809 
810 END do_create_education;
811 
812 
813 /*===========================================================================+
814  | PROCEDURE
815  |              do_update_education
816  |
817  | DESCRIPTION
818  |              Updates education
819  |
820  | SCOPE - PRIVATE
821  |
822  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
823  |
824  | ARGUMENTS  : IN:
825  |              OUT:
826  |          IN/ OUT:
827  |                    p_education_rec
828  |                    p_object_version_number
829  |                    x_return_status
830  |
831  | RETURNS    : NONE
832  |
833  | NOTES
834  |
835  | MODIFICATION HISTORY
836  |
837  +===========================================================================*/
838 
839 PROCEDURE do_update_education(
840     p_education_rec                     IN OUT NOCOPY  EDUCATION_REC_TYPE,
841     p_object_version_number             IN OUT NOCOPY  NUMBER,
842     x_return_status                     IN OUT NOCOPY  VARCHAR2
843 ) IS
844 
845     l_rowid                                     ROWID  := NULL;
846     l_object_version_number                     NUMBER;
847     l_party_id                                  NUMBER;
848 
849 BEGIN
850 
851     -- check whether record has been updated by another user
852     BEGIN
853         -- check object_version_number
854         SELECT rowid, object_version_number, party_id
855         INTO l_rowid, l_object_version_number, l_party_id
856         FROM HZ_EDUCATION
857         WHERE education_id = p_education_rec.education_id
858         FOR UPDATE NOWAIT;
859 
860         IF NOT
861              (
862               ( p_object_version_number IS NULL AND l_object_version_number IS NULL )
863               OR
864               ( p_object_version_number IS NOT NULL AND
865                 l_object_version_number IS NOT NULL AND
866                 p_object_version_number = l_object_version_number
867               )
868              )
869         THEN
870             FND_MESSAGE.SET_NAME('AR', 'HZ_API_RECORD_CHANGED');
871             FND_MESSAGE.SET_TOKEN('TABLE', 'HZ_EDUCATION');
872             FND_MSG_PUB.ADD;
873             RAISE FND_API.G_EXC_ERROR;
874         END IF;
875 
876         p_object_version_number := nvl(l_object_version_number, 1) + 1;
877 
878     EXCEPTION
879         WHEN NO_DATA_FOUND THEN
880             FND_MESSAGE.SET_NAME('AR', 'HZ_API_NO_RECORD');
881             FND_MESSAGE.SET_TOKEN('RECORD', 'HZ_EDUCATION');
882             FND_MESSAGE.SET_TOKEN('VALUE', NVL( TO_CHAR( p_education_rec.education_id ), 'null' ) );
883             FND_MSG_PUB.ADD;
884             RAISE FND_API.G_EXC_ERROR;
885     END;
886 
887     -- validate person interest record
888     HZ_REGISTRY_VALIDATE_V2PUB.validate_education(
889         'U',
890         p_education_rec,
891         l_rowid,
892         x_return_status);
893 
894     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
895         RAISE FND_API.G_EXC_ERROR;
896     END IF;
897 
898     -- call table handler to update a row
899     HZ_EDUCATION_PKG.Update_Row (
900         x_Rowid                      =>   l_rowid,
901 	x_EDUCATION_ID               =>   p_education_rec.education_id,
902 	x_COURSE_MAJOR               =>   p_education_rec.course_major,
903 	x_PARTY_ID                   =>   p_education_rec.party_id,
904 	X_SCHOOL_PARTY_ID            =>   p_education_rec.school_party_id,
905 	x_DEGREE_RECEIVED            =>   p_education_rec.degree_received,
906 	x_LAST_DATE_ATTENDED         =>   p_education_rec.last_date_attended,
907 	x_SCHOOL_ATTENDED_NAME       =>   p_education_rec.school_attended_name,
908 	x_TYPE_OF_SCHOOL             =>   p_education_rec.type_of_school,
909 	x_START_DATE_ATTENDED        =>   p_education_rec.start_date_attended,
910 	x_STATUS                     =>   p_education_rec.status,
911 	x_CREATED_BY_MODULE          =>   p_education_rec.created_by_module,
912         x_OBJECT_VERSION_NUMBER      =>   p_object_version_number,
913         x_APPLICATION_ID             =>   p_education_rec.application_id
914 
915     );
916 
917 
918 END do_update_education;
919 
920 
921 /*===========================================================================+
922  | PROCEDURE
923  |              do_create_employment_history
924  |
925  | DESCRIPTION
926  |              Creates Employment history
927  |
928  | SCOPE - PRIVATE
929  |
930  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
931  |
932  | ARGUMENTS  : IN:
933  |              OUT:
934  |                    x_employment_history_id
935  |          IN/ OUT:
936  |                    p_employment_history_rec
937  |                    x_return_status
938  |
939  | RETURNS    : NONE
940  |
941  | NOTES
942  |
943  | MODIFICATION HISTORY
944  |
945  +===========================================================================*/
946 
947 PROCEDURE do_create_employment_history(
948     p_employment_history_rec      IN OUT  NOCOPY  EMPLOYMENT_HISTORY_REC_TYPE,
949     x_employment_history_id       OUT     NOCOPY  NUMBER,
950     x_return_status               IN OUT  NOCOPY  VARCHAR2
951 ) IS
952 
953     l_dummy                             VARCHAR2(1);
954     l_rowid                             ROWID;
955 
956 BEGIN
957 
958     -- if primary key value is passed, check for uniqueness.
959     IF p_employment_history_rec.employment_history_id IS NOT NULL AND
960         p_employment_history_rec.employment_history_id <> FND_API.G_MISS_NUM
961     THEN
962         BEGIN
963             SELECT 'Y' INTO l_dummy
964             FROM   HZ_EMPLOYMENT_HISTORY
965             WHERE  EMPLOYMENT_HISTORY_ID = p_employment_history_rec.employment_history_id;
966 
967             FND_MESSAGE.SET_NAME('AR', 'HZ_API_DUPLICATE_COLUMN');
968             FND_MESSAGE.SET_TOKEN('COLUMN', 'employment_history_id');
969             FND_MSG_PUB.ADD;
970             RAISE FND_API.G_EXC_ERROR;
971 
972         EXCEPTION
973             WHEN NO_DATA_FOUND THEN
974                 NULL;
975         END;
976     END IF;
977 
978     -- validate employment_history  record
979     HZ_REGISTRY_VALIDATE_V2PUB.validate_employment_history(
980         'C',
981         p_employment_history_rec,
982         l_rowid,
983         x_return_status);
984 
985     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
986         RAISE FND_API.G_EXC_ERROR;
987     END IF;
988 
989     -- call table handler to insert a row
990     HZ_EMPLOYMENT_HISTORY_PKG.Insert_Row (
991 
992        x_EMPLOYMENT_HISTORY_ID          =>   p_employment_history_rec.employment_history_id,
993        x_BEGIN_DATE                  	=>   p_employment_history_rec.begin_date,
994        x_PARTY_ID                    	=>   p_employment_history_rec.party_id,
995        x_EMPLOYED_AS_TITLE           	=>   p_employment_history_rec.employed_as_title,
996        x_EMPLOYED_BY_DIVISION_NAME   	=>   p_employment_history_rec.employed_by_division_name,
997        x_EMPLOYED_BY_NAME_COMPANY    	=>   p_employment_history_rec.employed_by_name_company,
998        x_END_DATE                    	=>   p_employment_history_rec.end_date,
999        x_SUPERVISOR_NAME             	=>   p_employment_history_rec.supervisor_name,
1000        x_BRANCH                      	=>   p_employment_history_rec.branch,
1001        x_MILITARY_RANK               	=>   p_employment_history_rec.military_rank,
1002        x_SERVED                      	=>   p_employment_history_rec.served,
1003        x_STATION                     	=>   p_employment_history_rec.station,
1004        x_RESPONSIBILITY              	=>   p_employment_history_rec.responsibility,
1005        x_STATUS                         =>   p_employment_history_rec.status,
1006        x_OBJECT_VERSION_NUMBER       	=>   1,
1007        x_CREATED_BY_MODULE           	=>   p_employment_history_rec.created_by_module,
1008        x_EMPLOYED_BY_PARTY_ID           =>   p_employment_history_rec.EMPLOYED_BY_PARTY_ID,
1009        x_REASON_FOR_LEAVING             =>   p_employment_history_rec.REASON_FOR_LEAVING,
1010        x_FACULTY_POSITION_FLAG          =>   p_employment_history_rec.FACULTY_POSITION_FLAG,
1011        x_TENURE_CODE                    =>   p_employment_history_rec.TENURE_CODE,
1012        x_FRACTION_OF_TENURE             =>   p_employment_history_rec.FRACTION_OF_TENURE,
1013        x_EMPLOYMENT_TYPE_CODE           =>   p_employment_history_rec.EMPLOYMENT_TYPE_CODE,
1014        x_EMPLOYED_AS_TITLE_CODE         =>   p_employment_history_rec.EMPLOYED_AS_TITLE_CODE,
1015        x_WEEKLY_WORK_HOURS              =>   p_employment_history_rec.WEEKLY_WORK_HOURS,
1016        x_COMMENTS                       =>   p_employment_history_rec.COMMENTS,
1017        x_APPLICATION_ID                 =>   p_employment_history_rec.APPLICATION_ID
1018 
1019     );
1020 
1021     -- assign the primary key back
1022     x_employment_history_id := p_employment_history_rec.employment_history_id;
1023 
1024 END do_create_employment_history;
1025 
1026 
1027 /*===========================================================================+
1028  | PROCEDURE
1029  |              do_update_employment_history
1030  |
1031  | DESCRIPTION
1032  |              Updates Employment history
1033  |
1034  | SCOPE - PRIVATE
1035  |
1036  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
1037  |
1038  | ARGUMENTS  : IN:
1039  |              OUT:
1040  |          IN/ OUT:
1041  |                    p_employment_history_rec
1042  |                    p_object_version_number
1043  |                    x_return_status
1044  |
1045  | RETURNS    : NONE
1046  |
1047  | NOTES
1048  |
1049  | MODIFICATION HISTORY
1050  |
1051  +===========================================================================*/
1052 
1053 PROCEDURE do_update_employment_history(
1054     p_employment_history_rec                     IN OUT NOCOPY  EMPLOYMENT_HISTORY_REC_TYPE,
1055     p_object_version_number             IN OUT NOCOPY  NUMBER,
1056     x_return_status                     IN OUT NOCOPY  VARCHAR2
1057 ) IS
1058 
1059     l_rowid                                     ROWID  := NULL;
1060     l_object_version_number                     NUMBER;
1061     l_party_id                                  NUMBER;
1062     l_native_language                           VARCHAR2(1);
1063     l_language_name                             VARCHAR2(4);
1064 
1065 BEGIN
1066 
1067     -- check whether record has been updated by another user
1068     BEGIN
1069         -- check object_version_number
1070         SELECT rowid, object_version_number, party_id
1071         INTO l_rowid, l_object_version_number, l_party_id
1072         FROM HZ_EMPLOYMENT_HISTORY
1073         WHERE employment_history_id = p_employment_history_rec.employment_history_id
1074         FOR UPDATE NOWAIT;
1075 
1076         IF NOT
1077              (
1078               ( p_object_version_number IS NULL AND l_object_version_number IS NULL )
1079               OR
1080               ( p_object_version_number IS NOT NULL AND
1081                 l_object_version_number IS NOT NULL AND
1082                 p_object_version_number = l_object_version_number
1083               )
1084              )
1085         THEN
1086             FND_MESSAGE.SET_NAME('AR', 'HZ_API_RECORD_CHANGED');
1087             FND_MESSAGE.SET_TOKEN('TABLE', 'HZ_EMPLOYMENT_HISTORY');
1088             FND_MSG_PUB.ADD;
1089             RAISE FND_API.G_EXC_ERROR;
1090         END IF;
1091 
1092         p_object_version_number := nvl(l_object_version_number, 1) + 1;
1093 
1094     EXCEPTION
1095         WHEN NO_DATA_FOUND THEN
1096             FND_MESSAGE.SET_NAME('AR', 'HZ_API_NO_RECORD');
1097             FND_MESSAGE.SET_TOKEN('RECORD', 'HZ_EMPLOYMENT_HISTORY');
1098             FND_MESSAGE.SET_TOKEN('VALUE', NVL( TO_CHAR( p_employment_history_rec.employment_history_id ), 'null' ) );
1099             FND_MSG_PUB.ADD;
1100             RAISE FND_API.G_EXC_ERROR;
1101     END;
1102 
1103     -- validate person employement_history record
1104     HZ_REGISTRY_VALIDATE_V2PUB.validate_employment_history(
1105         'U',
1106         p_employment_history_rec,
1107         l_rowid,
1108         x_return_status);
1109 
1110     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1111         RAISE FND_API.G_EXC_ERROR;
1112     END IF;
1113 
1114     -- call table handler to update a row
1115     HZ_employment_history_PKG.Update_Row (
1116 
1117            x_Rowid      			=>   l_rowid,
1118            x_EMPLOYMENT_HISTORY_ID              =>   p_employment_history_rec.employment_history_id,
1119            x_BEGIN_DATE                  	=>   p_employment_history_rec.begin_date,
1120            x_PARTY_ID                    	=>   p_employment_history_rec.party_id,
1121            x_EMPLOYED_AS_TITLE           	=>   p_employment_history_rec.employed_as_title,
1122            x_EMPLOYED_BY_DIVISION_NAME   	=>   p_employment_history_rec.employed_by_division_name,
1123            x_EMPLOYED_BY_NAME_COMPANY    	=>   p_employment_history_rec.employed_by_name_company,
1124            x_END_DATE                    	=>   p_employment_history_rec.end_date,
1125            x_SUPERVISOR_NAME             	=>   p_employment_history_rec.supervisor_name,
1126            x_BRANCH                      	=>   p_employment_history_rec.branch,
1127            x_MILITARY_RANK               	=>   p_employment_history_rec.military_rank,
1128            x_SERVED                      	=>   p_employment_history_rec.served,
1129            x_STATION                     	=>   p_employment_history_rec.station,
1130            x_RESPONSIBILITY              	=>   p_employment_history_rec.responsibility,
1131            x_STATUS                             =>   p_employment_history_rec.status,
1132            x_CREATED_BY_MODULE           	=>   p_employment_history_rec.created_by_module,
1133            X_OBJECT_VERSION_NUMBER              =>   p_object_version_number,
1134            x_EMPLOYED_BY_PARTY_ID               =>   p_employment_history_rec.EMPLOYED_BY_PARTY_ID,
1135 	   x_REASON_FOR_LEAVING                 =>   p_employment_history_rec.REASON_FOR_LEAVING,
1136 	   x_FACULTY_POSITION_FLAG              =>   p_employment_history_rec.FACULTY_POSITION_FLAG,
1137 	   x_TENURE_CODE                        =>   p_employment_history_rec.TENURE_CODE,
1138 	   x_FRACTION_OF_TENURE                 =>   p_employment_history_rec.FRACTION_OF_TENURE,
1139 	   x_EMPLOYMENT_TYPE_CODE               =>   p_employment_history_rec.EMPLOYMENT_TYPE_CODE,
1140 	   x_EMPLOYED_AS_TITLE_CODE             =>   p_employment_history_rec.EMPLOYED_AS_TITLE_CODE,
1141 	   x_WEEKLY_WORK_HOURS                  =>   p_employment_history_rec.WEEKLY_WORK_HOURS,
1142            x_COMMENTS                           =>   p_employment_history_rec.COMMENTS,
1143            x_APPLICATION_ID                     =>   p_employment_history_rec.APPLICATION_ID
1144 
1145           );
1146 
1147 
1148 END do_update_employment_history;
1149 
1150 
1151 /*===========================================================================+
1152  | PROCEDURE
1153  |              do_create_work_class
1154  |
1155  | DESCRIPTION
1156  |              Creates Work Class
1157  |
1158  | SCOPE - PRIVATE
1159  |
1160  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
1161  |
1162  | ARGUMENTS  : IN:
1163  |              OUT:
1164  |                    x_work_class_id
1165  |          IN/ OUT:
1166  |                    p_work_class_rec
1167  |                    x_return_status
1168  |
1169  | RETURNS    : NONE
1170  |
1171  | NOTES
1172  |
1173  | MODIFICATION HISTORY
1174  |
1175  +===========================================================================*/
1176 
1177 PROCEDURE do_create_work_class(
1178     p_work_class_rec              IN OUT  NOCOPY  WORK_CLASS_REC_TYPE,
1179     x_work_class_id               OUT     NOCOPY  NUMBER,
1180     x_return_status               IN OUT  NOCOPY  VARCHAR2
1181 ) IS
1182 
1183     l_dummy                             VARCHAR2(1);
1184     l_rowid                             ROWID;
1185 
1186 BEGIN
1187 
1188     -- if primary key value is passed, check for uniqueness.
1189     IF p_work_class_rec.work_class_id IS NOT NULL AND
1190         p_work_class_rec.work_class_id <> FND_API.G_MISS_NUM
1191     THEN
1192         BEGIN
1193             SELECT 'Y' INTO l_dummy
1194             FROM   HZ_WORK_CLASS
1195             WHERE  WORK_CLASS_ID = p_work_class_rec.work_class_id;
1196 
1197             FND_MESSAGE.SET_NAME('AR', 'HZ_API_DUPLICATE_COLUMN');
1198             FND_MESSAGE.SET_TOKEN('COLUMN', 'work_class_id');
1199             FND_MSG_PUB.ADD;
1200             RAISE FND_API.G_EXC_ERROR;
1201 
1202         EXCEPTION
1203             WHEN NO_DATA_FOUND THEN
1204                 NULL;
1205         END;
1206     END IF;
1207 
1208     -- validate work_class  record
1209     HZ_REGISTRY_VALIDATE_V2PUB.validate_work_class(
1210         'C',
1211         p_work_class_rec,
1212         l_rowid,
1213         x_return_status);
1214 
1215     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1216         RAISE FND_API.G_EXC_ERROR;
1217     END IF;
1218 
1219     -- call table handler to insert a row
1220 
1221     HZ_WORK_CLASS_PKG.Insert_Row (
1222 
1223        x_WORK_CLASS_ID               =>   p_work_class_rec.work_class_id,
1224        x_LEVEL_OF_EXPERIENCE         =>   p_work_class_rec.LEVEL_OF_EXPERIENCE,
1225        x_WORK_CLASS_NAME             =>   p_work_class_rec.WORK_CLASS_NAME,
1226        x_EMPLOYMENT_HISTORY_ID       =>   p_work_class_rec.EMPLOYMENT_HISTORY_ID,
1227        x_STATUS                      =>   p_work_class_rec.STATUS,
1228        x_OBJECT_VERSION_NUMBER       =>   1,
1229        x_CREATED_BY_MODULE           =>   p_work_class_rec.CREATED_BY_MODULE,
1230        x_application_id              =>   p_work_class_rec.application_id
1231 
1232     );
1233 
1234     -- assign the primary key back
1235     x_work_class_id := p_work_class_rec.work_class_id;
1236 
1237 END do_create_work_class;
1238 
1239 
1240 /*===========================================================================+
1241  | PROCEDURE
1242  |              do_update_work_class
1243  |
1244  | DESCRIPTION
1245  |              Updates Employment history
1246  |
1247  | SCOPE - PRIVATE
1248  |
1249  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
1250  |
1251  | ARGUMENTS  : IN:
1252  |              OUT:
1253  |          IN/ OUT:
1254  |                    p_work_class_rec
1255  |                    p_object_version_number
1256  |                    x_return_status
1257  |
1258  | RETURNS    : NONE
1259  |
1260  | NOTES
1261  |
1262  | MODIFICATION HISTORY
1263  |
1264  +===========================================================================*/
1265 
1266 PROCEDURE do_update_work_class(
1267     p_work_class_rec                     IN OUT NOCOPY  WORK_CLASS_REC_TYPE,
1268     p_object_version_number             IN OUT NOCOPY  NUMBER,
1269     x_return_status                     IN OUT NOCOPY  VARCHAR2
1270 ) IS
1271 
1272     l_rowid                                     ROWID  := NULL;
1273     l_object_version_number                     NUMBER;
1274     l_party_id                                  NUMBER;
1275     l_native_language                           VARCHAR2(1);
1276     l_language_name                             VARCHAR2(4);
1277 
1278 BEGIN
1279 
1280     -- check whether record has been updated by another user
1281     BEGIN
1282         -- check object_version_number
1283         SELECT rowid, object_version_number
1284         INTO l_rowid, l_object_version_number
1285         FROM HZ_WORK_CLASS
1286         WHERE work_class_id = p_work_class_rec.work_class_id
1287         FOR UPDATE NOWAIT;
1288 
1289         IF NOT
1290              (
1291               ( p_object_version_number IS NULL AND l_object_version_number IS NULL )
1292               OR
1293               ( p_object_version_number IS NOT NULL AND
1294                 l_object_version_number IS NOT NULL AND
1295                 p_object_version_number = l_object_version_number
1296               )
1297              )
1298         THEN
1299             FND_MESSAGE.SET_NAME('AR', 'HZ_API_RECORD_CHANGED');
1300             FND_MESSAGE.SET_TOKEN('TABLE', 'HZ_WORK_CLASS');
1301             FND_MSG_PUB.ADD;
1302             RAISE FND_API.G_EXC_ERROR;
1303         END IF;
1304 
1305         p_object_version_number := nvl(l_object_version_number, 1) + 1;
1306 
1307     EXCEPTION
1308         WHEN NO_DATA_FOUND THEN
1309             FND_MESSAGE.SET_NAME('AR', 'HZ_API_NO_RECORD');
1310             FND_MESSAGE.SET_TOKEN('RECORD', 'HZ_WORK_CLASS');
1311             FND_MESSAGE.SET_TOKEN('VALUE', NVL( TO_CHAR( p_work_class_rec.work_class_id ), 'null' ) );
1312             FND_MSG_PUB.ADD;
1313             RAISE FND_API.G_EXC_ERROR;
1314     END;
1315 
1316     -- validate work class record
1317         HZ_REGISTRY_VALIDATE_V2PUB.validate_work_class(
1318             'U',
1319             p_work_class_rec,
1320             l_rowid,
1321             x_return_status);
1322 
1323     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1324         RAISE FND_API.G_EXC_ERROR;
1325     END IF;
1326 
1327     -- call table handler to update a row
1328     HZ_WORK_CLASS_PKG.Update_Row (
1329 
1330            x_Rowid                       =>   l_rowid,
1331            x_WORK_CLASS_ID               =>   p_work_class_rec.work_class_id,
1332            x_LEVEL_OF_EXPERIENCE         =>   p_work_class_rec.LEVEL_OF_EXPERIENCE,
1333            x_WORK_CLASS_NAME             =>   p_work_class_rec.WORK_CLASS_NAME,
1334            x_EMPLOYMENT_HISTORY_ID       =>   p_work_class_rec.EMPLOYMENT_HISTORY_ID,
1335            x_STATUS                      =>   p_work_class_rec.STATUS,
1336            x_OBJECT_VERSION_NUMBER       =>   p_OBJECT_VERSION_NUMBER,
1337            x_CREATED_BY_MODULE           =>   p_work_class_rec.CREATED_BY_MODULE,
1338            x_application_id              =>   p_work_class_rec.application_id
1339 
1340           );
1341 
1342 
1343 END do_update_work_class;
1344 
1345 
1346 /*===========================================================================+
1347  | PROCEDURE
1348  |              do_create_person_interest
1349  |
1350  | DESCRIPTION
1351  |              Creates Person Interest
1352  |
1353  | SCOPE - PRIVATE
1354  |
1355  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
1356  |
1357  | ARGUMENTS  : IN:
1358  |              OUT:
1359  |                    x_person_interest_id
1360  |          IN/ OUT:
1361  |                    p_person_interest_rec
1362  |                    x_return_status
1363  |
1364  | RETURNS    : NONE
1365  |
1366  | NOTES
1367  |
1368  | MODIFICATION HISTORY
1369  |
1370  +===========================================================================*/
1371 
1372 PROCEDURE do_create_person_interest(
1373     p_person_interest_rec              IN OUT  NOCOPY  PERSON_INTEREST_REC_TYPE,
1374     x_person_interest_id               OUT     NOCOPY  NUMBER,
1375     x_return_status               IN OUT  NOCOPY  VARCHAR2
1376 ) IS
1377 
1378     l_dummy                             VARCHAR2(1);
1379     l_rowid                             ROWID;
1380 
1381 BEGIN
1382 
1383     -- if primary key value is passed, check for uniqueness.
1384     IF p_person_interest_rec.person_interest_id IS NOT NULL AND
1385         p_person_interest_rec.person_interest_id <> FND_API.G_MISS_NUM
1386     THEN
1387         BEGIN
1388             SELECT 'Y' INTO l_dummy
1389             FROM   HZ_person_interest
1390             WHERE  person_interest_ID = p_person_interest_rec.person_interest_id;
1391 
1392             FND_MESSAGE.SET_NAME('AR', 'HZ_API_DUPLICATE_COLUMN');
1393             FND_MESSAGE.SET_TOKEN('COLUMN', 'person_interest_id');
1394             FND_MSG_PUB.ADD;
1395             RAISE FND_API.G_EXC_ERROR;
1396 
1397         EXCEPTION
1398             WHEN NO_DATA_FOUND THEN
1399                 NULL;
1400         END;
1401     END IF;
1402 
1403     -- validate person_interest  record
1404     HZ_REGISTRY_VALIDATE_V2PUB.validate_person_interest(
1405         'C',
1406         p_person_interest_rec,
1407         l_rowid,
1408         x_return_status);
1409 
1410     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1411         RAISE FND_API.G_EXC_ERROR;
1412     END IF;
1413 
1414     -- call table handler to insert a row
1415     HZ_person_interest_PKG.Insert_Row (
1416 
1417        x_person_interest_ID 		=>   p_person_interest_rec.person_interest_id,
1418        x_LEVEL_OF_INTEREST  		=>   p_person_interest_rec.LEVEL_OF_INTEREST,
1419        x_PARTY_ID           		=>   p_person_interest_rec.PARTY_ID,
1420        x_LEVEL_OF_PARTICIPATION         =>   p_person_interest_rec.LEVEL_OF_PARTICIPATION,
1421        x_INTEREST_TYPE_CODE 		=>   p_person_interest_rec.INTEREST_TYPE_CODE,
1422        x_SPORT_INDICATOR       	        =>   p_person_interest_rec.SPORT_INDICATOR,
1423        x_INTEREST_NAME         		=>   p_person_interest_rec.INTEREST_NAME,
1424        x_COMMENTS            		=>   p_person_interest_rec.COMMENTS,
1425        x_SUB_INTEREST_TYPE_CODE         =>   p_person_interest_rec.SUB_INTEREST_TYPE_CODE,
1426        x_TEAM   			=>   p_person_interest_rec.TEAM,
1427        x_SINCE  	                =>   p_person_interest_rec.SINCE,
1428        x_OBJECT_VERSION_NUMBER 	        =>   1,
1429        x_STATUS                		=>   p_person_interest_rec.STATUS,
1430        x_CREATED_BY_MODULE     		=>   p_person_interest_rec.CREATED_BY_MODULE,
1431        x_APPLICATION_ID        		=>   p_person_interest_rec.APPLICATION_ID
1432 
1433     );
1434 
1435     -- assign the primary key back
1436     x_person_interest_id := p_person_interest_rec.person_interest_id;
1437 
1438 END do_create_person_interest;
1439 
1440 
1441 /*===========================================================================+
1442  | PROCEDURE
1443  |              do_update_person_interest
1444  |
1445  | DESCRIPTION
1446  |              Updates Employment history
1447  |
1448  | SCOPE - PRIVATE
1449  |
1450  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
1451  |
1452  | ARGUMENTS  : IN:
1453  |              OUT:
1454  |          IN/ OUT:
1455  |                    p_person_interest_rec
1456  |                    p_object_version_number
1457  |                    x_return_status
1458  |
1459  | RETURNS    : NONE
1460  |
1461  | NOTES
1462  |
1463  | MODIFICATION HISTORY
1464  |
1465  +===========================================================================*/
1466 
1467 PROCEDURE do_update_person_interest(
1468     p_person_interest_rec                     IN OUT NOCOPY  person_interest_REC_TYPE,
1469     p_object_version_number             IN OUT NOCOPY  NUMBER,
1470     x_return_status                     IN OUT NOCOPY  VARCHAR2
1471 ) IS
1472 
1473     l_rowid                                     ROWID  := NULL;
1474     l_object_version_number                     NUMBER;
1475     l_party_id                                  NUMBER;
1476     l_native_language                           VARCHAR2(1);
1477     l_language_name                             VARCHAR2(4);
1478 
1479 BEGIN
1480 
1481     -- check whether record has been updated by another user
1482     BEGIN
1483         -- check object_version_number
1484         SELECT rowid, object_version_number
1485         INTO l_rowid, l_object_version_number
1486         FROM HZ_person_interest
1487         WHERE person_interest_id = p_person_interest_rec.person_interest_id
1488         FOR UPDATE NOWAIT;
1489 
1490         IF NOT
1491              (
1492               ( p_object_version_number IS NULL AND l_object_version_number IS NULL )
1493               OR
1494               ( p_object_version_number IS NOT NULL AND
1495                 l_object_version_number IS NOT NULL AND
1496                 p_object_version_number = l_object_version_number
1497               )
1498              )
1499         THEN
1500             FND_MESSAGE.SET_NAME('AR', 'HZ_API_RECORD_CHANGED');
1501             FND_MESSAGE.SET_TOKEN('TABLE', 'HZ_person_interest');
1502             FND_MSG_PUB.ADD;
1503             RAISE FND_API.G_EXC_ERROR;
1504         END IF;
1505 
1506         p_object_version_number := nvl(l_object_version_number, 1) + 1;
1507 
1508     EXCEPTION
1509         WHEN NO_DATA_FOUND THEN
1510             FND_MESSAGE.SET_NAME('AR', 'HZ_API_NO_RECORD');
1511             FND_MESSAGE.SET_TOKEN('RECORD', 'HZ_person_interest');
1512             FND_MESSAGE.SET_TOKEN('VALUE', NVL( TO_CHAR( p_person_interest_rec.person_interest_id ), 'null' ) );
1513             FND_MSG_PUB.ADD;
1514             RAISE FND_API.G_EXC_ERROR;
1515     END;
1516 
1517     -- validate work class record
1518         HZ_REGISTRY_VALIDATE_V2PUB.validate_person_interest(
1519             'U',
1520             p_person_interest_rec,
1521             l_rowid,
1522             x_return_status);
1523 
1524 
1525     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1526         RAISE FND_API.G_EXC_ERROR;
1527     END IF;
1528 
1529     -- call table handler to update a row
1530     HZ_person_interest_PKG.Update_Row (
1531 
1532        x_Rowid                       	=>   l_rowid,
1533        x_person_interest_ID 		=>   p_person_interest_rec.person_interest_id,
1534        x_LEVEL_OF_INTEREST  		=>   p_person_interest_rec.LEVEL_OF_INTEREST,
1535        x_PARTY_ID           		=>   p_person_interest_rec.PARTY_ID,
1536        x_LEVEL_OF_PARTICIPATION         =>   p_person_interest_rec.LEVEL_OF_PARTICIPATION,
1537        x_INTEREST_TYPE_CODE 		=>   p_person_interest_rec.INTEREST_TYPE_CODE,
1538        x_SPORT_INDICATOR       	        =>   p_person_interest_rec.SPORT_INDICATOR,
1539        x_INTEREST_NAME         		=>   p_person_interest_rec.INTEREST_NAME,
1540        x_COMMENTS            		=>   p_person_interest_rec.COMMENTS,
1541        x_SUB_INTEREST_TYPE_CODE         =>   p_person_interest_rec.SUB_INTEREST_TYPE_CODE,
1542        x_TEAM   			=>   p_person_interest_rec.TEAM,
1543        x_SINCE  	                =>   p_person_interest_rec.SINCE,
1544        x_OBJECT_VERSION_NUMBER 	        =>   p_OBJECT_VERSION_NUMBER,
1545        x_STATUS                		=>   p_person_interest_rec.STATUS,
1546        x_CREATED_BY_MODULE     		=>   p_person_interest_rec.CREATED_BY_MODULE,
1547        x_APPLICATION_ID        		=>   p_person_interest_rec.APPLICATION_ID
1548 
1549           );
1550 
1551 
1552 END do_update_person_interest;
1553 
1554 
1555 --------------------------------------
1556 -- public procedures and functions
1557 --------------------------------------
1558 
1559 /**
1560  * PROCEDURE create_person_language
1561  *
1562  * DESCRIPTION
1563  *     Creates person language.
1564  *
1565  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1566  *     HZ_BUSINESS_EVENT_V2PVT.create_person_language_event
1567  *
1568  * ARGUMENTS
1569  *   IN:
1570  *     p_init_msg_list                Initialize message stack if it is set to
1571  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
1572  *     p_person_language_rec          Person language record.
1573  *   IN/OUT:
1574  *   OUT:
1575  *     x_language_use_reference_id    Language use reference ID.
1576  *     x_return_status                Return status after the call. The status can
1577  *                                    be FND_API.G_RET_STS_SUCCESS (success),
1578  *                                    FND_API.G_RET_STS_ERROR (error),
1579  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1580  *     x_msg_count                    Number of messages in message stack.
1581  *     x_msg_data                     Message text if x_msg_count is 1.
1582  *
1583  * NOTES
1584  *
1585  * MODIFICATION HISTORY
1586  *
1587  *   07-23-2001    Indrajit Sen        o Created.
1588  *
1589  */
1590 
1591 PROCEDURE create_person_language(
1592     p_init_msg_list                         IN      VARCHAR2:= FND_API.G_FALSE,
1593     p_person_language_rec                   IN      PERSON_LANGUAGE_REC_TYPE,
1594     x_language_use_reference_id             OUT NOCOPY     NUMBER,
1595     x_return_status                         OUT NOCOPY     VARCHAR2,
1596     x_msg_count                             OUT NOCOPY     NUMBER,
1597     x_msg_data                              OUT NOCOPY     VARCHAR2
1598 ) IS
1599 
1600     l_api_name                       CONSTANT       VARCHAR2(30) := 'create_person_language';
1601     l_person_language_rec                           PERSON_LANGUAGE_REC_TYPE := p_person_language_rec;
1602 
1603 BEGIN
1604 
1605     --Standard start of API savepoint
1606     SAVEPOINT create_person_language;
1607 
1608     --Initialize message list if p_init_msg_list is set to TRUE.
1609     IF FND_API.to_Boolean(p_init_msg_list) THEN
1610         FND_MSG_PUB.initialize;
1611     END IF;
1612 
1613     --Initialize API return status to success.
1614     x_return_status := FND_API.G_RET_STS_SUCCESS;
1615 
1616     -- Call to business logic.
1617     do_create_person_language(
1618         l_person_language_rec,
1619         x_language_use_reference_id,
1620         x_return_status);
1621 
1622    IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
1623      IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
1624        -- Invoke business event system.
1625        HZ_BUSINESS_EVENT_V2PVT.create_person_language_event (
1626          l_person_language_rec );
1627      END IF;
1628 
1629      IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
1630        HZ_POPULATE_BOT_PKG.pop_hz_person_language(
1631          p_operation                 => 'I',
1632          p_language_use_reference_id => x_language_use_reference_id);
1633      END IF;
1634    END IF;
1635 
1636     --Standard call to get message count and if count is 1, get message info.
1637     FND_MSG_PUB.Count_And_Get(
1638         p_encoded => FND_API.G_FALSE,
1639         p_count   => x_msg_count,
1640         p_data    => x_msg_data);
1641 
1642 EXCEPTION
1643     WHEN FND_API.G_EXC_ERROR THEN
1644         ROLLBACK TO create_person_language;
1645         x_return_status := FND_API.G_RET_STS_ERROR;
1646         FND_MSG_PUB.Count_And_Get(
1647             p_encoded => FND_API.G_FALSE,
1648             p_count   => x_msg_count,
1649             p_data    => x_msg_data);
1650 
1651     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1652         ROLLBACK TO create_person_language;
1653         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1654         FND_MSG_PUB.Count_And_Get(
1655             p_encoded => FND_API.G_FALSE,
1656             p_count   => x_msg_count,
1657             p_data    => x_msg_data);
1658 
1659     WHEN OTHERS THEN
1660         ROLLBACK TO create_person_language;
1661         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1662         FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
1663         FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1664         FND_MSG_PUB.ADD;
1665         FND_MSG_PUB.Count_And_Get(
1666             p_encoded => FND_API.G_FALSE,
1667             p_count   => x_msg_count,
1668             p_data    => x_msg_data);
1669 
1670 END create_person_language;
1671 
1672 /**
1673  * PROCEDURE update_person_language
1674  *
1675  * DESCRIPTION
1676  *     Updates person language.
1677  *
1678  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1679  *     HZ_BUSINESS_EVENT_V2PVT.update_person_language_event
1680  *
1681  * ARGUMENTS
1682  *   IN:
1683  *     p_init_msg_list                Initialize message stack if it is set to
1684  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
1685  *     p_person_language_rec          Person language record.
1686  *   IN/OUT:
1687  *     p_object_version_number        Used for locking the being updated record.
1688  *   OUT:
1689  *     x_return_status                Return status after the call. The status can
1690  *                                    be FND_API.G_RET_STS_SUCCESS (success),
1691  *                                    FND_API.G_RET_STS_ERROR (error),
1692  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1693  *     x_msg_count                    Number of messages in message stack.
1694  *     x_msg_data                     Message text if x_msg_count is 1.
1695  *
1696  * NOTES
1697  *
1698  * MODIFICATION HISTORY
1699  *
1700  *   07-23-2001    Indrajit Sen        o Created.
1701  *
1702  */
1703 
1704 PROCEDURE  update_person_language(
1705     p_init_msg_list                         IN      VARCHAR2:= FND_API.G_FALSE,
1706     p_person_language_rec                   IN      PERSON_LANGUAGE_REC_TYPE,
1707     p_object_version_number                 IN OUT NOCOPY  NUMBER,
1708     x_return_status                         OUT NOCOPY     VARCHAR2,
1709     x_msg_count                             OUT NOCOPY     NUMBER,
1710     x_msg_data                              OUT NOCOPY     VARCHAR2
1711 ) IS
1712 
1713     l_api_name                       CONSTANT       VARCHAR2(30) := 'update_person_language';
1714     l_person_language_rec                           PERSON_LANGUAGE_REC_TYPE := p_person_language_rec;
1715     l_old_person_language_rec                       PERSON_LANGUAGE_REC_TYPE;
1716 
1717 BEGIN
1718 
1719     --Standard start of API savepoint
1720     SAVEPOINT update_person_language;
1721 
1722     --Initialize message list if p_init_msg_list is set to TRUE.
1723     IF FND_API.to_Boolean(p_init_msg_list) THEN
1724         FND_MSG_PUB.initialize;
1725     END IF;
1726 
1727     --Initialize API return status to success.
1728     x_return_status := FND_API.G_RET_STS_SUCCESS;
1729 
1730    get_person_language_rec (
1731      p_language_use_reference_id  => p_person_language_rec.language_use_reference_id,
1732      p_person_language_rec        => l_old_person_language_rec,
1733      x_return_status              => x_return_status,
1734      x_msg_count                  => x_msg_count,
1735      x_msg_data                   => x_msg_data);
1736 
1737     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1738         RAISE FND_API.G_EXC_ERROR;
1739     ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1740         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1741     END IF;
1742 
1743     -- Call to business logic.
1744     do_update_person_language(
1745         l_person_language_rec,
1746         p_object_version_number,
1747         x_return_status);
1748 
1749    IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
1750      IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
1751        -- Invoke business event system.
1752        HZ_BUSINESS_EVENT_V2PVT.update_person_language_event (
1753          l_person_language_rec,
1754          l_old_person_language_rec );
1755      END IF;
1756 
1757      IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
1758        HZ_POPULATE_BOT_PKG.pop_hz_person_language(
1759          p_operation                 => 'U',
1760          p_language_use_reference_id => l_person_language_rec.language_use_reference_id);
1761      END IF;
1762    END IF;
1763 
1764     --Standard call to get message count and if count is 1, get message info.
1765     FND_MSG_PUB.Count_And_Get(
1766         p_encoded => FND_API.G_FALSE,
1767         p_count   => x_msg_count,
1768         p_data    => x_msg_data);
1769 
1770 EXCEPTION
1771     WHEN FND_API.G_EXC_ERROR THEN
1772         ROLLBACK TO update_person_language;
1773         x_return_status := FND_API.G_RET_STS_ERROR;
1774         FND_MSG_PUB.Count_And_Get(
1775             p_encoded => FND_API.G_FALSE,
1776             p_count   => x_msg_count,
1777             p_data    => x_msg_data);
1778 
1779     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1780         ROLLBACK TO update_person_language;
1781         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1782         FND_MSG_PUB.Count_And_Get(
1783             p_encoded => FND_API.G_FALSE,
1784             p_count   => x_msg_count,
1785             p_data    => x_msg_data);
1786 
1787     WHEN OTHERS THEN
1788         ROLLBACK TO update_person_language;
1789         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1790         FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
1791         FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1792         FND_MSG_PUB.ADD;
1793         FND_MSG_PUB.Count_And_Get(
1794             p_encoded => FND_API.G_FALSE,
1795             p_count   => x_msg_count,
1796             p_data    => x_msg_data);
1797 
1798 END update_person_language;
1799 
1800 /**
1801  * PROCEDURE get_class_category_rec
1802  *
1803  * DESCRIPTION
1804  *     Gets class category record.
1805  *
1806  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1807  *     HZ_PERSON_LANGUAGE_PKG.Select_Row
1808  *
1809  * ARGUMENTS
1810  *   IN:
1811  *     p_init_msg_list                Initialize message stack if it is set to
1812  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
1813  *     p_language_use_reference_id    Language use reference ID.
1814  *   IN/OUT:
1815  *   OUT:
1816  *     x_person_language_rec          Returned person language record.
1817  *     x_return_status                Return status after the call. The status can
1818  *                                    be FND_API.G_RET_STS_SUCCESS (success),
1819  *                                    FND_API.G_RET_STS_ERROR (error),
1820  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1821  *     x_msg_count                    Number of messages in message stack.
1822  *     x_msg_data                     Message text if x_msg_count is 1.
1823  *
1824  * NOTES
1825  *
1826  * MODIFICATION HISTORY
1827  *
1828  *   0s-23-2001    Indrajit Sen        o Created.
1829  *   MAY-15-2002   Herve Yu            o Update the x_person_language_rec.language_use_reference_id
1830  *                                       must be initiated to p_language_use_reference_id
1831  *
1832  */
1833 
1834 PROCEDURE get_person_language_rec (
1835     p_init_msg_list                         IN     VARCHAR2 := FND_API.G_FALSE,
1836     p_language_use_reference_id             IN     NUMBER,
1837     p_person_language_rec                   OUT    NOCOPY PERSON_LANGUAGE_REC_TYPE,
1838     x_return_status                         OUT NOCOPY    VARCHAR2,
1839     x_msg_count                             OUT NOCOPY    NUMBER,
1840     x_msg_data                              OUT NOCOPY    VARCHAR2
1841 ) IS
1842 
1843     l_api_name                              CONSTANT VARCHAR2(30) := 'get_person_language_rec';
1844 
1845 BEGIN
1846 
1847     --Initialize message list if p_init_msg_list is set to TRUE.
1848     IF FND_API.to_Boolean(p_init_msg_list) THEN
1849         FND_MSG_PUB.initialize;
1850     END IF;
1851 
1852     --Initialize API return status to success.
1853     x_return_status := FND_API.G_RET_STS_SUCCESS;
1854 
1855     --Check whether primary key has been passed in.
1856     IF p_language_use_reference_id IS NULL OR
1857        p_language_use_reference_id = FND_API.G_MISS_NUM THEN
1858         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MISSING_COLUMN' );
1859         FND_MESSAGE.SET_TOKEN( 'COLUMN', 'language_use_reference_id' );
1860         FND_MSG_PUB.ADD;
1861         RAISE FND_API.G_EXC_ERROR;
1862     END IF;
1863 
1864     -- The x_person_language_rec.language_use_reference_id must be initiated to p_language_use_reference_id
1865     p_person_language_rec.language_use_reference_id := p_language_use_reference_id;
1866 
1867     HZ_PERSON_LANGUAGE_PKG.Select_Row (
1868         X_LANGUAGE_USE_REFERENCE_ID             => p_person_language_rec.language_use_reference_id,
1869         X_LANGUAGE_NAME                         => p_person_language_rec.language_name,
1870         X_PARTY_ID                              => p_person_language_rec.party_id,
1871         X_NATIVE_LANGUAGE                       => p_person_language_rec.native_language,
1872         X_PRIMARY_LANGUAGE_INDICATOR            => p_person_language_rec.primary_language_indicator,
1873         X_READS_LEVEL                           => p_person_language_rec.reads_level,
1874         X_SPEAKS_LEVEL                          => p_person_language_rec.speaks_level,
1875         X_WRITES_LEVEL                          => p_person_language_rec.writes_level,
1876         X_SPOKEN_COMPREHENSION_LEVEL            => p_person_language_rec.spoken_comprehension_level,
1877         X_STATUS                                => p_person_language_rec.status,
1878         X_CREATED_BY_MODULE                     => p_person_language_rec.created_by_module,
1879         X_APPLICATION_ID                        => p_person_language_rec.application_id
1880     );
1881 
1882     --Standard call to get message count and if count is 1, get message info.
1883     FND_MSG_PUB.Count_And_Get(
1884         p_encoded => FND_API.G_FALSE,
1885         p_count   => x_msg_count,
1886         p_data    => x_msg_data );
1887 
1888 EXCEPTION
1889     WHEN FND_API.G_EXC_ERROR THEN
1890         x_return_status := FND_API.G_RET_STS_ERROR;
1891 
1892         FND_MSG_PUB.Count_And_Get(
1893             p_encoded => FND_API.G_FALSE,
1894             p_count   => x_msg_count,
1895             p_data    => x_msg_data );
1896     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1897         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1898 
1899         FND_MSG_PUB.Count_And_Get(
1900             p_encoded => FND_API.G_FALSE,
1901             p_count   => x_msg_count,
1902             p_data    => x_msg_data );
1903 
1904     WHEN OTHERS THEN
1905         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1906 
1907         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_OTHERS_EXCEP' );
1908         FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
1909         FND_MSG_PUB.ADD;
1910 
1911         FND_MSG_PUB.Count_And_Get(
1912             p_encoded => FND_API.G_FALSE,
1913             p_count   => x_msg_count,
1914             p_data    => x_msg_data );
1915 
1916 END get_person_language_rec;
1917 
1918 /**
1919  * PROCEDURE create_citizenship
1920  *
1921  * DESCRIPTION
1922  *     Creates citizenship.
1923  *
1924  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1925  *     HZ_BUSINESS_EVENT_V2PVT.create_citizenship_event
1926  *
1927  * ARGUMENTS
1928  *   IN:
1929  *     p_init_msg_list                Initialize message stack if it is set to
1930  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
1931  *     p_citizenship_rec              Citizenship record.
1932  *   IN/OUT:
1933  *   OUT:
1934  *     x_citizenship_id               Citizenship ID.
1935  *     x_return_status                Return status after the call. The status can
1936  *                                    be FND_API.G_RET_STS_SUCCESS (success),
1937  *                                    FND_API.G_RET_STS_ERROR (error),
1938  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1939  *     x_msg_count                    Number of messages in message stack.
1940  *     x_msg_data                     Message text if x_msg_count is 1.
1941  *
1942  * NOTES
1943  *
1944  * MODIFICATION HISTORY
1945  *
1946  *   13-Jan-2003  Porkodi Chinnandar  o Created.
1947  *
1948  */
1949 
1950 PROCEDURE create_citizenship(
1951     p_init_msg_list                         IN      VARCHAR2:= FND_API.G_FALSE,
1952     p_citizenship_rec                       IN      CITIZENSHIP_REC_TYPE,
1953     x_citizenship_id                        OUT NOCOPY     NUMBER,
1954     x_return_status                         OUT NOCOPY     VARCHAR2,
1955     x_msg_count                             OUT NOCOPY     NUMBER,
1956     x_msg_data                              OUT NOCOPY     VARCHAR2
1957 ) IS
1958 
1959     l_api_name                       CONSTANT       VARCHAR2(30) := 'create_citizenship';
1960     l_citizenship_rec                               CITIZENSHIP_REC_TYPE := p_citizenship_rec;
1961 
1962 BEGIN
1963 
1964     --Standard start of API savepoint
1965     SAVEPOINT create_citizenship;
1966 
1967     --Initialize message list if p_init_msg_list is set to TRUE.
1968     IF FND_API.to_Boolean(p_init_msg_list) THEN
1969         FND_MSG_PUB.initialize;
1970     END IF;
1971 
1972     --Initialize API return status to success.
1973     x_return_status := FND_API.G_RET_STS_SUCCESS;
1974 
1975     -- Call to business logic.
1976     do_create_citizenship(
1977         l_citizenship_rec,
1978         x_citizenship_id,
1979         x_return_status);
1980 
1981    IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
1982      IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
1983        -- Invoke business event system.
1984        HZ_BUSINESS_EVENT_V2PVT.create_citizenship_event (
1985          l_citizenship_rec );
1986      END IF;
1987 
1988      IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
1989        HZ_POPULATE_BOT_PKG.pop_hz_citizenship(
1990          p_operation      => 'I',
1991          p_citizenship_id => x_citizenship_id);
1992      END IF;
1993    END IF;
1994 
1995 
1996     --Standard call to get message count and if count is 1, get message info.
1997     FND_MSG_PUB.Count_And_Get(
1998         p_encoded => FND_API.G_FALSE,
1999         p_count   => x_msg_count,
2000         p_data    => x_msg_data);
2001 
2002 EXCEPTION
2003     WHEN FND_API.G_EXC_ERROR THEN
2004         ROLLBACK TO create_citizenship;
2005         x_return_status := FND_API.G_RET_STS_ERROR;
2006         FND_MSG_PUB.Count_And_Get(
2007             p_encoded => FND_API.G_FALSE,
2008             p_count   => x_msg_count,
2009             p_data    => x_msg_data);
2010 
2011     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2012         ROLLBACK TO create_citizenship;
2013         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2014         FND_MSG_PUB.Count_And_Get(
2015             p_encoded => FND_API.G_FALSE,
2016             p_count => x_msg_count,
2017             p_data  => x_msg_data);
2018 
2019     WHEN OTHERS THEN
2020         ROLLBACK TO create_citizenship;
2021         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2022         FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
2023         FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2024         FND_MSG_PUB.ADD;
2025         FND_MSG_PUB.Count_And_Get(
2026             p_encoded => FND_API.G_FALSE,
2027             p_count   => x_msg_count,
2028             p_data    => x_msg_data);
2029 
2030 END create_citizenship;
2031 
2032 /**
2033  * PROCEDURE update_citizenship
2034  *
2035  * DESCRIPTION
2036  *     Updates citizenship.
2037  *
2038  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2039  *     HZ_BUSINESS_EVENT_V2PVT.update_citizenship_event
2040  *
2041  * ARGUMENTS
2042  *   IN:
2043  *     p_init_msg_list                Initialize message stack if it is set to
2044  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
2045  *     p_citizenship_rec              Citizenship record.
2046  *   IN/OUT:
2047  *     p_object_version_number        Used for locking the being updated record.
2048  *   OUT:
2049  *     x_return_status                Return status after the call. The status can
2050  *                                    be FND_API.G_RET_STS_SUCCESS (success),
2051  *                                    FND_API.G_RET_STS_ERROR (error),
2052  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2053  *     x_msg_count                    Number of messages in message stack.
2054  *     x_msg_data                     Message text if x_msg_count is 1.
2055  *
2056  * NOTES
2057  *
2058  * MODIFICATION HISTORY
2059  *
2060  *   13-Jan-2001  Porkodi Chinnandar   o Created.
2061  *
2062  */
2063 
2064 PROCEDURE  update_citizenship(
2065     p_init_msg_list                         IN     VARCHAR2:= FND_API.G_FALSE,
2066     p_citizenship_rec                       IN     CITIZENSHIP_REC_TYPE,
2067     p_object_version_number                 IN OUT NOCOPY  NUMBER,
2068     x_return_status                         OUT    NOCOPY  VARCHAR2,
2069     x_msg_count                             OUT    NOCOPY  NUMBER,
2070     x_msg_data                              OUT    NOCOPY  VARCHAR2
2071 ) IS
2072 
2073     l_api_name                       CONSTANT   VARCHAR2(30) := 'update_citizenship';
2074     l_citizenship_rec                           CITIZENSHIP_REC_TYPE := p_citizenship_rec;
2075     l_old_citizenship_rec                       CITIZENSHIP_REC_TYPE;
2076 
2077 BEGIN
2078 
2079     --Standard start of API savepoint
2080     SAVEPOINT update_citizenship;
2081 
2082     --Initialize message list if p_init_msg_list is set to TRUE.
2083     IF FND_API.to_Boolean(p_init_msg_list) THEN
2084         FND_MSG_PUB.initialize;
2085     END IF;
2086 
2087     --Initialize API return status to success.
2088     x_return_status := FND_API.G_RET_STS_SUCCESS;
2089 
2090    get_citizenship_rec (
2091      p_init_msg_list              => FND_API.G_FALSE,
2092      p_citizenship_id             => p_citizenship_rec.citizenship_id,
2093      x_citizenship_rec            => l_old_citizenship_rec,
2094      x_return_status              => x_return_status,
2095      x_msg_count                  => x_msg_count,
2096      x_msg_data                   => x_msg_data);
2097 
2098     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
2099         RAISE FND_API.G_EXC_ERROR;
2100     ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2101         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2102     END IF;
2103 
2104     -- Call to business logic.
2105     do_update_citizenship(
2106         l_citizenship_rec,
2107         p_object_version_number,
2108         x_return_status);
2109 
2110     IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
2111       IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
2112         -- Invoke business event system.
2113         HZ_BUSINESS_EVENT_V2PVT.update_citizenship_event (
2114           l_citizenship_rec,
2115           l_old_citizenship_rec );
2116       END IF;
2117 
2118       IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
2119         HZ_POPULATE_BOT_PKG.pop_hz_citizenship(
2120           p_operation      => 'U',
2121           p_citizenship_id => l_citizenship_rec.citizenship_id);
2122       END IF;
2123    END IF;
2124 
2125     --Standard call to get message count and if count is 1, get message info.
2126     FND_MSG_PUB.Count_And_Get(
2127         p_encoded => FND_API.G_FALSE,
2128         p_count   => x_msg_count,
2129         p_data    => x_msg_data);
2130 
2131 EXCEPTION
2132     WHEN FND_API.G_EXC_ERROR THEN
2133         ROLLBACK TO update_citizenship;
2134         x_return_status := FND_API.G_RET_STS_ERROR;
2135         FND_MSG_PUB.Count_And_Get(
2136             p_encoded => FND_API.G_FALSE,
2137             p_count   => x_msg_count,
2138             p_data    => x_msg_data);
2139 
2140     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2141         ROLLBACK TO update_citizenship;
2142         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2143         FND_MSG_PUB.Count_And_Get(
2144             p_encoded => FND_API.G_FALSE,
2145             p_count   => x_msg_count,
2146             p_data    => x_msg_data);
2147 
2148     WHEN OTHERS THEN
2149         ROLLBACK TO update_citizenship;
2150         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2151         FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
2152         FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2153         FND_MSG_PUB.ADD;
2154         FND_MSG_PUB.Count_And_Get(
2155             p_encoded => FND_API.G_FALSE,
2156             p_count   => x_msg_count,
2157             p_data    => x_msg_data);
2158 
2159 END update_citizenship;
2160 
2161 /**
2162  * PROCEDURE get_citizenship_rec
2163  *
2164  * DESCRIPTION
2165  *     Gets class citizenship record.
2166  *
2167  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2168  *     HZ_CITIZENSHIP_PKG.Select_Row
2169  *
2170  * ARGUMENTS
2171  *   IN:
2172  *     p_init_msg_list                Initialize message stack if it is set to
2173  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
2174  *     p_citizenship_id               Citizenship ID.
2175  *   IN/OUT:
2176  *   OUT:
2177  *     x_citizenship_rec              Returned citizenship record.
2178  *     x_return_status                Return status after the call. The status can
2179  *                                    be FND_API.G_RET_STS_SUCCESS (success),
2180  *                                    FND_API.G_RET_STS_ERROR (error),
2181  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2182  *     x_msg_count                    Number of messages in message stack.
2183  *     x_msg_data                     Message text if x_msg_count is 1.
2184  *
2185  * NOTES
2186  *
2187  * MODIFICATION HISTORY
2188  *
2189  *   13-Jan-2003   Porkodi Chinnandar  o Created.
2190  *
2191  */
2192 
2193 PROCEDURE get_citizenship_rec (
2194     p_init_msg_list                         IN     VARCHAR2 := FND_API.G_FALSE,
2195     p_citizenship_id                        IN     NUMBER,
2196     x_citizenship_rec                       OUT NOCOPY    CITIZENSHIP_REC_TYPE,
2197     x_return_status                         OUT NOCOPY    VARCHAR2,
2198     x_msg_count                             OUT NOCOPY    NUMBER,
2199     x_msg_data                              OUT NOCOPY    VARCHAR2
2200 
2201 ) IS
2202 
2203     l_api_name                              CONSTANT VARCHAR2(30) := 'get_citizenship_rec';
2204 
2205 BEGIN
2206 
2207     --Initialize message list if p_init_msg_list is set to TRUE.
2208     IF FND_API.to_Boolean(p_init_msg_list) THEN
2209         FND_MSG_PUB.initialize;
2210     END IF;
2211 
2212     --Initialize API return status to success.
2213     x_return_status := FND_API.G_RET_STS_SUCCESS;
2214 
2215     --Check whether primary key has been passed in.
2216     IF p_citizenship_id IS NULL OR
2217        p_citizenship_id = FND_API.G_MISS_NUM THEN
2218         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MISSING_COLUMN' );
2219         FND_MESSAGE.SET_TOKEN( 'COLUMN', 'citizenship_id' );
2220         FND_MSG_PUB.ADD;
2221         RAISE FND_API.G_EXC_ERROR;
2222     END IF;
2223 
2224     -- The x_citizenship_rec.citizenship_id must be initiated to x_citizenship_id
2225     x_citizenship_rec.citizenship_id := p_citizenship_id;
2226 
2227     HZ_CITIZENSHIP_PKG.Select_Row (
2228 	X_CITIZENSHIP_ID     	 =>   x_citizenship_rec.citizenship_id,
2229 	X_BIRTH_OR_SELECTED  	 =>   x_citizenship_rec.birth_or_selected,
2230 	X_PARTY_ID           	 =>   x_citizenship_rec.party_id,
2231 	X_COUNTRY_CODE       	 =>   x_citizenship_rec.country_code,
2232 	X_DATE_DISOWNED      	 =>   x_citizenship_rec.date_disowned,
2233 	X_DATE_RECOGNIZED    	 =>   x_citizenship_rec.date_recognized,
2234 	X_DOCUMENT_REFERENCE 	 =>   x_citizenship_rec.document_reference,
2235 	X_DOCUMENT_TYPE      	 =>   x_citizenship_rec.document_type,
2236 	X_END_DATE           	 =>   x_citizenship_rec.end_date,
2237 	X_STATUS             	 =>   x_citizenship_rec.status,
2238 	X_APPLICATION_ID         =>   x_citizenship_rec.application_id,
2239 	X_CREATED_BY_MODULE      =>   x_citizenship_rec.created_by_module
2240 
2241     );
2242 
2243     --Standard call to get message count and if count is 1, get message info.
2244     FND_MSG_PUB.Count_And_Get(
2245         p_encoded => FND_API.G_FALSE,
2246         p_count   => x_msg_count,
2247         p_data    => x_msg_data );
2248 
2249 EXCEPTION
2250     WHEN FND_API.G_EXC_ERROR THEN
2251         x_return_status := FND_API.G_RET_STS_ERROR;
2252 
2253         FND_MSG_PUB.Count_And_Get(
2254             p_encoded => FND_API.G_FALSE,
2255             p_count   => x_msg_count,
2256             p_data    => x_msg_data );
2257     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2258         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2259 
2260         FND_MSG_PUB.Count_And_Get(
2261             p_encoded => FND_API.G_FALSE,
2262             p_count   => x_msg_count,
2263             p_data    => x_msg_data );
2264 
2265     WHEN OTHERS THEN
2266         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2267 
2268         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_OTHERS_EXCEP' );
2269         FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
2270         FND_MSG_PUB.ADD;
2271 
2272         FND_MSG_PUB.Count_And_Get(
2273             p_encoded => FND_API.G_FALSE,
2274             p_count   => x_msg_count,
2275             p_data    => x_msg_data );
2276 
2277 END get_citizenship_rec;
2278 
2279 
2280 /**
2281  * PROCEDURE create_education
2282  *
2283  * DESCRIPTION
2284  *     Creates education.
2285  *
2286  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2287   *     HZ_BUSINESS_EVENT_V2PVT.create_education_event
2288  *
2289  * ARGUMENTS
2290  *   IN:
2291  *     p_init_msg_list                Initialize message stack if it is set to
2292  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
2293  *     p_education_rec                Education record.
2294  *   IN/OUT:
2295  *   OUT:
2296  *     x_education_id                 Education ID.
2297  *     x_return_status                Return status after the call. The status can
2298  *                                    be FND_API.G_RET_STS_SUCCESS (success),
2299  *                                    FND_API.G_RET_STS_ERROR (error),
2300  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2301  *     x_msg_count                    Number of messages in message stack.
2302  *     x_msg_data                     Message text if x_msg_count is 1.
2303  *
2304  * NOTES
2305  *
2306  * MODIFICATION HISTORY
2307  *
2308  *   13-Jan-2003  Porkodi Chinnandar  o Created.
2309  *
2310  */
2311 
2312 PROCEDURE create_education(
2313     p_init_msg_list                         IN      VARCHAR2:= FND_API.G_FALSE,
2314     p_education_rec                       IN      EDUCATION_REC_TYPE,
2315     x_education_id                        OUT NOCOPY     NUMBER,
2316     x_return_status                         OUT NOCOPY     VARCHAR2,
2317     x_msg_count                             OUT NOCOPY     NUMBER,
2318     x_msg_data                              OUT NOCOPY     VARCHAR2
2319 ) IS
2320 
2321     l_api_name                       CONSTANT       VARCHAR2(30) := 'create_education';
2322     l_education_rec                               EDUCATION_REC_TYPE := p_education_rec;
2323 
2324 BEGIN
2325 
2326     --Standard start of API savepoint
2327     SAVEPOINT create_education;
2328 
2329     --Initialize message list if p_init_msg_list is set to TRUE.
2330     IF FND_API.to_Boolean(p_init_msg_list) THEN
2331         FND_MSG_PUB.initialize;
2332     END IF;
2333 
2334     --Initialize API return status to success.
2335     x_return_status := FND_API.G_RET_STS_SUCCESS;
2336 
2337     -- Call to business logic.
2338 
2339     do_create_education(
2340         l_education_rec,
2341         x_education_id,
2342         x_return_status);
2343 
2344    IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
2345      IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
2346        -- Invoke business event system.
2347        HZ_BUSINESS_EVENT_V2PVT.create_education_event (
2348          l_education_rec );
2349      END IF;
2350 
2351      IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
2352        HZ_POPULATE_BOT_PKG.pop_hz_education(
2353          p_operation    => 'I',
2354          p_EDUCATION_ID => x_education_id);
2355      END IF;
2356    END IF;
2357 
2358 
2359     --Standard call to get message count and if count is 1, get message info.
2360     FND_MSG_PUB.Count_And_Get(
2361         p_encoded => FND_API.G_FALSE,
2362         p_count   => x_msg_count,
2363         p_data    => x_msg_data);
2364 
2365 EXCEPTION
2366     WHEN FND_API.G_EXC_ERROR THEN
2367         ROLLBACK TO create_education;
2368         x_return_status := FND_API.G_RET_STS_ERROR;
2369         FND_MSG_PUB.Count_And_Get(
2370             p_encoded => FND_API.G_FALSE,
2371             p_count   => x_msg_count,
2372             p_data    => x_msg_data);
2373 
2374     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2375         ROLLBACK TO create_education;
2376         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2377         FND_MSG_PUB.Count_And_Get(
2378             p_encoded => FND_API.G_FALSE,
2379             p_count   => x_msg_count,
2380             p_data    => x_msg_data);
2381 
2382     WHEN OTHERS THEN
2383         ROLLBACK TO create_education;
2384         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2385         FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
2386         FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2387         FND_MSG_PUB.ADD;
2388         FND_MSG_PUB.Count_And_Get(
2389             p_encoded => FND_API.G_FALSE,
2390             p_count   => x_msg_count,
2391             p_data    => x_msg_data);
2392 
2393 END create_education;
2394 
2395 /**
2396  * PROCEDURE update_education
2397  *
2398  * DESCRIPTION
2399  *     Updates education.
2400  *
2401  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2402  *     HZ_BUSINESS_EVENT_V2PVT.update_education_event
2403  *
2404  * ARGUMENTS
2405  *   IN:
2406  *     p_init_msg_list                Initialize message stack if it is set to
2407  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
2408  *     p_education_rec                Education record.
2409  *   IN/OUT:
2410  *     p_object_version_number        Used for locking the being updated record.
2411  *   OUT:
2412  *     x_return_status                Return status after the call. The status can
2413  *                                    be FND_API.G_RET_STS_SUCCESS (success),
2414  *                                    FND_API.G_RET_STS_ERROR (error),
2415  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2416  *     x_msg_count                    Number of messages in message stack.
2417  *     x_msg_data                     Message text if x_msg_count is 1.
2418  *
2419  * NOTES
2420  *
2421  * MODIFICATION HISTORY
2422  *
2423  *   13-Jan-2001  Porkodi Chinnandar   o Created.
2424  *
2425  */
2426 
2427 PROCEDURE  update_education(
2428     p_init_msg_list                         IN     VARCHAR2:= FND_API.G_FALSE,
2429     p_education_rec                       IN     EDUCATION_REC_TYPE,
2430     p_object_version_number                 IN OUT NOCOPY  NUMBER,
2431     x_return_status                         OUT    NOCOPY  VARCHAR2,
2432     x_msg_count                             OUT    NOCOPY  NUMBER,
2433     x_msg_data                              OUT    NOCOPY  VARCHAR2
2434 ) IS
2435 
2436     l_api_name                       CONSTANT   VARCHAR2(30) := 'update_education';
2437     l_education_rec                           EDUCATION_REC_TYPE := p_education_rec;
2438     l_old_education_rec                       EDUCATION_REC_TYPE;
2439 
2440 BEGIN
2441 
2442     --Standard start of API savepoint
2443     SAVEPOINT update_education;
2444 
2445     --Initialize message list if p_init_msg_list is set to TRUE.
2446     IF FND_API.to_Boolean(p_init_msg_list) THEN
2447         FND_MSG_PUB.initialize;
2448     END IF;
2449 
2450     --Initialize API return status to success.
2451     x_return_status := FND_API.G_RET_STS_SUCCESS;
2452 
2453    get_education_rec (
2454      p_education_id             => p_education_rec.education_id,
2455      x_education_rec            => l_old_education_rec,
2456      x_return_status              => x_return_status,
2457      x_msg_count                  => x_msg_count,
2458      x_msg_data                   => x_msg_data);
2459 
2460     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
2461         RAISE FND_API.G_EXC_ERROR;
2462     ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2463         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2464     END IF;
2465 
2466     -- Call to business logic.
2467     do_update_education(
2468         l_education_rec,
2469         p_object_version_number,
2470         x_return_status);
2471 
2472    IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
2473      IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
2474        -- Invoke business event system.
2475        HZ_BUSINESS_EVENT_V2PVT.update_education_event (
2476          l_education_rec,
2477          l_old_education_rec );
2478      END IF;
2479 
2480      IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
2481        HZ_POPULATE_BOT_PKG.pop_hz_education(
2482          p_operation    => 'U',
2483          p_EDUCATION_ID => l_education_rec.education_id);
2484      END IF;
2485    END IF;
2486 
2487     --Standard call to get message count and if count is 1, get message info.
2488     FND_MSG_PUB.Count_And_Get(
2489         p_encoded => FND_API.G_FALSE,
2490         p_count   => x_msg_count,
2491         p_data    => x_msg_data);
2492 
2493 EXCEPTION
2494     WHEN FND_API.G_EXC_ERROR THEN
2495         ROLLBACK TO update_education;
2496         x_return_status := FND_API.G_RET_STS_ERROR;
2497         FND_MSG_PUB.Count_And_Get(
2498             p_encoded => FND_API.G_FALSE,
2499             p_count   => x_msg_count,
2500             p_data    => x_msg_data);
2501 
2502     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2503         ROLLBACK TO update_education;
2504         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2505         FND_MSG_PUB.Count_And_Get(
2506             p_encoded => FND_API.G_FALSE,
2507             p_count   => x_msg_count,
2508             p_data    => x_msg_data);
2509 
2510     WHEN OTHERS THEN
2511         ROLLBACK TO update_education;
2512         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2513         FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
2514         FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2515         FND_MSG_PUB.ADD;
2516         FND_MSG_PUB.Count_And_Get(
2517             p_encoded => FND_API.G_FALSE,
2518             p_count   => x_msg_count,
2519             p_data    => x_msg_data);
2520 
2521 END update_education;
2522 
2523 /**
2524  * PROCEDURE get_education_rec
2525  *
2526  * DESCRIPTION
2527  *     Gets class education record.
2528  *
2529  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2530  *     HZ_EDUCATION_PKG.Select_Row
2531  *
2532  * ARGUMENTS
2533  *   IN:
2534  *     p_init_msg_list                Initialize message stack if it is set to
2535  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
2536  *     p_education_id                 Education ID.
2537  *   IN/OUT:
2538  *   OUT:
2539  *     x_education_rec              Returned education record.
2540  *     x_return_status                Return status after the call. The status can
2541  *                                    be FND_API.G_RET_STS_SUCCESS (success),
2542  *                                    FND_API.G_RET_STS_ERROR (error),
2543  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2544  *     x_msg_count                    Number of messages in message stack.
2545  *     x_msg_data                     Message text if x_msg_count is 1.
2546  *
2547  * NOTES
2548  *
2549  * MODIFICATION HISTORY
2550  *
2551  *   13-Jan-2003   Porkodi Chinnandar  o Created.
2552  *
2553  */
2554 
2555 
2556  PROCEDURE get_education_rec (
2557      p_init_msg_list                         IN     VARCHAR2 := FND_API.G_FALSE,
2558      p_education_id                          IN     NUMBER,
2559      x_education_rec                         OUT NOCOPY     EDUCATION_REC_TYPE,
2560      x_return_status                            OUT NOCOPY    VARCHAR2,
2561      x_msg_count                                OUT NOCOPY    NUMBER,
2562      x_msg_data                                 OUT NOCOPY    VARCHAR2
2563 
2564 ) IS
2565 
2566     l_api_name                              CONSTANT VARCHAR2(30) := 'get_education_rec';
2567 
2568 BEGIN
2569 
2570     --Initialize message list if p_init_msg_list is set to TRUE.
2571     IF FND_API.to_Boolean(p_init_msg_list) THEN
2572         FND_MSG_PUB.initialize;
2573     END IF;
2574 
2575     --Initialize API return status to success.
2576     x_return_status := FND_API.G_RET_STS_SUCCESS;
2577 
2578     --Check whether primary key has been passed in.
2579     IF p_education_id IS NULL OR
2580        p_education_id = FND_API.G_MISS_NUM THEN
2581         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MISSING_COLUMN' );
2582         FND_MESSAGE.SET_TOKEN( 'COLUMN', 'education_id' );
2583         FND_MSG_PUB.ADD;
2584         RAISE FND_API.G_EXC_ERROR;
2585     END IF;
2586 
2587     -- The x_education_rec.education_id must be initiated to p_education_id
2588     x_education_rec.education_id := p_education_id;
2589 
2590 
2591     HZ_EDUCATION_PKG.Select_Row (
2592 	X_EDUCATION_ID     	 =>   x_education_rec.education_id,
2593 	X_PARTY_ID           	 =>   x_education_rec.party_id,
2594         X_COURSE_MAJOR           =>   x_education_rec.course_major,
2595 	X_DEGREE_RECEIVED      	 =>   x_education_rec.degree_received,
2596 	X_START_DATE_ATTENDED  	 =>   x_education_rec.start_date_attended,
2597 	X_LAST_DATE_ATTENDED   	 =>   x_education_rec.last_date_attended,
2598 	X_SCHOOL_ATTENDED_NAME 	 =>   x_education_rec.school_attended_name,
2599 	X_SCHOOL_PARTY_ID      	 =>   x_education_rec.school_party_id,
2600 	X_TYPE_OF_SCHOOL       	 =>   x_education_rec.type_of_school,
2601 	X_STATUS             	 =>   x_education_rec.status,
2602 	X_APPLICATION_ID         =>   x_education_rec.application_id,
2603 	X_CREATED_BY_MODULE      =>   x_education_rec.created_by_module
2604 
2605     );
2606 
2607     --Standard call to get message count and if count is 1, get message info.
2608     FND_MSG_PUB.Count_And_Get(
2609         p_encoded => FND_API.G_FALSE,
2610         p_count   => x_msg_count,
2611         p_data    => x_msg_data );
2612 
2613 EXCEPTION
2614     WHEN FND_API.G_EXC_ERROR THEN
2615         x_return_status := FND_API.G_RET_STS_ERROR;
2616 
2617         FND_MSG_PUB.Count_And_Get(
2618             p_encoded => FND_API.G_FALSE,
2619             p_count   => x_msg_count,
2620             p_data    => x_msg_data );
2621     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2622         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2623 
2624         FND_MSG_PUB.Count_And_Get(
2625             p_encoded => FND_API.G_FALSE,
2626             p_count   => x_msg_count,
2627             p_data    => x_msg_data );
2628 
2629     WHEN OTHERS THEN
2630         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2631 
2632         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_OTHERS_EXCEP' );
2633         FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
2634         FND_MSG_PUB.ADD;
2635 
2636         FND_MSG_PUB.Count_And_Get(
2637             p_encoded => FND_API.G_FALSE,
2638             p_count   => x_msg_count,
2639             p_data    => x_msg_data );
2640 
2641 END get_education_rec;
2642 
2643 /**
2644  * PROCEDURE create_employment_history
2645  *
2646  * DESCRIPTION
2647  *     Creates Employment history.
2648  *
2649  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2650 *     HZ_BUSINESS_EVENT_V2PVT.create_emp_history_event
2651  *
2652  * ARGUMENTS
2653  *   IN:
2654  *     p_init_msg_list                Initialize message stack if it is set to
2655  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
2656  *     p_employment_history_rec       Employment_history record.
2657  *   IN/OUT:
2658  *   OUT:
2659  *     x_employment_history_id        Employment history ID.
2660  *     x_return_status                Return status after the call. The status can
2661  *                                    be FND_API.G_RET_STS_SUCCESS (success),
2662  *                                    FND_API.G_RET_STS_ERROR (error),
2663  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2664  *     x_msg_count                    Number of messages in message stack.
2665  *     x_msg_data                     Message text if x_msg_count is 1.
2666  *
2667  * NOTES
2668  *
2669  * MODIFICATION HISTORY
2670  *
2671  *   13-Jan-2003  Porkodi Chinnandar  o Created.
2672  *
2673  */
2674 
2675 PROCEDURE create_employment_history(
2676     p_init_msg_list                         IN      VARCHAR2:= FND_API.G_FALSE,
2677     p_employment_history_rec                IN      EMPLOYMENT_HISTORY_REC_TYPE,
2678     x_employment_history_id                          OUT NOCOPY     NUMBER,
2679     x_return_status                         OUT NOCOPY     VARCHAR2,
2680     x_msg_count                             OUT NOCOPY     NUMBER,
2681     x_msg_data                              OUT NOCOPY     VARCHAR2
2682 ) IS
2683 
2684     l_api_name                       CONSTANT       VARCHAR2(30) := 'create_employment_history';
2685     l_employment_history_rec                        EMPLOYMENT_HISTORY_REC_TYPE := p_employment_history_rec;
2686 
2687 BEGIN
2688 
2689     --Standard start of API savepoint
2690     SAVEPOINT create_employment_history;
2691 
2692     --Initialize message list if p_init_msg_list is set to TRUE.
2693     IF FND_API.to_Boolean(p_init_msg_list) THEN
2694         FND_MSG_PUB.initialize;
2695     END IF;
2696 
2697     --Initialize API return status to success.
2698     x_return_status := FND_API.G_RET_STS_SUCCESS;
2699 
2700     -- Call to business logic.
2701     do_create_employment_history(
2702         l_employment_history_rec,
2703         x_employment_history_id,
2704         x_return_status);
2705 
2706    IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
2707      IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
2708        -- Invoke business event system.
2709        HZ_BUSINESS_EVENT_V2PVT.create_emp_history_event (
2710          l_employment_history_rec );
2711      END IF;
2712 
2713      IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
2714        HZ_POPULATE_BOT_PKG.pop_hz_employment_history(
2715          p_operation             => 'I',
2716          p_EMPLOYMENT_HISTORY_ID => x_employment_history_id);
2717      END IF;
2718    END IF;
2719 
2720     --Standard call to get message count and if count is 1, get message info.
2721     FND_MSG_PUB.Count_And_Get(
2722         p_encoded => FND_API.G_FALSE,
2723         p_count   => x_msg_count,
2724         p_data    => x_msg_data);
2725 
2726 EXCEPTION
2727     WHEN FND_API.G_EXC_ERROR THEN
2728         ROLLBACK TO create_employment_history;
2729         x_return_status := FND_API.G_RET_STS_ERROR;
2730         FND_MSG_PUB.Count_And_Get(
2731             p_encoded => FND_API.G_FALSE,
2732             p_count   => x_msg_count,
2733             p_data    => x_msg_data);
2734 
2735     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2736         ROLLBACK TO create_employment_history;
2737         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2738         FND_MSG_PUB.Count_And_Get(
2739             p_encoded => FND_API.G_FALSE,
2740             p_count   => x_msg_count,
2741             p_data    => x_msg_data);
2742 
2743     WHEN OTHERS THEN
2744         ROLLBACK TO create_employment_history;
2745         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2746         FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
2747         FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2748         FND_MSG_PUB.ADD;
2749         FND_MSG_PUB.Count_And_Get(
2750             p_encoded => FND_API.G_FALSE,
2751             p_count   => x_msg_count,
2752             p_data    => x_msg_data);
2753 
2754 END create_employment_history;
2755 
2756 /**
2757  * PROCEDURE update_employment_history
2758  *
2759  * DESCRIPTION
2760  *     Updates Employment_history.
2761  *
2762  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2763  *     HZ_BUSINESS_EVENT_V2PVT.update_emp_history_event
2764  *
2765  * ARGUMENTS
2766  *   IN:
2767  *     p_init_msg_list                Initialize message stack if it is set to
2768  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
2769  *     p_employment_history_rec       Employment history record.
2770  *   IN/OUT:
2771  *     p_object_version_number        Used for locking the being updated record.
2772  *   OUT:
2773  *     x_return_status                Return status after the call. The status can
2774  *                                    be FND_API.G_RET_STS_SUCCESS (success),
2775  *                                    FND_API.G_RET_STS_ERROR (error),
2776  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2777  *     x_msg_count                    Number of messages in message stack.
2778  *     x_msg_data                     Message text if x_msg_count is 1.
2779  *
2780  * NOTES
2781  *
2782  * MODIFICATION HISTORY
2783  *
2784  *   13-Jan-2001  Porkodi Chinnandar   o Created.
2785  *
2786  */
2787 
2788 PROCEDURE  update_employment_history(
2789     p_init_msg_list                         IN     VARCHAR2:= FND_API.G_FALSE,
2790     p_employment_history_rec                IN     EMPLOYMENT_HISTORY_REC_TYPE,
2791     p_object_version_number                 IN OUT NOCOPY  NUMBER,
2792     x_return_status                         OUT    NOCOPY  VARCHAR2,
2793     x_msg_count                             OUT    NOCOPY  NUMBER,
2794     x_msg_data                              OUT    NOCOPY  VARCHAR2
2795 ) IS
2796 
2797     l_api_name                                         CONSTANT   VARCHAR2(30) := 'update_employment_history';
2798     l_employment_history_rec                           EMPLOYMENT_HISTORY_REC_TYPE := p_employment_history_rec;
2799     l_old_employment_history_rec                       EMPLOYMENT_HISTORY_REC_TYPE;
2800 
2801 BEGIN
2802 
2803     --Standard start of API savepoint
2804     SAVEPOINT update_employment_history;
2805 
2806     --Initialize message list if p_init_msg_list is set to TRUE.
2807     IF FND_API.to_Boolean(p_init_msg_list) THEN
2808         FND_MSG_PUB.initialize;
2809     END IF;
2810 
2811     --Initialize API return status to success.
2812     x_return_status := FND_API.G_RET_STS_SUCCESS;
2813 
2814    get_employment_history_rec (
2815      p_employment_history_id      => p_employment_history_rec.employment_history_id,
2816      x_employment_history_rec     => l_old_employment_history_rec,
2817      x_return_status              => x_return_status,
2818      x_msg_count                  => x_msg_count,
2819      x_msg_data                   => x_msg_data);
2820 
2821     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
2822         RAISE FND_API.G_EXC_ERROR;
2823     ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2824         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2825     END IF;
2826 
2827     -- Call to business logic.
2828     do_update_employment_history(
2829         l_employment_history_rec,
2830         p_object_version_number,
2831         x_return_status);
2832 
2833      IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
2834        IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
2835          -- Invoke business event system.
2836          HZ_BUSINESS_EVENT_V2PVT.update_emp_history_event (
2837            l_employment_history_rec,
2838            l_old_employment_history_rec );
2839        END IF;
2840 
2841        IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
2842          HZ_POPULATE_BOT_PKG.pop_hz_employment_history(
2843            p_operation             => 'U',
2844            p_EMPLOYMENT_HISTORY_ID => l_employment_history_rec.employment_history_id);
2845        END IF;
2846      END IF;
2847 
2848     --Standard call to get message count and if count is 1, get message info.
2849     FND_MSG_PUB.Count_And_Get(
2850         p_encoded => FND_API.G_FALSE,
2851         p_count   => x_msg_count,
2852         p_data    => x_msg_data);
2853 
2854 EXCEPTION
2855     WHEN FND_API.G_EXC_ERROR THEN
2856         ROLLBACK TO update_employment_history;
2857         x_return_status := FND_API.G_RET_STS_ERROR;
2858         FND_MSG_PUB.Count_And_Get(
2859             p_encoded => FND_API.G_FALSE,
2860             p_count   => x_msg_count,
2861             p_data    => x_msg_data);
2862 
2863     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2864         ROLLBACK TO update_employment_history;
2865         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2866         FND_MSG_PUB.Count_And_Get(
2867             p_encoded => FND_API.G_FALSE,
2868             p_count   => x_msg_count,
2869             p_data    => x_msg_data);
2870 
2871     WHEN OTHERS THEN
2872         ROLLBACK TO update_employment_history;
2873         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2874         FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
2875         FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2876         FND_MSG_PUB.ADD;
2877         FND_MSG_PUB.Count_And_Get(
2878             p_encoded => FND_API.G_FALSE,
2879             p_count   => x_msg_count,
2880             p_data    => x_msg_data);
2881 
2882 END update_employment_history;
2883 
2884 /**
2885  * PROCEDURE get_employment_history_rec
2886  *
2887  * DESCRIPTION
2888  *     Gets class employment_history record.
2889  *
2890  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2891  *     HZ_EMPLOYMENT_HISTORY_PKG.Select_Row
2892  *
2893  * ARGUMENTS
2894  *   IN:
2895  *     p_init_msg_list                Initialize message stack if it is set to
2896  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
2897  *     p_employment_history_id        Employment history ID.
2898  *   IN/OUT:
2899  *   OUT:
2900  *     x_employment_history_rec       Returned employment_history record.
2901  *     x_return_status                Return status after the call. The status can
2902  *                                    be FND_API.G_RET_STS_SUCCESS (success),
2903  *                                    FND_API.G_RET_STS_ERROR (error),
2904  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2905  *     x_msg_count                    Number of messages in message stack.
2906  *     x_msg_data                     Message text if x_msg_count is 1.
2907  *
2908  * NOTES
2909  *
2910  * MODIFICATION HISTORY
2911  *
2912  *   13-Jan-2003   Porkodi Chinnandar  o Created.
2913  *
2914  */
2915 
2916 PROCEDURE get_employment_history_rec (
2917     p_init_msg_list                         IN     VARCHAR2 := FND_API.G_FALSE,
2918     p_employment_history_id                 IN     NUMBER,
2919     x_employment_history_rec                   OUT NOCOPY EMPLOYMENT_HISTORY_REC_TYPE,
2920     x_return_status                            OUT NOCOPY    VARCHAR2,
2921     x_msg_count                                OUT NOCOPY    NUMBER,
2922     x_msg_data                                 OUT NOCOPY    VARCHAR2
2923 )
2924  IS
2925 
2926     l_api_name                              CONSTANT VARCHAR2(30) := 'get_employment_history_rec';
2927 
2928 BEGIN
2929 
2930     --Initialize message list if p_init_msg_list is set to TRUE.
2931     IF FND_API.to_Boolean(p_init_msg_list) THEN
2932         FND_MSG_PUB.initialize;
2933     END IF;
2934 
2935     --Initialize API return status to success.
2936     x_return_status := FND_API.G_RET_STS_SUCCESS;
2937 
2938     --Check whether primary key has been passed in.
2939     IF p_employment_history_id IS NULL OR
2940        p_employment_history_id = FND_API.G_MISS_NUM THEN
2941         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MISSING_COLUMN' );
2942         FND_MESSAGE.SET_TOKEN( 'COLUMN', 'employment_history_id' );
2943         FND_MSG_PUB.ADD;
2944         RAISE FND_API.G_EXC_ERROR;
2945     END IF;
2946 
2947     -- The x_employment_history_rec.employment_history_id must be initiated to p_employment_history_id
2948     x_employment_history_rec.employment_history_id := p_employment_history_id;
2949 
2950     HZ_EMPLOYMENT_HISTORY_PKG.Select_Row (
2951 
2952 	X_EMPLOYMENT_HISTORY_ID         =>      x_employment_history_rec.employment_history_id,
2953 	X_BEGIN_DATE            	=>      x_employment_history_rec.begin_date,
2954 	X_PARTY_ID              	=>      x_employment_history_rec.party_id,
2955 	X_EMPLOYED_AS_TITLE     	=>      x_employment_history_rec.employed_as_title,
2956 	X_EMPLOYED_BY_DIVISION_NAME 	=>      x_employment_history_rec.employed_by_division_name,
2957 	X_EMPLOYED_BY_NAME_COMPANY   	=>      x_employment_history_rec.employed_by_name_company,
2958 	X_END_DATE                  	=>      x_employment_history_rec.end_date,
2959 	X_SUPERVISOR_NAME           	=>      x_employment_history_rec.supervisor_name,
2960 	X_BRANCH                    	=>      x_employment_history_rec.branch,
2961 	X_MILITARY_RANK             	=>      x_employment_history_rec.military_rank,
2962 	X_SERVED                    	=>      x_employment_history_rec.served,
2963 	X_STATION                   	=>      x_employment_history_rec.station,
2964 	X_RESPONSIBILITY            	=>      x_employment_history_rec.responsibility,
2965 	X_STATUS                    	=>      x_employment_history_rec.status,
2966 	X_APPLICATION_ID            	=>      x_employment_history_rec.application_id,
2967 	X_CREATED_BY_MODULE         	=>      x_employment_history_rec.created_by_module,
2968 	X_REASON_FOR_LEAVING        	=>      x_employment_history_rec.reason_for_leaving,
2969 	X_FACULTY_POSITION_FLAG      	=>      x_employment_history_rec.faculty_position_flag,
2970 	X_TENURE_CODE               	=>      x_employment_history_rec.tenure_code,
2971 	X_FRACTION_OF_TENURE        	=>      x_employment_history_rec.fraction_of_tenure,
2972 	X_EMPLOYMENT_TYPE_CODE      	=>      x_employment_history_rec.employment_type_code,
2973 	X_EMPLOYED_AS_TITLE_CODE    	=>      x_employment_history_rec.employed_as_title_code,
2974 	X_WEEKLY_WORK_HOURS         	=>      x_employment_history_rec.weekly_work_hours,
2975 	X_COMMENTS                  	=>      x_employment_history_rec.comments
2976     );
2977 
2978     --Standard call to get message count and if count is 1, get message info.
2979     FND_MSG_PUB.Count_And_Get(
2980         p_encoded => FND_API.G_FALSE,
2981         p_count   => x_msg_count,
2982         p_data    => x_msg_data );
2983 
2984 EXCEPTION
2985     WHEN FND_API.G_EXC_ERROR THEN
2986         x_return_status := FND_API.G_RET_STS_ERROR;
2987 
2988         FND_MSG_PUB.Count_And_Get(
2989             p_encoded => FND_API.G_FALSE,
2990             p_count   => x_msg_count,
2991             p_data    => x_msg_data );
2992     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2993         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2994 
2995         FND_MSG_PUB.Count_And_Get(
2996             p_encoded => FND_API.G_FALSE,
2997             p_count   => x_msg_count,
2998             p_data    => x_msg_data );
2999 
3000     WHEN OTHERS THEN
3001         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3002 
3003         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_OTHERS_EXCEP' );
3004         FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
3005         FND_MSG_PUB.ADD;
3006 
3007         FND_MSG_PUB.Count_And_Get(
3008             p_encoded => FND_API.G_FALSE,
3009             p_count   => x_msg_count,
3010             p_data    => x_msg_data );
3011 
3012 END get_employment_history_rec;
3013 
3014 /**
3015  * PROCEDURE create_work_class
3016  *
3017  * DESCRIPTION
3018  *     Creates work class.
3019  *
3020  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3021  *     HZ_BUSINESS_EVENT_V2PVT.create_work_class_event
3022  *
3023  * ARGUMENTS
3024  *   IN:
3025  *     p_init_msg_list                Initialize message stack if it is set to
3026  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
3027  *     p_work_class_rec               Work_class record.
3028  *   IN/OUT:
3029  *   OUT:
3030  *     x_work_class_id                Work class ID.
3031  *     x_return_status                Return status after the call. The status can
3032  *                                    be FND_API.G_RET_STS_SUCCESS (success),
3033  *                                    FND_API.G_RET_STS_ERROR (error),
3034  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3035  *     x_msg_count                    Number of messages in message stack.
3036  *     x_msg_data                     Message text if x_msg_count is 1.
3037  *
3038  * NOTES
3039  *
3040  * MODIFICATION HISTORY
3041  *
3042  *   13-Jan-2003  Porkodi Chinnandar  o Created.
3043  *
3044  */
3045 
3046 PROCEDURE create_work_class(
3047     p_init_msg_list                         IN      VARCHAR2:= FND_API.G_FALSE,
3048     p_work_class_rec                        IN      WORK_CLASS_REC_TYPE,
3049     x_work_class_id                         OUT NOCOPY     NUMBER,
3050     x_return_status                         OUT NOCOPY     VARCHAR2,
3051     x_msg_count                             OUT NOCOPY     NUMBER,
3052     x_msg_data                              OUT NOCOPY     VARCHAR2
3053 ) IS
3054 
3055     l_api_name                       CONSTANT       VARCHAR2(30) := 'create_work_class';
3056     l_work_class_rec                                WORK_CLASS_REC_TYPE := p_work_class_rec;
3057 
3058 BEGIN
3059 
3060     --Standard start of API savepoint
3061     SAVEPOINT create_work_class;
3062 
3063     --Initialize message list if p_init_msg_list is set to TRUE.
3064     IF FND_API.to_Boolean(p_init_msg_list) THEN
3065         FND_MSG_PUB.initialize;
3066     END IF;
3067 
3068     --Initialize API return status to success.
3069     x_return_status := FND_API.G_RET_STS_SUCCESS;
3070 
3071     -- Call to business logic.
3072 
3073     do_create_work_class(
3074         l_work_class_rec,
3075         x_work_class_id,
3076         x_return_status);
3077 
3078     IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
3079       IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
3080         -- Invoke business event system.
3081         HZ_BUSINESS_EVENT_V2PVT.create_work_class_event (
3082           l_work_class_rec );
3083       END IF;
3084 
3085       IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
3086         HZ_POPULATE_BOT_PKG.pop_hz_work_class(
3087           p_operation     => 'I',
3088           p_work_class_id => x_work_class_id);
3089       END IF;
3090     END IF;
3091 
3092     --Standard call to get message count and if count is 1, get message info.
3093     FND_MSG_PUB.Count_And_Get(
3094         p_encoded => FND_API.G_FALSE,
3095         p_count   => x_msg_count,
3096         p_data    => x_msg_data);
3097 
3098 EXCEPTION
3099     WHEN FND_API.G_EXC_ERROR THEN
3100         ROLLBACK TO create_work_class;
3101         x_return_status := FND_API.G_RET_STS_ERROR;
3102         FND_MSG_PUB.Count_And_Get(
3103             p_encoded => FND_API.G_FALSE,
3104             p_count   => x_msg_count,
3105             p_data    => x_msg_data);
3106 
3107     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3108         ROLLBACK TO create_work_class;
3109         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3110         FND_MSG_PUB.Count_And_Get(
3111             p_encoded => FND_API.G_FALSE,
3112             p_count   => x_msg_count,
3113             p_data    => x_msg_data);
3114 
3115     WHEN OTHERS THEN
3116         ROLLBACK TO create_work_class;
3117         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3118         FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
3119         FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3120         FND_MSG_PUB.ADD;
3121         FND_MSG_PUB.Count_And_Get(
3122             p_encoded => FND_API.G_FALSE,
3123             p_count   => x_msg_count,
3124             p_data    => x_msg_data);
3125 
3126 END create_work_class;
3127 
3128 /**
3129  * PROCEDURE update_work_class
3130  *
3131  * DESCRIPTION
3132  *     Updates work_class.
3133  *
3134  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3135  *     HZ_BUSINESS_EVENT_V2PVT.update_work_class_event
3136  *
3137  * ARGUMENTS
3138  *   IN:
3139  *     p_init_msg_list                Initialize message stack if it is set to
3140  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
3141  *     p_work_class_rec               Work class record.
3142  *   IN/OUT:
3143  *     p_object_version_number        Used for locking the being updated record.
3144  *   OUT:
3145  *     x_return_status                Return status after the call. The status can
3146  *                                    be FND_API.G_RET_STS_SUCCESS (success),
3147  *                                    FND_API.G_RET_STS_ERROR (error),
3148  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3149  *     x_msg_count                    Number of messages in message stack.
3150  *     x_msg_data                     Message text if x_msg_count is 1.
3151  *
3152  * NOTES
3153  *
3154  * MODIFICATION HISTORY
3155  *
3156  *   13-Jan-2001  Porkodi Chinnandar   o Created.
3157  *
3158  */
3159 
3160 PROCEDURE  update_work_class(
3161     p_init_msg_list                         IN     VARCHAR2:= FND_API.G_FALSE,
3162     p_work_class_rec                        IN     WORK_CLASS_REC_TYPE,
3163     p_object_version_number                 IN OUT NOCOPY  NUMBER,
3164     x_return_status                         OUT    NOCOPY  VARCHAR2,
3165     x_msg_count                             OUT    NOCOPY  NUMBER,
3166     x_msg_data                              OUT    NOCOPY  VARCHAR2
3167 ) IS
3168 
3169     l_api_name                       CONSTANT   VARCHAR2(30) := 'update_work_class';
3170     l_work_class_rec                                   WORK_CLASS_REC_TYPE := p_work_class_rec;
3171     l_old_work_class_rec                               WORK_CLASS_REC_TYPE;
3172 
3173 BEGIN
3174 
3175     --Standard start of API savepoint
3176     SAVEPOINT update_work_class;
3177 
3178     --Initialize message list if p_init_msg_list is set to TRUE.
3179     IF FND_API.to_Boolean(p_init_msg_list) THEN
3180         FND_MSG_PUB.initialize;
3181     END IF;
3182 
3183     --Initialize API return status to success.
3184     x_return_status := FND_API.G_RET_STS_SUCCESS;
3185 
3186    get_work_class_rec (
3187      p_work_class_id      => p_work_class_rec.work_class_id,
3188      x_work_class_rec     => l_old_work_class_rec,
3189      x_return_status              => x_return_status,
3190      x_msg_count                  => x_msg_count,
3191      x_msg_data                   => x_msg_data);
3192 
3193     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
3194         RAISE FND_API.G_EXC_ERROR;
3195     ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3196         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3197     END IF;
3198 
3199     -- Call to business logic.
3200     do_update_work_class(
3201         l_work_class_rec,
3202         p_object_version_number,
3203         x_return_status);
3204 
3205      IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
3206        IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
3207          -- Invoke business event system.
3208          HZ_BUSINESS_EVENT_V2PVT.update_work_class_event (
3209            l_work_class_rec,
3210            l_old_work_class_rec );
3211        END IF;
3212 
3213        IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
3214          HZ_POPULATE_BOT_PKG.pop_hz_work_class(
3215            p_operation     => 'U',
3216            p_work_class_id => l_work_class_rec.work_class_id);
3217        END IF;
3218      END IF;
3219 
3220     --Standard call to get message count and if count is 1, get message info.
3221     FND_MSG_PUB.Count_And_Get(
3222         p_encoded => FND_API.G_FALSE,
3223         p_count   => x_msg_count,
3224         p_data    => x_msg_data);
3225 
3226 EXCEPTION
3227     WHEN FND_API.G_EXC_ERROR THEN
3228         ROLLBACK TO update_work_class;
3229         x_return_status := FND_API.G_RET_STS_ERROR;
3230         FND_MSG_PUB.Count_And_Get(
3231             p_encoded => FND_API.G_FALSE,
3232             p_count   => x_msg_count,
3233             p_data    => x_msg_data);
3234 
3235     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3236         ROLLBACK TO update_work_class;
3237         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3238         FND_MSG_PUB.Count_And_Get(
3239             p_encoded => FND_API.G_FALSE,
3240             p_count   => x_msg_count,
3241             p_data    => x_msg_data);
3242 
3243     WHEN OTHERS THEN
3244         ROLLBACK TO update_work_class;
3245         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3246         FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
3247         FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3248         FND_MSG_PUB.ADD;
3249         FND_MSG_PUB.Count_And_Get(
3250             p_encoded => FND_API.G_FALSE,
3251             p_count   => x_msg_count,
3252             p_data    => x_msg_data);
3253 
3254 END update_work_class;
3255 
3256 /**
3257  * PROCEDURE get_work_class_rec
3258  *
3259  * DESCRIPTION
3260  *     Gets class work_class record.
3261  *
3262  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3263  *     HZ_WORK_CLASS_PKG.Select_Row
3264  *
3265  * ARGUMENTS
3266  *   IN:
3267  *     p_init_msg_list                Initialize message stack if it is set to
3268  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
3269  *     p_work_class_id                Work class ID.
3270  *   IN/OUT:
3271  *   OUT:
3272  *     x_work_class_rec               Returned work_class record.
3273  *     x_return_status                Return status after the call. The status can
3274  *                                    be FND_API.G_RET_STS_SUCCESS (success),
3275  *                                    FND_API.G_RET_STS_ERROR (error),
3276  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3277  *     x_msg_count                    Number of messages in message stack.
3278  *     x_msg_data                     Message text if x_msg_count is 1.
3279  *
3280  * NOTES
3281  *
3282  * MODIFICATION HISTORY
3283  *
3284  *   13-Jan-2003   Porkodi Chinnandar  o Created.
3285  *
3286  */
3287 
3288 PROCEDURE get_work_class_rec (
3289     p_init_msg_list                         IN     VARCHAR2 := FND_API.G_FALSE,
3290     p_work_class_id                         IN     NUMBER,
3291     x_work_class_rec                           OUT NOCOPY WORK_CLASS_REC_TYPE,
3292     x_return_status                            OUT NOCOPY    VARCHAR2,
3293     x_msg_count                                OUT NOCOPY    NUMBER,
3294     x_msg_data                                 OUT NOCOPY    VARCHAR2
3295 )
3296  IS
3297 
3298     l_api_name                              CONSTANT VARCHAR2(30) := 'get_work_class_rec';
3299 
3300 BEGIN
3301 
3302     --Initialize message list if p_init_msg_list is set to TRUE.
3303     IF FND_API.to_Boolean(p_init_msg_list) THEN
3304         FND_MSG_PUB.initialize;
3305     END IF;
3306 
3307     --Initialize API return status to success.
3308     x_return_status := FND_API.G_RET_STS_SUCCESS;
3309 
3310     --Check whether primary key has been passed in.
3311     IF p_work_class_id IS NULL OR
3312        p_work_class_id = FND_API.G_MISS_NUM THEN
3313         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MISSING_COLUMN' );
3314         FND_MESSAGE.SET_TOKEN( 'COLUMN', 'work_class_id' );
3315         FND_MSG_PUB.ADD;
3316         RAISE FND_API.G_EXC_ERROR;
3317     END IF;
3318 
3319     -- The x_work_class_rec.work_class_id must be initiated to p_work_class_id
3320     x_work_class_rec.work_class_id := p_work_class_id;
3321 
3322     HZ_WORK_CLASS_PKG.Select_Row (
3323 
3324 	x_work_class_id                 =>      x_work_class_rec.work_class_id,
3325 	x_level_of_experience           =>      x_work_class_rec.level_of_experience,
3326 	x_work_class_name               =>      x_work_class_rec.work_class_name,
3327 	x_employment_history_id         =>      x_work_class_rec.employment_history_id,
3328 	x_status                        =>      x_work_class_rec.status,
3329 	x_application_id                =>      x_work_class_rec.application_id,
3330         x_created_by_module             =>      x_work_class_rec.created_by_module
3331     );
3332 
3333     --Standard call to get message count and if count is 1, get message info.
3334     FND_MSG_PUB.Count_And_Get(
3335         p_encoded => FND_API.G_FALSE,
3336         p_count   => x_msg_count,
3337         p_data    => x_msg_data );
3338 
3339 EXCEPTION
3340     WHEN FND_API.G_EXC_ERROR THEN
3341         x_return_status := FND_API.G_RET_STS_ERROR;
3342 
3343         FND_MSG_PUB.Count_And_Get(
3344             p_encoded => FND_API.G_FALSE,
3345             p_count   => x_msg_count,
3346             p_data    => x_msg_data );
3347     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3348         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3349 
3350         FND_MSG_PUB.Count_And_Get(
3351             p_encoded => FND_API.G_FALSE,
3352             p_count   => x_msg_count,
3353             p_data    => x_msg_data );
3354 
3355     WHEN OTHERS THEN
3356         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3357 
3358         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_OTHERS_EXCEP' );
3359         FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
3360         FND_MSG_PUB.ADD;
3361 
3362         FND_MSG_PUB.Count_And_Get(
3363             p_encoded => FND_API.G_FALSE,
3364             p_count   => x_msg_count,
3365             p_data    => x_msg_data );
3366 
3367 END get_work_class_rec;
3368 
3369 /**
3370  * PROCEDURE create_person_interest
3371  *
3372  * DESCRIPTION
3373  *     Creates Person interest.
3374  *
3375  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3376  *     HZ_BUSINESS_EVENT_V2PVT.create_per_interest_event
3377  *
3378  * ARGUMENTS
3379  *   IN:
3380  *     p_init_msg_list                Initialize message stack if it is set to
3381  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
3382  *     p_person_interest_rec          Person Interest record.
3383  *   IN/OUT:
3384  *   OUT:
3385  *     x_person_interest_id           Person Interest ID.
3386  *     x_return_status                Return status after the call. The status can
3387  *                                    be FND_API.G_RET_STS_SUCCESS (success),
3388  *                                    FND_API.G_RET_STS_ERROR (error),
3389  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3390  *     x_msg_count                    Number of messages in message stack.
3391  *     x_msg_data                     Message text if x_msg_count is 1.
3392  *
3393  * NOTES
3394  *
3395  * MODIFICATION HISTORY
3396  *
3397  *   13-Jan-2003  Porkodi Chinnandar  o Created.
3398  *
3399  */
3400 
3401 PROCEDURE create_person_interest(
3402     p_init_msg_list                         IN      VARCHAR2:= FND_API.G_FALSE,
3403     p_person_interest_rec                   IN      PERSON_INTEREST_REC_TYPE,
3404     x_person_interest_id                         OUT NOCOPY     NUMBER,
3405     x_return_status                         OUT NOCOPY     VARCHAR2,
3406     x_msg_count                             OUT NOCOPY     NUMBER,
3407     x_msg_data                              OUT NOCOPY     VARCHAR2
3408 ) IS
3409 
3410     l_api_name                       CONSTANT       VARCHAR2(30) := 'create_person_interest';
3411     l_person_interest_rec                                PERSON_INTEREST_REC_TYPE := p_person_interest_rec;
3412 
3413 BEGIN
3414 
3415     --Standard start of API savepoint
3416     SAVEPOINT create_person_interest;
3417 
3418     --Initialize message list if p_init_msg_list is set to TRUE.
3419     IF FND_API.to_Boolean(p_init_msg_list) THEN
3420         FND_MSG_PUB.initialize;
3421     END IF;
3422 
3423     --Initialize API return status to success.
3424     x_return_status := FND_API.G_RET_STS_SUCCESS;
3425 
3426     -- Call to business logic.
3427     do_create_person_interest(
3428         l_person_interest_rec,
3429         x_person_interest_id,
3430         x_return_status);
3431 
3432     IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
3433       IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
3434         -- Invoke business event system.
3435         HZ_BUSINESS_EVENT_V2PVT.create_person_interest_event (
3436           l_person_interest_rec );
3437       END IF;
3438 
3439       IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
3440         HZ_POPULATE_BOT_PKG.pop_hz_person_interest(
3441           p_operation          => 'I',
3442           p_person_interest_id => x_person_interest_id);
3443       END IF;
3444     END IF;
3445 
3446     --Standard call to get message count and if count is 1, get message info.
3447     FND_MSG_PUB.Count_And_Get(
3448         p_encoded => FND_API.G_FALSE,
3449         p_count   => x_msg_count,
3450         p_data    => x_msg_data);
3451 
3452 EXCEPTION
3453     WHEN FND_API.G_EXC_ERROR THEN
3454         ROLLBACK TO create_person_interest;
3455         x_return_status := FND_API.G_RET_STS_ERROR;
3456         FND_MSG_PUB.Count_And_Get(
3457             p_encoded => FND_API.G_FALSE,
3458             p_count   => x_msg_count,
3459             p_data    => x_msg_data);
3460 
3461     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3462         ROLLBACK TO create_person_interest;
3463         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3464         FND_MSG_PUB.Count_And_Get(
3465             p_encoded => FND_API.G_FALSE,
3466             p_count   => x_msg_count,
3467             p_data    => x_msg_data);
3468 
3469     WHEN OTHERS THEN
3470         ROLLBACK TO create_person_interest;
3471         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3472         FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
3473         FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3474         FND_MSG_PUB.ADD;
3475         FND_MSG_PUB.Count_And_Get(
3476             p_encoded => FND_API.G_FALSE,
3477             p_count   => x_msg_count,
3478             p_data    => x_msg_data);
3479 
3480 END create_person_interest;
3481 
3482 /**
3483  * PROCEDURE update_person_interest
3484  *
3485  * DESCRIPTION
3486  *     Updates person_interest.
3487  *
3488  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3489  *     HZ_BUSINESS_EVENT_V2PVT.update_per_interest_event
3490  *
3491  * ARGUMENTS
3492  *   IN:
3493  *     p_init_msg_list                Initialize message stack if it is set to
3494  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
3495  *     p_person_interest_rec          Person Interest record.
3496  *   IN/OUT:
3497  *     p_object_version_number        Used for locking the being updated record.
3498  *   OUT:
3499  *     x_return_status                Return status after the call. The status can
3500  *                                    be FND_API.G_RET_STS_SUCCESS (success),
3501  *                                    FND_API.G_RET_STS_ERROR (error),
3502  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3503  *     x_msg_count                    Number of messages in message stack.
3504  *     x_msg_data                     Message text if x_msg_count is 1.
3505  *
3506  * NOTES
3507  *
3508  * MODIFICATION HISTORY
3509  *
3510  *   13-Jan-2001  Porkodi Chinnandar   o Created.
3511  *
3512  */
3513 
3514 PROCEDURE  update_person_interest(
3515     p_init_msg_list                         IN     VARCHAR2:= FND_API.G_FALSE,
3516     p_person_interest_rec                   IN     PERSON_INTEREST_REC_TYPE,
3517     p_object_version_number                 IN OUT NOCOPY  NUMBER,
3518     x_return_status                         OUT    NOCOPY  VARCHAR2,
3519     x_msg_count                             OUT    NOCOPY  NUMBER,
3520     x_msg_data                              OUT    NOCOPY  VARCHAR2
3521 ) IS
3522 
3523     l_api_name                       CONSTANT   VARCHAR2(30) := 'update_person_interest';
3524     l_person_interest_rec                                   PERSON_INTEREST_REC_TYPE := p_person_interest_rec;
3525     l_old_person_interest_rec                               PERSON_INTEREST_REC_TYPE;
3526 
3527 BEGIN
3528 
3529     --Standard start of API savepoint
3530     SAVEPOINT update_person_interest;
3531 
3532     --Initialize message list if p_init_msg_list is set to TRUE.
3533     IF FND_API.to_Boolean(p_init_msg_list) THEN
3534         FND_MSG_PUB.initialize;
3535     END IF;
3536 
3537     --Initialize API return status to success.
3538     x_return_status := FND_API.G_RET_STS_SUCCESS;
3539 
3540    get_person_interest_rec (
3541      p_person_interest_id      => p_person_interest_rec.person_interest_id,
3542      x_person_interest_rec     => l_old_person_interest_rec,
3543      x_return_status              => x_return_status,
3544      x_msg_count                  => x_msg_count,
3545      x_msg_data                   => x_msg_data);
3546 
3547     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
3548         RAISE FND_API.G_EXC_ERROR;
3549     ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3550         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3551     END IF;
3552 
3553     -- Call to business logic.
3554     do_update_person_interest(
3555         l_person_interest_rec,
3556         p_object_version_number,
3557         x_return_status);
3558 
3559      IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
3560        IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
3561          -- Invoke business event system.
3562          HZ_BUSINESS_EVENT_V2PVT.update_person_interest_event (
3563            l_person_interest_rec,
3564            l_old_person_interest_rec );
3565        END IF;
3566 
3567        IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
3568          HZ_POPULATE_BOT_PKG.pop_hz_person_interest(
3569            p_operation          => 'U',
3570            p_person_interest_id => l_person_interest_rec.person_interest_id);
3571        END IF;
3572      END IF;
3573 
3574     --Standard call to get message count and if count is 1, get message info.
3575     FND_MSG_PUB.Count_And_Get(
3576         p_encoded => FND_API.G_FALSE,
3577         p_count   => x_msg_count,
3578         p_data    => x_msg_data);
3579 
3580 EXCEPTION
3581     WHEN FND_API.G_EXC_ERROR THEN
3582         ROLLBACK TO update_person_interest;
3583         x_return_status := FND_API.G_RET_STS_ERROR;
3584         FND_MSG_PUB.Count_And_Get(
3585             p_encoded => FND_API.G_FALSE,
3586             p_count   => x_msg_count,
3587             p_data    => x_msg_data);
3588 
3589     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3590         ROLLBACK TO update_person_interest;
3591         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3592         FND_MSG_PUB.Count_And_Get(
3593             p_encoded => FND_API.G_FALSE,
3594             p_count   => x_msg_count,
3595             p_data    => x_msg_data);
3596 
3597     WHEN OTHERS THEN
3598         ROLLBACK TO update_person_interest;
3599         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3600         FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
3601         FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3602         FND_MSG_PUB.ADD;
3603         FND_MSG_PUB.Count_And_Get(
3604             p_encoded => FND_API.G_FALSE,
3605             p_count   => x_msg_count,
3606             p_data    => x_msg_data);
3607 
3608 END update_person_interest;
3609 
3610 /**
3611  * PROCEDURE get_person_interest_rec
3612  *
3613  * DESCRIPTION
3614  *     Gets class person_interest record.
3615  *
3616  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3617  *     HZ_PERSON_INTEREST_PKG.Select_Row
3618  *
3619  * ARGUMENTS
3620  *   IN:
3621  *     p_init_msg_list                Initialize message stack if it is set to
3622  *                                    FND_API.G_TRUE. Default is FND_API.G_FALSE.
3623  *     p_person_interest_id           Person Interest ID.
3624  *   IN/OUT:
3625  *   OUT:
3626  *     x_person_interest_rec          Returned person_interest record.
3627  *     x_return_status                Return status after the call. The status can
3628  *                                    be FND_API.G_RET_STS_SUCCESS (success),
3629  *                                    FND_API.G_RET_STS_ERROR (error),
3630  *                                    FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3631  *     x_msg_count                    Number of messages in message stack.
3632  *     x_msg_data                     Message text if x_msg_count is 1.
3633  *
3634  * NOTES
3635  *
3636  * MODIFICATION HISTORY
3637  *
3638  *   13-Jan-2003   Porkodi Chinnandar  o Created.
3639  *
3640  */
3641 
3642 PROCEDURE get_person_interest_rec (
3643     p_init_msg_list                         IN     VARCHAR2 := FND_API.G_FALSE,
3644     p_person_interest_id                    IN     NUMBER,
3645     x_person_interest_rec                      OUT NOCOPY PERSON_INTEREST_REC_TYPE,
3646     x_return_status                            OUT NOCOPY    VARCHAR2,
3647     x_msg_count                                OUT NOCOPY    NUMBER,
3648     x_msg_data                                 OUT NOCOPY    VARCHAR2
3649 )
3650  IS
3651 
3652     l_api_name                              CONSTANT VARCHAR2(30) := 'get_person_interest_rec';
3653 
3654 BEGIN
3655 
3656     --Initialize message list if p_init_msg_list is set to TRUE.
3657     IF FND_API.to_Boolean(p_init_msg_list) THEN
3658         FND_MSG_PUB.initialize;
3659     END IF;
3660 
3661     --Initialize API return status to success.
3662     x_return_status := FND_API.G_RET_STS_SUCCESS;
3663 
3664     --Check whether primary key has been passed in.
3665     IF p_person_interest_id IS NULL OR
3666        p_person_interest_id = FND_API.G_MISS_NUM THEN
3667         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_MISSING_COLUMN' );
3668         FND_MESSAGE.SET_TOKEN( 'COLUMN', 'person_interest_id' );
3669         FND_MSG_PUB.ADD;
3670         RAISE FND_API.G_EXC_ERROR;
3671     END IF;
3672 
3673     -- The x_person_interest_rec.person_interest_id must be initiated to p_person_interest_id
3674     x_person_interest_rec.person_interest_id := p_person_interest_id;
3675 
3676     HZ_PERSON_INTEREST_PKG.Select_Row (
3677 
3678 	  x_person_interest_id               => x_person_interest_rec.person_interest_id,
3679 	  x_level_of_interest                => x_person_interest_rec.level_of_interest,
3680 	  x_party_id                         => x_person_interest_rec.party_id,
3681 	  x_level_of_participation           => x_person_interest_rec.level_of_participation,
3682 	  x_interest_type_code               => x_person_interest_rec.interest_type_code,
3683 	  x_comments                         => x_person_interest_rec.comments,
3684 	  x_sport_indicator                  => x_person_interest_rec.sport_indicator,
3685 	  x_sub_interest_type_code           => x_person_interest_rec.sub_interest_type_code,
3686 	  x_interest_name                    => x_person_interest_rec.interest_name,
3687 	  x_team                             => x_person_interest_rec.team,
3688 	  x_since                            => x_person_interest_rec.since,
3689 	  x_status                           => x_person_interest_rec.status,
3690 	  x_application_id                   => x_person_interest_rec.application_id,
3691 	  x_created_by_module                => x_person_interest_rec.created_by_module
3692     );
3693 
3694     --Standard call to get message count and if count is 1, get message info.
3695     FND_MSG_PUB.Count_And_Get(
3696         p_encoded => FND_API.G_FALSE,
3697         p_count   => x_msg_count,
3698         p_data    => x_msg_data );
3699 
3700 EXCEPTION
3701     WHEN FND_API.G_EXC_ERROR THEN
3702         x_return_status := FND_API.G_RET_STS_ERROR;
3703 
3704         FND_MSG_PUB.Count_And_Get(
3705             p_encoded => FND_API.G_FALSE,
3706             p_count   => x_msg_count,
3707             p_data    => x_msg_data );
3708     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3709         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3710 
3711         FND_MSG_PUB.Count_And_Get(
3712             p_encoded => FND_API.G_FALSE,
3713             p_count   => x_msg_count,
3714             p_data    => x_msg_data );
3715 
3716     WHEN OTHERS THEN
3717         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3718 
3719         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_OTHERS_EXCEP' );
3720         FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
3721         FND_MSG_PUB.ADD;
3722 
3723         FND_MSG_PUB.Count_And_Get(
3724             p_encoded => FND_API.G_FALSE,
3725             p_count   => x_msg_count,
3726             p_data    => x_msg_data );
3727 
3728 END get_person_interest_rec;
3729 
3730 END HZ_PERSON_INFO_V2PUB;