DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_IMS_PVT

Source


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