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