DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_CLS_PVT

Source


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