DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKS_BTN_PRINT_PREVIEW_PVT

Source


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