[Home] [Help]
PACKAGE BODY: APPS.OKC_EXTEND_PUB
Source
1 PACKAGE BODY OKC_EXTEND_PUB as
2 /* $Header: OKCPEXTB.pls 120.0 2005/05/25 18:01:32 appldev noship $ */
3 l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
4
5 FUNCTION is_k_extend_allowed(p_chr_id IN NUMBER,p_sts_code IN VARCHAR2) RETURN BOOLEAN IS
6 BEGIN
7 return OKC_EXTEND_PVT.is_k_extend_allowed(p_chr_id,p_sts_code);
8 END;
9
10 FUNCTION is_kl_extend_allowed(p_cle_id IN NUMBER,p_sts_code IN VARCHAR2) RETURN BOOLEAN IS
11 BEGIN
12 return OKC_EXTEND_PVT.is_kl_extend_allowed(p_cle_id,p_sts_code);
13 END;
14
15 PROCEDURE extend_chr(p_api_version IN NUMBER,
16 p_init_msg_list IN VARCHAR2 ,
17 x_return_status OUT NOCOPY VARCHAR2,
18 x_msg_count OUT NOCOPY NUMBER,
19 x_msg_data OUT NOCOPY VARCHAR2,
20 p_extend_in_parameters_tbl IN extend_in_parameters_tbl,
21 p_do_commit IN VARCHAR2
22 )is
23
24 l_return_status varchar2(1) := OKC_API.G_RET_STS_SUCCESS;
25
26 BEGIN
27
28 OKC_API.init_msg_list(p_init_msg_list);
29
30 x_return_status := OKC_API.G_RET_STS_SUCCESS;
31
32 FOR i in p_extend_in_parameters_tbl.first..p_extend_in_parameters_tbl.last LOOP
33
34
35 if p_extend_in_parameters_tbl.exists(i) then
36
37 OKC_EXTEND_PUB.extend_chr(p_api_version => 1,
38 p_init_msg_list => OKC_API.G_FALSE,
39 x_return_status => l_return_status,
40 x_msg_count => x_msg_count,
41 x_msg_data => x_msg_data,
42 p_extend_in_parameters_rec => p_extend_in_parameters_tbl(i),
43 p_do_commit => p_do_commit);
44
45
46 IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
47 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
48 x_return_status := l_return_status;
49 raise G_EXCEPTION_HALT_VALIDATION;
50 ELSE
51 x_return_status := l_return_status;
52 END IF;
53 END IF;
54
55 END IF; -- if exists
56
57 -- Bug 3658108
58 OKC_CVM_PVT.clear_g_transaction_id;
59
60 END LOOP;
61 IF P_DO_COMMIT = OKC_API.G_TRUE THEN
62 COMMIT;
63 END IF;
64 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
65
66 EXCEPTION
67 WHEN G_EXCEPTION_HALT_VALIDATION THEN
68 NULL;
69 WHEN OTHERS THEN
70 OKC_API.set_message(p_app_name => g_app_name,
71 p_msg_name => g_unexpected_error,
72 p_token1 => g_sqlcode_token,
73 p_token1_value => sqlcode,
74 p_token2 => g_sqlerrm_token,
75 p_token2_value => sqlerrm);
76 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
77 END;
78
79 PROCEDURE extend_chr( p_api_version IN NUMBER,
80 p_init_msg_list IN VARCHAR2 ,
81 x_return_status OUT NOCOPY VARCHAR2,
82 x_msg_count OUT NOCOPY NUMBER,
83 x_msg_data OUT NOCOPY VARCHAR2,
84 p_extend_in_parameters_rec IN extend_in_parameters_rec,
85 p_do_commit IN VARCHAR2
86 ) is
87
88 l_return_status varchar2(1) := OKC_API.G_RET_STS_SUCCESS;
89 l_extend_in_parameters_rec extend_in_parameters_rec := p_extend_in_parameters_rec;
90 l_api_name constant varchar2(30) := 'extend_chr';
91 l_chr_id number;
92 BEGIN
93
94 x_return_status := OKC_API.G_RET_STS_SUCCESS;
95
96 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
97 p_init_msg_list,
98 '_PUB',
99 x_return_status);
100
101 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
102 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
103 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
104 raise OKC_API.G_EXCEPTION_ERROR;
105 END IF;
106
107 -- Call user hook FOR BEFORE
108 g_extend_in_parameters_rec := l_extend_in_parameters_rec;
109
110 OKC_UTIL.call_user_hook(l_return_status, g_pkg_name, l_api_name, 'B');
111
112 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
113 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
114 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
115 raise OKC_API.G_EXCEPTION_ERROR;
116 END IF;
117
118 l_extend_in_parameters_rec := g_extend_in_parameters_rec;
119 l_extend_in_parameters_rec.p_contract_id := p_extend_in_parameters_rec.p_contract_id;
120
121
122 OKC_EXTEND_PVT.extend_chr(p_api_version => 1,
123 p_init_msg_list => OKC_API.G_FALSE,
124 x_return_status => l_return_status,
125 x_msg_count => x_msg_count,
126 x_msg_data => x_msg_data,
127 p_extend_in_parameters_rec => l_extend_in_parameters_rec );
128
129
130 IF l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR THEN
131 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
132 ELSIF l_return_status = OKC_API.G_RET_STS_ERROR THEN
133 RAISE OKC_API.G_EXCEPTION_ERROR;
134 END IF;
135
136
137 OKC_UTIL.call_user_hook(l_return_status, g_pkg_name, l_api_name, 'A');
138
139 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
140 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
141 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
142 raise OKC_API.G_EXCEPTION_ERROR;
143 END IF;
144
145 IF P_DO_COMMIT = OKC_API.G_TRUE THEN
146 COMMIT;
147 END IF;
148
149 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
150
151 EXCEPTION
152 WHEN OKC_API.G_EXCEPTION_ERROR THEN
153 x_return_status := OKC_API.HANDLE_EXCEPTIONS
154 (l_api_name,
155 G_PKG_NAME,
156 'OKC_API.G_RET_STS_ERROR',
157 x_msg_count,
158 x_msg_data,
159 '_PUB');
160 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
161
162 x_return_status := OKC_API.HANDLE_EXCEPTIONS
163 (l_api_name,
164 G_PKG_NAME,
165 'OKC_API.G_RET_STS_UNEXP_ERROR',
166 x_msg_count,
167 x_msg_data,
168 '_PUB');
169 WHEN OTHERS THEN
170 x_return_status := OKC_API.HANDLE_EXCEPTIONS
171 (l_api_name,
172 G_PKG_NAME,
173 'OTHERS',
174 x_msg_count,
175 x_msg_data,
176 '_PUB');
177 end;
178
179 PROCEDURE validate_chr( p_api_version IN NUMBER,
180 p_init_msg_list IN VARCHAR2 ,
181 x_return_status OUT NOCOPY VARCHAR2,
182 x_msg_count OUT NOCOPY NUMBER,
183 x_msg_data OUT NOCOPY VARCHAR2,
184 p_extend_in_parameters_tbl IN extend_in_parameters_tbl ) is
185
186 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
187
188 BEGIN
189
190 OKC_API.init_msg_list(p_init_msg_list);
191
192 x_return_status := OKC_API.G_RET_STS_SUCCESS;
193
194 FOR i in p_extend_in_parameters_tbl.first..p_extend_in_parameters_tbl.last
195 LOOP
196
197 IF p_extend_in_parameters_tbl.exists(i) THEN
198
199 OKC_EXTEND_PVT.validate_chr(p_api_version => p_api_version,
200 p_init_msg_list => OKC_API.G_FALSE,
201 x_return_status => l_return_status,
202 x_msg_count => x_msg_count,
203 x_msg_data => x_msg_data,
204 p_extend_in_parameters_rec => p_extend_in_parameters_tbl(i) );
205
206 IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
207 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
208 x_return_status := l_return_status;
209 raise G_EXCEPTION_HALT_VALIDATION;
210 ELSE
211 x_return_status := l_return_status;
212 END IF;
213 END IF;
214
215 END IF; -- if exists
216 END LOOP;
217 EXCEPTION
218 WHEN G_EXCEPTION_HALT_VALIDATION THEN
219 NULL;
220 WHEN OTHERS THEN
221 OKC_API.set_message(p_app_name => g_app_name,
222 p_msg_name => g_unexpected_error,
223 p_token1 => g_sqlcode_token,
224 p_token1_value => sqlcode,
225 p_token2 => g_sqlerrm_token,
226 p_token2_value => sqlerrm);
227 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
228 end;
229
230
231 PROCEDURE VALIDATE_CHR( p_api_version IN NUMBER,
232 p_init_msg_list IN VARCHAR2 ,
233 x_return_status OUT NOCOPY VARCHAR2,
234 x_msg_count OUT NOCOPY NUMBER,
235 x_msg_data OUT NOCOPY VARCHAR2,
236 p_extend_in_parameters_rec IN extend_in_parameters_rec ) is
237 BEGIN
238
239 OKC_EXTEND_PVT.validate_chr(p_api_version => p_api_version,
240 p_init_msg_list => OKC_API.G_FALSE,
241 x_return_status => x_return_status,
242 x_msg_count => x_msg_count,
243 x_msg_data => x_msg_data,
244 p_extend_in_parameters_rec => p_extend_in_parameters_rec );
245
246 EXCEPTION
247 WHEN OTHERS THEN
248 OKC_API.set_message(p_app_name => g_app_name,
249 p_msg_name => g_unexpected_error,
250 p_token1 => g_sqlcode_token,
251 p_token1_value => sqlcode,
252 p_token2 => g_sqlerrm_token,
253 p_token2_value => sqlerrm);
254
255 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
256 end;
257
258 PROCEDURE extend_cle(p_api_version IN NUMBER,
259 p_init_msg_list IN VARCHAR2 ,
260 x_return_status OUT NOCOPY VARCHAR2,
261 x_msg_count OUT NOCOPY NUMBER,
262 x_msg_data OUT NOCOPY VARCHAR2,
263 p_extend_in_parameters_tbl IN extend_in_cle_tbl,
264 p_do_commit IN VARCHAR2
265 ) IS
266
267 l_return_status varchar2(1) := OKC_API.G_RET_STS_SUCCESS;
268 rec_count number := 0;
269 p_end_date_latest date;
270 l_extend_in_parameters_rec okc_extend_pub.extend_in_parameters_rec;
271 l_api_name constant varchar2(30) := 'extend_cle_tbl';
272 l number;
273 p_hdr_end_date date;
274 l_new_end_date date;
275 l_sts_code Varchar2(30);
276 l_status_code VARCHAR2(30);
277
278 l_chr_rec OKC_CONTRACT_PUB.chrv_rec_type;
279 i_chr_rec OKC_CONTRACT_PUB.chrv_rec_type;
280
281 cursor cur_hdr_enddate(p_cle_id number) is
282 select k.id,k.end_date,k.object_version_number,k.contract_number,
283 k.contract_number_modifier, k.sts_code
284 from okc_k_headers_b k,
285 okc_k_lines_b cle
286 where cle.id = p_cle_id
287 and cle.dnz_chr_id = k.id;
288
289 CURSOR cur_status(p_sts_code varchar2) is
290 SELECT ste_code
291 FROM okc_statuses_b
292 WHERE code = p_sts_code;
293
294 BEGIN
295
296 okc_api.init_msg_list(p_init_msg_list);
297
298 x_return_status := OKC_API.G_RET_STS_SUCCESS;
299
300 l_return_status := OKC_API.START_ACTIVITY( l_api_name,
301 p_init_msg_list,
302 '_PUB',
303 x_return_status);
304
305 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
306 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
307 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
308 raise OKC_API.G_EXCEPTION_ERROR;
309 END IF;
310
311 OPEN cur_hdr_enddate(p_extend_in_parameters_tbl(1).p_cle_id);
312 FETCH cur_hdr_enddate into l_extend_in_parameters_rec.p_contract_id,p_hdr_end_date,l_extend_in_parameters_rec.p_object_version_number,l_extend_in_parameters_rec.p_contract_number,l_extend_in_parameters_rec.p_contract_modifier, l_sts_code;
313 CLOSE cur_hdr_enddate;
314
315 FOR i in p_extend_in_parameters_tbl.first..p_extend_in_parameters_tbl.last LOOP
316
317 -- If the lines are perpetual, set the end date for contract to null
318 If p_extend_in_parameters_tbl(i).p_perpetual_flag = OKC_API.G_TRUE Then
319 p_end_date_latest := Null;
320 Exit;
321 End If;
322
323 rec_count := rec_count + 1;
324
325 IF p_extend_in_parameters_tbl(i).p_end_date is not null THEN
326 l_new_end_date := p_extend_in_parameters_tbl(i).p_end_date;
327 else
328 l_new_end_date := okc_time_util_pub.get_enddate(p_extend_in_parameters_tbl(i).p_orig_end_date + 1,
329 p_extend_in_parameters_tbl(i).p_uom_code,
330 p_extend_in_parameters_tbl(i).p_duration);
331 end IF;
332
333 IF rec_count = 1 THEN
334 p_end_date_latest :=l_new_end_date;
335 ELSE
336 IF l_new_end_date > p_end_date_latest THEN
337 p_end_date_latest := l_new_end_date;
338 END IF;
339 END IF;
340 END LOOP;
341
342 -- The following IF changed for perpetual contracts
343 -- IF (p_end_date_latest is NOT NULL and p_end_date_latest > p_hdr_end_date) Or
344 IF (p_end_date_latest is NOT NULL and p_end_date_latest > p_hdr_end_date) Or
345 (p_end_date_latest is null and p_hdr_end_date is Not Null) THEN
346
347 OKC_EXTEND_PVT.g_called_from := 'LINES';
348
349 l_extend_in_parameters_rec.p_orig_end_date := p_hdr_end_date;
350 l_extend_in_parameters_rec.p_end_date := p_end_date_latest;
351
352 -- Make the contract perpetual if line is perpetual
353 If p_end_date_latest Is Null Then
354 l_extend_in_parameters_rec.p_perpetual_flag := OKC_API.G_TRUE;
355 Else
356 l_extend_in_parameters_rec.p_perpetual_flag := OKC_API.G_FALSE;
357 End If;
358
359 l_chr_rec.id := l_extend_in_parameters_rec.p_contract_id;
360 l_chr_rec.object_version_number := l_extend_in_parameters_rec.p_object_version_number;
361 l_chr_rec.end_date := p_end_date_latest;
362 l_chr_rec.sts_code := l_sts_code;
363 IF p_end_date_latest >= trunc(sysdate) THEN
364 OPEN cur_status(l_chr_rec.sts_code);
365 FETCH cur_status into l_status_code;
366 CLOSE cur_status;
367
368 IF l_status_code = 'EXPIRED' then
369
370 OKC_ASSENT_PUB.get_default_status( x_return_status => l_return_status,
371 p_status_type => 'ACTIVE',
372 x_status_code => l_status_code );
373
374 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
375 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
376 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
377 raise OKC_API.G_EXCEPTION_ERROR;
378 END IF;
379 l_chr_rec.sts_code := l_status_code;
380 l_chr_rec.old_sts_code := 'EXPIRED';
381 l_chr_rec.old_ste_code := 'EXPIRED';
382 l_chr_rec.new_sts_code := l_status_code;
383 l_chr_rec.new_ste_code := 'ACTIVE';
384 END IF;
385 END IF;
386 OKC_CONTRACT_PUB.update_contract_header ( p_api_version => 1,
387 p_init_msg_list => OKC_API.G_FALSE,
388 x_return_status => l_return_status,
389 x_msg_count => x_msg_count,
390 x_msg_data => x_msg_data,
391 p_restricted_update => okc_api.g_true,
392 p_chrv_rec => l_chr_rec,
393 x_chrv_rec => i_chr_rec );
394
395 IF l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR THEN
396 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
397 ELSIF l_return_status = OKC_API.G_RET_STS_ERROR THEN
398 RAISE OKC_API.G_EXCEPTION_ERROR;
399 END IF;
400
401 OKC_EXTEND_PUB.extend_chr(p_api_version => 1,
402 p_init_msg_list => OKC_API.G_FALSE,
403 x_return_status => l_return_status,
404 x_msg_count => x_msg_count,
405 x_msg_data => x_msg_data,
406 p_extend_in_parameters_rec => l_extend_in_parameters_rec );
407
408 OKC_EXTEND_PVT.g_called_from := 'HEADER';
409
410 IF l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR THEN
411 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
412 ELSIF l_return_status = OKC_API.G_RET_STS_ERROR THEN
413 RAISE OKC_API.G_EXCEPTION_ERROR;
414 END IF;
415
416 END IF;
417
418 --san this needs to be set as g_lines_count is a global variable, so if not reset everytime
419 -- it keeps value 1 and next time extend is called, it does not go to
420 --validation of hdr even once
421
422 OKC_EXTEND_PVT.g_lines_count :=0;
423
424 FOR i in p_extend_in_parameters_tbl.first..p_extend_in_parameters_tbl.last LOOP
425
426 IF p_extend_in_parameters_tbl.exists(i) then
427
428 OKC_EXTEND_PUB.extend_cle(p_api_version => p_api_version,
429 p_init_msg_list => OKC_API.G_FALSE,
430 x_return_status => l_return_status,
431 x_msg_count => x_msg_count,
432 x_msg_data => x_msg_data,
433 p_extend_in_parameters_rec => p_extend_in_parameters_tbl(i));
434
435 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
436 RAISE OKC_API.g_exception_unexpected_error;
437 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
438 raise OKC_API.g_exception_error;
439 END IF;
440
441 END IF; -- if exists
442
443 END LOOP;
444 IF p_do_commit = okc_api.g_true then
445 COMMIT;
446 END IF;
447 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
448 EXCEPTION
449 WHEN OKC_API.G_EXCEPTION_ERROR THEN
450 x_return_status := OKC_API.HANDLE_EXCEPTIONS
451 (l_api_name,
452 G_PKG_NAME,
453 'OKC_API.G_RET_STS_ERROR',
454 x_msg_count,
455 x_msg_data,
456 '_PUB');
457 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
458 x_return_status := OKC_API.HANDLE_EXCEPTIONS
459 (l_api_name,
460 G_PKG_NAME,
461 'OKC_API.G_RET_STS_UNEXP_ERROR',
462 x_msg_count,
463 x_msg_data,
464 '_PUB');
465 WHEN OTHERS THEN
466 x_return_status := OKC_API.HANDLE_EXCEPTIONS
467 (l_api_name,
468 G_PKG_NAME,
469 'OTHERS',
470 x_msg_count,
471 x_msg_data,
472 '_PUB');
473 END;
474
475 PROCEDURE extend_cle( p_api_version IN NUMBER,
476 p_init_msg_list IN VARCHAR2 ,
477 x_return_status OUT NOCOPY VARCHAR2,
478 x_msg_count OUT NOCOPY NUMBER,
479 x_msg_data OUT NOCOPY VARCHAR2,
480 p_extend_in_parameters_rec IN extend_in_cle_rec,
481 p_do_commit IN VARCHAR2
482 ) is
483
484 l_return_status varchar2(1) := OKC_API.G_RET_STS_SUCCESS;
485 l_extend_in_parameters_rec extend_in_cle_rec := p_extend_in_parameters_rec;
486 l_api_name constant varchar2(30) := 'extend_cle';
487 l_chr_id number;
488
489 BEGIN
490
491 x_return_status := OKC_API.G_RET_STS_SUCCESS;
492
493 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
494 p_init_msg_list,
495 '_PUB',
496 x_return_status);
497
498 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
499 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
500 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
501 raise OKC_API.G_EXCEPTION_ERROR;
502 END IF;
503
504 -- Call user hook FOR BEFORE
505 g_extend_in_cle_rec := l_extend_in_parameters_rec;
506
507 OKC_UTIL.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
508
509 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
510 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
511 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
512 raise OKC_API.G_EXCEPTION_ERROR;
513 END IF;
514
515 l_extend_in_parameters_rec := g_extend_in_cle_rec;
516 l_extend_in_parameters_rec.p_cle_id := p_extend_in_parameters_rec.p_cle_id;
517
518 OKC_EXTEND_PVT.extend_cle(p_api_version => p_api_version,
519 p_init_msg_list => OKC_API.G_FALSE,
520 x_return_status => l_return_status,
521 x_msg_count => x_msg_count,
522 x_msg_data => x_msg_data,
523 p_extend_in_parameters_rec => l_extend_in_parameters_rec );
524
525
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
532
533 OKC_UTIL.call_user_hook(l_return_status, g_pkg_name, l_api_name, 'A');
534
535 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
536 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
537 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
538 raise OKC_API.G_EXCEPTION_ERROR;
539 END IF;
540
541 IF p_do_commit = okc_api.g_true then
542 commit;
543 END IF;
544 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
545
546 EXCEPTION
547 WHEN OKC_API.G_EXCEPTION_ERROR THEN
548 x_return_status := OKC_API.HANDLE_EXCEPTIONS
549 (l_api_name,
550 G_PKG_NAME,
551 'OKC_API.G_RET_STS_ERROR',
552 x_msg_count,
553 x_msg_data,
554 '_PUB');
555 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
556
557 x_return_status := OKC_API.HANDLE_EXCEPTIONS
558 (l_api_name,
559 G_PKG_NAME,
560 'OKC_API.G_RET_STS_UNEXP_ERROR',
561 x_msg_count,
562 x_msg_data,
563 '_PUB');
564 WHEN OTHERS THEN
565 x_return_status := OKC_API.HANDLE_EXCEPTIONS
566 (l_api_name,
567 G_PKG_NAME,
568 'OTHERS',
569 x_msg_count,
570 x_msg_data,
571 '_PUB');
572 end;
573
574 PROCEDURE validate_cle( 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_extend_in_parameters_tbl IN extend_in_cle_tbl) is
580
581 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
582
583 BEGIN
584
585 OKC_API.init_msg_list(p_init_msg_list);
586
587 x_return_status := OKC_API.G_RET_STS_SUCCESS;
588
589 --san this needs to be set as g_lines_count is a global variable, so if not reset everytime
590 -- it keeps value 1 and next time extend is called, it does not go to
591 --validation of hdr even once
592 OKC_EXTEND_PVT.g_lines_count :=0;
593
594 FOR i in p_extend_in_parameters_tbl.first..p_extend_in_parameters_tbl.last LOOP
595
596 IF p_extend_in_parameters_tbl.exists(i) THEN
597
598 OKC_EXTEND_PUB.validate_cle(p_api_version => p_api_version,
599 p_init_msg_list => OKC_API.G_FALSE,
600 x_return_status => l_return_status,
601 x_msg_count => x_msg_count,
602 x_msg_data => x_msg_data,
603 p_extend_in_parameters_rec => p_extend_in_parameters_tbl(i) );
604
605 IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
606 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
607 x_return_status := l_return_status;
608 raise G_EXCEPTION_HALT_VALIDATION;
609 ELSE
610 x_return_status := l_return_status;
611 END IF;
612 END IF;
613 END IF; --if exists
614 END LOOP;
615 EXCEPTION
616 WHEN G_EXCEPTION_HALT_VALIDATION THEN
617 NULL;
618 WHEN OTHERS THEN
619 OKC_API.set_message(p_app_name => g_app_name,
620 p_msg_name => g_unexpected_error,
621 p_token1 => g_sqlcode_token,
622 p_token1_value => sqlcode,
623 p_token2 => g_sqlerrm_token,
624 p_token2_value => sqlerrm);
625 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
626 end;
627
628
629 PROCEDURE validate_cle( p_api_version IN NUMBER,
630 p_init_msg_list IN VARCHAR2 ,
631 x_return_status OUT NOCOPY VARCHAR2,
632 x_msg_count OUT NOCOPY NUMBER,
633 x_msg_data OUT NOCOPY VARCHAR2,
634 p_extend_in_parameters_rec IN extend_in_cle_rec ) is
635 BEGIN
636
637 OKC_EXTEND_PVT.validate_cle(p_api_version => p_api_version,
638 p_init_msg_list => OKC_API.G_FALSE,
639 x_return_status => x_return_status,
640 x_msg_count => x_msg_count,
641 x_msg_data => x_msg_data,
642 p_extend_in_parameters_rec => p_extend_in_parameters_rec );
643
644 EXCEPTION
645 WHEN OTHERS THEN
646 OKC_API.set_message(p_app_name => g_app_name,
647 p_msg_name => g_unexpected_error,
648 p_token1 => g_sqlcode_token,
649 p_token1_value => sqlcode,
650 p_token2 => g_sqlerrm_token,
651 p_token2_value => sqlerrm);
652
653 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
654 end;
655
656 end OKC_EXTEND_PUB;