DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_SLX_PVT

Source


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