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