[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;