DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_CRT_PVT

Source


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