DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_IVM_PVT

Source


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