DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_ITY_PVT

Source


1 PACKAGE BODY Okl_Ity_Pvt AS
2 /* $Header: OKLSITYB.pls 120.3 2006/03/23 14:50:08 abindal noship $ */
3 
4 
5 -- Checking Unique Key
6   FUNCTION IS_UNIQUE (p_ityv_rec ityv_rec_type) RETURN VARCHAR2
7   IS
8     CURSOR l_ity_csr IS
9 		 SELECT 'x'
10 		 FROM okl_invoice_types_v
11 		 WHERE inf_id = p_ityv_rec.inf_id
12 		 AND name = p_ityv_rec.name
13 		 AND   id <> NVL(p_ityv_rec.id,-99999);
14 
15     l_return_status     VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
16     l_dummy             VARCHAR2(1);
17     l_found             BOOLEAN;
18   BEGIN
19     -- check for unique product and location
20         OPEN l_ity_csr;
21         FETCH l_ity_csr INTO l_dummy;
22 	   l_found := l_ity_csr%FOUND;
23 	   CLOSE l_ity_csr;
24 
25     IF (l_found) THEN
26   	    Okl_Api.SET_MESSAGE(p_app_name		=> g_app_name,
27 					    p_msg_name		=> 'OKL_ITY_Exists',
28 					    p_token1		=> 'NAME',
29 					    p_token1_value	=> p_ityv_rec.name);
30 	  -- notify caller of an error
31 	  l_return_status := Okl_Api.G_RET_STS_ERROR;
32     END IF;
33     RETURN (l_return_status);
34 
35   EXCEPTION
36     WHEN OTHERS THEN
37 	 RETURN (l_return_status);
38   END IS_UNIQUE;
39 
40 
41 -- Validate not null value for ID
42 
43 PROCEDURE validate_id(x_return_status OUT NOCOPY VARCHAR2,
44 			 p_ityv_rec 		IN	ityv_rec_type) IS
45 
46 BEGIN
47 -- initialize return status
48 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
49 
50 -- data is required
51 IF(p_ityv_rec.id IS NULL) OR (p_ityv_rec.id = Okl_Api.G_MISS_NUM) THEN
52 	Okl_Api.SET_MESSAGE(p_app_name	=> g_app_name,
53 			    p_msg_name	=> g_required_value,
54 			    p_token1	=> g_col_name_token,
55 			    p_token1_value => 'id');
56 
57 -- notify caller of an error
58 	x_return_status := Okl_Api.G_RET_STS_ERROR;
59 
60 -- halt further validation of this column
61 	RAISE G_EXCEPTION_HALT_VALIDATION;
62 END IF;
63 
64 END validate_id;
65 
66 
67 -- Validate not null value for Version Number
68 
69 PROCEDURE validate_object_version_number(x_return_status OUT NOCOPY VARCHAR2,
70 			 p_ityv_rec 		IN	ityv_rec_type) IS
71 
72 BEGIN
73 -- initialize return status
74 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
75 
76 -- data is required
77 IF(p_ityv_rec.object_version_number IS NULL) OR (p_ityv_rec.object_version_number = Okl_Api.G_MISS_NUM) THEN
78 	Okl_Api.SET_MESSAGE(p_app_name	=> g_app_name,
79 			    p_msg_name	=> g_required_value,
80 			    p_token1	=> g_col_name_token,
81 			    p_token1_value => 'object_version_number');
82 
83 -- notify caller of an error
84 	x_return_status := Okl_Api.G_RET_STS_ERROR;
85 
86 -- halt further validation of this column
87 	RAISE G_EXCEPTION_HALT_VALIDATION;
88 END IF;
89 
90 END validate_object_version_number;
91 
92 PROCEDURE validate_name(x_return_status OUT NOCOPY VARCHAR2,
93 			 p_ityv_rec 		IN	ityv_rec_type) IS
94 
95 BEGIN
96 -- initialize return status
97 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
98 
99 -- data is required
100 IF(p_ityv_rec.name IS NULL) THEN
101 	Okl_Api.SET_MESSAGE(p_app_name	=> 'OKC', --g_app_name,
102 			    p_msg_name	=> g_required_value,
103 			    p_token1	=> g_col_name_token,
104 			    p_token1_value => 'Name');
105 
106 -- notify caller of an error
107 	x_return_status := Okl_Api.G_RET_STS_ERROR;
108 
109 -- halt further validation of this column
110 	RAISE G_EXCEPTION_HALT_VALIDATION;
111 END IF;
112 
113 END validate_name;
114 
115 
116 
117 PROCEDURE validate_group_asset_yn(x_return_status OUT NOCOPY VARCHAR2,
118 			 p_ityv_rec 		IN	ityv_rec_type) IS
119 
120 BEGIN
121 -- initialize return status
122 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
123 
124 -- data is required
125 IF(p_ityv_rec.group_asset_yn IS NULL) OR (p_ityv_rec.group_asset_yn = Okl_Api.G_MISS_CHAR) THEN
126 	Okl_Api.SET_MESSAGE(p_app_name	=> g_app_name,
127 			    p_msg_name	=> g_required_value,
128 			    p_token1	=> g_col_name_token,
129 			    p_token1_value => 'group_asset_yn');
130 
131 -- notify caller of an error
132 	x_return_status := Okl_Api.G_RET_STS_ERROR;
133 
134 -- halt further validation of this column
135 	RAISE G_EXCEPTION_HALT_VALIDATION;
136 ELSE
137 	x_return_status := Okl_Util.CHECK_DOMAIN_YN(p_ityv_rec.group_asset_yn);
138 
139 END IF;
140 
141 END validate_group_asset_yn;
142 
143 
144 
145 PROCEDURE validate_group_by_contract_yn(x_return_status OUT NOCOPY VARCHAR2,
146 			 p_ityv_rec 		IN	ityv_rec_type) IS
147 
148 BEGIN
149 -- initialize return status
150 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
151 
152 -- data is required
153 IF(p_ityv_rec.group_by_contract_yn IS NULL) OR (p_ityv_rec.group_by_contract_yn = Okl_Api.G_MISS_CHAR) THEN
154 	Okl_Api.SET_MESSAGE(p_app_name	=> g_app_name,
155 			    p_msg_name	=> g_required_value,
156 			    p_token1	=> g_col_name_token,
157 			    p_token1_value => 'group_by_contract_yn');
158 
159 -- notify caller of an error
160 	x_return_status := Okl_Api.G_RET_STS_ERROR;
161 
162 -- halt further validation of this column
163 	RAISE G_EXCEPTION_HALT_VALIDATION;
164 ELSE
165 	x_return_status := Okl_Util.CHECK_DOMAIN_YN(p_ityv_rec.group_by_contract_yn);
166 
167 END IF;
168 
169 END validate_group_by_contract_yn;
170 
171 PROCEDURE validate_inf_id(x_return_status OUT NOCOPY VARCHAR2,
172 			 p_ityv_rec 		IN	ityv_rec_type) IS
173 
174 l_dummy_var	VARCHAR2(1) := '?';
175 CURSOR l_ityv_csr IS
176 	SELECT 'x'
177 	FROM OKL_INVOICE_FORMATS_V
178 	WHERE id = p_ityv_rec.inf_id;
179 
180 BEGIN
181 -- initialize return status
182 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
183 
184 -- data is required
185 IF(p_ityv_rec.inf_id IS NULL) OR (p_ityv_rec.inf_id = Okl_Api.G_MISS_NUM) THEN
186 	Okl_Api.SET_MESSAGE(p_app_name	=> g_app_name,
187 			    p_msg_name	=> g_required_value,
188 			    p_token1	=> g_col_name_token,
189 			    p_token1_value => 'inf_id');
190 
191 -- notify caller of an error
192 	x_return_status := Okl_Api.G_RET_STS_ERROR;
193 
194 -- halt further validation of this column
195 	RAISE G_EXCEPTION_HALT_VALIDATION;
196 END IF;
197 
198 -- enforce foreign key
199 OPEN l_ityv_csr;
200 	FETCH l_ityv_csr INTO l_dummy_var;
201 CLOSE l_ityv_csr;
202 
203 -- if l_dummy_var is still set to default, data was not found
204 	IF(l_dummy_var = '?') THEN
205 	Okl_Api.SET_MESSAGE(p_app_name	=> g_app_name,
206 			    p_msg_name	=> g_no_parent_record,
207 			    p_token1	=> g_col_name_token,
208 			    p_token1_value => 'inf_id',
209 			    p_token2	=> g_child_table_token,
210 			    p_token2_value => 'OKL_INVOICE_TYPES_V',
211 			    p_token3	=> g_parent_table_token,
212 			    p_token3_value => 'OKL_INVOICE_FORMATS_V');
213 
214 -- notify caller of an error
215 	x_return_status := Okl_Api.G_RET_STS_ERROR;
216 	END IF;
217 
218 EXCEPTION
219 	WHEN G_EXCEPTION_HALT_VALIDATION THEN
220 --	no processing necessary validation can continue with the next column
221 	NULL;
222 
223 	WHEN OTHERS THEN
224 -- 	store SQL error message on message stack for caller
225 	Okl_Api.SET_MESSAGE(p_app_name	=> g_app_name,
226 			    p_msg_name	=> g_unexpected_error,
227 			    p_token1	=> g_sqlcode_token,
228 			    p_token1_value => SQLCODE,
229 			    p_token2	=> g_sqlerrm_token,
230 			    p_token2_value => SQLERRM);
231 
232 
233 -- notify caller of an error
234 	x_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
235 
236 -- verfiy that cursor was closed
237 	IF l_ityv_csr%ISOPEN THEN
238 	  CLOSE l_ityv_csr;
239 	END IF;
240 
241 END validate_inf_id;
242 
243 
244   ---------------------------------------------------------------------------
245   -- FUNCTION get_seq_id
246   ---------------------------------------------------------------------------
247   FUNCTION get_seq_id RETURN NUMBER IS
248   BEGIN
249     RETURN(Okc_P_Util.raw_to_number(sys_guid()));
250   END get_seq_id;
251 
252   ---------------------------------------------------------------------------
253   -- PROCEDURE qc
254   ---------------------------------------------------------------------------
255   PROCEDURE qc IS
256   BEGIN
257     NULL;
258   END qc;
259 
260   ---------------------------------------------------------------------------
261   -- PROCEDURE change_version
262   ---------------------------------------------------------------------------
263   PROCEDURE change_version IS
264   BEGIN
265     NULL;
266   END change_version;
267 
268   ---------------------------------------------------------------------------
269   -- PROCEDURE api_copy
270   ---------------------------------------------------------------------------
271   PROCEDURE api_copy IS
272   BEGIN
273     NULL;
274   END api_copy;
275 
276   ---------------------------------------------------------------------------
277   -- PROCEDURE add_language
278   ---------------------------------------------------------------------------
279   PROCEDURE add_language IS
280   BEGIN
281     DELETE FROM OKL_INVOICE_TYPES_TL T
282      WHERE NOT EXISTS (
283         SELECT NULL
284           FROM OKL_INVOICE_TYPES_B B
285          WHERE B.ID = T.ID
286          AND T.LANGUAGE = USERENV('LANG')
287         );
288 
289     UPDATE OKL_INVOICE_TYPES_TL T SET (
290         NAME,
291         DESCRIPTION) = (SELECT
292                                   B.NAME,
293                                   B.DESCRIPTION
294                                 FROM OKL_INVOICE_TYPES_TL B
295                                WHERE B.ID = T.ID
296                                  AND B.LANGUAGE = T.SOURCE_LANG)
297       WHERE (
298               T.ID,
299               T.LANGUAGE)
300           IN (SELECT
301                   SUBT.ID,
302                   SUBT.LANGUAGE
303                 FROM OKL_INVOICE_TYPES_TL SUBB, OKL_INVOICE_TYPES_TL SUBT
304                WHERE SUBB.ID = SUBT.ID
305                  AND SUBB.LANGUAGE = SUBT.SOURCE_LANG
306                  AND (SUBB.NAME <> SUBT.NAME
307                       OR SUBB.DESCRIPTION <> SUBT.DESCRIPTION
308                       OR (SUBB.DESCRIPTION IS NULL AND SUBT.DESCRIPTION IS NOT NULL)
309                       OR (SUBB.DESCRIPTION IS NOT NULL AND SUBT.DESCRIPTION IS NULL)
310               ));
311 
312     INSERT INTO OKL_INVOICE_TYPES_TL (
313         ID,
314         LANGUAGE,
315         SOURCE_LANG,
316         SFWT_FLAG,
317         NAME,
318         DESCRIPTION,
319         CREATED_BY,
320         CREATION_DATE,
321         LAST_UPDATED_BY,
322         LAST_UPDATE_DATE,
323         LAST_UPDATE_LOGIN)
324       SELECT
325             B.ID,
326             L.LANGUAGE_CODE,
327             B.SOURCE_LANG,
328             B.SFWT_FLAG,
329             B.NAME,
330             B.DESCRIPTION,
331             B.CREATED_BY,
332             B.CREATION_DATE,
333             B.LAST_UPDATED_BY,
334             B.LAST_UPDATE_DATE,
335             B.LAST_UPDATE_LOGIN
336         FROM OKL_INVOICE_TYPES_TL B, FND_LANGUAGES L
337        WHERE L.INSTALLED_FLAG IN ('I', 'B')
338          AND B.LANGUAGE = USERENV('LANG')
339          AND NOT EXISTS(
340                     SELECT NULL
341                       FROM OKL_INVOICE_TYPES_TL T
342                      WHERE T.ID = B.ID
343                        AND T.LANGUAGE = L.LANGUAGE_CODE
344                     );
345 
346   END add_language;
347 
348   ---------------------------------------------------------------------------
349   -- FUNCTION get_rec for: OKL_INVOICE_TYPES_B
350   ---------------------------------------------------------------------------
351   FUNCTION get_rec (
352     p_ity_rec                      IN ity_rec_type,
353     x_no_data_found                OUT NOCOPY BOOLEAN
354   ) RETURN ity_rec_type IS
355     CURSOR ity_pk_csr (p_id                 IN NUMBER) IS
356     SELECT
357             ID,
358             INF_ID,
359             GROUP_ASSET_YN,
360             GROUP_BY_CONTRACT_YN,
361             OBJECT_VERSION_NUMBER,
362             ATTRIBUTE_CATEGORY,
363             ATTRIBUTE1,
364             ATTRIBUTE2,
365             ATTRIBUTE3,
366             ATTRIBUTE4,
367             ATTRIBUTE5,
368             ATTRIBUTE6,
369             ATTRIBUTE7,
370             ATTRIBUTE8,
371             ATTRIBUTE9,
372             ATTRIBUTE10,
373             ATTRIBUTE11,
374             ATTRIBUTE12,
375             ATTRIBUTE13,
376             ATTRIBUTE14,
377             ATTRIBUTE15,
378             CREATED_BY,
379             CREATION_DATE,
380             LAST_UPDATED_BY,
381             LAST_UPDATE_DATE,
382             LAST_UPDATE_LOGIN
383       FROM Okl_Invoice_Types_B
384      WHERE okl_invoice_types_b.id = p_id;
385     l_ity_pk                       ity_pk_csr%ROWTYPE;
386     l_ity_rec                      ity_rec_type;
387   BEGIN
388     x_no_data_found := TRUE;
389     -- Get current database values
390     OPEN ity_pk_csr (p_ity_rec.id);
391     FETCH ity_pk_csr INTO
392               l_ity_rec.ID,
393               l_ity_rec.INF_ID,
394               l_ity_rec.GROUP_ASSET_YN,
395               l_ity_rec.GROUP_BY_CONTRACT_YN,
396               l_ity_rec.OBJECT_VERSION_NUMBER,
397               l_ity_rec.ATTRIBUTE_CATEGORY,
398               l_ity_rec.ATTRIBUTE1,
399               l_ity_rec.ATTRIBUTE2,
400               l_ity_rec.ATTRIBUTE3,
401               l_ity_rec.ATTRIBUTE4,
402               l_ity_rec.ATTRIBUTE5,
403               l_ity_rec.ATTRIBUTE6,
404               l_ity_rec.ATTRIBUTE7,
405               l_ity_rec.ATTRIBUTE8,
406               l_ity_rec.ATTRIBUTE9,
407               l_ity_rec.ATTRIBUTE10,
408               l_ity_rec.ATTRIBUTE11,
409               l_ity_rec.ATTRIBUTE12,
410               l_ity_rec.ATTRIBUTE13,
411               l_ity_rec.ATTRIBUTE14,
412               l_ity_rec.ATTRIBUTE15,
413               l_ity_rec.CREATED_BY,
414               l_ity_rec.CREATION_DATE,
415               l_ity_rec.LAST_UPDATED_BY,
416               l_ity_rec.LAST_UPDATE_DATE,
417               l_ity_rec.LAST_UPDATE_LOGIN;
418     x_no_data_found := ity_pk_csr%NOTFOUND;
419     CLOSE ity_pk_csr;
420     RETURN(l_ity_rec);
421   END get_rec;
422 
423   FUNCTION get_rec (
424     p_ity_rec                      IN ity_rec_type
425   ) RETURN ity_rec_type IS
426     l_row_notfound                 BOOLEAN := TRUE;
427   BEGIN
428     RETURN(get_rec(p_ity_rec, l_row_notfound));
429   END get_rec;
430   ---------------------------------------------------------------------------
431   -- FUNCTION get_rec for: OKL_INVOICE_TYPES_TL
432   ---------------------------------------------------------------------------
433   FUNCTION get_rec (
434     p_okl_invoice_types_tl_rec     IN okl_invoice_types_tl_rec_type,
435     x_no_data_found                OUT NOCOPY BOOLEAN
436   ) RETURN okl_invoice_types_tl_rec_type IS
437     CURSOR okl_invoice_types_tl_pk_csr (p_id                 IN NUMBER,
438                                         p_language           IN VARCHAR2) IS
439     SELECT
440             ID,
441             LANGUAGE,
442             SOURCE_LANG,
443             SFWT_FLAG,
444             NAME,
445             DESCRIPTION,
446             CREATED_BY,
447             CREATION_DATE,
448             LAST_UPDATED_BY,
449             LAST_UPDATE_DATE,
450             LAST_UPDATE_LOGIN
451       FROM Okl_Invoice_Types_Tl
452      WHERE okl_invoice_types_tl.id = p_id
453        AND okl_invoice_types_tl.LANGUAGE = p_language;
454     l_okl_invoice_types_tl_pk      okl_invoice_types_tl_pk_csr%ROWTYPE;
455     l_okl_invoice_types_tl_rec     okl_invoice_types_tl_rec_type;
456   BEGIN
457     x_no_data_found := TRUE;
458     -- Get current database values
459     OPEN okl_invoice_types_tl_pk_csr (p_okl_invoice_types_tl_rec.id,
460                                       p_okl_invoice_types_tl_rec.LANGUAGE);
461     FETCH okl_invoice_types_tl_pk_csr INTO
462               l_okl_invoice_types_tl_rec.ID,
463               l_okl_invoice_types_tl_rec.LANGUAGE,
464               l_okl_invoice_types_tl_rec.SOURCE_LANG,
465               l_okl_invoice_types_tl_rec.SFWT_FLAG,
466               l_okl_invoice_types_tl_rec.NAME,
467               l_okl_invoice_types_tl_rec.DESCRIPTION,
468               l_okl_invoice_types_tl_rec.CREATED_BY,
469               l_okl_invoice_types_tl_rec.CREATION_DATE,
470               l_okl_invoice_types_tl_rec.LAST_UPDATED_BY,
471               l_okl_invoice_types_tl_rec.LAST_UPDATE_DATE,
472               l_okl_invoice_types_tl_rec.LAST_UPDATE_LOGIN;
473     x_no_data_found := okl_invoice_types_tl_pk_csr%NOTFOUND;
474     CLOSE okl_invoice_types_tl_pk_csr;
475     RETURN(l_okl_invoice_types_tl_rec);
476   END get_rec;
477 
478   FUNCTION get_rec (
479     p_okl_invoice_types_tl_rec     IN okl_invoice_types_tl_rec_type
480   ) RETURN okl_invoice_types_tl_rec_type IS
481     l_row_notfound                 BOOLEAN := TRUE;
482   BEGIN
483     RETURN(get_rec(p_okl_invoice_types_tl_rec, l_row_notfound));
484   END get_rec;
485   ---------------------------------------------------------------------------
486   -- FUNCTION get_rec for: OKL_INVOICE_TYPES_V
487   ---------------------------------------------------------------------------
488   FUNCTION get_rec (
489     p_ityv_rec                     IN ityv_rec_type,
490     x_no_data_found                OUT NOCOPY BOOLEAN
491   ) RETURN ityv_rec_type IS
492     CURSOR okl_ityv_pk_csr (p_id                 IN NUMBER) IS
493     SELECT
494             ID,
495             OBJECT_VERSION_NUMBER,
496             SFWT_FLAG,
497             INF_ID,
498             NAME,
499             DESCRIPTION,
500             GROUP_ASSET_YN,
501             GROUP_BY_CONTRACT_YN,
502             ATTRIBUTE_CATEGORY,
503             ATTRIBUTE1,
504             ATTRIBUTE2,
505             ATTRIBUTE3,
506             ATTRIBUTE4,
507             ATTRIBUTE5,
508             ATTRIBUTE6,
509             ATTRIBUTE7,
510             ATTRIBUTE8,
511             ATTRIBUTE9,
512             ATTRIBUTE10,
513             ATTRIBUTE11,
514             ATTRIBUTE12,
515             ATTRIBUTE13,
516             ATTRIBUTE14,
517             ATTRIBUTE15,
518             CREATED_BY,
519             CREATION_DATE,
520             LAST_UPDATED_BY,
521             LAST_UPDATE_DATE,
522             LAST_UPDATE_LOGIN
523       FROM Okl_Invoice_Types_V
524      WHERE okl_invoice_types_v.id = p_id;
525     l_okl_ityv_pk                  okl_ityv_pk_csr%ROWTYPE;
526     l_ityv_rec                     ityv_rec_type;
527   BEGIN
528     x_no_data_found := TRUE;
529     -- Get current database values
530     OPEN okl_ityv_pk_csr (p_ityv_rec.id);
531     FETCH okl_ityv_pk_csr INTO
532               l_ityv_rec.ID,
533               l_ityv_rec.OBJECT_VERSION_NUMBER,
534               l_ityv_rec.SFWT_FLAG,
535               l_ityv_rec.INF_ID,
536               l_ityv_rec.NAME,
537               l_ityv_rec.DESCRIPTION,
538               l_ityv_rec.GROUP_ASSET_YN,
539               l_ityv_rec.GROUP_BY_CONTRACT_YN,
540               l_ityv_rec.ATTRIBUTE_CATEGORY,
541               l_ityv_rec.ATTRIBUTE1,
542               l_ityv_rec.ATTRIBUTE2,
543               l_ityv_rec.ATTRIBUTE3,
544               l_ityv_rec.ATTRIBUTE4,
545               l_ityv_rec.ATTRIBUTE5,
546               l_ityv_rec.ATTRIBUTE6,
547               l_ityv_rec.ATTRIBUTE7,
548               l_ityv_rec.ATTRIBUTE8,
549               l_ityv_rec.ATTRIBUTE9,
550               l_ityv_rec.ATTRIBUTE10,
551               l_ityv_rec.ATTRIBUTE11,
552               l_ityv_rec.ATTRIBUTE12,
553               l_ityv_rec.ATTRIBUTE13,
554               l_ityv_rec.ATTRIBUTE14,
555               l_ityv_rec.ATTRIBUTE15,
556               l_ityv_rec.CREATED_BY,
557               l_ityv_rec.CREATION_DATE,
558               l_ityv_rec.LAST_UPDATED_BY,
559               l_ityv_rec.LAST_UPDATE_DATE,
560               l_ityv_rec.LAST_UPDATE_LOGIN;
561     x_no_data_found := okl_ityv_pk_csr%NOTFOUND;
562     CLOSE okl_ityv_pk_csr;
563     RETURN(l_ityv_rec);
564   END get_rec;
565 
566   FUNCTION get_rec (
567     p_ityv_rec                     IN ityv_rec_type
568   ) RETURN ityv_rec_type IS
569     l_row_notfound                 BOOLEAN := TRUE;
570   BEGIN
571     RETURN(get_rec(p_ityv_rec, l_row_notfound));
572   END get_rec;
573 
574   ---------------------------------------------------------
575   -- FUNCTION null_out_defaults for: OKL_INVOICE_TYPES_V --
576   ---------------------------------------------------------
577   FUNCTION null_out_defaults (
578     p_ityv_rec	IN ityv_rec_type
579   ) RETURN ityv_rec_type IS
580     l_ityv_rec	ityv_rec_type := p_ityv_rec;
581   BEGIN
582     IF (l_ityv_rec.object_version_number = Okl_Api.G_MISS_NUM) THEN
583       l_ityv_rec.object_version_number := NULL;
584     END IF;
585     IF (l_ityv_rec.sfwt_flag = Okl_Api.G_MISS_CHAR) THEN
586       l_ityv_rec.sfwt_flag := NULL;
587     END IF;
588     IF (l_ityv_rec.inf_id = Okl_Api.G_MISS_NUM) THEN
589       l_ityv_rec.inf_id := NULL;
590     END IF;
591     IF (l_ityv_rec.name = Okl_Api.G_MISS_CHAR) THEN
592       l_ityv_rec.name := NULL;
593     END IF;
594     IF (l_ityv_rec.description = Okl_Api.G_MISS_CHAR) THEN
595       l_ityv_rec.description := NULL;
596     END IF;
597     IF (l_ityv_rec.group_asset_yn = Okl_Api.G_MISS_CHAR) THEN
598       l_ityv_rec.group_asset_yn := NULL;
599     END IF;
600     IF (l_ityv_rec.group_by_contract_yn = Okl_Api.G_MISS_CHAR) THEN
601       l_ityv_rec.group_by_contract_yn := NULL;
602     END IF;
603     IF (l_ityv_rec.attribute_category = Okl_Api.G_MISS_CHAR) THEN
604       l_ityv_rec.attribute_category := NULL;
605     END IF;
606     IF (l_ityv_rec.attribute1 = Okl_Api.G_MISS_CHAR) THEN
607       l_ityv_rec.attribute1 := NULL;
608     END IF;
609     IF (l_ityv_rec.attribute2 = Okl_Api.G_MISS_CHAR) THEN
610       l_ityv_rec.attribute2 := NULL;
611     END IF;
612     IF (l_ityv_rec.attribute3 = Okl_Api.G_MISS_CHAR) THEN
613       l_ityv_rec.attribute3 := NULL;
614     END IF;
615     IF (l_ityv_rec.attribute4 = Okl_Api.G_MISS_CHAR) THEN
616       l_ityv_rec.attribute4 := NULL;
617     END IF;
618     IF (l_ityv_rec.attribute5 = Okl_Api.G_MISS_CHAR) THEN
619       l_ityv_rec.attribute5 := NULL;
620     END IF;
621     IF (l_ityv_rec.attribute6 = Okl_Api.G_MISS_CHAR) THEN
622       l_ityv_rec.attribute6 := NULL;
623     END IF;
624     IF (l_ityv_rec.attribute7 = Okl_Api.G_MISS_CHAR) THEN
625       l_ityv_rec.attribute7 := NULL;
626     END IF;
627     IF (l_ityv_rec.attribute8 = Okl_Api.G_MISS_CHAR) THEN
628       l_ityv_rec.attribute8 := NULL;
629     END IF;
630     IF (l_ityv_rec.attribute9 = Okl_Api.G_MISS_CHAR) THEN
631       l_ityv_rec.attribute9 := NULL;
632     END IF;
633     IF (l_ityv_rec.attribute10 = Okl_Api.G_MISS_CHAR) THEN
634       l_ityv_rec.attribute10 := NULL;
635     END IF;
636     IF (l_ityv_rec.attribute11 = Okl_Api.G_MISS_CHAR) THEN
637       l_ityv_rec.attribute11 := NULL;
638     END IF;
639     IF (l_ityv_rec.attribute12 = Okl_Api.G_MISS_CHAR) THEN
640       l_ityv_rec.attribute12 := NULL;
641     END IF;
642     IF (l_ityv_rec.attribute13 = Okl_Api.G_MISS_CHAR) THEN
643       l_ityv_rec.attribute13 := NULL;
644     END IF;
645     IF (l_ityv_rec.attribute14 = Okl_Api.G_MISS_CHAR) THEN
646       l_ityv_rec.attribute14 := NULL;
647     END IF;
648     IF (l_ityv_rec.attribute15 = Okl_Api.G_MISS_CHAR) THEN
649       l_ityv_rec.attribute15 := NULL;
650     END IF;
651     IF (l_ityv_rec.created_by = Okl_Api.G_MISS_NUM) THEN
652       l_ityv_rec.created_by := NULL;
653     END IF;
654     IF (l_ityv_rec.creation_date = Okl_Api.G_MISS_DATE) THEN
655       l_ityv_rec.creation_date := NULL;
656     END IF;
657     IF (l_ityv_rec.last_updated_by = Okl_Api.G_MISS_NUM) THEN
658       l_ityv_rec.last_updated_by := NULL;
659     END IF;
660     IF (l_ityv_rec.last_update_date = Okl_Api.G_MISS_DATE) THEN
661       l_ityv_rec.last_update_date := NULL;
662     END IF;
663     IF (l_ityv_rec.last_update_login = Okl_Api.G_MISS_NUM) THEN
664       l_ityv_rec.last_update_login := NULL;
665     END IF;
666     RETURN(l_ityv_rec);
667   END null_out_defaults;
668   ---------------------------------------------------------------------------
669   -- PROCEDURE Validate_Attributes
670   ---------------------------------------------------------------------------
671   -------------------------------------------------
672   -- Validate_Attributes for:OKL_INVOICE_TYPES_V --
673   -------------------------------------------------
674   FUNCTION Validate_Attributes (
675     p_ityv_rec IN  ityv_rec_type
676   ) RETURN VARCHAR2 IS
677     x_return_status VARCHAR2(1)	:= Okl_Api.G_RET_STS_SUCCESS;
678     l_return_status	VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
679   BEGIN
680      -- Call each column level validation
681 
682   validate_id(x_return_status => l_return_status,
683 			 	p_ityv_rec =>	p_ityv_rec);
684 
685   -- Store the highest degree of error
686   IF(l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
687   	IF(x_return_status <> Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
688 		x_return_status := l_return_status;
689 	END IF;
690   END IF;
691 
692   validate_object_version_number(x_return_status => l_return_status,
693 			 	p_ityv_rec =>	p_ityv_rec);
694 
695   -- Store the highest degree of error
696   IF(l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
697   	IF(x_return_status <> Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
698 		x_return_status := l_return_status;
699 	END IF;
700   END IF;
701 
702   validate_inf_id(x_return_status => l_return_status,
703 			 	p_ityv_rec =>	p_ityv_rec);
704 
705   -- Store the highest degree of error
706   IF(l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
707   	IF(x_return_status <> Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
708 		x_return_status := l_return_status;
709 	END IF;
710   END IF;
711 
712   validate_name(x_return_status => l_return_status,
713 			 	p_ityv_rec =>	p_ityv_rec);
714 
715   -- Store the highest degree of error
716   IF(l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
717   	IF(x_return_status <> Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
718 		x_return_status := l_return_status;
719 	END IF;
720   END IF;
721 
722   validate_group_asset_yn(x_return_status => l_return_status,
723 			 	p_ityv_rec =>	p_ityv_rec);
724 
725   -- Store the highest degree of error
726   IF(l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
727   	IF(x_return_status <> Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
728 		x_return_status := l_return_status;
729 	END IF;
730   END IF;
731 
732   validate_group_by_contract_yn(x_return_status => l_return_status,
733 			 	p_ityv_rec =>	p_ityv_rec);
734 
735   -- Store the highest degree of error
736   IF(l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
737   	IF(x_return_status <> Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
738 		x_return_status := l_return_status;
739 	END IF;
740   END IF;
741 
742     RETURN(l_return_status);
743   END Validate_Attributes;
744 
745   ---------------------------------------------------------------------------
746   -- PROCEDURE Validate_Record
747   ---------------------------------------------------------------------------
748   ---------------------------------------------
749   -- Validate_Record for:OKL_INVOICE_TYPES_V --
750   ---------------------------------------------
751   FUNCTION Validate_Record (
752     p_ityv_rec IN ityv_rec_type
753   ) RETURN VARCHAR2 IS
754     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
755   BEGIN
756       l_return_status := IS_UNIQUE(p_ityv_rec);
757     RETURN (l_return_status);
758   END Validate_Record;
759 
760   ---------------------------------------------------------------------------
761   -- PROCEDURE Migrate
762   ---------------------------------------------------------------------------
763   PROCEDURE migrate (
764     p_from	IN ityv_rec_type,
765     p_to	OUT NOCOPY ity_rec_type
766   ) IS
767   BEGIN
768     p_to.id := p_from.id;
769     p_to.inf_id := p_from.inf_id;
770     p_to.group_asset_yn := p_from.group_asset_yn;
771     p_to.group_by_contract_yn := p_from.group_by_contract_yn;
772     p_to.object_version_number := p_from.object_version_number;
773     p_to.attribute_category := p_from.attribute_category;
774     p_to.attribute1 := p_from.attribute1;
775     p_to.attribute2 := p_from.attribute2;
776     p_to.attribute3 := p_from.attribute3;
777     p_to.attribute4 := p_from.attribute4;
778     p_to.attribute5 := p_from.attribute5;
779     p_to.attribute6 := p_from.attribute6;
780     p_to.attribute7 := p_from.attribute7;
781     p_to.attribute8 := p_from.attribute8;
782     p_to.attribute9 := p_from.attribute9;
783     p_to.attribute10 := p_from.attribute10;
784     p_to.attribute11 := p_from.attribute11;
785     p_to.attribute12 := p_from.attribute12;
786     p_to.attribute13 := p_from.attribute13;
787     p_to.attribute14 := p_from.attribute14;
788     p_to.attribute15 := p_from.attribute15;
789     p_to.created_by := p_from.created_by;
790     p_to.creation_date := p_from.creation_date;
791     p_to.last_updated_by := p_from.last_updated_by;
792     p_to.last_update_date := p_from.last_update_date;
793     p_to.last_update_login := p_from.last_update_login;
794   END migrate;
795   PROCEDURE migrate (
796     p_from	IN ity_rec_type,
797     p_to	OUT NOCOPY ityv_rec_type
798   ) IS
799   BEGIN
800     p_to.id := p_from.id;
801     p_to.inf_id := p_from.inf_id;
802     p_to.group_asset_yn := p_from.group_asset_yn;
803     p_to.group_by_contract_yn := p_from.group_by_contract_yn;
804     p_to.object_version_number := p_from.object_version_number;
805     p_to.attribute_category := p_from.attribute_category;
806     p_to.attribute1 := p_from.attribute1;
807     p_to.attribute2 := p_from.attribute2;
808     p_to.attribute3 := p_from.attribute3;
809     p_to.attribute4 := p_from.attribute4;
810     p_to.attribute5 := p_from.attribute5;
811     p_to.attribute6 := p_from.attribute6;
812     p_to.attribute7 := p_from.attribute7;
813     p_to.attribute8 := p_from.attribute8;
814     p_to.attribute9 := p_from.attribute9;
815     p_to.attribute10 := p_from.attribute10;
816     p_to.attribute11 := p_from.attribute11;
817     p_to.attribute12 := p_from.attribute12;
818     p_to.attribute13 := p_from.attribute13;
819     p_to.attribute14 := p_from.attribute14;
820     p_to.attribute15 := p_from.attribute15;
821     p_to.created_by := p_from.created_by;
822     p_to.creation_date := p_from.creation_date;
823     p_to.last_updated_by := p_from.last_updated_by;
824     p_to.last_update_date := p_from.last_update_date;
825     p_to.last_update_login := p_from.last_update_login;
826   END migrate;
827   PROCEDURE migrate (
828     p_from	IN ityv_rec_type,
829     p_to	OUT NOCOPY okl_invoice_types_tl_rec_type
830   ) IS
831   BEGIN
832     p_to.id := p_from.id;
833     p_to.sfwt_flag := p_from.sfwt_flag;
834     p_to.name := p_from.name;
835     p_to.description := p_from.description;
836     p_to.created_by := p_from.created_by;
837     p_to.creation_date := p_from.creation_date;
838     p_to.last_updated_by := p_from.last_updated_by;
839     p_to.last_update_date := p_from.last_update_date;
840     p_to.last_update_login := p_from.last_update_login;
841   END migrate;
842   PROCEDURE migrate (
843     p_from	IN okl_invoice_types_tl_rec_type,
844     p_to	OUT NOCOPY ityv_rec_type
845   ) IS
846   BEGIN
847     p_to.id := p_from.id;
848     p_to.sfwt_flag := p_from.sfwt_flag;
849     p_to.name := p_from.name;
850     p_to.description := p_from.description;
851     p_to.created_by := p_from.created_by;
852     p_to.creation_date := p_from.creation_date;
853     p_to.last_updated_by := p_from.last_updated_by;
854     p_to.last_update_date := p_from.last_update_date;
855     p_to.last_update_login := p_from.last_update_login;
856   END migrate;
857 
858   ---------------------------------------------------------------------------
859   -- PROCEDURE validate_row
860   ---------------------------------------------------------------------------
861   ------------------------------------------
862   -- validate_row for:OKL_INVOICE_TYPES_V --
863   ------------------------------------------
864   PROCEDURE validate_row(
865     p_api_version                  IN NUMBER,
866     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
867     x_return_status                OUT NOCOPY VARCHAR2,
868     x_msg_count                    OUT NOCOPY NUMBER,
869     x_msg_data                     OUT NOCOPY VARCHAR2,
870     p_ityv_rec                     IN ityv_rec_type) IS
871 
872     l_api_version                 CONSTANT NUMBER := 1;
873     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
874     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
875     l_ityv_rec                     ityv_rec_type := p_ityv_rec;
876     l_ity_rec                      ity_rec_type;
877     l_okl_invoice_types_tl_rec     okl_invoice_types_tl_rec_type;
878   BEGIN
879     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
880                                               G_PKG_NAME,
881                                               p_init_msg_list,
882                                               l_api_version,
883                                               p_api_version,
884                                               '_PVT',
885                                               x_return_status);
886     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
887       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
888     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
889       RAISE Okl_Api.G_EXCEPTION_ERROR;
890     END IF;
891     --- Validate all non-missing attributes (Item Level Validation)
892     l_return_status := Validate_Attributes(l_ityv_rec);
893     --- If any errors happen abort API
894     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
895       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
896     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
897       RAISE Okl_Api.G_EXCEPTION_ERROR;
898     END IF;
899     l_return_status := Validate_Record(l_ityv_rec);
900     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
901       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
902     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
903       RAISE Okl_Api.G_EXCEPTION_ERROR;
904     END IF;
905     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
906   EXCEPTION
907     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
908       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
909       (
910         l_api_name,
911         G_PKG_NAME,
912         'okl_api.G_RET_STS_ERROR',
913         x_msg_count,
914         x_msg_data,
915         '_PVT'
916       );
917     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
918       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
919       (
920         l_api_name,
921         G_PKG_NAME,
922         'okl_api.G_RET_STS_UNEXP_ERROR',
923         x_msg_count,
924         x_msg_data,
925         '_PVT'
926       );
927     WHEN OTHERS THEN
928       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
929       (
930         l_api_name,
931         G_PKG_NAME,
932         'OTHERS',
933         x_msg_count,
934         x_msg_data,
935         '_PVT'
936       );
937   END validate_row;
938   ------------------------------------------
939   -- PL/SQL TBL validate_row for:ITYV_TBL --
940   ------------------------------------------
941   PROCEDURE validate_row(
942     p_api_version                  IN NUMBER,
943     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
944     x_return_status                OUT NOCOPY VARCHAR2,
945     x_msg_count                    OUT NOCOPY NUMBER,
946     x_msg_data                     OUT NOCOPY VARCHAR2,
947     p_ityv_tbl                     IN ityv_tbl_type) IS
948 
949     l_api_version                 CONSTANT NUMBER := 1;
950     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
951     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
952     l_overall_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
953     i                              NUMBER := 0;
954   BEGIN
955     Okl_Api.init_msg_list(p_init_msg_list);
956     -- Make sure PL/SQL table has records in it before passing
957     IF (p_ityv_tbl.COUNT > 0) THEN
958       i := p_ityv_tbl.FIRST;
959       LOOP
960         validate_row (
961           p_api_version                  => p_api_version,
962           p_init_msg_list                => Okl_Api.G_FALSE,
963           x_return_status                => x_return_status,
964           x_msg_count                    => x_msg_count,
965           x_msg_data                     => x_msg_data,
966           p_ityv_rec                     => p_ityv_tbl(i));
967 	-- Store the highest degree of error
968 	IF x_return_status <> Okl_Api.G_RET_STS_SUCCESS THEN
969 	   IF l_overall_status <> Okl_Api.G_RET_STS_UNEXP_ERROR THEN
970 	   	  l_overall_status := x_return_status;
971 	   END IF;
972 	END IF;
973         EXIT WHEN (i = p_ityv_tbl.LAST);
974         i := p_ityv_tbl.NEXT(i);
975       END LOOP;
976    -- return overall status
977    	  x_return_status := l_overall_status;
978     END IF;
979   EXCEPTION
980     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
981       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
982       (
983         l_api_name,
984         G_PKG_NAME,
985         'okl_api.G_RET_STS_ERROR',
986         x_msg_count,
987         x_msg_data,
988         '_PVT'
989       );
990     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
991       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
992       (
993         l_api_name,
994         G_PKG_NAME,
995         'okl_api.G_RET_STS_UNEXP_ERROR',
996         x_msg_count,
997         x_msg_data,
998         '_PVT'
999       );
1000     WHEN OTHERS THEN
1001       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1002       (
1003         l_api_name,
1004         G_PKG_NAME,
1005         'OTHERS',
1006         x_msg_count,
1007         x_msg_data,
1008         '_PVT'
1009       );
1010   END validate_row;
1011 
1012   ---------------------------------------------------------------------------
1013   -- PROCEDURE insert_row
1014   ---------------------------------------------------------------------------
1015   ----------------------------------------
1016   -- insert_row for:OKL_INVOICE_TYPES_B --
1017   ----------------------------------------
1018   PROCEDURE insert_row(
1019     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
1020     x_return_status                OUT NOCOPY VARCHAR2,
1021     x_msg_count                    OUT NOCOPY NUMBER,
1022     x_msg_data                     OUT NOCOPY VARCHAR2,
1023     p_ity_rec                      IN ity_rec_type,
1024     x_ity_rec                      OUT NOCOPY ity_rec_type) IS
1025 
1026     l_api_version                 CONSTANT NUMBER := 1;
1027     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
1028     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1029     l_ity_rec                      ity_rec_type := p_ity_rec;
1030     l_def_ity_rec                  ity_rec_type;
1031     --------------------------------------------
1032     -- Set_Attributes for:OKL_INVOICE_TYPES_B --
1033     --------------------------------------------
1034     FUNCTION Set_Attributes (
1035       p_ity_rec IN  ity_rec_type,
1036       x_ity_rec OUT NOCOPY ity_rec_type
1037     ) RETURN VARCHAR2 IS
1038       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1039     BEGIN
1040       x_ity_rec := p_ity_rec;
1041       RETURN(l_return_status);
1042     END Set_Attributes;
1043   BEGIN
1044     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
1045                                               p_init_msg_list,
1046                                               '_PVT',
1047                                               x_return_status);
1048     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1049       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1050     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1051       RAISE Okl_Api.G_EXCEPTION_ERROR;
1052     END IF;
1053     --- Setting item attributes
1054     l_return_status := Set_Attributes(
1055       p_ity_rec,                         -- IN
1056       l_ity_rec);                        -- OUT
1057     --- If any errors happen abort API
1058     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1059       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1060     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1061       RAISE Okl_Api.G_EXCEPTION_ERROR;
1062     END IF;
1063     INSERT INTO OKL_INVOICE_TYPES_B(
1064         id,
1065         inf_id,
1066         group_asset_yn,
1067         group_by_contract_yn,
1068         object_version_number,
1069         attribute_category,
1070         attribute1,
1071         attribute2,
1072         attribute3,
1073         attribute4,
1074         attribute5,
1075         attribute6,
1076         attribute7,
1077         attribute8,
1078         attribute9,
1079         attribute10,
1080         attribute11,
1081         attribute12,
1082         attribute13,
1083         attribute14,
1084         attribute15,
1085         created_by,
1086         creation_date,
1087         last_updated_by,
1088         last_update_date,
1089         last_update_login)
1090       VALUES (
1091         l_ity_rec.id,
1092         l_ity_rec.inf_id,
1093         l_ity_rec.group_asset_yn,
1094         l_ity_rec.group_by_contract_yn,
1095         l_ity_rec.object_version_number,
1096         l_ity_rec.attribute_category,
1097         l_ity_rec.attribute1,
1098         l_ity_rec.attribute2,
1099         l_ity_rec.attribute3,
1100         l_ity_rec.attribute4,
1101         l_ity_rec.attribute5,
1102         l_ity_rec.attribute6,
1103         l_ity_rec.attribute7,
1104         l_ity_rec.attribute8,
1105         l_ity_rec.attribute9,
1106         l_ity_rec.attribute10,
1107         l_ity_rec.attribute11,
1108         l_ity_rec.attribute12,
1109         l_ity_rec.attribute13,
1110         l_ity_rec.attribute14,
1111         l_ity_rec.attribute15,
1112         l_ity_rec.created_by,
1113         l_ity_rec.creation_date,
1114         l_ity_rec.last_updated_by,
1115         l_ity_rec.last_update_date,
1116         l_ity_rec.last_update_login);
1117     -- Set OUT values
1118     x_ity_rec := l_ity_rec;
1119     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
1120   EXCEPTION
1121     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
1122       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
1123       (
1124         l_api_name,
1125         G_PKG_NAME,
1126         'okl_api.G_RET_STS_ERROR',
1127         x_msg_count,
1128         x_msg_data,
1129         '_PVT'
1130       );
1131     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1132       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1133       (
1134         l_api_name,
1135         G_PKG_NAME,
1136         'okl_api.G_RET_STS_UNEXP_ERROR',
1137         x_msg_count,
1138         x_msg_data,
1139         '_PVT'
1140       );
1141     WHEN OTHERS THEN
1142       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1143       (
1144         l_api_name,
1145         G_PKG_NAME,
1146         'OTHERS',
1147         x_msg_count,
1148         x_msg_data,
1149         '_PVT'
1150       );
1151   END insert_row;
1152   -----------------------------------------
1153   -- insert_row for:OKL_INVOICE_TYPES_TL --
1154   -----------------------------------------
1155   PROCEDURE insert_row(
1156     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
1157     x_return_status                OUT NOCOPY VARCHAR2,
1158     x_msg_count                    OUT NOCOPY NUMBER,
1159     x_msg_data                     OUT NOCOPY VARCHAR2,
1160     p_okl_invoice_types_tl_rec     IN okl_invoice_types_tl_rec_type,
1161     x_okl_invoice_types_tl_rec     OUT NOCOPY okl_invoice_types_tl_rec_type) IS
1162 
1163     l_api_version                 CONSTANT NUMBER := 1;
1164     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_insert_row';
1165     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1166     l_okl_invoice_types_tl_rec     okl_invoice_types_tl_rec_type := p_okl_invoice_types_tl_rec;
1167     ldefoklinvoicetypestlrec       okl_invoice_types_tl_rec_type;
1168     CURSOR get_languages IS
1169       SELECT *
1170         FROM FND_LANGUAGES
1171        WHERE INSTALLED_FLAG IN ('I', 'B');
1172     ---------------------------------------------
1173     -- Set_Attributes for:OKL_INVOICE_TYPES_TL --
1174     ---------------------------------------------
1175     FUNCTION Set_Attributes (
1176       p_okl_invoice_types_tl_rec IN  okl_invoice_types_tl_rec_type,
1177       x_okl_invoice_types_tl_rec OUT NOCOPY okl_invoice_types_tl_rec_type
1178     ) RETURN VARCHAR2 IS
1179       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1180     BEGIN
1181       x_okl_invoice_types_tl_rec := p_okl_invoice_types_tl_rec;
1182       x_okl_invoice_types_tl_rec.LANGUAGE := USERENV('LANG');
1183       x_okl_invoice_types_tl_rec.SOURCE_LANG := USERENV('LANG');
1184       RETURN(l_return_status);
1185     END Set_Attributes;
1186   BEGIN
1187     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
1188                                               p_init_msg_list,
1189                                               '_PVT',
1190                                               x_return_status);
1191     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1192       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1193     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1194       RAISE Okl_Api.G_EXCEPTION_ERROR;
1195     END IF;
1196     --- Setting item attributes
1197     l_return_status := Set_Attributes(
1198       p_okl_invoice_types_tl_rec,        -- IN
1199       l_okl_invoice_types_tl_rec);       -- OUT
1200     --- If any errors happen abort API
1201     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1202       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1203     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1204       RAISE Okl_Api.G_EXCEPTION_ERROR;
1205     END IF;
1206     FOR l_lang_rec IN get_languages LOOP
1207       l_okl_invoice_types_tl_rec.LANGUAGE := l_lang_rec.language_code;
1208       INSERT INTO OKL_INVOICE_TYPES_TL(
1209           id,
1210           LANGUAGE,
1211           source_lang,
1212           sfwt_flag,
1213           name,
1214           description,
1215           created_by,
1216           creation_date,
1217           last_updated_by,
1218           last_update_date,
1219           last_update_login)
1220         VALUES (
1221           l_okl_invoice_types_tl_rec.id,
1222           l_okl_invoice_types_tl_rec.LANGUAGE,
1223           l_okl_invoice_types_tl_rec.source_lang,
1224           l_okl_invoice_types_tl_rec.sfwt_flag,
1225           l_okl_invoice_types_tl_rec.name,
1226           l_okl_invoice_types_tl_rec.description,
1227           l_okl_invoice_types_tl_rec.created_by,
1228           l_okl_invoice_types_tl_rec.creation_date,
1229           l_okl_invoice_types_tl_rec.last_updated_by,
1230           l_okl_invoice_types_tl_rec.last_update_date,
1231           l_okl_invoice_types_tl_rec.last_update_login);
1232     END LOOP;
1233     -- Set OUT values
1234     x_okl_invoice_types_tl_rec := l_okl_invoice_types_tl_rec;
1235     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
1236   EXCEPTION
1237     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
1238       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
1239       (
1240         l_api_name,
1241         G_PKG_NAME,
1242         'okl_api.G_RET_STS_ERROR',
1243         x_msg_count,
1244         x_msg_data,
1245         '_PVT'
1246       );
1247     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1248       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1249       (
1250         l_api_name,
1251         G_PKG_NAME,
1252         'okl_api.G_RET_STS_UNEXP_ERROR',
1253         x_msg_count,
1254         x_msg_data,
1255         '_PVT'
1256       );
1257     WHEN OTHERS THEN
1258       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1259       (
1260         l_api_name,
1261         G_PKG_NAME,
1262         'OTHERS',
1263         x_msg_count,
1264         x_msg_data,
1265         '_PVT'
1266       );
1267   END insert_row;
1268   ----------------------------------------
1269   -- insert_row for:OKL_INVOICE_TYPES_V --
1270   ----------------------------------------
1271   PROCEDURE insert_row(
1272     p_api_version                  IN NUMBER,
1273     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
1274     x_return_status                OUT NOCOPY VARCHAR2,
1275     x_msg_count                    OUT NOCOPY NUMBER,
1276     x_msg_data                     OUT NOCOPY VARCHAR2,
1277     p_ityv_rec                     IN ityv_rec_type,
1278     x_ityv_rec                     OUT NOCOPY ityv_rec_type) IS
1279 
1280     l_api_version                 CONSTANT NUMBER := 1;
1281     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
1282     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1283     l_ityv_rec                     ityv_rec_type;
1284     l_def_ityv_rec                 ityv_rec_type;
1285     l_ity_rec                      ity_rec_type;
1286     lx_ity_rec                     ity_rec_type;
1287     l_okl_invoice_types_tl_rec     okl_invoice_types_tl_rec_type;
1288     lx_okl_invoice_types_tl_rec    okl_invoice_types_tl_rec_type;
1289     -------------------------------
1290     -- FUNCTION fill_who_columns --
1291     -------------------------------
1292     FUNCTION fill_who_columns (
1293       p_ityv_rec	IN ityv_rec_type
1294     ) RETURN ityv_rec_type IS
1295       l_ityv_rec	ityv_rec_type := p_ityv_rec;
1296     BEGIN
1297       l_ityv_rec.CREATION_DATE := SYSDATE;
1298       l_ityv_rec.CREATED_BY := Fnd_Global.USER_ID;
1299       l_ityv_rec.LAST_UPDATE_DATE := SYSDATE;
1300       l_ityv_rec.LAST_UPDATED_BY := Fnd_Global.USER_ID;
1301       l_ityv_rec.LAST_UPDATE_LOGIN := Fnd_Global.LOGIN_ID;
1302       RETURN(l_ityv_rec);
1303     END fill_who_columns;
1304     --------------------------------------------
1305     -- Set_Attributes for:OKL_INVOICE_TYPES_V --
1306     --------------------------------------------
1307     FUNCTION Set_Attributes (
1308       p_ityv_rec IN  ityv_rec_type,
1309       x_ityv_rec OUT NOCOPY ityv_rec_type
1310     ) RETURN VARCHAR2 IS
1311       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1312     BEGIN
1313       x_ityv_rec := p_ityv_rec;
1314       x_ityv_rec.OBJECT_VERSION_NUMBER := 1;
1315       x_ityv_rec.SFWT_FLAG := 'N';
1316       RETURN(l_return_status);
1317     END Set_Attributes;
1318   BEGIN
1319     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
1320                                               G_PKG_NAME,
1321                                               p_init_msg_list,
1322                                               l_api_version,
1323                                               p_api_version,
1324                                               '_PVT',
1325                                               x_return_status);
1326     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1327       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1328     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1329       RAISE Okl_Api.G_EXCEPTION_ERROR;
1330     END IF;
1331     l_ityv_rec := null_out_defaults(p_ityv_rec);
1332     -- Set primary key value
1333     l_ityv_rec.ID := get_seq_id;
1334     --- Setting item attributes
1335     l_return_status := Set_Attributes(
1336       l_ityv_rec,                        -- IN
1337       l_def_ityv_rec);                   -- OUT
1338     --- If any errors happen abort API
1339     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1340       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1341     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1342       RAISE Okl_Api.G_EXCEPTION_ERROR;
1343     END IF;
1344     l_def_ityv_rec := fill_who_columns(l_def_ityv_rec);
1345     --- Validate all non-missing attributes (Item Level Validation)
1346     l_return_status := Validate_Attributes(l_def_ityv_rec);
1347     --- If any errors happen abort API
1348     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1349       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1350     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1351       RAISE Okl_Api.G_EXCEPTION_ERROR;
1352     END IF;
1353     l_return_status := Validate_Record(l_def_ityv_rec);
1354     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1355       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1356     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1357       RAISE Okl_Api.G_EXCEPTION_ERROR;
1358     END IF;
1359     --------------------------------------
1360     -- Move VIEW record to "Child" records
1361     --------------------------------------
1362     migrate(l_def_ityv_rec, l_ity_rec);
1363     migrate(l_def_ityv_rec, l_okl_invoice_types_tl_rec);
1364     --------------------------------------------
1365     -- Call the INSERT_ROW for each child record
1366     --------------------------------------------
1367     insert_row(
1368       p_init_msg_list,
1369       x_return_status,
1370       x_msg_count,
1371       x_msg_data,
1372       l_ity_rec,
1373       lx_ity_rec
1374     );
1375     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1376       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1377     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1378       RAISE Okl_Api.G_EXCEPTION_ERROR;
1379     END IF;
1380     migrate(lx_ity_rec, l_def_ityv_rec);
1381     insert_row(
1382       p_init_msg_list,
1383       x_return_status,
1384       x_msg_count,
1385       x_msg_data,
1386       l_okl_invoice_types_tl_rec,
1387       lx_okl_invoice_types_tl_rec
1388     );
1389     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1390       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1391     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1392       RAISE Okl_Api.G_EXCEPTION_ERROR;
1393     END IF;
1394     migrate(lx_okl_invoice_types_tl_rec, l_def_ityv_rec);
1395     -- Set OUT values
1396     x_ityv_rec := l_def_ityv_rec;
1397     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
1398   EXCEPTION
1399     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
1400       x_return_status := 'E';
1401 	  /*
1402       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
1403       (
1404         l_api_name,
1405         G_PKG_NAME,
1406         'okl_api.G_RET_STS_ERROR',
1407         x_msg_count,
1408         x_msg_data,
1409         '_PVT'
1410       );
1411 	  */
1412     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1413       x_return_status := 'U';
1414 	  /*
1415       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1416       (
1417         l_api_name,
1418         G_PKG_NAME,
1419         'okl_api.G_RET_STS_UNEXP_ERROR',
1420         x_msg_count,
1421         x_msg_data,
1422         '_PVT'
1423       );
1424 	  */
1425     WHEN OTHERS THEN
1426       x_return_status := 'U';
1427 	  /*
1428       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1429       (
1430         l_api_name,
1431         G_PKG_NAME,
1432         'OTHERS',
1433         x_msg_count,
1434         x_msg_data,
1435         '_PVT'
1436       );
1437 	  */
1438   END insert_row;
1439   ----------------------------------------
1440   -- PL/SQL TBL insert_row for:ITYV_TBL --
1441   ----------------------------------------
1442   PROCEDURE insert_row(
1443     p_api_version                  IN NUMBER,
1444     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
1445     x_return_status                OUT NOCOPY VARCHAR2,
1446     x_msg_count                    OUT NOCOPY NUMBER,
1447     x_msg_data                     OUT NOCOPY VARCHAR2,
1448     p_ityv_tbl                     IN ityv_tbl_type,
1449     x_ityv_tbl                     OUT NOCOPY ityv_tbl_type) IS
1450 
1451     l_api_version                 CONSTANT NUMBER := 1;
1452     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
1453     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1454     l_overall_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1455     i                              NUMBER := 0;
1456   BEGIN
1457     Okl_Api.init_msg_list(p_init_msg_list);
1458     -- Make sure PL/SQL table has records in it before passing
1459     IF (p_ityv_tbl.COUNT > 0) THEN
1460       i := p_ityv_tbl.FIRST;
1461       LOOP
1462         insert_row (
1463           p_api_version                  => p_api_version,
1464           p_init_msg_list                => Okl_Api.G_FALSE,
1465           x_return_status                => x_return_status,
1466           x_msg_count                    => x_msg_count,
1467           x_msg_data                     => x_msg_data,
1468           p_ityv_rec                     => p_ityv_tbl(i),
1469           x_ityv_rec                     => x_ityv_tbl(i));
1470 	-- Store the highest degree of error
1471 	IF x_return_status <> Okl_Api.G_RET_STS_SUCCESS THEN
1472 	   IF l_overall_status <> Okl_Api.G_RET_STS_UNEXP_ERROR THEN
1473 	   	  l_overall_status := x_return_status;
1474 	   END IF;
1475 	END IF;
1476         EXIT WHEN (i = p_ityv_tbl.LAST);
1477         i := p_ityv_tbl.NEXT(i);
1478       END LOOP;
1479    -- return overall status
1480    	  x_return_status := l_overall_status;
1481     END IF;
1482   EXCEPTION
1483     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
1484       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
1485       (
1486         l_api_name,
1487         G_PKG_NAME,
1488         'okl_api.G_RET_STS_ERROR',
1489         x_msg_count,
1490         x_msg_data,
1491         '_PVT'
1492       );
1493     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1494       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1495       (
1496         l_api_name,
1497         G_PKG_NAME,
1498         'okl_api.G_RET_STS_UNEXP_ERROR',
1499         x_msg_count,
1500         x_msg_data,
1501         '_PVT'
1502       );
1503     WHEN OTHERS THEN
1504       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1505       (
1506         l_api_name,
1507         G_PKG_NAME,
1508         'OTHERS',
1509         x_msg_count,
1510         x_msg_data,
1511         '_PVT'
1512       );
1513   END insert_row;
1514 
1515   ---------------------------------------------------------------------------
1516   -- PROCEDURE lock_row
1517   ---------------------------------------------------------------------------
1518   --------------------------------------
1519   -- lock_row for:OKL_INVOICE_TYPES_B --
1520   --------------------------------------
1521   PROCEDURE lock_row(
1522     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
1523     x_return_status                OUT NOCOPY VARCHAR2,
1524     x_msg_count                    OUT NOCOPY NUMBER,
1525     x_msg_data                     OUT NOCOPY VARCHAR2,
1526     p_ity_rec                      IN ity_rec_type) IS
1527 
1528     E_Resource_Busy               EXCEPTION;
1529     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
1530     CURSOR lock_csr (p_ity_rec IN ity_rec_type) IS
1531     SELECT OBJECT_VERSION_NUMBER
1532       FROM OKL_INVOICE_TYPES_B
1533      WHERE ID = p_ity_rec.id
1534        AND OBJECT_VERSION_NUMBER = p_ity_rec.object_version_number
1535     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
1536 
1537     CURSOR  lchk_csr (p_ity_rec IN ity_rec_type) IS
1538     SELECT OBJECT_VERSION_NUMBER
1539       FROM OKL_INVOICE_TYPES_B
1540     WHERE ID = p_ity_rec.id;
1541     l_api_version                 CONSTANT NUMBER := 1;
1542     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
1543     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1544     l_object_version_number       OKL_INVOICE_TYPES_B.OBJECT_VERSION_NUMBER%TYPE;
1545     lc_object_version_number      OKL_INVOICE_TYPES_B.OBJECT_VERSION_NUMBER%TYPE;
1546     l_row_notfound                BOOLEAN := FALSE;
1547     lc_row_notfound               BOOLEAN := FALSE;
1548   BEGIN
1549     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
1550                                               p_init_msg_list,
1551                                               '_PVT',
1552                                               x_return_status);
1553     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1554       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1555     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1556       RAISE Okl_Api.G_EXCEPTION_ERROR;
1557     END IF;
1558     BEGIN
1559       OPEN lock_csr(p_ity_rec);
1560       FETCH lock_csr INTO l_object_version_number;
1561       l_row_notfound := lock_csr%NOTFOUND;
1562       CLOSE lock_csr;
1563     EXCEPTION
1564       WHEN E_Resource_Busy THEN
1565         IF (lock_csr%ISOPEN) THEN
1566           CLOSE lock_csr;
1567         END IF;
1568         Okl_Api.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
1569         RAISE App_Exceptions.RECORD_LOCK_EXCEPTION;
1570     END;
1571 
1572     IF ( l_row_notfound ) THEN
1573       OPEN lchk_csr(p_ity_rec);
1574       FETCH lchk_csr INTO lc_object_version_number;
1575       lc_row_notfound := lchk_csr%NOTFOUND;
1576       CLOSE lchk_csr;
1577     END IF;
1578     IF (lc_row_notfound) THEN
1579       Okl_Api.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
1580       RAISE Okl_Api.G_EXCEPTION_ERROR;
1581     ELSIF lc_object_version_number > p_ity_rec.object_version_number THEN
1582       Okl_Api.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1583       RAISE Okl_Api.G_EXCEPTION_ERROR;
1584     ELSIF lc_object_version_number <> p_ity_rec.object_version_number THEN
1585       Okl_Api.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1586       RAISE Okl_Api.G_EXCEPTION_ERROR;
1587     ELSIF lc_object_version_number = -1 THEN
1588       Okl_Api.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
1589       RAISE Okl_Api.G_EXCEPTION_ERROR;
1590     END IF;
1591     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
1592   EXCEPTION
1593     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
1594       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
1595       (
1596         l_api_name,
1597         G_PKG_NAME,
1598         'okl_api.G_RET_STS_ERROR',
1599         x_msg_count,
1600         x_msg_data,
1601         '_PVT'
1602       );
1603     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1604       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1605       (
1606         l_api_name,
1607         G_PKG_NAME,
1608         'okl_api.G_RET_STS_UNEXP_ERROR',
1609         x_msg_count,
1610         x_msg_data,
1611         '_PVT'
1612       );
1613     WHEN OTHERS THEN
1614       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1615       (
1616         l_api_name,
1617         G_PKG_NAME,
1618         'OTHERS',
1619         x_msg_count,
1620         x_msg_data,
1621         '_PVT'
1622       );
1623   END lock_row;
1624   ---------------------------------------
1625   -- lock_row for:OKL_INVOICE_TYPES_TL --
1626   ---------------------------------------
1627   PROCEDURE lock_row(
1628     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
1629     x_return_status                OUT NOCOPY VARCHAR2,
1630     x_msg_count                    OUT NOCOPY NUMBER,
1631     x_msg_data                     OUT NOCOPY VARCHAR2,
1632     p_okl_invoice_types_tl_rec     IN okl_invoice_types_tl_rec_type) IS
1633 
1634     E_Resource_Busy               EXCEPTION;
1635     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
1636     CURSOR lock_csr (p_okl_invoice_types_tl_rec IN okl_invoice_types_tl_rec_type) IS
1637     SELECT *
1638       FROM OKL_INVOICE_TYPES_TL
1639      WHERE ID = p_okl_invoice_types_tl_rec.id
1640     FOR UPDATE NOWAIT;
1641 
1642     l_api_version                 CONSTANT NUMBER := 1;
1643     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_lock_row';
1644     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1645     l_lock_var                    lock_csr%ROWTYPE;
1646     l_row_notfound                BOOLEAN := FALSE;
1647     lc_row_notfound               BOOLEAN := FALSE;
1648   BEGIN
1649     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
1650                                               p_init_msg_list,
1651                                               '_PVT',
1652                                               x_return_status);
1653     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1654       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1655     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1656       RAISE Okl_Api.G_EXCEPTION_ERROR;
1657     END IF;
1658     BEGIN
1659       OPEN lock_csr(p_okl_invoice_types_tl_rec);
1660       FETCH lock_csr INTO l_lock_var;
1661       l_row_notfound := lock_csr%NOTFOUND;
1662       CLOSE lock_csr;
1663     EXCEPTION
1664       WHEN E_Resource_Busy THEN
1665         IF (lock_csr%ISOPEN) THEN
1666           CLOSE lock_csr;
1667         END IF;
1668         Okl_Api.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
1669         RAISE App_Exceptions.RECORD_LOCK_EXCEPTION;
1670     END;
1671 
1672     IF ( l_row_notfound ) THEN
1673       Okl_Api.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
1674       RAISE Okl_Api.G_EXCEPTION_ERROR;
1675     END IF;
1676     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
1677   EXCEPTION
1678     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
1679       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
1680       (
1681         l_api_name,
1682         G_PKG_NAME,
1683         'okl_api.G_RET_STS_ERROR',
1684         x_msg_count,
1685         x_msg_data,
1686         '_PVT'
1687       );
1688     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1689       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1690       (
1691         l_api_name,
1692         G_PKG_NAME,
1693         'okl_api.G_RET_STS_UNEXP_ERROR',
1694         x_msg_count,
1695         x_msg_data,
1696         '_PVT'
1697       );
1698     WHEN OTHERS THEN
1699       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1700       (
1701         l_api_name,
1702         G_PKG_NAME,
1703         'OTHERS',
1704         x_msg_count,
1705         x_msg_data,
1706         '_PVT'
1707       );
1708   END lock_row;
1709   --------------------------------------
1710   -- lock_row for:OKL_INVOICE_TYPES_V --
1711   --------------------------------------
1712   PROCEDURE lock_row(
1713     p_api_version                  IN NUMBER,
1714     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
1715     x_return_status                OUT NOCOPY VARCHAR2,
1716     x_msg_count                    OUT NOCOPY NUMBER,
1717     x_msg_data                     OUT NOCOPY VARCHAR2,
1718     p_ityv_rec                     IN ityv_rec_type) IS
1719 
1720     l_api_version                 CONSTANT NUMBER := 1;
1721     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
1722     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1723     l_ity_rec                      ity_rec_type;
1724     l_okl_invoice_types_tl_rec     okl_invoice_types_tl_rec_type;
1725   BEGIN
1726     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
1727                                               G_PKG_NAME,
1728                                               p_init_msg_list,
1729                                               l_api_version,
1730                                               p_api_version,
1731                                               '_PVT',
1732                                               x_return_status);
1733     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1734       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1735     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1736       RAISE Okl_Api.G_EXCEPTION_ERROR;
1737     END IF;
1738     --------------------------------------
1739     -- Move VIEW record to "Child" records
1740     --------------------------------------
1741     migrate(p_ityv_rec, l_ity_rec);
1742     migrate(p_ityv_rec, l_okl_invoice_types_tl_rec);
1743     --------------------------------------------
1744     -- Call the LOCK_ROW for each child record
1745     --------------------------------------------
1746     lock_row(
1747       p_init_msg_list,
1748       x_return_status,
1749       x_msg_count,
1750       x_msg_data,
1751       l_ity_rec
1752     );
1753     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1754       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1755     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1756       RAISE Okl_Api.G_EXCEPTION_ERROR;
1757     END IF;
1758     lock_row(
1759       p_init_msg_list,
1760       x_return_status,
1761       x_msg_count,
1762       x_msg_data,
1763       l_okl_invoice_types_tl_rec
1764     );
1765     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1766       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1767     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1768       RAISE Okl_Api.G_EXCEPTION_ERROR;
1769     END IF;
1770     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
1771   EXCEPTION
1772     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
1773       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
1774       (
1775         l_api_name,
1776         G_PKG_NAME,
1777         'okl_api.G_RET_STS_ERROR',
1778         x_msg_count,
1779         x_msg_data,
1780         '_PVT'
1781       );
1782     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1783       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1784       (
1785         l_api_name,
1786         G_PKG_NAME,
1787         'okl_api.G_RET_STS_UNEXP_ERROR',
1788         x_msg_count,
1789         x_msg_data,
1790         '_PVT'
1791       );
1792     WHEN OTHERS THEN
1793       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1794       (
1795         l_api_name,
1796         G_PKG_NAME,
1797         'OTHERS',
1798         x_msg_count,
1799         x_msg_data,
1800         '_PVT'
1801       );
1802   END lock_row;
1803   --------------------------------------
1804   -- PL/SQL TBL lock_row for:ITYV_TBL --
1805   --------------------------------------
1806   PROCEDURE lock_row(
1807     p_api_version                  IN NUMBER,
1808     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
1809     x_return_status                OUT NOCOPY VARCHAR2,
1810     x_msg_count                    OUT NOCOPY NUMBER,
1811     x_msg_data                     OUT NOCOPY VARCHAR2,
1812     p_ityv_tbl                     IN ityv_tbl_type) IS
1813 
1814     l_api_version                 CONSTANT NUMBER := 1;
1815     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
1816     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1817     l_overall_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1818     i                              NUMBER := 0;
1819   BEGIN
1820     Okl_Api.init_msg_list(p_init_msg_list);
1821     -- Make sure PL/SQL table has records in it before passing
1822     IF (p_ityv_tbl.COUNT > 0) THEN
1823       i := p_ityv_tbl.FIRST;
1824       LOOP
1825         lock_row (
1826           p_api_version                  => p_api_version,
1827           p_init_msg_list                => Okl_Api.G_FALSE,
1828           x_return_status                => x_return_status,
1829           x_msg_count                    => x_msg_count,
1830           x_msg_data                     => x_msg_data,
1831           p_ityv_rec                     => p_ityv_tbl(i));
1832 	-- Store the highest degree of error
1833 	IF x_return_status <> Okl_Api.G_RET_STS_SUCCESS THEN
1834 	   IF l_overall_status <> Okl_Api.G_RET_STS_UNEXP_ERROR THEN
1835 	   	  l_overall_status := x_return_status;
1836 	   END IF;
1837 	END IF;
1838         EXIT WHEN (i = p_ityv_tbl.LAST);
1839         i := p_ityv_tbl.NEXT(i);
1840       END LOOP;
1841    -- return overall status
1842    	  x_return_status := l_overall_status;
1843     END IF;
1844   EXCEPTION
1845     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
1846       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
1847       (
1848         l_api_name,
1849         G_PKG_NAME,
1850         'okl_api.G_RET_STS_ERROR',
1851         x_msg_count,
1852         x_msg_data,
1853         '_PVT'
1854       );
1855     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1856       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1857       (
1858         l_api_name,
1859         G_PKG_NAME,
1860         'okl_api.G_RET_STS_UNEXP_ERROR',
1861         x_msg_count,
1862         x_msg_data,
1863         '_PVT'
1864       );
1865     WHEN OTHERS THEN
1866       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1867       (
1868         l_api_name,
1869         G_PKG_NAME,
1870         'OTHERS',
1871         x_msg_count,
1872         x_msg_data,
1873         '_PVT'
1874       );
1875   END lock_row;
1876 
1877   ---------------------------------------------------------------------------
1878   -- PROCEDURE update_row
1879   ---------------------------------------------------------------------------
1880   ----------------------------------------
1881   -- update_row for:OKL_INVOICE_TYPES_B --
1882   ----------------------------------------
1883   PROCEDURE update_row(
1884     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
1885     x_return_status                OUT NOCOPY VARCHAR2,
1886     x_msg_count                    OUT NOCOPY NUMBER,
1887     x_msg_data                     OUT NOCOPY VARCHAR2,
1888     p_ity_rec                      IN ity_rec_type,
1889     x_ity_rec                      OUT NOCOPY ity_rec_type) IS
1890 
1891     l_api_version                 CONSTANT NUMBER := 1;
1892     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
1893     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1894     l_ity_rec                      ity_rec_type := p_ity_rec;
1895     l_def_ity_rec                  ity_rec_type;
1896     l_row_notfound                 BOOLEAN := TRUE;
1897     ----------------------------------
1898     -- FUNCTION populate_new_record --
1899     ----------------------------------
1900     FUNCTION populate_new_record (
1901       p_ity_rec	IN ity_rec_type,
1902       x_ity_rec	OUT NOCOPY ity_rec_type
1903     ) RETURN VARCHAR2 IS
1904       l_ity_rec                      ity_rec_type;
1905       l_row_notfound                 BOOLEAN := TRUE;
1906       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1907     BEGIN
1908       x_ity_rec := p_ity_rec;
1909       -- Get current database values
1910       l_ity_rec := get_rec(p_ity_rec, l_row_notfound);
1911       IF (l_row_notfound) THEN
1912         l_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
1913       END IF;
1914       IF (x_ity_rec.id = Okl_Api.G_MISS_NUM)
1915       THEN
1916         x_ity_rec.id := l_ity_rec.id;
1917       END IF;
1918       IF (x_ity_rec.inf_id = Okl_Api.G_MISS_NUM)
1919       THEN
1920         x_ity_rec.inf_id := l_ity_rec.inf_id;
1921       END IF;
1922       IF (x_ity_rec.group_asset_yn = Okl_Api.G_MISS_CHAR)
1923       THEN
1924         x_ity_rec.group_asset_yn := l_ity_rec.group_asset_yn;
1925       END IF;
1926       IF (x_ity_rec.group_by_contract_yn = Okl_Api.G_MISS_CHAR)
1927       THEN
1928         x_ity_rec.group_by_contract_yn := l_ity_rec.group_by_contract_yn;
1929       END IF;
1930       IF (x_ity_rec.object_version_number = Okl_Api.G_MISS_NUM)
1931       THEN
1932         x_ity_rec.object_version_number := l_ity_rec.object_version_number;
1933       END IF;
1934       IF (x_ity_rec.attribute_category = Okl_Api.G_MISS_CHAR)
1935       THEN
1936         x_ity_rec.attribute_category := l_ity_rec.attribute_category;
1937       END IF;
1938       IF (x_ity_rec.attribute1 = Okl_Api.G_MISS_CHAR)
1939       THEN
1940         x_ity_rec.attribute1 := l_ity_rec.attribute1;
1941       END IF;
1942       IF (x_ity_rec.attribute2 = Okl_Api.G_MISS_CHAR)
1943       THEN
1944         x_ity_rec.attribute2 := l_ity_rec.attribute2;
1945       END IF;
1946       IF (x_ity_rec.attribute3 = Okl_Api.G_MISS_CHAR)
1947       THEN
1948         x_ity_rec.attribute3 := l_ity_rec.attribute3;
1949       END IF;
1950       IF (x_ity_rec.attribute4 = Okl_Api.G_MISS_CHAR)
1951       THEN
1952         x_ity_rec.attribute4 := l_ity_rec.attribute4;
1953       END IF;
1954       IF (x_ity_rec.attribute5 = Okl_Api.G_MISS_CHAR)
1955       THEN
1956         x_ity_rec.attribute5 := l_ity_rec.attribute5;
1957       END IF;
1958       IF (x_ity_rec.attribute6 = Okl_Api.G_MISS_CHAR)
1959       THEN
1960         x_ity_rec.attribute6 := l_ity_rec.attribute6;
1961       END IF;
1962       IF (x_ity_rec.attribute7 = Okl_Api.G_MISS_CHAR)
1963       THEN
1964         x_ity_rec.attribute7 := l_ity_rec.attribute7;
1965       END IF;
1966       IF (x_ity_rec.attribute8 = Okl_Api.G_MISS_CHAR)
1967       THEN
1968         x_ity_rec.attribute8 := l_ity_rec.attribute8;
1969       END IF;
1970       IF (x_ity_rec.attribute9 = Okl_Api.G_MISS_CHAR)
1971       THEN
1972         x_ity_rec.attribute9 := l_ity_rec.attribute9;
1973       END IF;
1974       IF (x_ity_rec.attribute10 = Okl_Api.G_MISS_CHAR)
1975       THEN
1976         x_ity_rec.attribute10 := l_ity_rec.attribute10;
1977       END IF;
1978       IF (x_ity_rec.attribute11 = Okl_Api.G_MISS_CHAR)
1979       THEN
1980         x_ity_rec.attribute11 := l_ity_rec.attribute11;
1981       END IF;
1982       IF (x_ity_rec.attribute12 = Okl_Api.G_MISS_CHAR)
1983       THEN
1984         x_ity_rec.attribute12 := l_ity_rec.attribute12;
1985       END IF;
1986       IF (x_ity_rec.attribute13 = Okl_Api.G_MISS_CHAR)
1987       THEN
1988         x_ity_rec.attribute13 := l_ity_rec.attribute13;
1989       END IF;
1990       IF (x_ity_rec.attribute14 = Okl_Api.G_MISS_CHAR)
1991       THEN
1992         x_ity_rec.attribute14 := l_ity_rec.attribute14;
1993       END IF;
1994       IF (x_ity_rec.attribute15 = Okl_Api.G_MISS_CHAR)
1995       THEN
1996         x_ity_rec.attribute15 := l_ity_rec.attribute15;
1997       END IF;
1998       IF (x_ity_rec.created_by = Okl_Api.G_MISS_NUM)
1999       THEN
2000         x_ity_rec.created_by := l_ity_rec.created_by;
2001       END IF;
2002       IF (x_ity_rec.creation_date = Okl_Api.G_MISS_DATE)
2003       THEN
2004         x_ity_rec.creation_date := l_ity_rec.creation_date;
2005       END IF;
2006       IF (x_ity_rec.last_updated_by = Okl_Api.G_MISS_NUM)
2007       THEN
2008         x_ity_rec.last_updated_by := l_ity_rec.last_updated_by;
2009       END IF;
2010       IF (x_ity_rec.last_update_date = Okl_Api.G_MISS_DATE)
2011       THEN
2012         x_ity_rec.last_update_date := l_ity_rec.last_update_date;
2013       END IF;
2014       IF (x_ity_rec.last_update_login = Okl_Api.G_MISS_NUM)
2015       THEN
2016         x_ity_rec.last_update_login := l_ity_rec.last_update_login;
2017       END IF;
2018       RETURN(l_return_status);
2019     END populate_new_record;
2020     --------------------------------------------
2021     -- Set_Attributes for:OKL_INVOICE_TYPES_B --
2022     --------------------------------------------
2023     FUNCTION Set_Attributes (
2024       p_ity_rec IN  ity_rec_type,
2025       x_ity_rec OUT NOCOPY ity_rec_type
2026     ) RETURN VARCHAR2 IS
2027       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2028     BEGIN
2029       x_ity_rec := p_ity_rec;
2030       RETURN(l_return_status);
2031     END Set_Attributes;
2032   BEGIN
2033     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
2034                                               p_init_msg_list,
2035                                               '_PVT',
2036                                               x_return_status);
2037     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2038       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2039     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2040       RAISE Okl_Api.G_EXCEPTION_ERROR;
2041     END IF;
2042     --- Setting item attributes
2043     l_return_status := Set_Attributes(
2044       p_ity_rec,                         -- IN
2045       l_ity_rec);                        -- OUT
2046     --- If any errors happen abort API
2047     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2048       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2049     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2050       RAISE Okl_Api.G_EXCEPTION_ERROR;
2051     END IF;
2052     l_return_status := populate_new_record(l_ity_rec, l_def_ity_rec);
2053     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2054       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2055     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2056       RAISE Okl_Api.G_EXCEPTION_ERROR;
2057     END IF;
2058     UPDATE  OKL_INVOICE_TYPES_B
2059     SET INF_ID = l_def_ity_rec.inf_id,
2060         GROUP_ASSET_YN = l_def_ity_rec.group_asset_yn,
2061         GROUP_BY_CONTRACT_YN = l_def_ity_rec.group_by_contract_yn,
2062         OBJECT_VERSION_NUMBER = l_def_ity_rec.object_version_number,
2063         ATTRIBUTE_CATEGORY = l_def_ity_rec.attribute_category,
2064         ATTRIBUTE1 = l_def_ity_rec.attribute1,
2065         ATTRIBUTE2 = l_def_ity_rec.attribute2,
2066         ATTRIBUTE3 = l_def_ity_rec.attribute3,
2067         ATTRIBUTE4 = l_def_ity_rec.attribute4,
2068         ATTRIBUTE5 = l_def_ity_rec.attribute5,
2069         ATTRIBUTE6 = l_def_ity_rec.attribute6,
2070         ATTRIBUTE7 = l_def_ity_rec.attribute7,
2071         ATTRIBUTE8 = l_def_ity_rec.attribute8,
2072         ATTRIBUTE9 = l_def_ity_rec.attribute9,
2073         ATTRIBUTE10 = l_def_ity_rec.attribute10,
2074         ATTRIBUTE11 = l_def_ity_rec.attribute11,
2075         ATTRIBUTE12 = l_def_ity_rec.attribute12,
2076         ATTRIBUTE13 = l_def_ity_rec.attribute13,
2077         ATTRIBUTE14 = l_def_ity_rec.attribute14,
2078         ATTRIBUTE15 = l_def_ity_rec.attribute15,
2079         CREATED_BY = l_def_ity_rec.created_by,
2080         CREATION_DATE = l_def_ity_rec.creation_date,
2081         LAST_UPDATED_BY = l_def_ity_rec.last_updated_by,
2082         LAST_UPDATE_DATE = l_def_ity_rec.last_update_date,
2083         LAST_UPDATE_LOGIN = l_def_ity_rec.last_update_login
2084     WHERE ID = l_def_ity_rec.id;
2085 
2086     x_ity_rec := l_def_ity_rec;
2087     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
2088   EXCEPTION
2089     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2090       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2091       (
2092         l_api_name,
2093         G_PKG_NAME,
2094         'okl_api.G_RET_STS_ERROR',
2095         x_msg_count,
2096         x_msg_data,
2097         '_PVT'
2098       );
2099     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2100       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2101       (
2102         l_api_name,
2103         G_PKG_NAME,
2104         'okl_api.G_RET_STS_UNEXP_ERROR',
2105         x_msg_count,
2106         x_msg_data,
2107         '_PVT'
2108       );
2109     WHEN OTHERS THEN
2110       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2111       (
2112         l_api_name,
2113         G_PKG_NAME,
2114         'OTHERS',
2115         x_msg_count,
2116         x_msg_data,
2117         '_PVT'
2118       );
2119   END update_row;
2120   -----------------------------------------
2121   -- update_row for:OKL_INVOICE_TYPES_TL --
2122   -----------------------------------------
2123   PROCEDURE update_row(
2124     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
2125     x_return_status                OUT NOCOPY VARCHAR2,
2126     x_msg_count                    OUT NOCOPY NUMBER,
2127     x_msg_data                     OUT NOCOPY VARCHAR2,
2128     p_okl_invoice_types_tl_rec     IN okl_invoice_types_tl_rec_type,
2129     x_okl_invoice_types_tl_rec     OUT NOCOPY okl_invoice_types_tl_rec_type) IS
2130 
2131     l_api_version                 CONSTANT NUMBER := 1;
2132     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_update_row';
2133     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2134     l_okl_invoice_types_tl_rec     okl_invoice_types_tl_rec_type := p_okl_invoice_types_tl_rec;
2135     ldefoklinvoicetypestlrec       okl_invoice_types_tl_rec_type;
2136     l_row_notfound                 BOOLEAN := TRUE;
2137     ----------------------------------
2138     -- FUNCTION populate_new_record --
2139     ----------------------------------
2140     FUNCTION populate_new_record (
2141       p_okl_invoice_types_tl_rec	IN okl_invoice_types_tl_rec_type,
2142       x_okl_invoice_types_tl_rec	OUT NOCOPY okl_invoice_types_tl_rec_type
2143     ) RETURN VARCHAR2 IS
2144       l_okl_invoice_types_tl_rec     okl_invoice_types_tl_rec_type;
2145       l_row_notfound                 BOOLEAN := TRUE;
2146       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2147     BEGIN
2148       x_okl_invoice_types_tl_rec := p_okl_invoice_types_tl_rec;
2149       -- Get current database values
2150       l_okl_invoice_types_tl_rec := get_rec(p_okl_invoice_types_tl_rec, l_row_notfound);
2151       IF (l_row_notfound) THEN
2152         l_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
2153       END IF;
2154       IF (x_okl_invoice_types_tl_rec.id = Okl_Api.G_MISS_NUM)
2155       THEN
2156         x_okl_invoice_types_tl_rec.id := l_okl_invoice_types_tl_rec.id;
2157       END IF;
2158       IF (x_okl_invoice_types_tl_rec.LANGUAGE = Okl_Api.G_MISS_CHAR)
2159       THEN
2160         x_okl_invoice_types_tl_rec.LANGUAGE := l_okl_invoice_types_tl_rec.LANGUAGE;
2161       END IF;
2162       IF (x_okl_invoice_types_tl_rec.source_lang = Okl_Api.G_MISS_CHAR)
2163       THEN
2164         x_okl_invoice_types_tl_rec.source_lang := l_okl_invoice_types_tl_rec.source_lang;
2165       END IF;
2166       IF (x_okl_invoice_types_tl_rec.sfwt_flag = Okl_Api.G_MISS_CHAR)
2167       THEN
2168         x_okl_invoice_types_tl_rec.sfwt_flag := l_okl_invoice_types_tl_rec.sfwt_flag;
2169       END IF;
2170       IF (x_okl_invoice_types_tl_rec.name = Okl_Api.G_MISS_CHAR)
2171       THEN
2172         x_okl_invoice_types_tl_rec.name := l_okl_invoice_types_tl_rec.name;
2173       END IF;
2174       IF (x_okl_invoice_types_tl_rec.description = Okl_Api.G_MISS_CHAR)
2175       THEN
2176         x_okl_invoice_types_tl_rec.description := l_okl_invoice_types_tl_rec.description;
2177       END IF;
2178       IF (x_okl_invoice_types_tl_rec.created_by = Okl_Api.G_MISS_NUM)
2179       THEN
2180         x_okl_invoice_types_tl_rec.created_by := l_okl_invoice_types_tl_rec.created_by;
2181       END IF;
2182       IF (x_okl_invoice_types_tl_rec.creation_date = Okl_Api.G_MISS_DATE)
2183       THEN
2184         x_okl_invoice_types_tl_rec.creation_date := l_okl_invoice_types_tl_rec.creation_date;
2185       END IF;
2186       IF (x_okl_invoice_types_tl_rec.last_updated_by = Okl_Api.G_MISS_NUM)
2187       THEN
2188         x_okl_invoice_types_tl_rec.last_updated_by := l_okl_invoice_types_tl_rec.last_updated_by;
2189       END IF;
2190       IF (x_okl_invoice_types_tl_rec.last_update_date = Okl_Api.G_MISS_DATE)
2191       THEN
2192         x_okl_invoice_types_tl_rec.last_update_date := l_okl_invoice_types_tl_rec.last_update_date;
2193       END IF;
2194       IF (x_okl_invoice_types_tl_rec.last_update_login = Okl_Api.G_MISS_NUM)
2195       THEN
2196         x_okl_invoice_types_tl_rec.last_update_login := l_okl_invoice_types_tl_rec.last_update_login;
2197       END IF;
2198       RETURN(l_return_status);
2199     END populate_new_record;
2200     ---------------------------------------------
2201     -- Set_Attributes for:OKL_INVOICE_TYPES_TL --
2202     ---------------------------------------------
2203     FUNCTION Set_Attributes (
2204       p_okl_invoice_types_tl_rec IN  okl_invoice_types_tl_rec_type,
2205       x_okl_invoice_types_tl_rec OUT NOCOPY okl_invoice_types_tl_rec_type
2206     ) RETURN VARCHAR2 IS
2207       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2208     BEGIN
2209       x_okl_invoice_types_tl_rec := p_okl_invoice_types_tl_rec;
2210       x_okl_invoice_types_tl_rec.LANGUAGE := USERENV('LANG');
2211       x_okl_invoice_types_tl_rec.SOURCE_LANG := USERENV('LANG');
2212       RETURN(l_return_status);
2213     END Set_Attributes;
2214   BEGIN
2215     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
2216                                               p_init_msg_list,
2217                                               '_PVT',
2218                                               x_return_status);
2219     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2220       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2221     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2222       RAISE Okl_Api.G_EXCEPTION_ERROR;
2223     END IF;
2224     --- Setting item attributes
2225     l_return_status := Set_Attributes(
2226       p_okl_invoice_types_tl_rec,        -- IN
2227       l_okl_invoice_types_tl_rec);       -- OUT
2228     --- If any errors happen abort API
2229     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2230       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2231     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2232       RAISE Okl_Api.G_EXCEPTION_ERROR;
2233     END IF;
2234     l_return_status := populate_new_record(l_okl_invoice_types_tl_rec, ldefoklinvoicetypestlrec);
2235     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2236       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2237     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2238       RAISE Okl_Api.G_EXCEPTION_ERROR;
2239     END IF;
2240     UPDATE  OKL_INVOICE_TYPES_TL
2241     SET NAME = ldefoklinvoicetypestlrec.name,
2242         DESCRIPTION = ldefoklinvoicetypestlrec.description,
2243         CREATED_BY = ldefoklinvoicetypestlrec.created_by,
2244         CREATION_DATE = ldefoklinvoicetypestlrec.creation_date,
2245         LAST_UPDATED_BY = ldefoklinvoicetypestlrec.last_updated_by,
2246         LAST_UPDATE_DATE = ldefoklinvoicetypestlrec.last_update_date,
2247         LAST_UPDATE_LOGIN = ldefoklinvoicetypestlrec.last_update_login
2248     WHERE ID = ldefoklinvoicetypestlrec.id
2249       --AND SOURCE_LANG = USERENV('LANG');
2250     AND USERENV('LANG') in (SOURCE_LANG, LANGUAGE);
2251 
2252     UPDATE  OKL_INVOICE_TYPES_TL
2253     SET SFWT_FLAG = 'Y'
2254     WHERE ID = ldefoklinvoicetypestlrec.id
2255       AND SOURCE_LANG <> USERENV('LANG');
2256 
2257     x_okl_invoice_types_tl_rec := ldefoklinvoicetypestlrec;
2258     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
2259   EXCEPTION
2260     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2261       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2262       (
2263         l_api_name,
2264         G_PKG_NAME,
2265         'okl_api.G_RET_STS_ERROR',
2266         x_msg_count,
2267         x_msg_data,
2268         '_PVT'
2269       );
2270     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2271       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2272       (
2273         l_api_name,
2274         G_PKG_NAME,
2275         'okl_api.G_RET_STS_UNEXP_ERROR',
2276         x_msg_count,
2277         x_msg_data,
2278         '_PVT'
2279       );
2280     WHEN OTHERS THEN
2281       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2282       (
2283         l_api_name,
2284         G_PKG_NAME,
2285         'OTHERS',
2286         x_msg_count,
2287         x_msg_data,
2288         '_PVT'
2289       );
2290   END update_row;
2291   ----------------------------------------
2292   -- update_row for:OKL_INVOICE_TYPES_V --
2293   ----------------------------------------
2294   PROCEDURE update_row(
2295     p_api_version                  IN NUMBER,
2296     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
2297     x_return_status                OUT NOCOPY VARCHAR2,
2298     x_msg_count                    OUT NOCOPY NUMBER,
2299     x_msg_data                     OUT NOCOPY VARCHAR2,
2300     p_ityv_rec                     IN ityv_rec_type,
2301     x_ityv_rec                     OUT NOCOPY ityv_rec_type) IS
2302 
2303     l_api_version                 CONSTANT NUMBER := 1;
2304     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
2305     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2306     l_ityv_rec                     ityv_rec_type := p_ityv_rec;
2307     l_def_ityv_rec                 ityv_rec_type;
2308     l_okl_invoice_types_tl_rec     okl_invoice_types_tl_rec_type;
2309     lx_okl_invoice_types_tl_rec    okl_invoice_types_tl_rec_type;
2310     l_ity_rec                      ity_rec_type;
2311     lx_ity_rec                     ity_rec_type;
2312     -------------------------------
2313     -- FUNCTION fill_who_columns --
2314     -------------------------------
2315     FUNCTION fill_who_columns (
2316       p_ityv_rec	IN ityv_rec_type
2317     ) RETURN ityv_rec_type IS
2318       l_ityv_rec	ityv_rec_type := p_ityv_rec;
2319     BEGIN
2320       l_ityv_rec.LAST_UPDATE_DATE := SYSDATE;
2321       l_ityv_rec.LAST_UPDATED_BY := Fnd_Global.USER_ID;
2322       l_ityv_rec.LAST_UPDATE_LOGIN := Fnd_Global.LOGIN_ID;
2323       RETURN(l_ityv_rec);
2324     END fill_who_columns;
2325     ----------------------------------
2326     -- FUNCTION populate_new_record --
2327     ----------------------------------
2328     FUNCTION populate_new_record (
2329       p_ityv_rec	IN ityv_rec_type,
2330       x_ityv_rec	OUT NOCOPY ityv_rec_type
2331     ) RETURN VARCHAR2 IS
2332       l_ityv_rec                     ityv_rec_type;
2333       l_row_notfound                 BOOLEAN := TRUE;
2334       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2335     BEGIN
2336       x_ityv_rec := p_ityv_rec;
2337       -- Get current database values
2338       l_ityv_rec := get_rec(p_ityv_rec, l_row_notfound);
2339       IF (l_row_notfound) THEN
2340         l_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
2341       END IF;
2342       IF (x_ityv_rec.id = Okl_Api.G_MISS_NUM)
2343       THEN
2344         x_ityv_rec.id := l_ityv_rec.id;
2345       END IF;
2346       IF (x_ityv_rec.object_version_number = Okl_Api.G_MISS_NUM)
2347       THEN
2348         x_ityv_rec.object_version_number := l_ityv_rec.object_version_number;
2349       END IF;
2350       IF (x_ityv_rec.sfwt_flag = Okl_Api.G_MISS_CHAR)
2351       THEN
2352         x_ityv_rec.sfwt_flag := l_ityv_rec.sfwt_flag;
2353       END IF;
2354       IF (x_ityv_rec.inf_id = Okl_Api.G_MISS_NUM)
2355       THEN
2356         x_ityv_rec.inf_id := l_ityv_rec.inf_id;
2357       END IF;
2358       IF (x_ityv_rec.name = Okl_Api.G_MISS_CHAR)
2359       THEN
2360         x_ityv_rec.name := l_ityv_rec.name;
2361       END IF;
2362       IF (x_ityv_rec.description = Okl_Api.G_MISS_CHAR)
2363       THEN
2364         x_ityv_rec.description := l_ityv_rec.description;
2365       END IF;
2366       IF (x_ityv_rec.group_asset_yn = Okl_Api.G_MISS_CHAR)
2367       THEN
2368         x_ityv_rec.group_asset_yn := l_ityv_rec.group_asset_yn;
2369       END IF;
2370       IF (x_ityv_rec.group_by_contract_yn = Okl_Api.G_MISS_CHAR)
2371       THEN
2372         x_ityv_rec.group_by_contract_yn := l_ityv_rec.group_by_contract_yn;
2373       END IF;
2374       IF (x_ityv_rec.attribute_category = Okl_Api.G_MISS_CHAR)
2375       THEN
2376         x_ityv_rec.attribute_category := l_ityv_rec.attribute_category;
2377       END IF;
2378       IF (x_ityv_rec.attribute1 = Okl_Api.G_MISS_CHAR)
2379       THEN
2380         x_ityv_rec.attribute1 := l_ityv_rec.attribute1;
2381       END IF;
2382       IF (x_ityv_rec.attribute2 = Okl_Api.G_MISS_CHAR)
2383       THEN
2384         x_ityv_rec.attribute2 := l_ityv_rec.attribute2;
2385       END IF;
2386       IF (x_ityv_rec.attribute3 = Okl_Api.G_MISS_CHAR)
2387       THEN
2388         x_ityv_rec.attribute3 := l_ityv_rec.attribute3;
2389       END IF;
2390       IF (x_ityv_rec.attribute4 = Okl_Api.G_MISS_CHAR)
2391       THEN
2392         x_ityv_rec.attribute4 := l_ityv_rec.attribute4;
2393       END IF;
2394       IF (x_ityv_rec.attribute5 = Okl_Api.G_MISS_CHAR)
2395       THEN
2396         x_ityv_rec.attribute5 := l_ityv_rec.attribute5;
2397       END IF;
2398       IF (x_ityv_rec.attribute6 = Okl_Api.G_MISS_CHAR)
2399       THEN
2400         x_ityv_rec.attribute6 := l_ityv_rec.attribute6;
2401       END IF;
2402       IF (x_ityv_rec.attribute7 = Okl_Api.G_MISS_CHAR)
2403       THEN
2404         x_ityv_rec.attribute7 := l_ityv_rec.attribute7;
2405       END IF;
2406       IF (x_ityv_rec.attribute8 = Okl_Api.G_MISS_CHAR)
2407       THEN
2408         x_ityv_rec.attribute8 := l_ityv_rec.attribute8;
2409       END IF;
2410       IF (x_ityv_rec.attribute9 = Okl_Api.G_MISS_CHAR)
2411       THEN
2412         x_ityv_rec.attribute9 := l_ityv_rec.attribute9;
2413       END IF;
2414       IF (x_ityv_rec.attribute10 = Okl_Api.G_MISS_CHAR)
2415       THEN
2416         x_ityv_rec.attribute10 := l_ityv_rec.attribute10;
2417       END IF;
2418       IF (x_ityv_rec.attribute11 = Okl_Api.G_MISS_CHAR)
2419       THEN
2420         x_ityv_rec.attribute11 := l_ityv_rec.attribute11;
2421       END IF;
2422       IF (x_ityv_rec.attribute12 = Okl_Api.G_MISS_CHAR)
2423       THEN
2424         x_ityv_rec.attribute12 := l_ityv_rec.attribute12;
2425       END IF;
2426       IF (x_ityv_rec.attribute13 = Okl_Api.G_MISS_CHAR)
2427       THEN
2428         x_ityv_rec.attribute13 := l_ityv_rec.attribute13;
2429       END IF;
2430       IF (x_ityv_rec.attribute14 = Okl_Api.G_MISS_CHAR)
2431       THEN
2432         x_ityv_rec.attribute14 := l_ityv_rec.attribute14;
2433       END IF;
2434       IF (x_ityv_rec.attribute15 = Okl_Api.G_MISS_CHAR)
2435       THEN
2436         x_ityv_rec.attribute15 := l_ityv_rec.attribute15;
2437       END IF;
2438       IF (x_ityv_rec.created_by = Okl_Api.G_MISS_NUM)
2439       THEN
2440         x_ityv_rec.created_by := l_ityv_rec.created_by;
2441       END IF;
2442       IF (x_ityv_rec.creation_date = Okl_Api.G_MISS_DATE)
2443       THEN
2444         x_ityv_rec.creation_date := l_ityv_rec.creation_date;
2445       END IF;
2446       IF (x_ityv_rec.last_updated_by = Okl_Api.G_MISS_NUM)
2447       THEN
2448         x_ityv_rec.last_updated_by := l_ityv_rec.last_updated_by;
2449       END IF;
2450       IF (x_ityv_rec.last_update_date = Okl_Api.G_MISS_DATE)
2451       THEN
2452         x_ityv_rec.last_update_date := l_ityv_rec.last_update_date;
2453       END IF;
2454       IF (x_ityv_rec.last_update_login = Okl_Api.G_MISS_NUM)
2455       THEN
2456         x_ityv_rec.last_update_login := l_ityv_rec.last_update_login;
2457       END IF;
2458       RETURN(l_return_status);
2459     END populate_new_record;
2460     --------------------------------------------
2461     -- Set_Attributes for:OKL_INVOICE_TYPES_V --
2462     --------------------------------------------
2463     FUNCTION Set_Attributes (
2464       p_ityv_rec IN  ityv_rec_type,
2465       x_ityv_rec OUT NOCOPY ityv_rec_type
2466     ) RETURN VARCHAR2 IS
2467       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2468     BEGIN
2469       x_ityv_rec := p_ityv_rec;
2470       x_ityv_rec.OBJECT_VERSION_NUMBER := NVL(x_ityv_rec.OBJECT_VERSION_NUMBER, 0) + 1;
2471       RETURN(l_return_status);
2472     END Set_Attributes;
2473   BEGIN
2474     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
2475                                               G_PKG_NAME,
2476                                               p_init_msg_list,
2477                                               l_api_version,
2478                                               p_api_version,
2479                                               '_PVT',
2480                                               x_return_status);
2481     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2482       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2483     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2484       RAISE Okl_Api.G_EXCEPTION_ERROR;
2485     END IF;
2486     --- Setting item attributes
2487     l_return_status := Set_Attributes(
2488       p_ityv_rec,                        -- IN
2489       l_ityv_rec);                       -- OUT
2490     --- If any errors happen abort API
2491     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2492       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2493     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2494       RAISE Okl_Api.G_EXCEPTION_ERROR;
2495     END IF;
2496     l_return_status := populate_new_record(l_ityv_rec, l_def_ityv_rec);
2497     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2498       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2499     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2500       RAISE Okl_Api.G_EXCEPTION_ERROR;
2501     END IF;
2502     l_def_ityv_rec := fill_who_columns(l_def_ityv_rec);
2503     --- Validate all non-missing attributes (Item Level Validation)
2504     l_return_status := Validate_Attributes(l_def_ityv_rec);
2505     --- If any errors happen abort API
2506     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2507       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2508     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2509       RAISE Okl_Api.G_EXCEPTION_ERROR;
2510     END IF;
2511     l_return_status := Validate_Record(l_def_ityv_rec);
2512     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2513       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2514     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2515       RAISE Okl_Api.G_EXCEPTION_ERROR;
2516     END IF;
2517 
2518     --------------------------------------
2519     -- Move VIEW record to "Child" records
2520     --------------------------------------
2521     migrate(l_def_ityv_rec, l_okl_invoice_types_tl_rec);
2522     migrate(l_def_ityv_rec, l_ity_rec);
2523     --------------------------------------------
2524     -- Call the UPDATE_ROW for each child record
2525     --------------------------------------------
2526     update_row(
2527       p_init_msg_list,
2528       x_return_status,
2529       x_msg_count,
2530       x_msg_data,
2531       l_okl_invoice_types_tl_rec,
2532       lx_okl_invoice_types_tl_rec
2533     );
2534     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2535       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2536     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2537       RAISE Okl_Api.G_EXCEPTION_ERROR;
2538     END IF;
2539     migrate(lx_okl_invoice_types_tl_rec, l_def_ityv_rec);
2540     update_row(
2541       p_init_msg_list,
2542       x_return_status,
2543       x_msg_count,
2544       x_msg_data,
2545       l_ity_rec,
2546       lx_ity_rec
2547     );
2548     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2549       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2550     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2551       RAISE Okl_Api.G_EXCEPTION_ERROR;
2552     END IF;
2553     migrate(lx_ity_rec, l_def_ityv_rec);
2554     x_ityv_rec := l_def_ityv_rec;
2555     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
2556   EXCEPTION
2557     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2558       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2559       (
2560         l_api_name,
2561         G_PKG_NAME,
2562         'okl_api.G_RET_STS_ERROR',
2563         x_msg_count,
2564         x_msg_data,
2565         '_PVT'
2566       );
2567     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2568       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2569       (
2570         l_api_name,
2571         G_PKG_NAME,
2572         'okl_api.G_RET_STS_UNEXP_ERROR',
2573         x_msg_count,
2574         x_msg_data,
2575         '_PVT'
2576       );
2577     WHEN OTHERS THEN
2578       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2579       (
2580         l_api_name,
2581         G_PKG_NAME,
2582         'OTHERS',
2583         x_msg_count,
2584         x_msg_data,
2585         '_PVT'
2586       );
2587   END update_row;
2588   ----------------------------------------
2589   -- PL/SQL TBL update_row for:ITYV_TBL --
2590   ----------------------------------------
2591   PROCEDURE update_row(
2592     p_api_version                  IN NUMBER,
2593     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
2594     x_return_status                OUT NOCOPY VARCHAR2,
2595     x_msg_count                    OUT NOCOPY NUMBER,
2596     x_msg_data                     OUT NOCOPY VARCHAR2,
2597     p_ityv_tbl                     IN ityv_tbl_type,
2598     x_ityv_tbl                     OUT NOCOPY ityv_tbl_type) IS
2599 
2600     l_api_version                 CONSTANT NUMBER := 1;
2601     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
2602     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2603     l_overall_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2604     i                              NUMBER := 0;
2605   BEGIN
2606     Okl_Api.init_msg_list(p_init_msg_list);
2607     -- Make sure PL/SQL table has records in it before passing
2608     IF (p_ityv_tbl.COUNT > 0) THEN
2609       i := p_ityv_tbl.FIRST;
2610       LOOP
2611         update_row (
2612           p_api_version                  => p_api_version,
2613           p_init_msg_list                => Okl_Api.G_FALSE,
2614           x_return_status                => x_return_status,
2615           x_msg_count                    => x_msg_count,
2616           x_msg_data                     => x_msg_data,
2617           p_ityv_rec                     => p_ityv_tbl(i),
2618           x_ityv_rec                     => x_ityv_tbl(i));
2619 	-- Store the highest degree of error
2620 	IF x_return_status <> Okl_Api.G_RET_STS_SUCCESS THEN
2621 	   IF l_overall_status <> Okl_Api.G_RET_STS_UNEXP_ERROR THEN
2622 	   	  l_overall_status := x_return_status;
2623 	   END IF;
2624 	END IF;
2625         EXIT WHEN (i = p_ityv_tbl.LAST);
2626         i := p_ityv_tbl.NEXT(i);
2627       END LOOP;
2628    -- return overall status
2629    	  x_return_status := l_overall_status;
2630     END IF;
2631   EXCEPTION
2632     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2633       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2634       (
2635         l_api_name,
2636         G_PKG_NAME,
2637         'okl_api.G_RET_STS_ERROR',
2638         x_msg_count,
2639         x_msg_data,
2640         '_PVT'
2641       );
2642     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2643       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2644       (
2645         l_api_name,
2646         G_PKG_NAME,
2647         'okl_api.G_RET_STS_UNEXP_ERROR',
2648         x_msg_count,
2649         x_msg_data,
2650         '_PVT'
2651       );
2652     WHEN OTHERS THEN
2653       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2654       (
2655         l_api_name,
2656         G_PKG_NAME,
2657         'OTHERS',
2658         x_msg_count,
2659         x_msg_data,
2660         '_PVT'
2661       );
2662   END update_row;
2663 
2664   ---------------------------------------------------------------------------
2665   -- PROCEDURE delete_row
2666   ---------------------------------------------------------------------------
2667   ----------------------------------------
2668   -- delete_row for:OKL_INVOICE_TYPES_B --
2669   ----------------------------------------
2670   PROCEDURE delete_row(
2671     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
2672     x_return_status                OUT NOCOPY VARCHAR2,
2673     x_msg_count                    OUT NOCOPY NUMBER,
2674     x_msg_data                     OUT NOCOPY VARCHAR2,
2675     p_ity_rec                      IN ity_rec_type) IS
2676 
2677     l_api_version                 CONSTANT NUMBER := 1;
2678     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
2679     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2680     l_ity_rec                      ity_rec_type:= p_ity_rec;
2681     l_row_notfound                 BOOLEAN := TRUE;
2682   BEGIN
2683     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
2684                                               p_init_msg_list,
2685                                               '_PVT',
2686                                               x_return_status);
2687     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2688       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2689     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2690       RAISE Okl_Api.G_EXCEPTION_ERROR;
2691     END IF;
2692     DELETE FROM OKL_INVOICE_TYPES_B
2693      WHERE ID = l_ity_rec.id;
2694 
2695     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
2696   EXCEPTION
2697     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2698       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2699       (
2700         l_api_name,
2701         G_PKG_NAME,
2702         'okl_api.G_RET_STS_ERROR',
2703         x_msg_count,
2704         x_msg_data,
2705         '_PVT'
2706       );
2707     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2708       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2709       (
2710         l_api_name,
2711         G_PKG_NAME,
2712         'okl_api.G_RET_STS_UNEXP_ERROR',
2713         x_msg_count,
2714         x_msg_data,
2715         '_PVT'
2716       );
2717     WHEN OTHERS THEN
2718       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2719       (
2720         l_api_name,
2721         G_PKG_NAME,
2722         'OTHERS',
2723         x_msg_count,
2724         x_msg_data,
2725         '_PVT'
2726       );
2727   END delete_row;
2728   -----------------------------------------
2729   -- delete_row for:OKL_INVOICE_TYPES_TL --
2730   -----------------------------------------
2731   PROCEDURE delete_row(
2732     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
2733     x_return_status                OUT NOCOPY VARCHAR2,
2734     x_msg_count                    OUT NOCOPY NUMBER,
2735     x_msg_data                     OUT NOCOPY VARCHAR2,
2736     p_okl_invoice_types_tl_rec     IN okl_invoice_types_tl_rec_type) IS
2737 
2738     l_api_version                 CONSTANT NUMBER := 1;
2739     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_delete_row';
2740     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2741     l_okl_invoice_types_tl_rec     okl_invoice_types_tl_rec_type:= p_okl_invoice_types_tl_rec;
2742     l_row_notfound                 BOOLEAN := TRUE;
2743     ---------------------------------------------
2744     -- Set_Attributes for:OKL_INVOICE_TYPES_TL --
2745     ---------------------------------------------
2746     FUNCTION Set_Attributes (
2747       p_okl_invoice_types_tl_rec IN  okl_invoice_types_tl_rec_type,
2748       x_okl_invoice_types_tl_rec OUT NOCOPY okl_invoice_types_tl_rec_type
2749     ) RETURN VARCHAR2 IS
2750       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2751     BEGIN
2752       x_okl_invoice_types_tl_rec := p_okl_invoice_types_tl_rec;
2753       x_okl_invoice_types_tl_rec.LANGUAGE := USERENV('LANG');
2754       RETURN(l_return_status);
2755     END Set_Attributes;
2756   BEGIN
2757     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
2758                                               p_init_msg_list,
2759                                               '_PVT',
2760                                               x_return_status);
2761     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2762       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2763     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2764       RAISE Okl_Api.G_EXCEPTION_ERROR;
2765     END IF;
2766     --- Setting item attributes
2767     l_return_status := Set_Attributes(
2768       p_okl_invoice_types_tl_rec,        -- IN
2769       l_okl_invoice_types_tl_rec);       -- OUT
2770     --- If any errors happen abort API
2771     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2772       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2773     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2774       RAISE Okl_Api.G_EXCEPTION_ERROR;
2775     END IF;
2776     DELETE FROM OKL_INVOICE_TYPES_TL
2777      WHERE ID = l_okl_invoice_types_tl_rec.id;
2778 
2779     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
2780   EXCEPTION
2781     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2782       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2783       (
2784         l_api_name,
2785         G_PKG_NAME,
2786         'okl_api.G_RET_STS_ERROR',
2787         x_msg_count,
2788         x_msg_data,
2789         '_PVT'
2790       );
2791     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2792       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2793       (
2794         l_api_name,
2795         G_PKG_NAME,
2796         'okl_api.G_RET_STS_UNEXP_ERROR',
2797         x_msg_count,
2798         x_msg_data,
2799         '_PVT'
2800       );
2801     WHEN OTHERS THEN
2802       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2803       (
2804         l_api_name,
2805         G_PKG_NAME,
2806         'OTHERS',
2807         x_msg_count,
2808         x_msg_data,
2809         '_PVT'
2810       );
2811   END delete_row;
2812   ----------------------------------------
2813   -- delete_row for:OKL_INVOICE_TYPES_V --
2814   ----------------------------------------
2815   PROCEDURE delete_row(
2816     p_api_version                  IN NUMBER,
2817     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
2818     x_return_status                OUT NOCOPY VARCHAR2,
2819     x_msg_count                    OUT NOCOPY NUMBER,
2820     x_msg_data                     OUT NOCOPY VARCHAR2,
2821     p_ityv_rec                     IN ityv_rec_type) IS
2822 
2823     l_api_version                 CONSTANT NUMBER := 1;
2824     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
2825     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2826     l_ityv_rec                     ityv_rec_type := p_ityv_rec;
2827     l_okl_invoice_types_tl_rec     okl_invoice_types_tl_rec_type;
2828     l_ity_rec                      ity_rec_type;
2829   BEGIN
2830     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
2831                                               G_PKG_NAME,
2832                                               p_init_msg_list,
2833                                               l_api_version,
2834                                               p_api_version,
2835                                               '_PVT',
2836                                               x_return_status);
2837     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2838       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2839     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2840       RAISE Okl_Api.G_EXCEPTION_ERROR;
2841     END IF;
2842     --------------------------------------
2843     -- Move VIEW record to "Child" records
2844     --------------------------------------
2845     migrate(l_ityv_rec, l_okl_invoice_types_tl_rec);
2846     migrate(l_ityv_rec, l_ity_rec);
2847     --------------------------------------------
2848     -- Call the DELETE_ROW for each child record
2849     --------------------------------------------
2850     delete_row(
2851       p_init_msg_list,
2852       x_return_status,
2853       x_msg_count,
2854       x_msg_data,
2855       l_okl_invoice_types_tl_rec
2856     );
2857     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2858       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2859     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2860       RAISE Okl_Api.G_EXCEPTION_ERROR;
2861     END IF;
2862     delete_row(
2863       p_init_msg_list,
2864       x_return_status,
2865       x_msg_count,
2866       x_msg_data,
2867       l_ity_rec
2868     );
2869     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2870       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2871     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2872       RAISE Okl_Api.G_EXCEPTION_ERROR;
2873     END IF;
2874     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
2875   EXCEPTION
2876     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2877       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2878       (
2879         l_api_name,
2880         G_PKG_NAME,
2881         'okl_api.G_RET_STS_ERROR',
2882         x_msg_count,
2883         x_msg_data,
2884         '_PVT'
2885       );
2886     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2887       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2888       (
2889         l_api_name,
2890         G_PKG_NAME,
2891         'okl_api.G_RET_STS_UNEXP_ERROR',
2892         x_msg_count,
2893         x_msg_data,
2894         '_PVT'
2895       );
2896     WHEN OTHERS THEN
2897       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2898       (
2899         l_api_name,
2900         G_PKG_NAME,
2901         'OTHERS',
2902         x_msg_count,
2903         x_msg_data,
2904         '_PVT'
2905       );
2906   END delete_row;
2907   ----------------------------------------
2908   -- PL/SQL TBL delete_row for:ITYV_TBL --
2909   ----------------------------------------
2910   PROCEDURE delete_row(
2911     p_api_version                  IN NUMBER,
2912     p_init_msg_list                IN VARCHAR2 DEFAULT Okl_Api.G_FALSE,
2913     x_return_status                OUT NOCOPY VARCHAR2,
2914     x_msg_count                    OUT NOCOPY NUMBER,
2915     x_msg_data                     OUT NOCOPY VARCHAR2,
2916     p_ityv_tbl                     IN ityv_tbl_type) IS
2917 
2918     l_api_version                 CONSTANT NUMBER := 1;
2919     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
2920     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2921     l_overall_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2922     i                              NUMBER := 0;
2923   BEGIN
2924     Okl_Api.init_msg_list(p_init_msg_list);
2925     -- Make sure PL/SQL table has records in it before passing
2926     IF (p_ityv_tbl.COUNT > 0) THEN
2927       i := p_ityv_tbl.FIRST;
2928       LOOP
2929         delete_row (
2930           p_api_version                  => p_api_version,
2931           p_init_msg_list                => Okl_Api.G_FALSE,
2932           x_return_status                => x_return_status,
2933           x_msg_count                    => x_msg_count,
2934           x_msg_data                     => x_msg_data,
2935           p_ityv_rec                     => p_ityv_tbl(i));
2936 	-- Store the highest degree of error
2937 	IF x_return_status <> Okl_Api.G_RET_STS_SUCCESS THEN
2938 	   IF l_overall_status <> Okl_Api.G_RET_STS_UNEXP_ERROR THEN
2939 	   	  l_overall_status := x_return_status;
2940 	   END IF;
2941 	END IF;
2942         EXIT WHEN (i = p_ityv_tbl.LAST);
2943         i := p_ityv_tbl.NEXT(i);
2944       END LOOP;
2945    -- return overall status
2946    	  x_return_status := l_overall_status;
2947     END IF;
2948   EXCEPTION
2949     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2950       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2951       (
2952         l_api_name,
2953         G_PKG_NAME,
2954         'okl_api.G_RET_STS_ERROR',
2955         x_msg_count,
2956         x_msg_data,
2957         '_PVT'
2958       );
2959     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2960       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2961       (
2962         l_api_name,
2963         G_PKG_NAME,
2964         'okl_api.G_RET_STS_UNEXP_ERROR',
2965         x_msg_count,
2966         x_msg_data,
2967         '_PVT'
2968       );
2969     WHEN OTHERS THEN
2970       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2971       (
2972         l_api_name,
2973         G_PKG_NAME,
2974         'OTHERS',
2975         x_msg_count,
2976         x_msg_data,
2977         '_PVT'
2978       );
2979   END delete_row;
2980 END Okl_Ity_Pvt;