DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_MRB_PVT

Source


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