DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_RMP_PVT

Source


1 PACKAGE BODY OKC_RMP_PVT AS
2 /* $Header: OKCSRMPB.pls 120.0 2005/05/25 23:10:04 appldev noship $ */
3 
4 	l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
5 
6 /***********************  HAND-CODED  **************************/
7   FUNCTION Validate_Attributes
8     (p_rmpv_rec IN  rmpv_rec_type) RETURN VARCHAR2;
9   G_NO_PARENT_RECORD CONSTANT	VARCHAR2(200) := 'OKC_NO_PARENT_RECORD';
10   G_UNEXPECTED_ERROR CONSTANT	VARCHAR2(200) := 'OKC_CONTRACTS_UNEXPECTED_ERROR';
11   G_SQLERRM_TOKEN    CONSTANT VARCHAR2(200) := 'SQLerrm';
12   G_SQLCODE_TOKEN	 CONSTANT VARCHAR2(200) := 'SQLcode';
13   G_VIEW             CONSTANT VARCHAR2(200) := 'OKC_RG_PARTY_ROLES_V';
14   G_EXCEPTION_HALT_VALIDATION	exception;
15   g_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
16 
17   -- Start of comments
18   --
19   -- Procedure Name  : validate_rgp_id
20   -- Description     :
21   -- Business Rules  :
22   -- Parameters      :
23   -- Version         : 1.0
24   -- End of comments
25 
26   PROCEDURE validate_rgp_id(
27     x_return_status OUT NOCOPY   VARCHAR2,
28     p_rmpv_rec      IN    rmpv_rec_type
29   ) IS
30     l_dummy_var   VARCHAR2(1) := '?';
31     CURSOR l_rgpv_csr IS
32 /*      SELECT 'x'
33         FROM OKC_RULE_GROUPS_V rgpv
34        WHERE rgpv.ID = p_rmpv_rec.RGP_ID;
35 */
36     select 'x'
37     from 	okc_rule_groups_b RGP
38     where RGP.id = p_rmpv_rec.rgp_id
39       and RGP.rgd_code in (
40 	select SRD.rgd_code
41 	from okc_rg_role_defs RRD
42 	, okc_subclass_rg_defs SRD
43 	, okc_k_headers_b KHD
44 	where RRD.id = p_rmpv_rec.rrd_id
45     	and SRD.id = RRD.srd_id
46 	and KHD.id = p_rmpv_rec.dnz_chr_id
47 	and SRD.SCS_CODE = KHD.SCS_CODE)
48 ;
49   BEGIN
50     -- initialize return status
51     x_return_status := OKC_API.G_RET_STS_SUCCESS;
52 
53     -- data is required
54     IF (p_rmpv_rec.rgp_id = OKC_API.G_MISS_NUM OR
55         p_rmpv_rec.rgp_id IS NULL)
56     THEN
57       OKC_API.set_message(
58         p_app_name     => G_APP_NAME,
59         p_msg_name     => G_REQUIRED_VALUE,
60         p_token1       => G_COL_NAME_TOKEN,
61         p_token1_value => 'rgp_id');
62 
63       -- notify caller of an error
64       x_return_status := OKC_API.G_RET_STS_ERROR;
65 
66       -- halt validation
67       RAISE G_EXCEPTION_HALT_VALIDATION;
68     END IF;
69 
70     -- enforce foreign key
71     OPEN  l_rgpv_csr;
72     FETCH l_rgpv_csr INTO l_dummy_var;
73     CLOSE l_rgpv_csr;
74 
75     -- if l_dummy_var still set to default, data was not found
76     IF (l_dummy_var = '?') THEN
77       OKC_API.set_message(
78         p_app_name      => G_APP_NAME,
79         p_msg_name      => G_NO_PARENT_RECORD,
80         p_token1        => G_COL_NAME_TOKEN,
81         p_token1_value  => 'rgp_id',
82         p_token2        => G_CHILD_TABLE_TOKEN,
83         p_token2_value  => G_VIEW,
84         p_token3        => G_PARENT_TABLE_TOKEN,
85         p_token3_value  => 'OKC_RULE_GROUPS_V');
86       -- notify caller of an error
87       x_return_status := OKC_API.G_RET_STS_ERROR;
88     END IF;
89   EXCEPTION
90   WHEN G_EXCEPTION_HALT_VALIDATION THEN
91     -- no processing necessary; validation can continue with next column
92     NULL;
93   WHEN OTHERS THEN
94     -- store SQL error message on message stack
95     OKC_API.SET_MESSAGE(
96       p_app_name        => g_app_name,
97       p_msg_name        => g_unexpected_error,
98       p_token1	         => g_sqlcode_token,
99       p_token1_value    => sqlcode,
100       p_token2          => g_sqlerrm_token,
101       p_token2_value    => sqlerrm);
102     -- notify caller of an error as UNEXPETED error
103     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
104     -- verify that cursor was closed
105     IF l_rgpv_csr%ISOPEN THEN
106       CLOSE l_rgpv_csr;
107     END IF;
108   END validate_rgp_id;
109 --
110   -- Start of comments
111   --
112   -- Procedure Name  : validate_rrd_id
113   -- Description     :
114   -- Business Rules  :
115   -- Parameters      :
116   -- Version         : 1.0
117   -- End of comments
118 
119   PROCEDURE validate_rrd_id(
120     x_return_status OUT NOCOPY   VARCHAR2,
121     p_rmpv_rec      IN    rmpv_rec_type
122   ) IS
123     l_dummy_var   VARCHAR2(1) := '?';
124     CURSOR l_rrdv_csr IS
125       SELECT 'x'
126         FROM OKC_RG_ROLE_DEFS rrdv
127        WHERE rrdv.SRE_ID IN
128              (SELECT srev.ID
129                 FROM OKC_SUBCLASS_ROLES srev,
130                      OKC_SUBCLASSES_B scsv,
131                      OKC_K_HEADERS_B chrv
132                WHERE srev.SCS_CODE = scsv.CODE
133                  AND scsv.CODE     = chrv.SCS_CODE
134                  AND chrv.ID       = p_rmpv_rec.dnz_chr_id)
135          AND rrdv.ID   = p_rmpv_rec.RRD_ID;
136   BEGIN
137     -- initialize return status
138     x_return_status := OKC_API.G_RET_STS_SUCCESS;
139 
140     -- data is required
141     IF (p_rmpv_rec.rrd_id = OKC_API.G_MISS_NUM OR
142         p_rmpv_rec.rrd_id IS NULL)
143     THEN
144       OKC_API.set_message(
145         p_app_name     => G_APP_NAME,
146         p_msg_name     => G_REQUIRED_VALUE,
147         p_token1       => G_COL_NAME_TOKEN,
148         p_token1_value => 'rrd_id'
149       );
150       -- notify caller of an error
151       x_return_status := OKC_API.G_RET_STS_ERROR;
152 
153       -- halt validation
154       RAISE G_EXCEPTION_HALT_VALIDATION;
155     END IF;
156 
157     -- enforce foreign key
158     OPEN  l_rrdv_csr;
159     FETCH l_rrdv_csr INTO l_dummy_var;
160     CLOSE l_rrdv_csr;
161 
162     -- if l_dummy_var still set to default, data was not found
163     IF (l_dummy_var = '?') THEN
164       OKC_API.set_message(
165         p_app_name      => G_APP_NAME,
166         p_msg_name      => G_NO_PARENT_RECORD,
167         p_token1        => G_COL_NAME_TOKEN,
168         p_token1_value	=> 'rrd_id',
169         p_token2        => G_CHILD_TABLE_TOKEN,
170         p_token2_value	=> G_VIEW,
171         p_token3        => G_PARENT_TABLE_TOKEN,
172         p_token3_value	=> 'OKC_RG_MODE_DEFS_V');
173 
174       -- notify caller of an error
175       x_return_status := OKC_API.G_RET_STS_ERROR;
176     END IF;
177   EXCEPTION
178   WHEN G_EXCEPTION_HALT_VALIDATION THEN
179     -- no processing necessary; validation can continue with next column
180     NULL;
181   WHEN OTHERS THEN
182     -- store SQL error message on message stack
183     OKC_API.SET_MESSAGE(
184       p_app_name        => g_app_name,
185       p_msg_name        => g_unexpected_error,
186       p_token1	         => g_sqlcode_token,
187       p_token1_value    => sqlcode,
188       p_token2          => g_sqlerrm_token,
189       p_token2_value    => sqlerrm);
190     -- notify caller of an error as UNEXPETED error
191     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
192     -- verify that cursor was closed
193     IF l_rrdv_csr%ISOPEN THEN
194       CLOSE l_rrdv_csr;
195     END IF;
196   END validate_rrd_id;
197 --
198   -- Start of comments
199   --
200   -- Procedure Name  : validate_cpl_id
201   -- Description     :
202   -- Business Rules  :
203   -- Parameters      :
204   -- Version         : 1.0
205   -- End of comments
206 
207   PROCEDURE validate_cpl_id(
208     x_return_status OUT NOCOPY   VARCHAR2,
209     p_rmpv_rec      IN    rmpv_rec_type
210   ) IS
211     l_dummy_var   VARCHAR2(1) := '?';
212     CURSOR l_cplv_csr IS
213 /*      SELECT 'x'
214         FROM OKC_K_PARTY_ROLES_V cplv
215        WHERE cplv.RLE_CODE IN
216              (SELECT srev.RLE_CODE
217                 FROM OKC_SUBCLASS_ROLES_B srev,
218                      OKC_SUBCLASSES_B scsv,
219                      OKC_K_HEADERS_B chrv
220                WHERE srev.SCS_CODE = scsv.CODE
221                  AND scsv.CODE     = chrv.SCS_CODE
222                  AND chrv.ID       = p_rmpv_rec.dnz_chr_id)
223          AND cplv.ID = p_rmpv_rec.CPL_ID;
224 */
225     select 'x'
226     from 	okc_k_party_roles_b CPL
227     where CPL.id = p_rmpv_rec.cpl_id
228     and CPL.rle_code in (
229       select SRE.rle_code
230       from okc_rg_role_defs RRD
231 	, okc_subclass_roles SRE
232 	, okc_k_headers_b KHD
233       where RRD.id = p_rmpv_rec.rrd_id
234         and SRE.id = RRD.sre_id
235 	and KHD.id = p_rmpv_rec.dnz_chr_id
236 	and SRE.SCS_CODE = KHD.SCS_CODE)
237 ;
238 
239   BEGIN
240     -- initialize return status
241     x_return_status := OKC_API.G_RET_STS_SUCCESS;
242 
243     -- check for datat
244     IF (p_rmpv_rec.cpl_id <> OKC_API.G_MISS_NUM OR
245         p_rmpv_rec.cpl_id IS NOT NULL)
246     THEN
247 
248       -- enforce foreign key
249       OPEN  l_cplv_csr;
250       FETCH l_cplv_csr INTO l_dummy_var;
251       CLOSE l_cplv_csr;
252 
253       -- if l_dummy_var still set to default, data was not found
254       IF (l_dummy_var = '?') THEN
255         OKC_API.set_message(
256           p_app_name      => G_APP_NAME,
257           p_msg_name      => G_NO_PARENT_RECORD,
258           p_token1        => G_COL_NAME_TOKEN,
259           p_token1_value  => 'cpl_id',
260           p_token2        => G_CHILD_TABLE_TOKEN,
261           p_token2_value  => G_VIEW,
262           p_token3        => G_PARENT_TABLE_TOKEN,
263           p_token3_value  => 'OKC_K_PARTY_ROLES_V');
264 
265         -- notify caller of an error
266         x_return_status := OKC_API.G_RET_STS_ERROR;
267       END IF;
268     END IF;
269   EXCEPTION
270   WHEN G_EXCEPTION_HALT_VALIDATION THEN
271     -- no processing necessary; validation can continue with next column
272     NULL;
273   WHEN OTHERS THEN
274     -- store SQL error message on message stack
275     OKC_API.SET_MESSAGE(
276       p_app_name        => g_app_name,
277       p_msg_name        => g_unexpected_error,
278       p_token1	         => g_sqlcode_token,
279       p_token1_value    => sqlcode,
280       p_token2          => g_sqlerrm_token,
281       p_token2_value    => sqlerrm);
282     -- notify caller of an error as UNEXPETED error
283     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
284     -- verify that cursor was closed
285     IF l_cplv_csr%ISOPEN THEN
286       CLOSE l_cplv_csr;
287     END IF;
288   END validate_cpl_id;
289 --
290   -- Start of comments
291   --
292   -- Procedure Name  : validate_dnz_chr_id
293   -- Description     :
294   -- Business Rules  :
295   -- Parameters      :
296   -- Version         : 1.0
297   -- End of comments
298 
299   PROCEDURE validate_dnz_chr_id(
300     x_return_status OUT NOCOPY   VARCHAR2,
301     p_rmpv_rec      IN    rmpv_rec_type
302   ) IS
303     l_dummy_var   VARCHAR2(1) := '?';
304     CURSOR l_chrv_csr IS
305       SELECT 'x'
306         FROM OKC_K_HEADERS_B chrv
307        WHERE chrv.ID = p_rmpv_rec.DNZ_CHR_ID;
308   BEGIN
309     -- initialize return status
310     x_return_status := OKC_API.G_RET_STS_SUCCESS;
311 
312     -- data required
313     IF (p_rmpv_rec.dnz_chr_id = OKC_API.G_MISS_NUM OR
314         p_rmpv_rec.dnz_chr_id IS NULL) THEN
315 
316       OKC_API.set_message(
317         p_app_name     => G_APP_NAME,
318         p_msg_name     => G_REQUIRED_VALUE,
319         p_token1       => G_COL_NAME_TOKEN,
320         p_token1_value => 'dnz_chr_id');
321 
322       -- notify caller of an error
323       x_return_status := OKC_API.G_RET_STS_ERROR;
324 
325       -- halt validation
326       RAISE G_EXCEPTION_HALT_VALIDATION;
327     END IF;
328 
329     -- enforce foreign key
330     OPEN  l_chrv_csr;
331     FETCH l_chrv_csr INTO l_dummy_var;
332     CLOSE l_chrv_csr;
333 
334     -- if l_dummy_var still set to default, data was not found
335     IF (l_dummy_var = '?') THEN
336       OKC_API.set_message(
337         p_app_name      => G_APP_NAME,
338         p_msg_name      => G_NO_PARENT_RECORD,
339         p_token1        => G_COL_NAME_TOKEN,
340         p_token1_value  => 'dnz_chr_id',
341         p_token2        => G_CHILD_TABLE_TOKEN,
342         p_token2_value  => G_VIEW,
343         p_token3        => G_PARENT_TABLE_TOKEN,
344         p_token3_value  => 'OKC_K_HEADERS_V');
345 
346       -- notify caller of an error
347       x_return_status := OKC_API.G_RET_STS_ERROR;
348     END IF;
349   EXCEPTION
350   WHEN G_EXCEPTION_HALT_VALIDATION THEN
351     -- no processing necessary; validation can continue with next column
352     NULL;
353   WHEN OTHERS THEN
354     -- store SQL error message on message stack
355     OKC_API.SET_MESSAGE(
356       p_app_name        => g_app_name,
357       p_msg_name        => g_unexpected_error,
358       p_token1	        => g_sqlcode_token,
359       p_token1_value    => sqlcode,
360       p_token2          => g_sqlerrm_token,
361       p_token2_value    => sqlerrm);
362     -- notify caller of an error as UNEXPETED error
363     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
364     -- verify that cursor was closed
365     IF l_chrv_csr%ISOPEN THEN
366       CLOSE l_chrv_csr;
367     END IF;
368   END validate_dnz_chr_id;
369 --
370   -- Start of comments
371   --
372   -- Procedure Name  : validate_attributes
373   -- Description     :
374   -- Business Rules  :
375   -- Parameters      :
376   -- Version         : 1.0
377   -- End of comments
378 
382     l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
379   FUNCTION Validate_Attributes (
380     p_rmpv_rec IN  rmpv_rec_type
381   ) RETURN VARCHAR2 IS
383     x_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
384   BEGIN
385     -- call each column-level validation
386 
387     validate_rgp_id(
388       x_return_status => l_return_status,
389       p_rmpv_rec      => p_rmpv_rec);
390 
391     -- store the highest degree of error
392     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
393       IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
394         x_return_status := l_return_status;
395       END IF;
396     END IF;
397 --
398     validate_rrd_id(
399       x_return_status => l_return_status,
400       p_rmpv_rec      => p_rmpv_rec);
401 
402     -- store the highest degree of error
403     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
404       IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
405         x_return_status := l_return_status;
406       END IF;
407     END IF;
408 --
409     validate_cpl_id(
410       x_return_status => l_return_status,
411       p_rmpv_rec      => p_rmpv_rec);
412 
413     -- store the highest degree of error
414     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
415       IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
416         x_return_status := l_return_status;
417       END IF;
418     END IF;
419 --
420     validate_dnz_chr_id(
421       x_return_status => l_return_status,
422       p_rmpv_rec      => p_rmpv_rec);
423 
424     -- store the highest degree of error
425     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
426       IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
427         x_return_status := l_return_status;
428       END IF;
429     END IF;
430 --
431     -- return status to caller
432     RETURN(x_return_status);
433 
434   EXCEPTION
435   WHEN OTHERS THEN
436     -- store SQL error message on message stack for caller
437     OKC_API.SET_MESSAGE
438       (p_app_name     => G_APP_NAME,
439        p_msg_name     => G_UNEXPECTED_ERROR,
440        p_token1       => G_SQLCODE_TOKEN,
441        p_token1_value => SQLCODE,
442        p_token2       => G_SQLERRM_TOKEN,
443        p_token2_value => SQLERRM);
444 
445     -- notify caller of an UNEXPECTED error
446     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
447 
448     -- return status to caller
449     RETURN x_return_status;
450 
451   END Validate_Attributes;
452 
453 /***********************  END HAND-CODED  **************************/
454 
455   ---------------------------------------------------------------------------
456   -- FUNCTION get_seq_id
457   ---------------------------------------------------------------------------
458   FUNCTION get_seq_id RETURN NUMBER IS
459   BEGIN
460     RETURN(okc_p_util.raw_to_number(sys_guid()));
461   END get_seq_id;
462 
463   ---------------------------------------------------------------------------
464   -- PROCEDURE qc
465   ---------------------------------------------------------------------------
466   PROCEDURE qc IS
467   BEGIN
468     null;
469   END qc;
470 
471   ---------------------------------------------------------------------------
472   -- PROCEDURE change_version
473   ---------------------------------------------------------------------------
474   PROCEDURE change_version IS
475   BEGIN
476     null;
477   END change_version;
478 
479   ---------------------------------------------------------------------------
480   -- PROCEDURE api_copy
481   ---------------------------------------------------------------------------
482   PROCEDURE api_copy IS
483   BEGIN
484     null;
485   END api_copy;
486 
487   ---------------------------------------------------------------------------
488   -- FUNCTION get_rec for: OKC_RG_PARTY_ROLES
489   ---------------------------------------------------------------------------
490   FUNCTION get_rec (
491     p_rpr_rec                      IN rpr_rec_type,
492     x_no_data_found                OUT NOCOPY BOOLEAN
493   ) RETURN rpr_rec_type IS
494     CURSOR rpr_pk_csr (p_id                 IN NUMBER) IS
495     SELECT
496             ID,
497             RGP_ID,
498             RRD_ID,
499             CPL_ID,
500             DNZ_CHR_ID,
501             OBJECT_VERSION_NUMBER,
502             CREATED_BY,
503             CREATION_DATE,
504             LAST_UPDATED_BY,
505             LAST_UPDATE_DATE,
506             LAST_UPDATE_LOGIN
507       FROM Okc_Rg_Party_Roles
508      WHERE okc_rg_party_roles.id = p_id;
509     l_rpr_pk                       rpr_pk_csr%ROWTYPE;
510     l_rpr_rec                      rpr_rec_type;
511   BEGIN
512     x_no_data_found := TRUE;
513     -- Get current database values
514     OPEN rpr_pk_csr (p_rpr_rec.id);
515     FETCH rpr_pk_csr INTO
516               l_rpr_rec.ID,
517               l_rpr_rec.RGP_ID,
518               l_rpr_rec.RRD_ID,
519               l_rpr_rec.CPL_ID,
520               l_rpr_rec.DNZ_CHR_ID,
521               l_rpr_rec.OBJECT_VERSION_NUMBER,
522               l_rpr_rec.CREATED_BY,
523               l_rpr_rec.CREATION_DATE,
524               l_rpr_rec.LAST_UPDATED_BY,
525               l_rpr_rec.LAST_UPDATE_DATE,
526               l_rpr_rec.LAST_UPDATE_LOGIN;
527     x_no_data_found := rpr_pk_csr%NOTFOUND;
528     CLOSE rpr_pk_csr;
529     RETURN(l_rpr_rec);
530   END get_rec;
531 
532   FUNCTION get_rec (
533     p_rpr_rec                      IN rpr_rec_type
534   ) RETURN rpr_rec_type IS
535     l_row_notfound                 BOOLEAN := TRUE;
536   BEGIN
537     RETURN(get_rec(p_rpr_rec, l_row_notfound));
538   END get_rec;
539   ---------------------------------------------------------------------------
540   -- FUNCTION get_rec for: OKC_RG_PARTY_ROLES_V
541   ---------------------------------------------------------------------------
542   FUNCTION get_rec (
543     p_rmpv_rec                     IN rmpv_rec_type,
544     x_no_data_found                OUT NOCOPY BOOLEAN
545   ) RETURN rmpv_rec_type IS
546     CURSOR okc_rprv_pk_csr (p_id                 IN NUMBER) IS
547     SELECT
548             ID,
549             RGP_ID,
550             RRD_ID,
551             CPL_ID,
552             DNZ_CHR_ID,
553             OBJECT_VERSION_NUMBER,
554             CREATED_BY,
555             CREATION_DATE,
556             LAST_UPDATED_BY,
557             LAST_UPDATE_DATE,
558             LAST_UPDATE_LOGIN
559       FROM Okc_Rg_Party_Roles
560      WHERE okc_rg_party_roles.id = p_id;
561     l_okc_rprv_pk                  okc_rprv_pk_csr%ROWTYPE;
562     l_rmpv_rec                     rmpv_rec_type;
563   BEGIN
564     x_no_data_found := TRUE;
565     -- Get current database values
566     OPEN okc_rprv_pk_csr (p_rmpv_rec.id);
567     FETCH okc_rprv_pk_csr INTO
568               l_rmpv_rec.ID,
569               l_rmpv_rec.RGP_ID,
570               l_rmpv_rec.RRD_ID,
571               l_rmpv_rec.CPL_ID,
572               l_rmpv_rec.DNZ_CHR_ID,
573               l_rmpv_rec.OBJECT_VERSION_NUMBER,
574               l_rmpv_rec.CREATED_BY,
575               l_rmpv_rec.CREATION_DATE,
576               l_rmpv_rec.LAST_UPDATED_BY,
577               l_rmpv_rec.LAST_UPDATE_DATE,
578               l_rmpv_rec.LAST_UPDATE_LOGIN;
579     x_no_data_found := okc_rprv_pk_csr%NOTFOUND;
580     CLOSE okc_rprv_pk_csr;
581     RETURN(l_rmpv_rec);
582   END get_rec;
583 
584   FUNCTION get_rec (
585     p_rmpv_rec                     IN rmpv_rec_type
586   ) RETURN rmpv_rec_type IS
587     l_row_notfound                 BOOLEAN := TRUE;
588   BEGIN
589     RETURN(get_rec(p_rmpv_rec, l_row_notfound));
590   END get_rec;
591 
592   ----------------------------------------------------------
593   -- FUNCTION null_out_defaults for: OKC_RG_PARTY_ROLES_V --
594   ----------------------------------------------------------
595   FUNCTION null_out_defaults (
596     p_rmpv_rec	IN rmpv_rec_type
597   ) RETURN rmpv_rec_type IS
598     l_rmpv_rec	rmpv_rec_type := p_rmpv_rec;
599   BEGIN
600     IF (l_rmpv_rec.rgp_id = OKC_API.G_MISS_NUM) THEN
601       l_rmpv_rec.rgp_id := NULL;
602     END IF;
603     IF (l_rmpv_rec.rrd_id = OKC_API.G_MISS_NUM) THEN
604       l_rmpv_rec.rrd_id := NULL;
605     END IF;
606     IF (l_rmpv_rec.cpl_id = OKC_API.G_MISS_NUM) THEN
607       l_rmpv_rec.cpl_id := NULL;
608     END IF;
609     IF (l_rmpv_rec.dnz_chr_id = OKC_API.G_MISS_NUM) THEN
610       l_rmpv_rec.dnz_chr_id := NULL;
611     END IF;
612     IF (l_rmpv_rec.object_version_number = OKC_API.G_MISS_NUM) THEN
613       l_rmpv_rec.object_version_number := NULL;
614     END IF;
615     IF (l_rmpv_rec.created_by = OKC_API.G_MISS_NUM) THEN
616       l_rmpv_rec.created_by := NULL;
617     END IF;
618     IF (l_rmpv_rec.creation_date = OKC_API.G_MISS_DATE) THEN
619       l_rmpv_rec.creation_date := NULL;
620     END IF;
621     IF (l_rmpv_rec.last_updated_by = OKC_API.G_MISS_NUM) THEN
622       l_rmpv_rec.last_updated_by := NULL;
623     END IF;
624     IF (l_rmpv_rec.last_update_date = OKC_API.G_MISS_DATE) THEN
625       l_rmpv_rec.last_update_date := NULL;
626     END IF;
627     IF (l_rmpv_rec.last_update_login = OKC_API.G_MISS_NUM) THEN
628       l_rmpv_rec.last_update_login := NULL;
629     END IF;
630     RETURN(l_rmpv_rec);
631   END null_out_defaults;
632   ---------------------------------------------------------------------------
633   -- PROCEDURE Validate_Attributes
634   ---------------------------------------------------------------------------
635   --------------------------------------------------
636   -- Validate_Attributes for:OKC_RG_PARTY_ROLES_V --
637   --------------------------------------------------
638 /* commenting out nocopy generated code in favor of hand-coded procedure
639   FUNCTION Validate_Attributes (
640     p_rmpv_rec IN  rmpv_rec_type
641   ) RETURN VARCHAR2 IS
642     l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
643   BEGIN
644     IF p_rmpv_rec.id = OKC_API.G_MISS_NUM OR
645        p_rmpv_rec.id IS NULL
646     THEN
647       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'id');
648       l_return_status := OKC_API.G_RET_STS_ERROR;
649     ELSIF p_rmpv_rec.rgp_id = OKC_API.G_MISS_NUM OR
650           p_rmpv_rec.rgp_id IS NULL
651     THEN
652       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'rgp_id');
653       l_return_status := OKC_API.G_RET_STS_ERROR;
654     ELSIF p_rmpv_rec.rrd_id = OKC_API.G_MISS_NUM OR
655           p_rmpv_rec.rrd_id IS NULL
656     THEN
657       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'rrd_id');
658       l_return_status := OKC_API.G_RET_STS_ERROR;
659     ELSIF p_rmpv_rec.dnz_chr_id = OKC_API.G_MISS_NUM OR
660           p_rmpv_rec.dnz_chr_id IS NULL
661     THEN
662       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'dnz_chr_id');
663       l_return_status := OKC_API.G_RET_STS_ERROR;
664     ELSIF p_rmpv_rec.object_version_number = OKC_API.G_MISS_NUM OR
665           p_rmpv_rec.object_version_number IS NULL
666     THEN
670     RETURN(l_return_status);
667       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'object_version_number');
668       l_return_status := OKC_API.G_RET_STS_ERROR;
669     END IF;
671   END Validate_Attributes;
672 */
673   ---------------------------------------------------------------------------
674   -- PROCEDURE Validate_Record
675   ---------------------------------------------------------------------------
676   ----------------------------------------------
677   -- Validate_Record for:OKC_RG_PARTY_ROLES_V --
678   ----------------------------------------------
679   FUNCTION Validate_Record (
680     p_rmpv_rec IN rmpv_rec_type
681   ) RETURN VARCHAR2 IS
682     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
683   BEGIN
684     RETURN (l_return_status);
685   END Validate_Record;
686 
687   ---------------------------------------------------------------------------
688   -- PROCEDURE Migrate
689   ---------------------------------------------------------------------------
690   PROCEDURE migrate (
691     p_from	IN rmpv_rec_type,
692     p_to	IN OUT NOCOPY rpr_rec_type
693   ) IS
694   BEGIN
695     p_to.id := p_from.id;
696     p_to.rgp_id := p_from.rgp_id;
697     p_to.rrd_id := p_from.rrd_id;
698     p_to.cpl_id := p_from.cpl_id;
699     p_to.dnz_chr_id := p_from.dnz_chr_id;
700     p_to.object_version_number := p_from.object_version_number;
701     p_to.created_by := p_from.created_by;
702     p_to.creation_date := p_from.creation_date;
703     p_to.last_updated_by := p_from.last_updated_by;
704     p_to.last_update_date := p_from.last_update_date;
705     p_to.last_update_login := p_from.last_update_login;
706   END migrate;
707   PROCEDURE migrate (
708     p_from	IN rpr_rec_type,
709     p_to	IN OUT NOCOPY rmpv_rec_type
710   ) IS
711   BEGIN
712     p_to.id := p_from.id;
713     p_to.rgp_id := p_from.rgp_id;
714     p_to.rrd_id := p_from.rrd_id;
715     p_to.cpl_id := p_from.cpl_id;
716     p_to.dnz_chr_id := p_from.dnz_chr_id;
717     p_to.object_version_number := p_from.object_version_number;
718     p_to.created_by := p_from.created_by;
719     p_to.creation_date := p_from.creation_date;
720     p_to.last_updated_by := p_from.last_updated_by;
721     p_to.last_update_date := p_from.last_update_date;
722     p_to.last_update_login := p_from.last_update_login;
723   END migrate;
724 
725   ---------------------------------------------------------------------------
726   -- PROCEDURE validate_row
727   ---------------------------------------------------------------------------
728   -------------------------------------------
729   -- validate_row for:OKC_RG_PARTY_ROLES_V --
730   -------------------------------------------
731   PROCEDURE validate_row(
732     p_api_version                  IN NUMBER,
733     p_init_msg_list                IN VARCHAR2,
734     x_return_status                OUT NOCOPY VARCHAR2,
735     x_msg_count                    OUT NOCOPY NUMBER,
736     x_msg_data                     OUT NOCOPY VARCHAR2,
737     p_rmpv_rec                     IN rmpv_rec_type) IS
738 
739     l_api_version                 CONSTANT NUMBER := 1;
740     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
741     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
742     l_rmpv_rec                     rmpv_rec_type := p_rmpv_rec;
743     l_rpr_rec                      rpr_rec_type;
744   BEGIN
745     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
746                                               G_PKG_NAME,
747                                               p_init_msg_list,
748                                               l_api_version,
749                                               p_api_version,
750                                               '_PVT',
751                                               x_return_status);
752     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
753       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
754     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
755       RAISE OKC_API.G_EXCEPTION_ERROR;
756     END IF;
757     --- Validate all non-missing attributes (Item Level Validation)
758     l_return_status := Validate_Attributes(l_rmpv_rec);
759     --- If any errors happen abort API
760     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
761       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
762     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
763       RAISE OKC_API.G_EXCEPTION_ERROR;
764     END IF;
765     l_return_status := Validate_Record(l_rmpv_rec);
766     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
767       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
768     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
769       RAISE OKC_API.G_EXCEPTION_ERROR;
770     END IF;
771     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
772   EXCEPTION
773     WHEN OKC_API.G_EXCEPTION_ERROR THEN
774       x_return_status := OKC_API.HANDLE_EXCEPTIONS
775       (
776         l_api_name,
777         G_PKG_NAME,
778         'OKC_API.G_RET_STS_ERROR',
779         x_msg_count,
780         x_msg_data,
781         '_PVT'
782       );
783     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
784       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
785       (
786         l_api_name,
787         G_PKG_NAME,
788         'OKC_API.G_RET_STS_UNEXP_ERROR',
789         x_msg_count,
790         x_msg_data,
791         '_PVT'
792       );
793     WHEN OTHERS THEN
794       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
795       (
796         l_api_name,
797         G_PKG_NAME,
798         'OTHERS',
799         x_msg_count,
803   END validate_row;
800         x_msg_data,
801         '_PVT'
802       );
804   ------------------------------------------
805   -- PL/SQL TBL validate_row for:RMPV_TBL --
806   ------------------------------------------
807   PROCEDURE validate_row(
808     p_api_version                  IN NUMBER,
809     p_init_msg_list                IN VARCHAR2,
810     x_return_status                OUT NOCOPY VARCHAR2,
811     x_msg_count                    OUT NOCOPY NUMBER,
812     x_msg_data                     OUT NOCOPY VARCHAR2,
813     p_rmpv_tbl                     IN rmpv_tbl_type) IS
814 
815     l_api_version                 CONSTANT NUMBER := 1;
816     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
817     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
818     i                              NUMBER := 0;
819   BEGIN
820     OKC_API.init_msg_list(p_init_msg_list);
821     -- Make sure PL/SQL table has records in it before passing
822     IF (p_rmpv_tbl.COUNT > 0) THEN
823       i := p_rmpv_tbl.FIRST;
824       LOOP
825         validate_row (
826           p_api_version                  => p_api_version,
827           p_init_msg_list                => OKC_API.G_FALSE,
828           x_return_status                => x_return_status,
829           x_msg_count                    => x_msg_count,
830           x_msg_data                     => x_msg_data,
831           p_rmpv_rec                     => p_rmpv_tbl(i));
832         EXIT WHEN (i = p_rmpv_tbl.LAST);
833         i := p_rmpv_tbl.NEXT(i);
834       END LOOP;
835     END IF;
836   EXCEPTION
837     WHEN OKC_API.G_EXCEPTION_ERROR THEN
838       x_return_status := OKC_API.HANDLE_EXCEPTIONS
839       (
840         l_api_name,
841         G_PKG_NAME,
842         'OKC_API.G_RET_STS_ERROR',
843         x_msg_count,
844         x_msg_data,
845         '_PVT'
846       );
847     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
848       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
849       (
850         l_api_name,
851         G_PKG_NAME,
852         'OKC_API.G_RET_STS_UNEXP_ERROR',
853         x_msg_count,
854         x_msg_data,
855         '_PVT'
856       );
857     WHEN OTHERS THEN
858       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
859       (
860         l_api_name,
861         G_PKG_NAME,
862         'OTHERS',
863         x_msg_count,
864         x_msg_data,
865         '_PVT'
866       );
867   END validate_row;
868 
869   ---------------------------------------------------------------------------
870   -- PROCEDURE insert_row
871   ---------------------------------------------------------------------------
872   ---------------------------------------
873   -- insert_row for:OKC_RG_PARTY_ROLES --
874   ---------------------------------------
875   PROCEDURE insert_row(
876     p_init_msg_list                IN VARCHAR2,
877     x_return_status                OUT NOCOPY VARCHAR2,
878     x_msg_count                    OUT NOCOPY NUMBER,
879     x_msg_data                     OUT NOCOPY VARCHAR2,
880     p_rpr_rec                      IN rpr_rec_type,
881     x_rpr_rec                      OUT NOCOPY rpr_rec_type) IS
882 
883     l_api_version                 CONSTANT NUMBER := 1;
884     l_api_name                     CONSTANT VARCHAR2(30) := 'ROLES_insert_row';
885     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
886     l_rpr_rec                      rpr_rec_type := p_rpr_rec;
887     l_def_rpr_rec                  rpr_rec_type;
888     -------------------------------------------
889     -- Set_Attributes for:OKC_RG_PARTY_ROLES --
890     -------------------------------------------
891     FUNCTION Set_Attributes (
892       p_rpr_rec IN  rpr_rec_type,
893       x_rpr_rec OUT NOCOPY rpr_rec_type
894     ) RETURN VARCHAR2 IS
895       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
896     BEGIN
897       x_rpr_rec := p_rpr_rec;
898       RETURN(l_return_status);
899     END Set_Attributes;
900   BEGIN
901     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
902                                               p_init_msg_list,
903                                               '_PVT',
904                                               x_return_status);
905     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
906       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
907     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
908       RAISE OKC_API.G_EXCEPTION_ERROR;
909     END IF;
910     --- Setting item attributes
911     l_return_status := Set_Attributes(
912       p_rpr_rec,                         -- IN
913       l_rpr_rec);                        -- OUT
914     --- If any errors happen abort API
915     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
916       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
917     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
918       RAISE OKC_API.G_EXCEPTION_ERROR;
919     END IF;
920     INSERT INTO OKC_RG_PARTY_ROLES(
921         id,
922         rgp_id,
923         rrd_id,
924         cpl_id,
925         dnz_chr_id,
926         object_version_number,
927         created_by,
928         creation_date,
929         last_updated_by,
930         last_update_date,
931         last_update_login)
932       VALUES (
933         l_rpr_rec.id,
934         l_rpr_rec.rgp_id,
935         l_rpr_rec.rrd_id,
936         l_rpr_rec.cpl_id,
937         l_rpr_rec.dnz_chr_id,
938         l_rpr_rec.object_version_number,
939         l_rpr_rec.created_by,
940         l_rpr_rec.creation_date,
944     -- Set OUT values
941         l_rpr_rec.last_updated_by,
942         l_rpr_rec.last_update_date,
943         l_rpr_rec.last_update_login);
945     x_rpr_rec := l_rpr_rec;
946     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
947   EXCEPTION
948     WHEN OKC_API.G_EXCEPTION_ERROR THEN
949       x_return_status := OKC_API.HANDLE_EXCEPTIONS
950       (
951         l_api_name,
952         G_PKG_NAME,
953         'OKC_API.G_RET_STS_ERROR',
954         x_msg_count,
955         x_msg_data,
956         '_PVT'
957       );
958     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
959       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
960       (
961         l_api_name,
962         G_PKG_NAME,
963         'OKC_API.G_RET_STS_UNEXP_ERROR',
964         x_msg_count,
965         x_msg_data,
966         '_PVT'
967       );
968     WHEN OTHERS THEN
969       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
970       (
971         l_api_name,
972         G_PKG_NAME,
973         'OTHERS',
974         x_msg_count,
975         x_msg_data,
976         '_PVT'
977       );
978   END insert_row;
979   -----------------------------------------
980   -- insert_row for:OKC_RG_PARTY_ROLES_V --
981   -----------------------------------------
982   PROCEDURE insert_row(
983     p_api_version                  IN NUMBER,
984     p_init_msg_list                IN VARCHAR2,
985     x_return_status                OUT NOCOPY VARCHAR2,
986     x_msg_count                    OUT NOCOPY NUMBER,
987     x_msg_data                     OUT NOCOPY VARCHAR2,
988     p_rmpv_rec                     IN rmpv_rec_type,
989     x_rmpv_rec                     OUT NOCOPY rmpv_rec_type) IS
990 
991     l_api_version                 CONSTANT NUMBER := 1;
992     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
993     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
994     l_rmpv_rec                     rmpv_rec_type;
995     l_def_rmpv_rec                 rmpv_rec_type;
996     l_rpr_rec                      rpr_rec_type;
997     lx_rpr_rec                     rpr_rec_type;
998     -------------------------------
999     -- FUNCTION fill_who_columns --
1000     -------------------------------
1001     FUNCTION fill_who_columns (
1002       p_rmpv_rec	IN rmpv_rec_type
1003     ) RETURN rmpv_rec_type IS
1004       l_rmpv_rec	rmpv_rec_type := p_rmpv_rec;
1005     BEGIN
1006       l_rmpv_rec.CREATION_DATE := SYSDATE;
1007       l_rmpv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
1008       l_rmpv_rec.LAST_UPDATE_DATE := SYSDATE;
1009       l_rmpv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1010       l_rmpv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
1011       RETURN(l_rmpv_rec);
1012     END fill_who_columns;
1013     ---------------------------------------------
1014     -- Set_Attributes for:OKC_RG_PARTY_ROLES_V --
1015     ---------------------------------------------
1016     FUNCTION Set_Attributes (
1017       p_rmpv_rec IN  rmpv_rec_type,
1018       x_rmpv_rec OUT NOCOPY rmpv_rec_type
1019     ) RETURN VARCHAR2 IS
1020       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1021     BEGIN
1022       x_rmpv_rec := p_rmpv_rec;
1023       x_rmpv_rec.OBJECT_VERSION_NUMBER := 1;
1024       RETURN(l_return_status);
1025     END Set_Attributes;
1026   BEGIN
1027     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1028                                               G_PKG_NAME,
1029                                               p_init_msg_list,
1030                                               l_api_version,
1031                                               p_api_version,
1032                                               '_PVT',
1033                                               x_return_status);
1034     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1035       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1036     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1037       RAISE OKC_API.G_EXCEPTION_ERROR;
1038     END IF;
1039     l_rmpv_rec := null_out_defaults(p_rmpv_rec);
1040     -- Set primary key value
1041     l_rmpv_rec.ID := get_seq_id;
1042     --- Setting item attributes
1043     l_return_status := Set_Attributes(
1044       l_rmpv_rec,                        -- IN
1045       l_def_rmpv_rec);                   -- OUT
1046     --- If any errors happen abort API
1047     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1048       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1049     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1050       RAISE OKC_API.G_EXCEPTION_ERROR;
1051     END IF;
1052     l_def_rmpv_rec := fill_who_columns(l_def_rmpv_rec);
1053     --- Validate all non-missing attributes (Item Level Validation)
1054     l_return_status := Validate_Attributes(l_def_rmpv_rec);
1055     --- If any errors happen abort API
1056     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1057       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1058     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1059       RAISE OKC_API.G_EXCEPTION_ERROR;
1060     END IF;
1061     l_return_status := Validate_Record(l_def_rmpv_rec);
1062     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1063       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1064     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1065       RAISE OKC_API.G_EXCEPTION_ERROR;
1066     END IF;
1067     --------------------------------------
1068     -- Move VIEW record to "Child" records
1069     --------------------------------------
1070     migrate(l_def_rmpv_rec, l_rpr_rec);
1071     --------------------------------------------
1072     -- Call the INSERT_ROW for each child record
1073     --------------------------------------------
1074     insert_row(
1075       p_init_msg_list,
1076       x_return_status,
1077       x_msg_count,
1078       x_msg_data,
1079       l_rpr_rec,
1080       lx_rpr_rec
1081     );
1082     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1083       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1084     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1085       RAISE OKC_API.G_EXCEPTION_ERROR;
1086     END IF;
1087     migrate(lx_rpr_rec, l_def_rmpv_rec);
1088     -- Set OUT values
1089     x_rmpv_rec := l_def_rmpv_rec;
1090     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1091   EXCEPTION
1092     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1093       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1094       (
1095         l_api_name,
1096         G_PKG_NAME,
1097         'OKC_API.G_RET_STS_ERROR',
1098         x_msg_count,
1099         x_msg_data,
1100         '_PVT'
1101       );
1102     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1103       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1104       (
1105         l_api_name,
1106         G_PKG_NAME,
1107         'OKC_API.G_RET_STS_UNEXP_ERROR',
1108         x_msg_count,
1109         x_msg_data,
1110         '_PVT'
1111       );
1112     WHEN OTHERS THEN
1113       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1114       (
1115         l_api_name,
1116         G_PKG_NAME,
1117         'OTHERS',
1118         x_msg_count,
1119         x_msg_data,
1120         '_PVT'
1121       );
1122   END insert_row;
1123   ----------------------------------------
1124   -- PL/SQL TBL insert_row for:RMPV_TBL --
1125   ----------------------------------------
1126   PROCEDURE insert_row(
1127     p_api_version                  IN NUMBER,
1128     p_init_msg_list                IN VARCHAR2,
1129     x_return_status                OUT NOCOPY VARCHAR2,
1130     x_msg_count                    OUT NOCOPY NUMBER,
1131     x_msg_data                     OUT NOCOPY VARCHAR2,
1132     p_rmpv_tbl                     IN rmpv_tbl_type,
1133     x_rmpv_tbl                     OUT NOCOPY rmpv_tbl_type) IS
1134 
1135     l_api_version                 CONSTANT NUMBER := 1;
1136     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
1137     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1138     i                              NUMBER := 0;
1139   BEGIN
1140     OKC_API.init_msg_list(p_init_msg_list);
1141     -- Make sure PL/SQL table has records in it before passing
1142     IF (p_rmpv_tbl.COUNT > 0) THEN
1143       i := p_rmpv_tbl.FIRST;
1144       LOOP
1145         insert_row (
1146           p_api_version                  => p_api_version,
1147           p_init_msg_list                => OKC_API.G_FALSE,
1148           x_return_status                => x_return_status,
1149           x_msg_count                    => x_msg_count,
1150           x_msg_data                     => x_msg_data,
1151           p_rmpv_rec                     => p_rmpv_tbl(i),
1152           x_rmpv_rec                     => x_rmpv_tbl(i));
1153         EXIT WHEN (i = p_rmpv_tbl.LAST);
1154         i := p_rmpv_tbl.NEXT(i);
1155       END LOOP;
1156     END IF;
1157   EXCEPTION
1158     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1159       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1160       (
1161         l_api_name,
1162         G_PKG_NAME,
1163         'OKC_API.G_RET_STS_ERROR',
1164         x_msg_count,
1165         x_msg_data,
1166         '_PVT'
1167       );
1168     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1169       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1170       (
1171         l_api_name,
1172         G_PKG_NAME,
1173         'OKC_API.G_RET_STS_UNEXP_ERROR',
1174         x_msg_count,
1175         x_msg_data,
1176         '_PVT'
1177       );
1178     WHEN OTHERS THEN
1179       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1180       (
1181         l_api_name,
1182         G_PKG_NAME,
1183         'OTHERS',
1184         x_msg_count,
1185         x_msg_data,
1186         '_PVT'
1187       );
1188   END insert_row;
1189 
1190   ---------------------------------------------------------------------------
1191   -- PROCEDURE lock_row
1192   ---------------------------------------------------------------------------
1193   -------------------------------------
1194   -- lock_row for:OKC_RG_PARTY_ROLES --
1195   -------------------------------------
1196   PROCEDURE lock_row(
1197     p_init_msg_list                IN VARCHAR2,
1198     x_return_status                OUT NOCOPY VARCHAR2,
1199     x_msg_count                    OUT NOCOPY NUMBER,
1200     x_msg_data                     OUT NOCOPY VARCHAR2,
1201     p_rpr_rec                      IN rpr_rec_type) IS
1202 
1203     E_Resource_Busy               EXCEPTION;
1204     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
1205     CURSOR lock_csr (p_rpr_rec IN rpr_rec_type) IS
1206     SELECT OBJECT_VERSION_NUMBER
1207       FROM OKC_RG_PARTY_ROLES
1208      WHERE ID = p_rpr_rec.id
1209        AND OBJECT_VERSION_NUMBER = p_rpr_rec.object_version_number
1210     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
1211 
1212     CURSOR  lchk_csr (p_rpr_rec IN rpr_rec_type) IS
1213     SELECT OBJECT_VERSION_NUMBER
1214       FROM OKC_RG_PARTY_ROLES
1215     WHERE ID = p_rpr_rec.id;
1216     l_api_version                 CONSTANT NUMBER := 1;
1217     l_api_name                     CONSTANT VARCHAR2(30) := 'ROLES_lock_row';
1218     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1219     l_object_version_number       OKC_RG_PARTY_ROLES.OBJECT_VERSION_NUMBER%TYPE;
1220     lc_object_version_number      OKC_RG_PARTY_ROLES.OBJECT_VERSION_NUMBER%TYPE;
1221     l_row_notfound                BOOLEAN := FALSE;
1222     lc_row_notfound               BOOLEAN := FALSE;
1223   BEGIN
1224     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1225                                               p_init_msg_list,
1226                                               '_PVT',
1227                                               x_return_status);
1228     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1229       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1230     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1231       RAISE OKC_API.G_EXCEPTION_ERROR;
1232     END IF;
1233     BEGIN
1234       OPEN lock_csr(p_rpr_rec);
1235       FETCH lock_csr INTO l_object_version_number;
1236       l_row_notfound := lock_csr%NOTFOUND;
1237       CLOSE lock_csr;
1238     EXCEPTION
1239       WHEN E_Resource_Busy THEN
1240         IF (lock_csr%ISOPEN) THEN
1241           CLOSE lock_csr;
1242         END IF;
1243         OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
1244         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
1245     END;
1246 
1247     IF ( l_row_notfound ) THEN
1248       OPEN lchk_csr(p_rpr_rec);
1249       FETCH lchk_csr INTO lc_object_version_number;
1250       lc_row_notfound := lchk_csr%NOTFOUND;
1251       CLOSE lchk_csr;
1252     END IF;
1253     IF (lc_row_notfound) THEN
1254       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
1255       RAISE OKC_API.G_EXCEPTION_ERROR;
1256     ELSIF lc_object_version_number > p_rpr_rec.object_version_number THEN
1257       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1258       RAISE OKC_API.G_EXCEPTION_ERROR;
1259     ELSIF lc_object_version_number <> p_rpr_rec.object_version_number THEN
1260       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1261       RAISE OKC_API.G_EXCEPTION_ERROR;
1262     ELSIF lc_object_version_number = -1 THEN
1263       OKC_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
1264       RAISE OKC_API.G_EXCEPTION_ERROR;
1265     END IF;
1266     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1267   EXCEPTION
1268     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1269       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1270       (
1271         l_api_name,
1272         G_PKG_NAME,
1273         'OKC_API.G_RET_STS_ERROR',
1274         x_msg_count,
1275         x_msg_data,
1276         '_PVT'
1277       );
1278     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1279       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1280       (
1281         l_api_name,
1282         G_PKG_NAME,
1283         'OKC_API.G_RET_STS_UNEXP_ERROR',
1284         x_msg_count,
1285         x_msg_data,
1286         '_PVT'
1287       );
1288     WHEN OTHERS THEN
1289       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1290       (
1291         l_api_name,
1292         G_PKG_NAME,
1293         'OTHERS',
1294         x_msg_count,
1295         x_msg_data,
1296         '_PVT'
1297       );
1298   END lock_row;
1299   ---------------------------------------
1300   -- lock_row for:OKC_RG_PARTY_ROLES_V --
1301   ---------------------------------------
1302   PROCEDURE lock_row(
1303     p_api_version                  IN NUMBER,
1304     p_init_msg_list                IN VARCHAR2,
1305     x_return_status                OUT NOCOPY VARCHAR2,
1306     x_msg_count                    OUT NOCOPY NUMBER,
1307     x_msg_data                     OUT NOCOPY VARCHAR2,
1308     p_rmpv_rec                     IN rmpv_rec_type) IS
1309 
1310     l_api_version                 CONSTANT NUMBER := 1;
1311     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
1312     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1313     l_rpr_rec                      rpr_rec_type;
1314   BEGIN
1315     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1316                                               G_PKG_NAME,
1317                                               p_init_msg_list,
1318                                               l_api_version,
1319                                               p_api_version,
1320                                               '_PVT',
1321                                               x_return_status);
1322     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1323       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1324     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1325       RAISE OKC_API.G_EXCEPTION_ERROR;
1326     END IF;
1327     --------------------------------------
1328     -- Move VIEW record to "Child" records
1329     --------------------------------------
1330     migrate(p_rmpv_rec, l_rpr_rec);
1331     --------------------------------------------
1332     -- Call the LOCK_ROW for each child record
1333     --------------------------------------------
1334     lock_row(
1335       p_init_msg_list,
1336       x_return_status,
1337       x_msg_count,
1338       x_msg_data,
1339       l_rpr_rec
1340     );
1341     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1342       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1343     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1344       RAISE OKC_API.G_EXCEPTION_ERROR;
1345     END IF;
1346     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1347   EXCEPTION
1348     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1349       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1350       (
1351         l_api_name,
1352         G_PKG_NAME,
1353         'OKC_API.G_RET_STS_ERROR',
1354         x_msg_count,
1355         x_msg_data,
1356         '_PVT'
1357       );
1358     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1359       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1360       (
1361         l_api_name,
1362         G_PKG_NAME,
1363         'OKC_API.G_RET_STS_UNEXP_ERROR',
1364         x_msg_count,
1365         x_msg_data,
1366         '_PVT'
1367       );
1368     WHEN OTHERS THEN
1372         G_PKG_NAME,
1369       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1370       (
1371         l_api_name,
1373         'OTHERS',
1374         x_msg_count,
1375         x_msg_data,
1376         '_PVT'
1377       );
1378   END lock_row;
1379   --------------------------------------
1380   -- PL/SQL TBL lock_row for:RMPV_TBL --
1381   --------------------------------------
1382   PROCEDURE lock_row(
1383     p_api_version                  IN NUMBER,
1384     p_init_msg_list                IN VARCHAR2,
1385     x_return_status                OUT NOCOPY VARCHAR2,
1386     x_msg_count                    OUT NOCOPY NUMBER,
1387     x_msg_data                     OUT NOCOPY VARCHAR2,
1388     p_rmpv_tbl                     IN rmpv_tbl_type) IS
1389 
1390     l_api_version                 CONSTANT NUMBER := 1;
1391     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
1392     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1393     i                              NUMBER := 0;
1394   BEGIN
1395     OKC_API.init_msg_list(p_init_msg_list);
1396     -- Make sure PL/SQL table has records in it before passing
1397     IF (p_rmpv_tbl.COUNT > 0) THEN
1398       i := p_rmpv_tbl.FIRST;
1399       LOOP
1400         lock_row (
1401           p_api_version                  => p_api_version,
1402           p_init_msg_list                => OKC_API.G_FALSE,
1403           x_return_status                => x_return_status,
1404           x_msg_count                    => x_msg_count,
1405           x_msg_data                     => x_msg_data,
1406           p_rmpv_rec                     => p_rmpv_tbl(i));
1407         EXIT WHEN (i = p_rmpv_tbl.LAST);
1408         i := p_rmpv_tbl.NEXT(i);
1409       END LOOP;
1410     END IF;
1411   EXCEPTION
1412     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1413       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1414       (
1415         l_api_name,
1416         G_PKG_NAME,
1417         'OKC_API.G_RET_STS_ERROR',
1418         x_msg_count,
1419         x_msg_data,
1420         '_PVT'
1421       );
1422     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1423       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1424       (
1425         l_api_name,
1426         G_PKG_NAME,
1427         'OKC_API.G_RET_STS_UNEXP_ERROR',
1428         x_msg_count,
1429         x_msg_data,
1430         '_PVT'
1431       );
1432     WHEN OTHERS THEN
1433       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1434       (
1435         l_api_name,
1436         G_PKG_NAME,
1437         'OTHERS',
1438         x_msg_count,
1439         x_msg_data,
1440         '_PVT'
1441       );
1442   END lock_row;
1443 
1444   ---------------------------------------------------------------------------
1445   -- PROCEDURE update_row
1446   ---------------------------------------------------------------------------
1447   ---------------------------------------
1448   -- update_row for:OKC_RG_PARTY_ROLES --
1449   ---------------------------------------
1450   PROCEDURE update_row(
1451     p_init_msg_list                IN VARCHAR2,
1452     x_return_status                OUT NOCOPY VARCHAR2,
1453     x_msg_count                    OUT NOCOPY NUMBER,
1454     x_msg_data                     OUT NOCOPY VARCHAR2,
1455     p_rpr_rec                      IN rpr_rec_type,
1456     x_rpr_rec                      OUT NOCOPY rpr_rec_type) IS
1457 
1458     l_api_version                 CONSTANT NUMBER := 1;
1459     l_api_name                     CONSTANT VARCHAR2(30) := 'ROLES_update_row';
1460     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1461     l_rpr_rec                      rpr_rec_type := p_rpr_rec;
1462     l_def_rpr_rec                  rpr_rec_type;
1463     l_row_notfound                 BOOLEAN := TRUE;
1464     ----------------------------------
1465     -- FUNCTION populate_new_record --
1466     ----------------------------------
1467     FUNCTION populate_new_record (
1468       p_rpr_rec	IN rpr_rec_type,
1469       x_rpr_rec	OUT NOCOPY rpr_rec_type
1470     ) RETURN VARCHAR2 IS
1471       l_rpr_rec                      rpr_rec_type;
1472       l_row_notfound                 BOOLEAN := TRUE;
1473       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1474     BEGIN
1475       x_rpr_rec := p_rpr_rec;
1476       -- Get current database values
1477       l_rpr_rec := get_rec(p_rpr_rec, l_row_notfound);
1478       IF (l_row_notfound) THEN
1479         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1480       END IF;
1481       IF (x_rpr_rec.id = OKC_API.G_MISS_NUM)
1482       THEN
1483         x_rpr_rec.id := l_rpr_rec.id;
1484       END IF;
1485       IF (x_rpr_rec.rgp_id = OKC_API.G_MISS_NUM)
1486       THEN
1487         x_rpr_rec.rgp_id := l_rpr_rec.rgp_id;
1488       END IF;
1489       IF (x_rpr_rec.rrd_id = OKC_API.G_MISS_NUM)
1490       THEN
1491         x_rpr_rec.rrd_id := l_rpr_rec.rrd_id;
1492       END IF;
1493       IF (x_rpr_rec.cpl_id = OKC_API.G_MISS_NUM)
1494       THEN
1495         x_rpr_rec.cpl_id := l_rpr_rec.cpl_id;
1496       END IF;
1497       IF (x_rpr_rec.dnz_chr_id = OKC_API.G_MISS_NUM)
1498       THEN
1499         x_rpr_rec.dnz_chr_id := l_rpr_rec.dnz_chr_id;
1500       END IF;
1501       IF (x_rpr_rec.object_version_number = OKC_API.G_MISS_NUM)
1502       THEN
1503         x_rpr_rec.object_version_number := l_rpr_rec.object_version_number;
1504       END IF;
1505       IF (x_rpr_rec.created_by = OKC_API.G_MISS_NUM)
1506       THEN
1507         x_rpr_rec.created_by := l_rpr_rec.created_by;
1508       END IF;
1509       IF (x_rpr_rec.creation_date = OKC_API.G_MISS_DATE)
1510       THEN
1511         x_rpr_rec.creation_date := l_rpr_rec.creation_date;
1512       END IF;
1513       IF (x_rpr_rec.last_updated_by = OKC_API.G_MISS_NUM)
1514       THEN
1515         x_rpr_rec.last_updated_by := l_rpr_rec.last_updated_by;
1516       END IF;
1517       IF (x_rpr_rec.last_update_date = OKC_API.G_MISS_DATE)
1518       THEN
1519         x_rpr_rec.last_update_date := l_rpr_rec.last_update_date;
1520       END IF;
1521       IF (x_rpr_rec.last_update_login = OKC_API.G_MISS_NUM)
1522       THEN
1523         x_rpr_rec.last_update_login := l_rpr_rec.last_update_login;
1524       END IF;
1525       RETURN(l_return_status);
1526     END populate_new_record;
1527     -------------------------------------------
1528     -- Set_Attributes for:OKC_RG_PARTY_ROLES --
1529     -------------------------------------------
1530     FUNCTION Set_Attributes (
1531       p_rpr_rec IN  rpr_rec_type,
1532       x_rpr_rec OUT NOCOPY rpr_rec_type
1533     ) RETURN VARCHAR2 IS
1534       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1535     BEGIN
1536       x_rpr_rec := p_rpr_rec;
1537       RETURN(l_return_status);
1538     END Set_Attributes;
1539   BEGIN
1540     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1541                                               p_init_msg_list,
1542                                               '_PVT',
1543                                               x_return_status);
1544     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1545       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1546     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1547       RAISE OKC_API.G_EXCEPTION_ERROR;
1548     END IF;
1549     --- Setting item attributes
1550     l_return_status := Set_Attributes(
1551       p_rpr_rec,                         -- IN
1552       l_rpr_rec);                        -- OUT
1553     --- If any errors happen abort API
1554     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1555       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1556     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1557       RAISE OKC_API.G_EXCEPTION_ERROR;
1558     END IF;
1559     l_return_status := populate_new_record(l_rpr_rec, l_def_rpr_rec);
1560     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1561       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1562     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1563       RAISE OKC_API.G_EXCEPTION_ERROR;
1564     END IF;
1565     UPDATE  OKC_RG_PARTY_ROLES
1566     SET RGP_ID = l_def_rpr_rec.rgp_id,
1567         RRD_ID = l_def_rpr_rec.rrd_id,
1568         CPL_ID = l_def_rpr_rec.cpl_id,
1569         DNZ_CHR_ID = l_def_rpr_rec.dnz_chr_id,
1570         OBJECT_VERSION_NUMBER = l_def_rpr_rec.object_version_number,
1571         CREATED_BY = l_def_rpr_rec.created_by,
1572         CREATION_DATE = l_def_rpr_rec.creation_date,
1573         LAST_UPDATED_BY = l_def_rpr_rec.last_updated_by,
1574         LAST_UPDATE_DATE = l_def_rpr_rec.last_update_date,
1575         LAST_UPDATE_LOGIN = l_def_rpr_rec.last_update_login
1576     WHERE ID = l_def_rpr_rec.id;
1577 
1578     x_rpr_rec := l_def_rpr_rec;
1579     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1580   EXCEPTION
1581     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1582       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1583       (
1584         l_api_name,
1585         G_PKG_NAME,
1586         'OKC_API.G_RET_STS_ERROR',
1587         x_msg_count,
1588         x_msg_data,
1589         '_PVT'
1590       );
1591     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1592       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1593       (
1594         l_api_name,
1595         G_PKG_NAME,
1596         'OKC_API.G_RET_STS_UNEXP_ERROR',
1597         x_msg_count,
1598         x_msg_data,
1599         '_PVT'
1600       );
1601     WHEN OTHERS THEN
1602       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1603       (
1604         l_api_name,
1605         G_PKG_NAME,
1606         'OTHERS',
1607         x_msg_count,
1608         x_msg_data,
1609         '_PVT'
1610       );
1611   END update_row;
1612   -----------------------------------------
1613   -- update_row for:OKC_RG_PARTY_ROLES_V --
1614   -----------------------------------------
1615   PROCEDURE update_row(
1616     p_api_version                  IN NUMBER,
1617     p_init_msg_list                IN VARCHAR2,
1618     x_return_status                OUT NOCOPY VARCHAR2,
1619     x_msg_count                    OUT NOCOPY NUMBER,
1620     x_msg_data                     OUT NOCOPY VARCHAR2,
1621     p_rmpv_rec                     IN rmpv_rec_type,
1622     x_rmpv_rec                     OUT NOCOPY rmpv_rec_type) IS
1623 
1624     l_api_version                 CONSTANT NUMBER := 1;
1625     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
1626     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1627     l_rmpv_rec                     rmpv_rec_type := p_rmpv_rec;
1628     l_def_rmpv_rec                 rmpv_rec_type;
1629     l_rpr_rec                      rpr_rec_type;
1630     lx_rpr_rec                     rpr_rec_type;
1631     -------------------------------
1632     -- FUNCTION fill_who_columns --
1633     -------------------------------
1634     FUNCTION fill_who_columns (
1635       p_rmpv_rec	IN rmpv_rec_type
1636     ) RETURN rmpv_rec_type IS
1637       l_rmpv_rec	rmpv_rec_type := p_rmpv_rec;
1638     BEGIN
1639       l_rmpv_rec.LAST_UPDATE_DATE := SYSDATE;
1640       l_rmpv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1641       l_rmpv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
1642       RETURN(l_rmpv_rec);
1643     END fill_who_columns;
1644     ----------------------------------
1645     -- FUNCTION populate_new_record --
1646     ----------------------------------
1647     FUNCTION populate_new_record (
1648       p_rmpv_rec	IN rmpv_rec_type,
1649       x_rmpv_rec	OUT NOCOPY rmpv_rec_type
1650     ) RETURN VARCHAR2 IS
1651       l_rmpv_rec                     rmpv_rec_type;
1652       l_row_notfound                 BOOLEAN := TRUE;
1653       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1654     BEGIN
1655       x_rmpv_rec := p_rmpv_rec;
1656       -- Get current database values
1657       l_rmpv_rec := get_rec(p_rmpv_rec, l_row_notfound);
1658       IF (l_row_notfound) THEN
1659         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1660       END IF;
1661       IF (x_rmpv_rec.id = OKC_API.G_MISS_NUM)
1662       THEN
1663         x_rmpv_rec.id := l_rmpv_rec.id;
1664       END IF;
1665       IF (x_rmpv_rec.rgp_id = OKC_API.G_MISS_NUM)
1666       THEN
1667         x_rmpv_rec.rgp_id := l_rmpv_rec.rgp_id;
1668       END IF;
1669       IF (x_rmpv_rec.rrd_id = OKC_API.G_MISS_NUM)
1670       THEN
1671         x_rmpv_rec.rrd_id := l_rmpv_rec.rrd_id;
1672       END IF;
1673       IF (x_rmpv_rec.cpl_id = OKC_API.G_MISS_NUM)
1674       THEN
1675         x_rmpv_rec.cpl_id := l_rmpv_rec.cpl_id;
1676       END IF;
1677       IF (x_rmpv_rec.dnz_chr_id = OKC_API.G_MISS_NUM)
1678       THEN
1679         x_rmpv_rec.dnz_chr_id := l_rmpv_rec.dnz_chr_id;
1680       END IF;
1681       IF (x_rmpv_rec.object_version_number = OKC_API.G_MISS_NUM)
1682       THEN
1683         x_rmpv_rec.object_version_number := l_rmpv_rec.object_version_number;
1684       END IF;
1685       IF (x_rmpv_rec.created_by = OKC_API.G_MISS_NUM)
1686       THEN
1687         x_rmpv_rec.created_by := l_rmpv_rec.created_by;
1688       END IF;
1689       IF (x_rmpv_rec.creation_date = OKC_API.G_MISS_DATE)
1690       THEN
1691         x_rmpv_rec.creation_date := l_rmpv_rec.creation_date;
1692       END IF;
1693       IF (x_rmpv_rec.last_updated_by = OKC_API.G_MISS_NUM)
1694       THEN
1695         x_rmpv_rec.last_updated_by := l_rmpv_rec.last_updated_by;
1696       END IF;
1697       IF (x_rmpv_rec.last_update_date = OKC_API.G_MISS_DATE)
1698       THEN
1699         x_rmpv_rec.last_update_date := l_rmpv_rec.last_update_date;
1700       END IF;
1701       IF (x_rmpv_rec.last_update_login = OKC_API.G_MISS_NUM)
1702       THEN
1703         x_rmpv_rec.last_update_login := l_rmpv_rec.last_update_login;
1704       END IF;
1705       RETURN(l_return_status);
1706     END populate_new_record;
1707     ---------------------------------------------
1708     -- Set_Attributes for:OKC_RG_PARTY_ROLES_V --
1709     ---------------------------------------------
1710     FUNCTION Set_Attributes (
1711       p_rmpv_rec IN  rmpv_rec_type,
1712       x_rmpv_rec OUT NOCOPY rmpv_rec_type
1713     ) RETURN VARCHAR2 IS
1714       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1715     BEGIN
1716       x_rmpv_rec := p_rmpv_rec;
1717       x_rmpv_rec.OBJECT_VERSION_NUMBER := NVL(x_rmpv_rec.OBJECT_VERSION_NUMBER, 0) + 1;
1718       RETURN(l_return_status);
1719     END Set_Attributes;
1720   BEGIN
1721     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1722                                               G_PKG_NAME,
1723                                               p_init_msg_list,
1724                                               l_api_version,
1725                                               p_api_version,
1726                                               '_PVT',
1727                                               x_return_status);
1728     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1729       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1730     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1731       RAISE OKC_API.G_EXCEPTION_ERROR;
1732     END IF;
1733     --- Setting item attributes
1734     l_return_status := Set_Attributes(
1735       p_rmpv_rec,                        -- IN
1736       l_rmpv_rec);                       -- OUT
1737     --- If any errors happen abort API
1738     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1739       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1740     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1741       RAISE OKC_API.G_EXCEPTION_ERROR;
1742     END IF;
1743     l_return_status := populate_new_record(l_rmpv_rec, l_def_rmpv_rec);
1744     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1745       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1746     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1747       RAISE OKC_API.G_EXCEPTION_ERROR;
1748     END IF;
1749     l_def_rmpv_rec := fill_who_columns(l_def_rmpv_rec);
1750     --- Validate all non-missing attributes (Item Level Validation)
1751     l_return_status := Validate_Attributes(l_def_rmpv_rec);
1752     --- If any errors happen abort API
1753     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1754       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1755     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1756       RAISE OKC_API.G_EXCEPTION_ERROR;
1757     END IF;
1758     l_return_status := Validate_Record(l_def_rmpv_rec);
1759     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1760       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1761     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1762       RAISE OKC_API.G_EXCEPTION_ERROR;
1763     END IF;
1764 
1765     --------------------------------------
1766     -- Move VIEW record to "Child" records
1767     --------------------------------------
1768     migrate(l_def_rmpv_rec, l_rpr_rec);
1769     --------------------------------------------
1770     -- Call the UPDATE_ROW for each child record
1771     --------------------------------------------
1772     update_row(
1773       p_init_msg_list,
1774       x_return_status,
1775       x_msg_count,
1776       x_msg_data,
1777       l_rpr_rec,
1778       lx_rpr_rec
1779     );
1780     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1781       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1782     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1783       RAISE OKC_API.G_EXCEPTION_ERROR;
1784     END IF;
1785     migrate(lx_rpr_rec, l_def_rmpv_rec);
1786     x_rmpv_rec := l_def_rmpv_rec;
1787     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1788   EXCEPTION
1789     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1790       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1791       (
1792         l_api_name,
1793         G_PKG_NAME,
1794         'OKC_API.G_RET_STS_ERROR',
1795         x_msg_count,
1796         x_msg_data,
1797         '_PVT'
1798       );
1799     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1800       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1801       (
1802         l_api_name,
1803         G_PKG_NAME,
1804         'OKC_API.G_RET_STS_UNEXP_ERROR',
1805         x_msg_count,
1806         x_msg_data,
1807         '_PVT'
1808       );
1809     WHEN OTHERS THEN
1810       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1811       (
1812         l_api_name,
1813         G_PKG_NAME,
1814         'OTHERS',
1815         x_msg_count,
1816         x_msg_data,
1817         '_PVT'
1818       );
1819   END update_row;
1820   ----------------------------------------
1821   -- PL/SQL TBL update_row for:RMPV_TBL --
1822   ----------------------------------------
1823   PROCEDURE update_row(
1824     p_api_version                  IN NUMBER,
1825     p_init_msg_list                IN VARCHAR2,
1826     x_return_status                OUT NOCOPY VARCHAR2,
1827     x_msg_count                    OUT NOCOPY NUMBER,
1828     x_msg_data                     OUT NOCOPY VARCHAR2,
1829     p_rmpv_tbl                     IN rmpv_tbl_type,
1830     x_rmpv_tbl                     OUT NOCOPY rmpv_tbl_type) IS
1831 
1832     l_api_version                 CONSTANT NUMBER := 1;
1833     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
1834     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1835     i                              NUMBER := 0;
1836   BEGIN
1837     OKC_API.init_msg_list(p_init_msg_list);
1838     -- Make sure PL/SQL table has records in it before passing
1839     IF (p_rmpv_tbl.COUNT > 0) THEN
1840       i := p_rmpv_tbl.FIRST;
1841       LOOP
1842         update_row (
1843           p_api_version                  => p_api_version,
1844           p_init_msg_list                => OKC_API.G_FALSE,
1845           x_return_status                => x_return_status,
1846           x_msg_count                    => x_msg_count,
1847           x_msg_data                     => x_msg_data,
1848           p_rmpv_rec                     => p_rmpv_tbl(i),
1849           x_rmpv_rec                     => x_rmpv_tbl(i));
1850         EXIT WHEN (i = p_rmpv_tbl.LAST);
1851         i := p_rmpv_tbl.NEXT(i);
1852       END LOOP;
1853     END IF;
1854   EXCEPTION
1855     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1856       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1857       (
1858         l_api_name,
1859         G_PKG_NAME,
1860         'OKC_API.G_RET_STS_ERROR',
1861         x_msg_count,
1862         x_msg_data,
1863         '_PVT'
1864       );
1865     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1866       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1867       (
1868         l_api_name,
1869         G_PKG_NAME,
1870         'OKC_API.G_RET_STS_UNEXP_ERROR',
1871         x_msg_count,
1872         x_msg_data,
1873         '_PVT'
1874       );
1875     WHEN OTHERS THEN
1876       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1877       (
1878         l_api_name,
1879         G_PKG_NAME,
1880         'OTHERS',
1881         x_msg_count,
1882         x_msg_data,
1883         '_PVT'
1884       );
1885   END update_row;
1886 
1887   ---------------------------------------------------------------------------
1888   -- PROCEDURE delete_row
1889   ---------------------------------------------------------------------------
1890   ---------------------------------------
1891   -- delete_row for:OKC_RG_PARTY_ROLES --
1892   ---------------------------------------
1893   PROCEDURE delete_row(
1894     p_init_msg_list                IN VARCHAR2,
1895     x_return_status                OUT NOCOPY VARCHAR2,
1896     x_msg_count                    OUT NOCOPY NUMBER,
1897     x_msg_data                     OUT NOCOPY VARCHAR2,
1898     p_rpr_rec                      IN rpr_rec_type) IS
1899 
1900     l_api_version                 CONSTANT NUMBER := 1;
1901     l_api_name                     CONSTANT VARCHAR2(30) := 'ROLES_delete_row';
1902     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1903     l_rpr_rec                      rpr_rec_type:= p_rpr_rec;
1904     l_row_notfound                 BOOLEAN := TRUE;
1905   BEGIN
1906     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1907                                               p_init_msg_list,
1908                                               '_PVT',
1909                                               x_return_status);
1910     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1911       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1912     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1913       RAISE OKC_API.G_EXCEPTION_ERROR;
1914     END IF;
1915     DELETE FROM OKC_RG_PARTY_ROLES
1916      WHERE ID = l_rpr_rec.id;
1917 
1918     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1919   EXCEPTION
1920     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1921       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1922       (
1923         l_api_name,
1924         G_PKG_NAME,
1925         'OKC_API.G_RET_STS_ERROR',
1926         x_msg_count,
1927         x_msg_data,
1928         '_PVT'
1929       );
1930     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1931       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1932       (
1933         l_api_name,
1934         G_PKG_NAME,
1935         'OKC_API.G_RET_STS_UNEXP_ERROR',
1936         x_msg_count,
1937         x_msg_data,
1938         '_PVT'
1939       );
1940     WHEN OTHERS THEN
1941       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1942       (
1943         l_api_name,
1944         G_PKG_NAME,
1945         'OTHERS',
1946         x_msg_count,
1947         x_msg_data,
1948         '_PVT'
1949       );
1950   END delete_row;
1951   -----------------------------------------
1952   -- delete_row for:OKC_RG_PARTY_ROLES_V --
1953   -----------------------------------------
1954   PROCEDURE delete_row(
1955     p_api_version                  IN NUMBER,
1956     p_init_msg_list                IN VARCHAR2,
1957     x_return_status                OUT NOCOPY VARCHAR2,
1958     x_msg_count                    OUT NOCOPY NUMBER,
1959     x_msg_data                     OUT NOCOPY VARCHAR2,
1960     p_rmpv_rec                     IN rmpv_rec_type) IS
1961 
1962     l_api_version                 CONSTANT NUMBER := 1;
1963     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
1964     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1965     l_rmpv_rec                     rmpv_rec_type := p_rmpv_rec;
1966     l_rpr_rec                      rpr_rec_type;
1967   BEGIN
1968     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1969                                               G_PKG_NAME,
1970                                               p_init_msg_list,
1971                                               l_api_version,
1972                                               p_api_version,
1973                                               '_PVT',
1974                                               x_return_status);
1975     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1976       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1977     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1978       RAISE OKC_API.G_EXCEPTION_ERROR;
1979     END IF;
1980     --------------------------------------
1981     -- Move VIEW record to "Child" records
1982     --------------------------------------
1983     migrate(l_rmpv_rec, l_rpr_rec);
1984     --------------------------------------------
1985     -- Call the DELETE_ROW for each child record
1986     --------------------------------------------
1987     delete_row(
1988       p_init_msg_list,
1989       x_return_status,
1990       x_msg_count,
1991       x_msg_data,
1992       l_rpr_rec
1993     );
1994     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1995       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1996     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1997       RAISE OKC_API.G_EXCEPTION_ERROR;
1998     END IF;
1999     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2000   EXCEPTION
2001     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2002       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2003       (
2004         l_api_name,
2005         G_PKG_NAME,
2006         'OKC_API.G_RET_STS_ERROR',
2007         x_msg_count,
2008         x_msg_data,
2009         '_PVT'
2010       );
2011     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2012       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2013       (
2014         l_api_name,
2015         G_PKG_NAME,
2016         'OKC_API.G_RET_STS_UNEXP_ERROR',
2017         x_msg_count,
2018         x_msg_data,
2019         '_PVT'
2020       );
2021     WHEN OTHERS THEN
2022       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2023       (
2024         l_api_name,
2025         G_PKG_NAME,
2026         'OTHERS',
2027         x_msg_count,
2028         x_msg_data,
2029         '_PVT'
2030       );
2031   END delete_row;
2032   ----------------------------------------
2033   -- PL/SQL TBL delete_row for:RMPV_TBL --
2034   ----------------------------------------
2035   PROCEDURE delete_row(
2036     p_api_version                  IN NUMBER,
2037     p_init_msg_list                IN VARCHAR2,
2038     x_return_status                OUT NOCOPY VARCHAR2,
2039     x_msg_count                    OUT NOCOPY NUMBER,
2040     x_msg_data                     OUT NOCOPY VARCHAR2,
2041     p_rmpv_tbl                     IN rmpv_tbl_type) IS
2042 
2043     l_api_version                 CONSTANT NUMBER := 1;
2044     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
2045     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2046     i                              NUMBER := 0;
2047   BEGIN
2048     OKC_API.init_msg_list(p_init_msg_list);
2049     -- Make sure PL/SQL table has records in it before passing
2050     IF (p_rmpv_tbl.COUNT > 0) THEN
2051       i := p_rmpv_tbl.FIRST;
2052       LOOP
2053         delete_row (
2054           p_api_version                  => p_api_version,
2055           p_init_msg_list                => OKC_API.G_FALSE,
2056           x_return_status                => x_return_status,
2057           x_msg_count                    => x_msg_count,
2058           x_msg_data                     => x_msg_data,
2059           p_rmpv_rec                     => p_rmpv_tbl(i));
2060         EXIT WHEN (i = p_rmpv_tbl.LAST);
2061         i := p_rmpv_tbl.NEXT(i);
2062       END LOOP;
2063     END IF;
2064   EXCEPTION
2065     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2066       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2067       (
2068         l_api_name,
2069         G_PKG_NAME,
2070         'OKC_API.G_RET_STS_ERROR',
2071         x_msg_count,
2072         x_msg_data,
2073         '_PVT'
2074       );
2075     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2076       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2077       (
2078         l_api_name,
2079         G_PKG_NAME,
2080         'OKC_API.G_RET_STS_UNEXP_ERROR',
2081         x_msg_count,
2082         x_msg_data,
2083         '_PVT'
2084       );
2085     WHEN OTHERS THEN
2086       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2087       (
2088         l_api_name,
2089         G_PKG_NAME,
2090         'OTHERS',
2091         x_msg_count,
2092         x_msg_data,
2093         '_PVT'
2094       );
2095   END delete_row;
2096 
2097 --This function is called from versioning API OKC_VERSION_PVT
2098 --Old Location: OKCRVERB.pls
2099 --New Location: Base Table API
2100 
2101 FUNCTION create_version(
2102              p_chr_id         IN NUMBER,
2103              p_major_version  IN NUMBER
2104            ) RETURN VARCHAR2 IS
2105 
2106   l_return_status VARCHAR2(1):= OKC_API.G_RET_STS_SUCCESS;
2107 
2108 BEGIN
2109 INSERT INTO okc_rg_party_roles_h
2110   (
2111       major_version,
2112       id,
2113       rgp_id,
2114       rrd_id,
2115       cpl_id,
2116       dnz_chr_id,
2117       object_version_number,
2118       created_by,
2119       creation_date,
2120       last_updated_by,
2121       last_update_date,
2122       last_update_login
2123 )
2124   SELECT
2125       p_major_version,
2126       id,
2127       rgp_id,
2128       rrd_id,
2129       cpl_id,
2130       dnz_chr_id,
2131       object_version_number,
2132       created_by,
2133       creation_date,
2134       last_updated_by,
2135       last_update_date,
2136       last_update_login
2137   FROM okc_rg_party_roles
2138  WHERE dnz_chr_id = p_chr_id;
2139 
2140 RETURN l_return_status;
2141   EXCEPTION
2142        -- other appropriate handlers
2143     WHEN OTHERS THEN
2144        -- store SQL error message on message stack
2145              OKC_API.SET_MESSAGE(p_app_name     => okc_version_pvt.G_APP_NAME,
2146                                  p_msg_name     => okc_version_pvt.G_UNEXPECTED_ERROR,
2147                                  p_token1       => okc_version_pvt.G_SQLCODE_TOKEN,
2148                                  p_token1_value => sqlcode,
2149                                  p_token2       => okc_version_pvt.G_SQLERRM_TOKEN,
2150                                  p_token2_value => sqlerrm);
2151 
2152        -- notify  UNEXPECTED error
2153              l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2154              return l_return_status;
2155 END create_version;
2156 
2157 --This Function is called from Versioning API OKC_VERSION_PVT
2158 --Old Location:OKCRVERB.pls
2159 --New Location:Base Table API
2160 
2161 FUNCTION restore_version(
2162              p_chr_id         IN NUMBER,
2163              p_major_version  IN NUMBER
2164            ) RETURN VARCHAR2 IS
2165 
2166   l_return_status VARCHAR2(1):= OKC_API.G_RET_STS_SUCCESS;
2167 
2168 BEGIN
2169 INSERT INTO okc_rg_party_roles
2170   (
2171       id,
2172       rgp_id,
2173       rrd_id,
2174       cpl_id,
2175       dnz_chr_id,
2176       object_version_number,
2177       created_by,
2178       creation_date,
2179       last_updated_by,
2180       last_update_date,
2181       last_update_login
2182 )
2183   SELECT
2184       id,
2185       rgp_id,
2186       rrd_id,
2187       cpl_id,
2188       dnz_chr_id,
2189       object_version_number,
2190       created_by,
2191       creation_date,
2192       last_updated_by,
2193       last_update_date,
2194       last_update_login
2195   FROM okc_rg_party_roles_h
2196 WHERE dnz_chr_id = p_chr_id
2197   AND major_version = p_major_version;
2198 
2199 RETURN l_return_status;
2200   EXCEPTION
2201        -- other appropriate handlers
2202     WHEN OTHERS THEN
2203        -- store SQL error message on message stack
2204              OKC_API.SET_MESSAGE(p_app_name     => okc_version_pvt.G_APP_NAME,
2205                                  p_msg_name     => okc_version_pvt.G_UNEXPECTED_ERROR,
2206                                  p_token1       => okc_version_pvt.G_SQLCODE_TOKEN,
2207                                  p_token1_value => sqlcode,
2208                                  p_token2       => okc_version_pvt.G_SQLERRM_TOKEN,
2209                                  p_token2_value => sqlerrm);
2210 
2211        -- notify  UNEXPECTED error
2212              l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2213              return l_return_status;
2214 END restore_version;
2215 --
2216 END OKC_RMP_PVT;