[Home] [Help]
PACKAGE BODY: APPS.OKL_MASS_REBOOK_PVT
Source
1 PACKAGE BODY OKL_MASS_REBOOK_PVT AS
2 /* $Header: OKLRMRPB.pls 120.33.12010000.3 2008/11/25 09:17:29 nikshah ship $*/
3
4
5 G_MODULE VARCHAR2(255) := 'okl.stream.esg.okl_esg_transport_pvt';
6 G_DEBUG_ENABLED CONSTANT VARCHAR2(10) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
7 G_IS_DEBUG_STATEMENT_ON BOOLEAN;
8
9 --Global Variables
10 G_INIT_NUMBER NUMBER := -9999;
11 G_PKG_NAME CONSTANT VARCHAR2(200) := 'OKL_MASS_REBOOK_PVT';
12 G_APP_NAME CONSTANT VARCHAR2(3) := OKL_API.G_APP_NAME;
13 G_API_TYPE CONSTANT VARCHAR2(4) := '_PVT';
14
15 g_stream_trx_number NUMBER; -- Stream Trx number, updated only from rebook_contract
16
17 --DEBUG
18 G_PPD_TRX_ID NUMBER := NULL; -- PPD trx id
19 G_PPD_TRX_TYPE VARCHAR2(100) := NULL; -- PPD trx type
20 G_TERMINATION_TRX_ID NUMBER := NULL; -- termination trx id
21 G_TERMINATION_TRX_TYPE VARCHAR2(100) := NULL; -- termination trx type
22 G_MASS_RBK_TRX_ID NUMBER := NULL;
23 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - Start
24 G_ICB_REAMORT CONSTANT OKL_PRODUCT_PARAMETERS_V.INTEREST_CALCULATION_BASIS%TYPE
25 := 'REAMORT';
26 G_RRM_STREAMS CONSTANT OKL_PRODUCT_PARAMETERS_V.REVENUE_RECOGNITION_METHOD%TYPE
27 := 'STREAMS';
28 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - End
29
30 subtype rgpv_rec_type IS OKL_RULE_PUB.rgpv_rec_type;
31
32 subtype rulv_rec_type IS OKL_RULE_PUB.rulv_rec_type;
33 subtype rulv_tbl_type IS OKL_RULE_PUB.rulv_tbl_type;
34
35 /*TYPE kle_rec_type IS RECORD (
36 ID OKL_K_LINES_V.ID%TYPE
37 );
38
39 TYPE kle_tbl_type IS TABLE OF kle_rec_type INDEX BY BINARY_INTEGER; */
40
41
42 ------------------------------------------------------------------------------
43 -- PROCEDURE Report_Error
44 -- It is a generalized routine to display error on Concurrent Manager Log file
45 -- Calls:
46 -- Called by:
47 ------------------------------------------------------------------------------
48
49 PROCEDURE Report_Error(
50 x_msg_count OUT NOCOPY NUMBER,
51 x_msg_data OUT NOCOPY VARCHAR2
52 ) IS
53
54 x_msg_index_out NUMBER;
55 x_msg_out VARCHAR2(2000);
56
57 BEGIN
58
59 okl_api.end_activity(
60 X_msg_count => x_msg_count,
61 X_msg_data => x_msg_data
62 );
63 FOR i in 1..x_msg_count
64 LOOP
65 FND_MSG_PUB.GET(
66 p_msg_index => i,
67 p_encoded => FND_API.G_FALSE,
68 p_data => x_msg_data,
69 p_msg_index_out => x_msg_index_out
70 );
71
72 END LOOP;
73 return;
74 EXCEPTION
75 WHEN OTHERS THEN
76 NULL;
77 END Report_Error;
78
79 ------------------------------------------------------------------------------
80 -- PROCEDURE get_seq_id
81 -- This proecdure returns unique sequence ID
82 -- Calls:
83 -- Called by:
84 ------------------------------------------------------------------------------
85
86 FUNCTION get_seq_id RETURN NUMBER IS
87 BEGIN
88 RETURN(okc_p_util.raw_to_number(sys_guid()));
89 END get_seq_id;
90
91 ------------------------------------------------------------------------------
92 -- PROCEDURE get_formated_value
93 -- This proecdure checks for NUMERIC or CHARACTER Value
94 -- Calls:
95 -- Called by:
96 ------------------------------------------------------------------------------
97
98 PROCEDURE get_formated_value(
99 x_return_status OUT NOCOPY VARCHAR2,
100 p_orig_value IN VARCHAR2,
101 x_fmt_value OUT NOCOPY VARCHAR2
102 ) IS
103 l_proc_name VARCHAR2(35) := 'GET_FORMATED_VALUE';
104 l_dummy_number NUMBER;
105 BEGIN
106 IF (G_DEBUG_ENABLED = 'Y') THEN
107 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
108 END IF;
109 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
110 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
111 END IF;
112 x_return_status := OKL_API.G_RET_STS_SUCCESS;
113
114 -- Check for NUMBER and CHARACTER
115 BEGIN
116 l_dummy_number := TO_NUMBER(p_orig_value);
117 x_fmt_value := p_orig_value;
118 EXCEPTION
119 WHEN VALUE_ERROR THEN
120 x_fmt_value := ''''||p_orig_value||'''';
121 END;
122
123 RETURN;
124 EXCEPTION
125 WHEN OTHERS THEN
126 x_return_status := OKL_API.G_RET_STS_ERROR;
127 END get_formated_value;
128
129 ------------------------------------------------------------------------------
130 -- PROCEDURE get_qcl_id
131 -- It returns qcl_id for QA checker to run
132 -- Calls:
133 -- Called By:
134 ------------------------------------------------------------------------------
135
136 PROCEDURE get_qcl_id(
137 x_return_status OUT NOCOPY VARCHAR2,
138 p_qcl_name IN VARCHAR2,
139 x_qcl_id OUT NOCOPY NUMBER) IS
140
141 CURSOR qcl_csr (p_qcL_name VARCHAR2) IS
142 SELECT id
143 FROM okc_qa_check_lists_v
144 WHERE name = p_qcl_name;
145
146 l_id NUMBER;
147
148 BEGIN
149
150 x_return_status := OKL_API.G_RET_STS_SUCCESS;
151
152 OPEN qcl_csr(p_qcl_name);
153 FETCH qcl_csr INTO l_id;
154 CLOSE qcl_csr;
155
156 x_qcl_id := l_id;
157
158 END get_qcl_id;
159
160 ------------------------------------------------------------------------------
161 -- PROCEDURE build_selection
162 -- This proecdure builds "SELECT" statement from Operands and criteria
163 -- provided on OKL_MASS_RBK_CRITERIA Table against a REQUEST_NAME.
164 -- It returns the SELECT Statement for further processing
165 -- Calls:
166 -- Called by:
167 ------------------------------------------------------------------------------
168 PROCEDURE build_selection(
169 x_return_status OUT NOCOPY VARCHAR2,
170 x_msg_count OUT NOCOPY NUMBER,
171 x_msg_data OUT NOCOPY VARCHAR2,
172 p_request_name IN VARCHAR2,
173 p_transaction_date IN DATE,
174 x_statement OUT NOCOPY VARCHAR2
175 ) IS
176
177 l_api_name VARCHAR2(35) := 'build_selection';
178 l_proc_name VARCHAR2(35) := 'BUILD_SELECTION';
179
180 CURSOR mass_rbk_csr (p_req_name VARCHAR2) IS
181 SELECT *
182 FROM okl_mass_rbk_criteria
183 WHERE request_name = p_req_name
184 AND operand IS NOT NULL
185 ORDER BY line_number;
186
187 CURSOR crit_csr (p_code VARCHAR2) IS
188 SELECT 'Y'
189 FROM fnd_lookups
190 WHERE lookup_type = 'OKL_MASS_RBK_CRITERIA'
191 AND lookup_code = p_code;
192
193 l_query VARCHAR2(2000);
194 l_clause VARCHAR2(10);
195 l_present VARCHAR2(1);
196 l_criteria_code VARCHAR2(35);
197 l_fmt_value VARCHAR2(100);
198 i NUMBER := 0;
199 l_asset_row NUMBER := 0;
200 l_fmt_criteria1 VARCHAR2(100);
201 l_fmt_criteria2 VARCHAR2(100);
202 l_asset_query_present VARCHAR2(1);
203
204 build_error EXCEPTION;
205
206 BEGIN
207 IF (G_DEBUG_ENABLED = 'Y') THEN
208 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
209 END IF;
210 x_return_status := OKL_API.G_RET_STS_SUCCESS;
211
212 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
213 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
214 END IF;
215
216 l_asset_query_present := 'F'; -- Checks the presence of Asset Related Criteria
217
218 l_query := 'SELECT CON.ID, CON.CONTRACT_NUMBER, LINE.ID, CON.SHORT_DESCRIPTION FROM OKL_K_HEADERS_FULL_V CON, ';
219 l_query := l_query || ' OKL_K_LINES_FULL_V LINE ';
220
221 --insert into dd_dummy values (1,l_query);
222
223 FOR rbk_rec IN mass_rbk_csr(p_request_name)
224 LOOP
225
226 OPEN crit_csr (rbk_rec.criteria_code);
227 FETCH crit_csr INTO l_present;
228 IF crit_csr%NOTFOUND THEN
229 okl_api.set_message(
230 G_APP_NAME,
231 G_INVALID_CODE,
232 'VALUE',
233 rbk_rec.criteria_code
234 );
235 RAISE build_error;
236 END IF;
237
238 CLOSE crit_csr;
239
240 l_criteria_code := rbk_rec.criteria_code;
241 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
242 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_criteria_code);
243 END IF;
244 -- Special formatting for CONTRACT_NUMBER, always character
245 IF (l_criteria_code = 'CONTRACT_NUMBER') THEN
246
247 l_fmt_criteria1 := ''''||rbk_rec.criteria_value1||'''';
248
249 ELSE
250 -- Check criteria_value, set_value type
251 IF (rbk_rec.criteria_value1 IS NOT NULL) THEN
252 get_formated_value(
253 x_return_status => x_return_status,
254 p_orig_value => rbk_rec.criteria_value1,
255 x_fmt_value => l_fmt_value
256 );
257 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
258 okl_api.set_message(
259 G_APP_NAME,
260 G_FORMAT_ERROR
261 );
262 RAISE build_error;
263 END IF;
264
265 l_fmt_criteria1 := l_fmt_value;
266 ELSE
267 l_fmt_criteria1 := NULL;
268 END IF;
269
270 IF (rbk_rec.criteria_value2 IS NOT NULL) THEN
271 get_formated_value(
272 x_return_status => x_return_status,
273 p_orig_value => rbk_rec.criteria_value2,
274 x_fmt_value => l_fmt_value
275 );
276 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
277 okl_api.set_message(
278 G_APP_NAME,
279 G_FORMAT_ERROR
280 );
281 RAISE build_error;
282 END IF;
283
284 l_fmt_criteria2 := l_fmt_value;
285 ELSE
286 l_fmt_criteria2 := NULL;
287 END IF;
288 END IF;
289
290 i := i + 1;
291
292 IF (i = 1) THEN -- First Row
293 l_clause := ' WHERE ';
294 ELSE
295 l_clause := ' AND ' ;
296 END IF;
297
298 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
299 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_fmt_criteria1||', '||l_fmt_criteria2);
300 END IF;
301
302
303 IF (l_criteria_code IN ('BOOK_TYPE_CODE', 'DEPRN_METHOD_CODE', 'DATE_PLACED_IN_SERVICE')) THEN
304 l_asset_row := l_asset_row + 1;
305 l_asset_query_present := 'T';
306 l_query := l_query || l_clause || ' ';
307 IF (l_asset_row = 1) THEN -- First Asset Criteria
308 l_query := l_query || 'EXISTS ( SELECT 1 FROM OKC_K_ITEMS_V ITEM, FA_BOOKS FB ';
309 l_query := l_query || 'WHERE ITEM.JTOT_OBJECT1_CODE = '||''''||'OKX_ASSET'||'''';
310 l_query := l_query || ' AND ITEM.DNZ_CHR_ID = CON.ID ';
311 l_query := l_query || ' AND LINE.ID = ITEM.CLE_ID ';
312 l_query := l_query || ' AND ITEM.OBJECT1_ID1 = FB.ASSET_ID AND';
313 --insert into dd_dummy values (2,l_query);
314 IF (UPPER(rbk_rec.operand) = 'BETWEEN') THEN
315 l_query := l_query || ' FB.' || l_criteria_code || ' '|| upper(rbk_rec.operand)|| ' ';
316 l_query := l_query || l_fmt_criteria1 || ' AND ' ||
317 l_fmt_criteria2 ||' ';
318 --insert into dd_dummy values (3,l_query);
319 ELSE
320 l_query := l_query || ' FB.'||l_criteria_code|| ' ' || upper(rbk_rec.operand) || ' ' || l_fmt_criteria1;
321 --insert into dd_dummy values (4,l_query);
322 END IF;
323 ELSE
324 IF (UPPER(rbk_rec.operand) = 'BETWEEN') THEN
325
326 l_query := l_query || ' FB.'|| l_criteria_code || ' ' || upper(rbk_rec.operand)|| ' ';
327 l_query := l_query || l_fmt_criteria1 || ' AND ' ||
328 l_fmt_criteria2 ||' ';
329 --insert into dd_dummy values (5,l_query);
330 ELSE
331 l_query := l_query || ' FB.'||l_criteria_code|| ' ' || upper(rbk_rec.operand) || ' ' || l_fmt_criteria1;
332 --insert into dd_dummy values (6,l_query);
333 END IF;
334
335 -- go to FA_BOOKS
336 -- Add criteria from OKL_TXD_ASSETS_V and OKL_TXL_ASSETS_V
337 --
338 END IF;
339 ELSIF (l_criteria_code = 'ASSET_CATEGORY_ID') THEN
340 -- go to FA_ADDITIONS
341 IF (l_asset_query_present = 'T') THEN
342 l_query := l_query || ' ) '; -- Complete Asset Query above
343 l_asset_query_present := 'F';
344 END IF;
345
346 l_query := l_query || l_clause || ' ';
347 l_query := l_query || ' EXISTS ( SELECT 1 FROM OKC_K_ITEMS_V ITEM, FA_ADDITIONS ASSET ';
348 l_query := l_query || 'WHERE ITEM.JTOT_OBJECT1_CODE = '||''''||'OKX_ASSET'||'''';
349 l_query := l_query || ' AND ITEM.DNZ_CHR_ID = CON.ID ';
350 l_query := l_query || ' AND LINE.ID = ITEM.CLE_ID ';
351 l_query := l_query || ' AND ITEM.OBJECT1_ID1 = ASSET.ASSET_ID ';
352 l_query := l_query || ' AND ASSET.'||l_criteria_code|| ' ' || upper(rbk_rec.operand) || ' ' || l_fmt_criteria1;
353 l_query := l_query || ' )';
354 --insert into dd_dummy values (7,l_query);
355
356 ELSE
357
358 l_query := l_query || l_clause || 'CON.'|| l_criteria_code ||' ';
359 --insert into dd_dummy values (8,l_query);
360
361 IF (upper(rbk_rec.operand) = 'BETWEEN') THEN
362 l_query := l_query || upper(rbk_rec.operand)||' ';
363 l_query := l_query || l_fmt_criteria1 ||' AND '||
364 l_fmt_criteria2 ||' ';
365 --insert into dd_dummy values (9,l_query);
366 ELSE
367 l_query := l_query || upper(rbk_rec.operand)||' ';
368 l_query := l_query || l_fmt_criteria1 || ' ';
369 --insert into dd_dummy values (10,l_query);
370 END IF;
371
372 END IF; -- Asset criteria
373
374 END LOOP;
375
376 IF (l_asset_query_present = 'T') THEN
377 l_query := l_query || ' ) ';
378 l_asset_query_present := 'F';
379 END IF;
380
381 l_query := l_query || ' AND CON.STS_CODE = '||''''||'BOOKED'||'''';
382 ----
383 --Get the Formatted Value for Revision Date
384 IF (p_transaction_date IS NOT NULL) THEN
385 get_formated_value(
386 x_return_status => x_return_status,
387 p_orig_value => p_transaction_date,
388 x_fmt_value => l_fmt_value
389 );
390 END IF;
391 l_query := l_query || ' '||' AND '|| l_fmt_value || ''||'BETWEEN'||'';
392 l_query := l_query || ' CON.START_DATE AND CON.END_DATE ' ||'';
393 --------
394
395 l_query := l_query || ' AND CON.ID = LINE.DNZ_CHR_ID ';
396 l_query := l_query || ' AND LINE.STS_CODE = '||''''||'BOOKED'||'''';
397 l_query := l_query || ' AND LINE.LSE_ID = (SELECT ID FROM OKC_LINE_STYLES_V ';
398 l_query := l_query || ' WHERE LTY_CODE = '||''''||'FIXED_ASSET'||''''||')';
399
400 --
401 -- Add authoring org restriction
402
403 IF (i = 0) THEN
404 -- Error 1
405 okl_api.set_message(
406 G_APP_NAME,
407 G_NOT_VALID_REQUEST,
408 'REQ_NAME',
409 p_request_name
410 );
411 RAISE build_error;
412 END IF;
413
414 --l_query := l_query || ';';
415
416 x_statement := l_query;
417 RETURN;
418
419 EXCEPTION
420 WHEN build_error THEN
421
422 IF crit_csr%ISOPEN THEN
423 CLOSE crit_csr;
424 END IF;
425
426 x_return_status := OKL_API.G_RET_STS_ERROR;
427
428 WHEN OTHERS THEN
429 okl_api.set_message(
430 G_APP_NAME,
431 G_UNEXPECTED_ERROR,
432 'OKL_SQLCODE',
433 SQLCODE,
434 'OKL_SQLERRM',
435 SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
436 );
437 x_return_status := OKL_API.G_RET_STS_ERROR;
438 END build_selection;
439
440
441 ------------------------------------------------------------------------------
442 -- PROCEDURE get_contract
443 -- This proecdure uses DYNAMIC SQL to get list of contracts from
444 -- selection criteria provided by user in OKL_MASS_RBK_CRITERIA
445 -- against REQUEST_NAME
446 -- It returns the list of contracts selected under present crietria
447 -- Calls:
448 -- Called by:
449 ------------------------------------------------------------------------------
450 PROCEDURE get_contract(
451 p_api_version IN NUMBER,
452 p_init_msg_list IN VARCHAR2,
453 x_return_status OUT NOCOPY VARCHAR2,
454 x_msg_count OUT NOCOPY NUMBER,
455 x_msg_data OUT NOCOPY VARCHAR2,
456 p_request_name IN OKL_MASS_RBK_CRITERIA.REQUEST_NAME%TYPE,
457 p_transaction_date IN OKL_RBK_SELECTED_CONTRACT.TRANSACTION_DATE%TYPE DEFAULT SYSDATE,
458 x_mstv_tbl OUT NOCOPY mstv_tbl_type,
459 x_rbk_count OUT NOCOPY NUMBER
460 ) IS
461
462 l_api_name VARCHAR2(35) := 'get_contract';
463 l_proc_name VARCHAR2(35) := 'GET_CONTRACT';
464 l_api_version NUMBER := 1.0;
465
466 l_statement VARCHAR2(2000);
467 TYPE rbk_csr_type IS REF CURSOR;
468 l_rbk_csr rbk_csr_type;
469 l_rbk_rec rbk_rec_type;
470 l_rbk_tbl rbk_tbl_type;
471 i NUMBER;
472 l_dummy VARCHAR2(1);
473
474 l_mstv_tbl mstv_tbl_type;
475
476 get_contract_failed EXCEPTION;
477
478 CURSOR req_csr (p_request_name OKL_MASS_RBK_CRITERIA.REQUEST_NAME%TYPE) IS
479 SELECT 'Y'
480 FROM okl_rbk_selected_contract
481 WHERE request_name = p_request_name;
482
483 BEGIN
484 IF (G_DEBUG_ENABLED = 'Y') THEN
485 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
486 END IF;
487 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
488 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
489 END IF;
490
491 OPEN req_csr (p_request_name);
492 FETCH req_csr INTO l_dummy;
493 IF req_csr%FOUND THEN
494 okl_api.set_message(
495 G_APP_NAME,
496 G_DUPLICATE_REQUEST,
497 'REQ_NAME',
498 p_request_name
499 );
500 x_return_status := OKL_API.G_RET_STS_ERROR;
501 RAISE get_contract_failed;
502 END IF;
503
504 CLOSE req_csr;
505
506 --
507 -- Get Statement from Selection criteria
508 --
509
510 build_selection(
511 x_return_status => x_return_status,
512 x_msg_count => x_msg_count,
513 x_msg_data => x_msg_data,
514 p_request_name => p_request_name,
515 p_transaction_date => p_transaction_date,
516 x_statement => l_statement
517 );
518
519 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
520 raise get_contract_failed;
521 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
522 raise get_contract_failed;
523 END IF;
524
525 --insert into dd_dummy values (l_statement);
526 --commit;
527
528 --
529 -- Run Dynamic SQL to get Contracts
530 --
531
532 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
533 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_statement);
534 END IF;
535 i := 0;
536 OPEN l_rbk_csr FOR l_statement;
537 LOOP
538 i := i+ 1;
539 FETCH l_rbk_csr INTO l_rbk_tbl(i);
540 EXIT WHEN l_rbk_csr%NOTFOUND;
541 END LOOP;
542
543 --x_rbk_tbl := l_rbk_tbl;
544 x_rbk_count := l_rbk_tbl.COUNT;
545
546 IF (x_rbk_count = 0) THEN
547 okl_api.set_message(
548 G_APP_NAME,
549 G_NO_MATCH_FOUND
550 );
551 x_return_status := OKL_API.G_RET_STS_ERROR;
552 RAISE get_contract_failed;
553 ELSE
554 --
555 -- Populate Selection Table with these Contracts
556 --
557 FOR i IN 1..x_rbk_count
558 LOOP
559 l_mstv_tbl(i).request_name := p_request_name; -- Link with Criteria Table
560 l_mstv_tbl(i).transaction_date := p_transaction_date;
561 l_mstv_tbl(i).khr_id := l_rbk_tbl(i).khr_id;
562 l_mstv_tbl(i).contract_number := l_rbk_tbl(i).contract_number;
563 l_mstv_tbl(i).contract_description := l_rbk_tbl(i).description;
564 l_mstv_tbl(i).kle_id := l_rbk_tbl(i).kle_id;
565 l_mstv_tbl(i).status := 'NEW';
566 l_mstv_tbl(i).selected_flag := 'Y';
567 END LOOP;
568
569 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
570 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before selected contract insert');
571 END IF;
572
573 okl_mst_pvt.insert_row(
574 p_api_version => 1.0,
575 p_init_msg_list => OKL_API.G_FALSE,
576 x_return_status => x_return_status,
577 x_msg_count => x_msg_count,
578 x_msg_data => x_msg_data,
579 p_mstv_tbl => l_mstv_tbl,
580 x_mstv_tbl => x_mstv_tbl
581 );
582
583 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
584 raise get_contract_failed;
585 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
586 raise get_contract_failed;
587 END IF;
588
589 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
590 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After selected contract insert');
591 END IF;
592 END IF;
593
594 RETURN;
595
596 EXCEPTION
597 WHEN get_contract_failed THEN
598 RETURN;
599
600 when OTHERS then
601 okl_api.set_message(
602 G_APP_NAME,
603 G_UNEXPECTED_ERROR,
604 'OKL_SQLCODE',
605 SQLCODE,
606 'OKL_SQLERRM',
607 SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
608 );
609 x_return_status := OKL_API.G_RET_STS_ERROR;
610
611 END get_contract;
612
613 ------------------------------------------------------------------------------
614 -- PROCEDURE validate_request
615 -- This proecdure checks incoming request before inserting and selecting contract
616 -- for mass re-book process. Checks include OPERAND, CRITERIA_VALUE and SET_VALUE
617 -- for each line in request.
618 -- Calls:
619 -- Called by:
620 ------------------------------------------------------------------------------
621 PROCEDURE validate_request(
622 x_return_status OUT NOCOPY VARCHAR2,
623 x_msg_count OUT NOCOPY NUMBER,
624 x_msg_data OUT NOCOPY VARCHAR2,
625 p_request_name IN OKL_MASS_RBK_CRITERIA.REQUEST_NAME%TYPE,
626 p_mrbv_tbl IN mrbv_tbl_type
627 ) IS
628
629 l_api_name VARCHAR2(35) := 'validate_request';
630 l_proc_name VARCHAR2(35) := 'VALIDATE_REQUEST';
631 l_api_version NUMBER := 1.0;
632
633 l_set_value_present VARCHAR2(1) := 'N';
634 request_failed EXCEPTION;
635 CURSOR get_nls_date_format IS
636 SELECT VALUE
637 FROM v$nls_parameters
638 WHERE parameter = 'NLS_DATE_FORMAT';
639 l_nls_date_format v$nls_parameters.VALUE%TYPE;
640 BEGIN
641 IF (G_DEBUG_ENABLED = 'Y') THEN
642 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
643 END IF;
644 x_return_status := OKL_API.G_RET_STS_SUCCESS;
645 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
646 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
647 END IF;
648
649 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
650 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Req Lines: '||p_mrbv_tbl.COUNT);
651 END IF;
652
653 l_set_value_present:= 'N';
654 OPEN get_nls_date_format;
655 FETCH get_nls_date_format INTO l_nls_date_format;
656 CLOSE get_nls_date_format;
657
658 FOR i IN 1..p_mrbv_tbl.COUNT
659 LOOP
660 IF (p_mrbv_tbl(i).criteria_code = 'CONTRACT_NUMBER') THEN
661
662 IF (p_mrbv_tbl(i).operand NOT IN ('LIKE','=')) THEN
663 okl_api.set_message(
664 G_APP_NAME,
665 G_INVALID_OPERAND,
666 'OPERAND',
667 p_mrbv_tbl(i).operand,
668 'CRIT_CODE',
669 p_mrbv_tbl(i).criteria_code
670 );
671 x_return_status := OKL_API.G_RET_STS_ERROR;
672 END IF;
673
674 IF (p_mrbv_tbl(i).set_value IS NOT NULL) THEN
675 okl_api.set_message(
676 G_APP_NAME,
677 G_INVALID_SET_VALUE,
678 'CRIT_CODE',
679 p_mrbv_tbl(i).criteria_code
680 );
681 x_return_status := OKL_API.G_RET_STS_ERROR;
682 END IF;
683
684 ELSIF (p_mrbv_tbl(i).criteria_code = 'START_DATE') THEN
685
686 IF (p_mrbv_tbl(i).operand NOT IN ('BETWEEN', '<=', '>=')) THEN
687 okl_api.set_message(
688 G_APP_NAME,
689 G_INVALID_OPERAND,
690 'OPERAND',
691 p_mrbv_tbl(i).operand,
692 'CRIT_CODE',
693 p_mrbv_tbl(i).criteria_code
694 );
695 x_return_status := OKL_API.G_RET_STS_ERROR;
696 END IF;
697 --Check for Date Integrity
698 IF((p_mrbv_tbl(i).operand = 'BETWEEN') AND
699 ((FND_DATE.string_to_date(p_mrbv_tbl(i).CRITERIA_VALUE1,l_nls_date_format)) > (FND_DATE.string_to_date(p_mrbv_tbl(i).CRITERIA_VALUE2,l_nls_date_format)))) THEN
700 -- NAMED INVALID DATE RANGE
701 okl_api.set_message(
702 'FND',
703 'NAMED INVALID DATE RANGE',
704 'RANGE',
705 'CONTRACT_START_DATE');
706 x_return_status := OKL_API.G_RET_STS_ERROR;
707
708 END IF;
709 IF (p_mrbv_tbl(i).set_value IS NOT NULL) THEN
710 okl_api.set_message(
711 G_APP_NAME,
712 G_INVALID_SET_VALUE,
713 'CRIT_CODE',
714 p_mrbv_tbl(i).criteria_code
715 );
716 x_return_status := OKL_API.G_RET_STS_ERROR;
717 END IF;
718
719 ELSIF (p_mrbv_tbl(i).criteria_code = 'BOOK_TYPE_CODE') THEN
720
721 IF (p_mrbv_tbl(i).operand NOT IN ('=')) THEN
722 okl_api.set_message(
723 G_APP_NAME,
724 G_INVALID_OPERAND,
725 'OPERAND',
726 p_mrbv_tbl(i).operand,
727 'CRIT_CODE',
728 p_mrbv_tbl(i).criteria_code
729 );
730 x_return_status := OKL_API.G_RET_STS_ERROR;
731 END IF;
732
733 IF (p_mrbv_tbl(i).set_value IS NOT NULL) THEN
734 okl_api.set_message(
735 G_APP_NAME,
736 G_INVALID_SET_VALUE,
737 'CRIT_CODE',
738 p_mrbv_tbl(i).criteria_code
739 );
740 x_return_status := OKL_API.G_RET_STS_ERROR;
741 END IF;
742 ELSIF (p_mrbv_tbl(i).criteria_code = 'DEPRN_METHOD_CODE') THEN
743 IF (p_mrbv_tbl(i).operand IS NOT NULL
744 AND
745 p_mrbv_tbl(i).operand <> '=') THEN
746 okl_api.set_message(
747 G_APP_NAME,
748 G_INVALID_OPERAND,
749 'OPERAND',
750 p_mrbv_tbl(i).operand,
751 'CRIT_CODE',
752 p_mrbv_tbl(i).criteria_code
753 );
754 x_return_status := OKL_API.G_RET_STS_ERROR;
755 END IF;
756
757 IF (p_mrbv_tbl(i).set_value IS NOT NULL) THEN
758 l_set_value_present := 'Y';
759 END IF;
760
761 ELSIF (p_mrbv_tbl(i).criteria_code = 'DATE_PLACED_IN_SERVICE') THEN
762 IF (p_mrbv_tbl(i).operand IS NOT NULL
763 AND
764 p_mrbv_tbl(i).operand NOT IN('BETWEEN', '<=', '>=')) THEN
765 okl_api.set_message(
766 G_APP_NAME,
767 G_INVALID_OPERAND,
768 'OPERAND',
769 p_mrbv_tbl(i).operand,
770 'CRIT_CODE',
771 p_mrbv_tbl(i).criteria_code
772 );
773 x_return_status := OKL_API.G_RET_STS_ERROR;
774 END IF;
775 --Check for Date Integrity
776 IF((p_mrbv_tbl(i).operand = 'BETWEEN') AND
777 ((FND_DATE.string_to_date(p_mrbv_tbl(i).CRITERIA_VALUE1,l_nls_date_format)) > (FND_DATE.string_to_date(p_mrbv_tbl(i).CRITERIA_VALUE2,l_nls_date_format)))) THEN
778 -- NAMED INVALID DATE RANGE
779 okl_api.set_message(
780 'FND',
781 'NAMED INVALID DATE RANGE',
782 'RANGE',
783 'INSERVICE_DATE');
784 x_return_status := OKL_API.G_RET_STS_ERROR;
785 END IF;
786 IF (p_mrbv_tbl(i).set_value IS NOT NULL) THEN
787 l_set_value_present := 'Y';
788 END IF;
789
790 ELSIF (p_mrbv_tbl(i).criteria_code = 'ASSET_CATEGORY_ID') THEN
791 IF (p_mrbv_tbl(i).operand <> '=') THEN
792 okl_api.set_message(
793 G_APP_NAME,
794 G_INVALID_OPERAND,
795 'OPERAND',
796 p_mrbv_tbl(i).operand,
797 'CRIT_CODE',
798 p_mrbv_tbl(i).criteria_code
799 );
800 x_return_status := OKL_API.G_RET_STS_ERROR;
801 END IF;
802
803 IF (p_mrbv_tbl(i).set_value IS NOT NULL) THEN
804 okl_api.set_message(
805 G_APP_NAME,
806 G_INVALID_SET_VALUE,
807 'CRIT_CODE',
808 p_mrbv_tbl(i).criteria_code
809 );
810 x_return_status := OKL_API.G_RET_STS_ERROR;
811 END IF;
812 /* ELSIF (p_mrbv_tbl(i).criteria_code = 'LIFE_IN_MONTHS'
813 OR
814 p_mrbv_tbl(i).criteria_code = 'BASIC_RATE'
815 OR
816 p_mrbv_tbl(i).criteria_code = 'ADJUSTED_RATE') THEN
817
818 IF (p_mrbv_tbl(i).operand IS NOT NULL
819 OR
820 p_mrbv_tbl(i).criteria_value1 IS NOT NULL
821 OR
822 p_mrbv_tbl(i).criteria_value2 IS NOT NULL) THEN
823 okl_api.set_message(
824 G_APP_NAME,
825 G_INVALID_MATCH_OPTION,
826 'CRIT_CODE',
827 p_mrbv_tbl(i).criteria_code
828 );
829 x_return_status := OKL_API.G_RET_STS_ERROR;
830 END IF;
831
832 IF (p_mrbv_tbl(i).set_value IS NOT NULL) THEN
833 l_set_value_present := 'Y';
834 END IF; */
835
836 END IF;
837
838 END LOOP;
839
840 /* IF (l_set_value_present = 'N') THEN
841 okl_api.set_message(
842 G_APP_NAME,
843 G_NO_SET_VALUE,
844 'REQ_NAME',
845 p_request_name
846 );
847 x_return_status := OKL_API.G_RET_STS_ERROR;
848 END IF; */
849
850 EXCEPTION
851 WHEN request_failed THEN
852 x_return_status := OKL_API.G_RET_STS_ERROR;
853 END validate_request;
854
855 ------------------------------------------------------------------------------
856 -- PROCEDURE build_and_get_contracts
857 -- Overloaded process to accept transaction date from page
858 -- This proecdure inserts selection criteria to OKL_MASS_RBK_CRITERIA table
859 -- and populates OKL_RBK_SELECTED_CONTRACT table with selected contracts.
860 -- Calls:
861 -- Called by:
862 ------------------------------------------------------------------------------
863
864 PROCEDURE build_and_get_contracts(
865 p_api_version IN NUMBER,
866 p_init_msg_list IN VARCHAR2,
867 x_return_status OUT NOCOPY VARCHAR2,
868 x_msg_count OUT NOCOPY NUMBER,
869 x_msg_data OUT NOCOPY VARCHAR2,
870 p_request_name IN OKL_MASS_RBK_CRITERIA.REQUEST_NAME%TYPE,
871 p_transaction_date IN OKL_RBK_SELECTED_CONTRACT.TRANSACTION_DATE%TYPE,
872 p_mrbv_tbl IN mrbv_tbl_type,
873 x_mstv_tbl OUT NOCOPY mstv_tbl_type,
874 x_rbk_count OUT NOCOPY NUMBER
875 ) IS
876
877 l_api_name VARCHAR2(35) := 'build_and_get_contracts';
878 l_proc_name VARCHAR2(35) := 'BUILD_AND_GET_CONTRACTS';
879 l_api_version NUMBER := 1.0;
880
881 x_mrbv_tbl mrbv_tbl_type;
882
883 BEGIN
884 IF (G_DEBUG_ENABLED = 'Y') THEN
885 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
886 END IF;
887 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
888 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
889 END IF;
890 -- call START_ACTIVITY to create savepoint, check compatibility
891 -- and initialize message list
892 x_return_status := OKL_API.START_ACTIVITY(
893 p_api_name => l_api_name,
894 p_pkg_name => G_PKG_NAME,
895 p_init_msg_list => p_init_msg_list,
896 l_api_version => l_api_version,
897 p_api_version => p_api_version,
898 p_api_type => G_API_TYPE,
899 x_return_status => x_return_status);
900
901 -- check if activity started successfully
902 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
903 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
904 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
905 raise OKL_API.G_EXCEPTION_ERROR;
906 END IF;
907
908 --
909 -- Validate incoming data
910 --
911 validate_request(
912 x_return_status => x_return_status,
913 x_msg_count => x_msg_count,
914 x_msg_data => x_msg_data,
915 p_request_name => p_request_name,
916 p_mrbv_tbl => p_mrbv_tbl
917 );
918
919 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
920 raise OKL_API.G_EXCEPTION_ERROR;
921 END IF;
922
923 --
924 -- Insert Selection criteria
925 --
926 okl_mrb_pvt.insert_row(
927 p_api_version => l_api_version,
928 p_init_msg_list => p_init_msg_list,
929 x_return_status => x_return_status,
930 x_msg_count => x_msg_count,
931 x_msg_data => x_msg_data,
932 p_mrbv_tbl => p_mrbv_tbl,
933 x_mrbv_tbl => x_mrbv_tbl
934 );
935
936 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
937 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
938 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
939 raise OKL_API.G_EXCEPTION_ERROR;
940 END IF;
941
942 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
943 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Insert');
944 END IF;
945 --
946 -- Get Selected Contracts
947 --
948 get_contract(
949 p_api_version => l_api_version,
950 p_init_msg_list => p_init_msg_list,
951 x_return_status => x_return_status,
952 x_msg_count => x_msg_count,
953 x_msg_data => x_msg_data,
954 p_request_name => p_request_name,
955 p_transaction_date => p_transaction_date,
956 x_mstv_tbl => x_mstv_tbl,
957 x_rbk_count => x_rbk_count
958 );
959
960 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
961 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
962 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
963 raise OKL_API.G_EXCEPTION_ERROR;
964 END IF;
965
966 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
967 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Get Contract');
968 END IF;
969
970 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
971 x_msg_data => x_msg_data);
972
973
974 RETURN;
975
976 EXCEPTION
977 when OKL_API.G_EXCEPTION_ERROR then
978 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
979 p_api_name => l_api_name,
980 p_pkg_name => G_PKG_NAME,
981 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
982 x_msg_count => x_msg_count,
983 x_msg_data => x_msg_data,
984 p_api_type => G_API_TYPE);
985
986 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
987 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
988 p_api_name => l_api_name,
989 p_pkg_name => G_PKG_NAME,
990 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
991 x_msg_count => x_msg_count,
992 x_msg_data => x_msg_data,
993 p_api_type => G_API_TYPE);
994
995 when OTHERS then
996 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
997 p_api_name => l_api_name,
998 p_pkg_name => G_PKG_NAME,
999 p_exc_name => 'OTHERS',
1000 x_msg_count => x_msg_count,
1001 x_msg_data => x_msg_data,
1002 p_api_type => G_API_TYPE);
1003
1004 END build_and_get_contracts;
1005
1006 ------------------------------------------------------------------------------
1007 -- PROCEDURE build_and_get_contracts
1008 -- This proecdure inserts selection criteria to OKL_MASS_RBK_CRITERIA table
1009 -- and populates OKL_RBK_SELECTED_CONTRACT table with selected contracts.
1010 -- Calls:
1011 -- Called by:
1012 ------------------------------------------------------------------------------
1013
1014 PROCEDURE build_and_get_contracts(
1015 p_api_version IN NUMBER,
1016 p_init_msg_list IN VARCHAR2,
1017 x_return_status OUT NOCOPY VARCHAR2,
1018 x_msg_count OUT NOCOPY NUMBER,
1019 x_msg_data OUT NOCOPY VARCHAR2,
1020 p_request_name IN OKL_MASS_RBK_CRITERIA.REQUEST_NAME%TYPE,
1021 p_mrbv_tbl IN mrbv_tbl_type,
1022 x_mstv_tbl OUT NOCOPY mstv_tbl_type,
1023 x_rbk_count OUT NOCOPY NUMBER
1024 ) IS
1025
1026 l_api_name VARCHAR2(35) := 'build_and_get_contracts';
1027 l_proc_name VARCHAR2(35) := 'BUILD_AND_GET_CONTRACTS';
1028 l_api_version NUMBER := 1.0;
1029
1030 x_mrbv_tbl mrbv_tbl_type;
1031
1032 BEGIN
1033 IF (G_DEBUG_ENABLED = 'Y') THEN
1034 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
1035 END IF;
1036 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1037 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
1038 END IF;
1039 -- call START_ACTIVITY to create savepoint, check compatibility
1040 -- and initialize message list
1041 x_return_status := OKL_API.START_ACTIVITY(
1042 p_api_name => l_api_name,
1043 p_pkg_name => G_PKG_NAME,
1044 p_init_msg_list => p_init_msg_list,
1045 l_api_version => l_api_version,
1046 p_api_version => p_api_version,
1047 p_api_type => G_API_TYPE,
1048 x_return_status => x_return_status);
1049
1050 -- check if activity started successfully
1051 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
1052 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1053 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
1054 raise OKL_API.G_EXCEPTION_ERROR;
1055 END IF;
1056
1057 --
1058 -- Validate incoming data
1059 --
1060 validate_request(
1061 x_return_status => x_return_status,
1062 x_msg_count => x_msg_count,
1063 x_msg_data => x_msg_data,
1064 p_request_name => p_request_name,
1065 p_mrbv_tbl => p_mrbv_tbl
1066 );
1067
1068 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
1069 raise OKL_API.G_EXCEPTION_ERROR;
1070 END IF;
1071
1072 --
1073 -- Insert Selection criteria
1074 --
1075 okl_mrb_pvt.insert_row(
1076 p_api_version => l_api_version,
1077 p_init_msg_list => p_init_msg_list,
1078 x_return_status => x_return_status,
1079 x_msg_count => x_msg_count,
1080 x_msg_data => x_msg_data,
1081 p_mrbv_tbl => p_mrbv_tbl,
1082 x_mrbv_tbl => x_mrbv_tbl
1083 );
1084
1085 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
1086 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1087 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
1088 raise OKL_API.G_EXCEPTION_ERROR;
1089 END IF;
1090
1091 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1092 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Insert');
1093 END IF;
1094 --
1095 -- Get Selected Contracts
1096 --
1097 get_contract(
1098 p_api_version => l_api_version,
1099 p_init_msg_list => p_init_msg_list,
1100 x_return_status => x_return_status,
1101 x_msg_count => x_msg_count,
1102 x_msg_data => x_msg_data,
1103 p_request_name => p_request_name,
1104 x_mstv_tbl => x_mstv_tbl,
1105 x_rbk_count => x_rbk_count
1106 );
1107
1108 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
1109 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1110 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
1111 raise OKL_API.G_EXCEPTION_ERROR;
1112 END IF;
1113
1114 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1115 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Get Contract');
1116 END IF;
1117
1118 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
1119 x_msg_data => x_msg_data);
1120
1121
1122 RETURN;
1123
1124 EXCEPTION
1125 when OKL_API.G_EXCEPTION_ERROR then
1126 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1127 p_api_name => l_api_name,
1128 p_pkg_name => G_PKG_NAME,
1129 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
1130 x_msg_count => x_msg_count,
1131 x_msg_data => x_msg_data,
1132 p_api_type => G_API_TYPE);
1133
1134 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
1135 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1136 p_api_name => l_api_name,
1137 p_pkg_name => G_PKG_NAME,
1138 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1139 x_msg_count => x_msg_count,
1140 x_msg_data => x_msg_data,
1141 p_api_type => G_API_TYPE);
1142
1143 when OTHERS then
1144 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1145 p_api_name => l_api_name,
1146 p_pkg_name => G_PKG_NAME,
1147 p_exc_name => 'OTHERS',
1148 x_msg_count => x_msg_count,
1149 x_msg_data => x_msg_data,
1150 p_api_type => G_API_TYPE);
1151
1152 END build_and_get_contracts;
1153
1154 ---------------------------------------------------------------------------
1155 -- FUNCTION get_rec from OKL_RBK_SELECTED_CONTRACT
1156 ---------------------------------------------------------------------------
1157 FUNCTION get_rec (
1158 p_request_name IN VARCHAR2,
1159 p_chr_id IN NUMBER,
1160 x_return_status OUT NOCOPY VARCHAR2
1161 )
1162 RETURN mstv_tbl_type IS
1163
1164 CURSOR mstv_csr (p_request_name VARCHAR2,
1165 p_chr_id NUMBER) IS
1166 SELECT
1167 id
1168 ,request_name
1169 ,khr_id
1170 ,contract_number
1171 ,contract_description
1172 ,transaction_id
1173 ,selected_flag
1174 ,attribute_category
1175 ,attribute1
1176 ,attribute2
1177 ,attribute3
1178 ,attribute4
1179 ,attribute5
1180 ,attribute6
1181 ,attribute7
1182 ,attribute8
1183 ,attribute9
1184 ,attribute10
1185 ,attribute11
1186 ,attribute12
1187 ,attribute13
1188 ,attribute14
1189 ,attribute15
1190 FROM okl_rbk_selected_contract
1191 WHERE request_name = p_request_name
1192 AND khr_id = p_chr_id
1193 AND NVL(status, 'NEW') IN ('NEW', 'ERROR');
1194
1195 x_mstv_tbl mstv_tbl_type;
1196 i NUMBER := 0;
1197 BEGIN
1198 IF (G_DEBUG_ENABLED = 'Y') THEN
1199 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
1200 END IF;
1201
1202 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1203
1204 i := 1;
1205 FOR mstv_rec IN mstv_csr(p_request_name,
1206 p_chr_id)
1207 LOOP
1208 x_mstv_tbl(i).id := mstv_rec.id;
1209 x_mstv_tbl(i).request_name := mstv_rec.request_name;
1210 x_mstv_tbl(i).khr_id := mstv_rec.khr_id;
1211 x_mstv_tbl(i).contract_number := mstv_rec.contract_number;
1212 x_mstv_tbl(i).contract_description := mstv_rec.contract_description;
1213 x_mstv_tbl(i).transaction_id := mstv_rec.transaction_id;
1214 x_mstv_tbl(i).selected_flag := mstv_rec.selected_flag;
1215 x_mstv_tbl(i).attribute_category := mstv_rec.attribute_category;
1216 x_mstv_tbl(i).attribute1 := mstv_rec.attribute1;
1217 x_mstv_tbl(i).attribute2 := mstv_rec.attribute2;
1218 x_mstv_tbl(i).attribute3 := mstv_rec.attribute3;
1219 x_mstv_tbl(i).attribute4 := mstv_rec.attribute4;
1220 x_mstv_tbl(i).attribute5 := mstv_rec.attribute5;
1221 x_mstv_tbl(i).attribute6 := mstv_rec.attribute6;
1222 x_mstv_tbl(i).attribute7 := mstv_rec.attribute7;
1223 x_mstv_tbl(i).attribute8 := mstv_rec.attribute8;
1224 x_mstv_tbl(i).attribute9 := mstv_rec.attribute9;
1225 x_mstv_tbl(i).attribute10 := mstv_rec.attribute10;
1226 x_mstv_tbl(i).attribute11 := mstv_rec.attribute11;
1227 x_mstv_tbl(i).attribute12 := mstv_rec.attribute12;
1228 x_mstv_tbl(i).attribute13 := mstv_rec.attribute13;
1229 x_mstv_tbl(i).attribute14 := mstv_rec.attribute14;
1230 x_mstv_tbl(i).attribute15 := mstv_rec.attribute15;
1231 i := i + 1;
1232
1233 --debug_message('Indise ID'||i||' : '||mstv_rec.id);
1234 --debug_message('Indise ID'||i||' : '||x_mstv_tbl(i).id);
1235 END LOOP;
1236 IF (i = 0) THEN
1237 x_return_status := OKL_API.G_RET_STS_ERROR;
1238 okl_api.set_message(
1239 G_APP_NAME,
1240 G_NO_SEL_CONTRACT,
1241 'REQ_NAME',
1242 p_request_name
1243 );
1244 END IF;
1245
1246 RETURN x_mstv_tbl;
1247
1248 EXCEPTION
1249 WHEN OTHERS THEN
1250 -- store SQL error message on message stack for caller
1251 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1252 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'WHEN OTHERS occurred');
1253 END IF;
1254 OKL_API.set_message(
1255 G_APP_NAME,
1256 G_UNEXPECTED_ERROR,
1257 'SQLcode',
1258 SQLCODE,
1259 'SQLerrm',
1260 SQLERRM);
1261 -- notify caller of an UNEXPECTED error
1262 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1263 END get_rec;
1264
1265 ------------------------------------------------------------------------------
1266 -- PROCEDURE update_residual_value
1267 -- This proecdure updates Residual Value at Contract Financial Asset Line
1268 -- Calls:
1269 -- Called by:
1270 ------------------------------------------------------------------------------
1271 PROCEDURE update_residual_value(
1272 x_return_status OUT NOCOPY VARCHAR2,
1273 x_msg_count OUT NOCOPY NUMBER,
1274 x_msg_data OUT NOCOPY VARCHAR2,
1275 p_kle_tbl IN kle_tbl_type,
1276 p_residual_value IN OKL_K_LINES_V.RESIDUAL_VALUE%TYPE
1277 ) IS
1278 l_api_name VARCHAR2(35) := 'update_residual_value';
1279 l_proc_name VARCHAR2(35) := 'UPDATE_RESIDUAL_VALUE';
1280 l_api_version NUMBER := 1.0;
1281
1282 CURSOR oec_csr (p_top_line_id OKC_K_LINES_V.ID%TYPE) IS
1283 SELECT oec
1284 FROM okl_k_lines_full_v
1285 WHERE id = p_top_line_id;
1286
1287 l_oec NUMBER;
1288 l_residual_ptg NUMBER;
1289 l_klev_tbl klev_tbl_type;
1290 l_clev_tbl clev_tbl_type;
1291
1292 x_klev_tbl klev_tbl_type;
1293 x_clev_tbl clev_tbl_type;
1294
1295 BEGIN
1296 IF (G_DEBUG_ENABLED = 'Y') THEN
1297 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
1298 END IF;
1299
1300 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1301
1302 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1303 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
1304 END IF;
1305
1306 FOR i IN 1..p_kle_tbl.COUNT
1307 LOOP
1308 l_klev_tbl(i).id := p_kle_tbl(i).id;
1309 l_clev_tbl(i).id := p_kle_tbl(i).id;
1310
1311 l_oec := 0;
1312 l_residual_ptg := NULL;
1313
1314 OPEN oec_csr (p_kle_tbl(i).id);
1315 FETCH oec_csr INTO l_oec;
1316 CLOSE oec_csr;
1317
1318 IF (l_oec <> 0) THEN
1319 l_residual_ptg := p_residual_value * 100 / l_oec;
1320 END IF;
1321
1322 l_klev_tbl(i).residual_value := p_residual_value;
1323 l_klev_tbl(i).residual_percentage := l_residual_ptg;
1324
1325 END LOOP;
1326
1327 okl_contract_pub.update_contract_line(
1328 p_api_version => 1.0,
1329 p_init_msg_list => OKC_API.G_FALSE,
1330 x_return_status => x_return_status,
1331 x_msg_count => x_msg_count,
1332 x_msg_data => x_msg_data,
1333 p_clev_tbl => l_clev_tbl,
1334 p_klev_tbl => l_klev_tbl,
1335 x_clev_tbl => x_clev_tbl,
1336 x_klev_tbl => x_klev_tbl
1337 );
1338
1339 RETURN; -- handle error, if any, at calling block
1340
1341 END update_residual_value;
1342
1343 ------------------------------------------------------------------------------
1344 -- PROCEDURE populate_asset_change
1345 -- This proecdure populates asset related changes to appropriate records
1346 -- and creates Transactions for those.
1347 -- Calls:
1348 -- Called by:
1349 ------------------------------------------------------------------------------
1350 PROCEDURE populate_asset_change(
1351 x_return_status OUT NOCOPY VARCHAR2,
1352 x_msg_count OUT NOCOPY NUMBER,
1353 x_msg_data OUT NOCOPY VARCHAR2,
1354 p_request_name IN VARCHAR2,
1355 p_online_yn IN VARCHAR2,
1356 p_khr_id IN OKC_K_HEADERS_V.ID%TYPE,
1357 p_kle_tbl IN kle_tbl_type,
1358 p_line_count IN NUMBER,
1359 p_book_type_code IN FA_BOOKS.BOOK_TYPE_CODE%TYPE,
1360 p_deprn_method_code IN FA_BOOKS.DEPRN_METHOD_CODE%TYPE,
1361 p_in_service_date IN FA_BOOKS.DATE_PLACED_IN_SERVICE%TYPE,
1362 p_life_in_months IN FA_BOOKS.LIFE_IN_MONTHS%TYPE,
1363 p_basic_rate IN FA_BOOKS.BASIC_RATE%TYPE,
1364 p_adjusted_rate IN FA_BOOKS.ADJUSTED_RATE%TYPE ,
1365 p_transaction_date IN OKL_RBK_SELECTED_CONTRACT.TRANSACTION_DATE%TYPE DEFAULT SYSDATE
1366 ) IS
1367 l_api_name VARCHAR2(35) := 'populate_asset_change';
1368 l_proc_name VARCHAR2(35) := 'POPULATE_ASSET_CHANGE';
1369 l_api_version NUMBER := 1.0;
1370
1371 CURSOR try_csr(p_trx_type VARCHAR2) IS
1372 SELECT id
1373 FROM okl_trx_types_tl
1374 WHERE language = 'US'
1375 AND name = p_trx_type;
1376
1377 CURSOR book_csr (p_asset_number okx_ast_bks_v.asset_number%TYPE,
1378 p_book_type_code okx_ast_bks_v.book_type_code%TYPE,
1379 p_book_class okx_ast_bks_v.book_class%TYPE) IS
1380 SELECT id2,
1381 deprn_method_code,
1382 life_in_months,
1383 acquisition_date,
1384 cost
1385 FROM okx_ast_bks_v
1386 WHERE book_class = p_book_class
1387 AND asset_number = p_asset_number
1388 AND book_type_code = NVL(p_book_type_code, book_type_code);
1389
1390 CURSOR addl_line_csr (p_fa_line_id NUMBER) IS
1391 SELECT oec,
1392 name
1393 FROM OKL_K_LINES_FULL_V
1394 WHERE id = (SELECT cle_id
1395 FROM okl_k_lines_full_v
1396 WHERE id = p_fa_line_id);
1397
1398 CURSOR unit_csr (p_fa_line_id NUMBER) IS
1399 SELECT number_of_items
1400 FROM okc_k_items_v
1401 WHERE cle_id = p_fa_line_id;
1402
1403 CURSOR fa_line_csr (p_chr_id OKL_K_HEADERS_V.ID%TYPE,
1404 p_kle_id OKC_K_LINES_V.ID%TYPE) IS
1405 SELECT line.id
1406 FROM okc_k_lines_v line,
1407 okc_line_styles_v style
1408 WHERE line.lse_id = style.id
1409 AND style.lty_code = 'FIXED_ASSET'
1410 AND dnz_chr_id = p_chr_id
1411 AND cle_id = p_kle_id;
1412
1413 l_thpv_rec thpv_rec_type;
1414 x_thpv_rec thpv_rec_type;
1415
1416 l_tlpv_rec tlpv_rec_type;
1417 x_tlpv_rec tlpv_rec_type;
1418
1419 l_adpv_tbl adpv_tbl_type;
1420 x_adpv_tbl adpv_tbl_type;
1421
1422 l_try_id NUMBER;
1423 l_fa_line_id NUMBER;
1424
1425 l_name OKL_K_LINES_FULL_V.NAME%TYPE;
1426 l_oec OKL_K_LINES_FULL_V.OEC%TYPE;
1427 l_no_of_items OKC_K_ITEMS.NUMBER_OF_ITEMS%TYPE;
1428 l_corp_book OKX_AST_BKS_V.ID2%TYPE;
1429
1430 l_tax_count NUMBER;
1431 l_deprn_method_code OKX_AST_BKS_V.DEPRN_METHOD_CODE%TYPE;
1432 l_life_in_months OKX_AST_BKS_V.LIFE_IN_MONTHS%TYPE;
1433 l_cost OKX_AST_BKS_V.COST%TYPE;
1434 l_acquisition_date DATE;
1435
1436 asset_change_failed EXCEPTION;
1437 --Added by dpsingh for LE uptake
1438 CURSOR contract_num_csr (p_ctr_id1 NUMBER) IS
1439 SELECT contract_number
1440 FROM OKC_K_HEADERS_B
1441 WHERE id = p_ctr_id1;
1442
1443 l_cntrct_number OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
1444 l_legal_entity_id NUMBER;
1445
1446 BEGIN
1447 IF (G_DEBUG_ENABLED = 'Y') THEN
1448 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
1449 END IF;
1450
1451 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1452 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1453 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
1454 END IF;
1455
1456 OPEN try_csr ('Rebook');
1457 FETCH try_csr INTO l_try_id;
1458 CLOSE try_csr;
1459
1460 FOR i IN 1..p_line_count -- For Each FIXED_ASSET Line
1461 LOOP
1462
1463 -- Populate TRX
1464 l_thpv_rec.tas_type := 'CRB';
1465 l_thpv_rec.tsu_code := 'ENTERED';
1466 l_thpv_rec.date_trans_occurred := p_transaction_date; --SYSDATE;
1467 l_thpv_rec.try_id := l_try_id;
1468
1469 --Added by dpsingh for LE Uptake
1470 l_legal_entity_id := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_khr_id) ;
1471 IF l_legal_entity_id IS NOT NULL THEN
1472 l_thpv_rec.legal_entity_id := l_legal_entity_id;
1473 ELSE
1474 -- get the contract number
1475 OPEN contract_num_csr(p_khr_id);
1476 FETCH contract_num_csr INTO l_cntrct_number;
1477 CLOSE contract_num_csr;
1478 Okl_Api.set_message(p_app_name => g_app_name,
1479 p_msg_name => 'OKL_LE_NOT_EXIST_CNTRCT',
1480 p_token1 => 'CONTRACT_NUMBER',
1481 p_token1_value => l_cntrct_number);
1482 RAISE OKL_API.G_EXCEPTION_ERROR;
1483 END IF;
1484
1485 okl_trx_assets_pub.create_trx_ass_h_def(
1486 p_api_version => 1.0,
1487 p_init_msg_list => OKL_API.G_FALSE,
1488 x_return_status => x_return_status,
1489 x_msg_count => x_msg_count,
1490 x_msg_data => x_msg_data,
1491 p_thpv_rec => l_thpv_rec,
1492 x_thpv_rec => x_thpv_rec
1493 );
1494
1495 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1496 RAISE asset_change_failed;
1497 END IF;
1498
1499 -- Populate TXLs
1500 IF (p_deprn_method_code IS NOT NULL
1501 OR
1502 p_life_in_months IS NOT NULL
1503 OR
1504 p_in_service_date IS NOT NULL
1505 OR
1506 p_basic_rate IS NOT NULL
1507 OR
1508 p_adjusted_rate IS NOT NULL) THEN
1509
1510 l_tlpv_rec.tas_id := x_thpv_rec.id;
1511 l_tlpv_rec.tal_type := 'CRB';
1512 l_tlpv_rec.dnz_khr_id := p_khr_id;
1513 --l_tlpv_rec.in_service_date := p_in_service_date;
1514 l_tlpv_rec.line_number := 1;
1515
1516 IF (p_in_service_date IS NOT NULL) THEN
1517 l_tlpv_rec.in_service_date := p_in_service_date;
1518 END IF;
1519
1520 IF (p_basic_rate IS NOT NULL) THEN
1521 l_tlpv_rec.deprn_rate := p_basic_rate;
1522 END IF;
1523
1524 IF (p_adjusted_rate IS NOT NULL) THEN
1525 l_tlpv_rec.deprn_rate := p_adjusted_rate;
1526 END IF;
1527
1528 IF (p_online_yn = 'Y') THEN
1529 l_fa_line_id := p_kle_tbl(i).id;
1530 l_tlpv_rec.kle_id := l_fa_line_id;
1531 ELSE
1532
1533 --
1534 -- Get FIXED_ASSET Line ID from Top Line ID
1535 --
1536 OPEN fa_line_csr(p_khr_id,
1537 p_kle_tbl(i).id);
1538 FETCH fa_line_csr INTO l_fa_line_id;
1539 CLOSE fa_line_csr;
1540
1541 l_tlpv_rec.kle_id := l_fa_line_id;
1542 END IF;
1543
1544 OPEN addl_line_csr (l_fa_line_id);
1545 FETCH addl_line_csr INTO l_oec,
1546 l_name;
1547 CLOSE addl_line_csr;
1548
1549 l_tlpv_rec.asset_number := l_name;
1550 l_tlpv_rec.original_cost := l_oec;
1551
1552 OPEN unit_csr (l_fa_line_id);
1553 FETCH unit_csr INTO l_no_of_items;
1554 CLOSE unit_csr;
1555
1556 l_tlpv_rec.current_units := l_no_of_items;
1557
1558 --
1559 -- Get CORPORATE BOOK
1560 --
1561
1562 OPEN book_csr(l_name,
1563 NULL,
1564 'CORPORATE');
1565 FETCH book_csr INTO l_corp_book,
1566 l_deprn_method_code,
1567 l_life_in_months,
1568 l_acquisition_date,
1569 l_cost;
1570 CLOSE book_csr;
1571
1572 l_tlpv_rec.corporate_book := l_corp_book;
1573 l_tlpv_rec.deprn_method := l_deprn_method_code;
1574 l_tlpv_rec.life_in_months := l_life_in_months;
1575 l_tlpv_rec.depreciation_cost := l_cost;
1576 IF (p_in_service_date IS NULL) THEN
1577 l_tlpv_rec.in_service_date := l_acquisition_date;
1578 END IF;
1579
1580 okl_txl_assets_pub.create_txl_asset_def(
1581 p_api_version => 1.0,
1582 p_init_msg_list => OKL_API.G_FALSE,
1583 x_return_status => x_return_status,
1584 x_msg_count => x_msg_count,
1585 x_msg_data => x_msg_data,
1586 p_tlpv_rec => l_tlpv_rec,
1587 x_tlpv_rec => x_tlpv_rec
1588 );
1589
1590 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1591 RAISE asset_change_failed;
1592 END IF;
1593
1594 END IF;
1595
1596 IF (p_deprn_method_code IS NOT NULL
1597 OR
1598 p_life_in_months IS NOT NULL
1599 OR
1600 p_adjusted_rate IS NOT NULL) THEN
1601
1602 IF (p_book_type_code IS NULL
1603 OR
1604 p_deprn_method_code IS NULL) THEN -- Get all TAX Book for this asset
1605 l_tax_count := 0;
1606 FOR book_rec IN book_csr(l_name,
1607 p_book_type_code,
1608 'TAX')
1609 LOOP
1610 l_tax_count := l_tax_count + 1;
1611 l_adpv_tbl(l_tax_count).tal_id := x_tlpv_rec.id;
1612 l_adpv_tbl(l_tax_count).life_in_months_tax := p_life_in_months;
1613 l_adpv_tbl(l_tax_count).asset_number := l_name;
1614 l_adpv_tbl(l_tax_count).cost := book_rec.cost;
1615
1616 IF (p_book_type_code IS NULL) THEN
1617 l_adpv_tbl(l_tax_count).tax_book := book_rec.id2;
1618 ELSE
1619 l_adpv_tbl(l_tax_count).tax_book := p_book_type_code;
1620 END IF;
1621
1622 IF (p_deprn_method_code IS NULL) THEN
1623 l_adpv_tbl(l_tax_count).deprn_method_tax := book_rec.deprn_method_code;
1624 ELSE
1625 l_adpv_tbl(l_tax_count).deprn_method_tax := p_deprn_method_code;
1626 END IF;
1627
1628 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1629 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Life in months: '||l_adpv_tbl(l_tax_count).life_in_months_tax);
1630 END IF;
1631
1632 IF (p_adjusted_rate IS NOT NULL) THEN
1633 l_adpv_tbl(l_tax_count).deprn_rate_tax := p_adjusted_rate;
1634 END IF;
1635 END LOOP;
1636 ELSE
1637 l_adpv_tbl(1).tal_id := x_tlpv_rec.id;
1638 l_adpv_tbl(1).deprn_method_tax := p_deprn_method_code;
1639 l_adpv_tbl(1).life_in_months_tax := p_life_in_months;
1640 l_adpv_tbl(1).asset_number := l_name;
1641 l_adpv_tbl(1).tax_book := p_book_type_code;
1642 l_adpv_tbl(1).deprn_rate_tax := p_adjusted_rate;
1643 END IF;
1644
1645 okl_txd_assets_pub.create_txd_asset_def(
1646 p_api_version => 1.0,
1647 p_init_msg_list => OKL_API.G_FALSE,
1648 x_return_status => x_return_status,
1649 x_msg_count => x_msg_count,
1650 x_msg_data => x_msg_data,
1651 p_adpv_tbl => l_adpv_tbl,
1652 x_adpv_tbl => x_adpv_tbl
1653 );
1654
1655 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1656 RAISE asset_change_failed;
1657 END IF;
1658 END IF;
1659
1660 END LOOP;
1661
1662 RETURN;
1663
1664 EXCEPTION
1665 WHEN asset_change_failed THEN
1666 NULL; --propagate error to caller
1667 END populate_asset_change;
1668
1669 ------------------------------------------------------------------------------
1670 -- PROCEDURE update_slh_sll
1671 -- This proecdure updates any changes requested for Payments (SLH, SLL)
1672 -- Calls:
1673 -- Called by:
1674 ------------------------------------------------------------------------------
1675 PROCEDURE update_slh_sll(
1676 x_return_status OUT NOCOPY VARCHAR2,
1677 x_msg_count OUT NOCOPY NUMBER,
1678 x_msg_data OUT NOCOPY VARCHAR2,
1679 p_khr_id IN OKC_K_HEADERS_V.ID%TYPE,
1680 p_kle_tbl IN kle_tbl_type,
1681 p_strm_lalevl_tbl IN strm_lalevl_tbl_type
1682 ) IS
1683
1684 l_api_name VARCHAR2(35) := 'update_slh_sll';
1685 l_proc_name VARCHAR2(35) := 'UPDATE_SLH_SLL';
1686 l_api_version NUMBER := 1.0;
1687
1688 CURSOR rgp_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
1689 p_cle_id OKC_K_LINES_V.ID%TYPE) IS
1690 SELECT ID
1691 FROM okc_rule_groups_v
1692 WHERE dnz_chr_id = p_chr_id
1693 AND cle_id = p_cle_id
1694 AND rgd_code = 'LALEVL';
1695
1696 CURSOR slh_csr (p_stream_id OKC_RULES_V.OBJECT1_ID1%TYPE,
1697 p_rgp_id OKC_RULES_V.RGP_ID%TYPE) IS
1698 SELECT id
1699 FROM okc_rules_v
1700 WHERE object1_id1 = p_stream_id
1701 AND rgp_id = p_rgp_id
1702 AND rule_information_category = 'LASLH';
1703
1704 CURSOR sll_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
1705 p_slh_id OKC_RULES_V.ID%TYPE,
1706 p_rgp_id OKC_RULE_GROUPS_V.ID%TYPE) IS
1707 SELECT id
1708 FROM okc_rules_v
1709 WHERE dnz_chr_id = p_chr_id
1710 AND rgp_id = p_rgp_id
1711 AND object2_id1 = p_slh_id
1712 AND rule_information_category = 'LASLL';
1713
1714 l_match_found VARCHAR2(1);
1715 l_slh_id NUMBER;
1716 l_rgpv_rec rgpv_rec_type;
1717 x_rgpv_rec rgpv_rec_type;
1718 l_rulv_rec rulv_rec_type;
1719 l_rulv_tbl rulv_tbl_type;
1720
1721 l_slh_rulv_rec rulv_rec_type;
1722 x_slh_rulv_rec rulv_rec_type;
1723
1724 l_sll_rulv_rec rulv_rec_type;
1725 x_sll_rulv_rec rulv_rec_type;
1726
1727 l_sll_rulv_tbl rulv_tbl_type;
1728 x_sll_rulv_tbl rulv_tbl_type;
1729
1730 l_sll_count NUMBER;
1731 k NUMBER;
1732 l_rgp_id OKC_RULE_GROUPS_V.ID%TYPE;
1733 l_slh_rule_id OKC_RULES_V.ID%TYPE;
1734
1735 update_failed EXCEPTION;
1736
1737 BEGIN
1738 IF (G_DEBUG_ENABLED = 'Y') THEN
1739 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
1740 END IF;
1741
1742 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1743 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1744 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
1745 END IF;
1746
1747 FOR i IN 1..p_kle_tbl.COUNT
1748 LOOP
1749 l_match_found := 'N';
1750 l_sll_count := 0;
1751 l_sll_rulv_tbl.DELETE; -- Bug# 2754344
1752 FOR j IN 1..p_strm_lalevl_tbl.COUNT
1753 LOOP
1754 IF (p_khr_id = p_strm_lalevl_tbl(j).chr_id
1755 AND
1756 p_kle_tbl(i).id = p_strm_lalevl_tbl(j).cle_id) THEN
1757
1758 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1759 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'KLE ID: '||p_strm_lalevl_tbl(j).cle_id);
1760 END IF;
1761
1762 l_match_found := 'Y';
1763 IF (p_strm_lalevl_tbl(j).rule_information_category = 'LASLH') THEN
1764
1765 OPEN rgp_csr (p_khr_id,
1766 p_strm_lalevl_tbl(j).cle_id);
1767 FETCH rgp_csr INTO l_rgp_id;
1768
1769 IF rgp_csr%NOTFOUND THEN
1770 l_rgpv_rec.rgd_code := 'LALEVL';
1771 l_rgpv_rec.chr_id := NULL;
1772 l_rgpv_rec.dnz_chr_id := p_khr_id;
1773 l_rgpv_rec.cle_id := p_strm_lalevl_tbl(j).cle_id;
1774 l_rgpv_rec.rgp_type := 'KRG';
1775
1776 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1777 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before Rule group creation');
1778 END IF;
1779 OKL_RULE_PUB.create_rule_group(
1780 p_api_version => 1.0,
1781 p_init_msg_list => OKL_API.G_FALSE,
1782 x_return_status => x_return_status,
1783 x_msg_count => x_msg_count,
1784 x_msg_data => x_msg_data,
1785 p_rgpv_rec => l_rgpv_rec,
1786 x_rgpv_rec => x_rgpv_rec
1787 );
1788 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1789 raise update_failed;
1790 END IF;
1791 l_rgp_id := x_rgpv_rec.id;
1792
1793 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1794 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Rule Group Created');
1795 END IF;
1796 END IF;
1797
1798 CLOSE rgp_csr;
1799
1800 l_slh_id := NULL;
1801 OPEN slh_csr (p_strm_lalevl_tbl(j).object1_id1,
1802 l_rgp_id);
1803 FETCH slh_csr INTO l_slh_id;
1804 CLOSE slh_csr;
1805
1806 IF (l_slh_id IS NOT NULL) THEN -- delete rules (SLH, SLL)
1807
1808 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1809 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Inside delete rule');
1810 END IF;
1811 l_rulv_rec.id := l_slh_id;
1812 okl_rule_pub.delete_rule(
1813 p_api_version => 1.0,
1814 p_init_msg_list => OKC_API.G_FALSE,
1815 x_return_status => x_return_status,
1816 x_msg_count => x_msg_count,
1817 x_msg_data => x_msg_data,
1818 p_rulv_rec => l_rulv_rec
1819 );
1820 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1821 RAISE update_failed;
1822 END IF;
1823
1824 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1825 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'SLH deleted');
1826 END IF;
1827 k := 0;
1828 FOR sll_rec IN sll_csr(p_khr_id,
1829 l_slh_id,
1830 l_rgp_id)
1831 LOOP
1832 k := k + 1;
1833 l_rulv_tbl(k).id := sll_rec.id;
1834 END LOOP;
1835 okl_rule_pub.delete_rule(
1836 p_api_version => 1.0,
1837 p_init_msg_list => OKC_API.G_FALSE,
1838 x_return_status => x_return_status,
1839 x_msg_count => x_msg_count,
1840 x_msg_data => x_msg_data,
1841 p_rulv_tbl => l_rulv_tbl
1842 );
1843 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1844 RAISE update_failed;
1845 END IF;
1846
1847 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1848 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'SLL deleted');
1849 END IF;
1850 END IF;
1851
1852 l_slh_rulv_rec.object1_id1 := p_strm_lalevl_tbl(j).object1_id1;
1853 l_slh_rulv_rec.jtot_object1_code := p_strm_lalevl_tbl(j).jtot_object1_code;
1854 l_slh_rulv_rec.dnz_chr_id := p_khr_id;
1855 l_slh_rulv_rec.rgp_id := l_rgp_id;
1856 l_slh_rulv_rec.std_template_yn := 'N';
1857 l_slh_rulv_rec.warn_yn := 'N';
1858 l_slh_rulv_rec.template_yn := 'N';
1859 l_slh_rulv_rec.sfwt_flag := 'N';
1860 l_slh_rulv_rec.rule_information_category := 'LASLH';
1861 l_slh_rulv_rec.rule_information1 := p_strm_lalevl_tbl(j).rule_information1;
1862 l_slh_rulv_rec.rule_information2 := p_strm_lalevl_tbl(j).rule_information2;
1863 l_slh_rulv_rec.rule_information3 := p_strm_lalevl_tbl(j).rule_information3;
1864 l_slh_rulv_rec.rule_information4 := p_strm_lalevl_tbl(j).rule_information4;
1865 l_slh_rulv_rec.rule_information5 := p_strm_lalevl_tbl(j).rule_information5;
1866 l_slh_rulv_rec.rule_information6 := p_strm_lalevl_tbl(j).rule_information6;
1867 l_slh_rulv_rec.rule_information7 := p_strm_lalevl_tbl(j).rule_information7;
1868 l_slh_rulv_rec.rule_information8 := p_strm_lalevl_tbl(j).rule_information8;
1869 l_slh_rulv_rec.rule_information9 := p_strm_lalevl_tbl(j).rule_information9;
1870 l_slh_rulv_rec.rule_information10 := p_strm_lalevl_tbl(j).rule_information10;
1871 l_slh_rulv_rec.rule_information11 := p_strm_lalevl_tbl(j).rule_information11;
1872 l_slh_rulv_rec.rule_information12 := p_strm_lalevl_tbl(j).rule_information12;
1873 l_slh_rulv_rec.rule_information13 := p_strm_lalevl_tbl(j).rule_information13;
1874 l_slh_rulv_rec.rule_information14 := p_strm_lalevl_tbl(j).rule_information14;
1875 l_slh_rulv_rec.rule_information15 := p_strm_lalevl_tbl(j).rule_information15;
1876 l_slh_rulv_rec.jtot_object1_code := p_strm_lalevl_tbl(j).jtot_object1_code;
1877 l_slh_rulv_rec.jtot_object2_code := p_strm_lalevl_tbl(j).jtot_object2_code;
1878 l_slh_rulv_rec.jtot_object3_code := p_strm_lalevl_tbl(j).jtot_object3_code;
1879 l_slh_rulv_rec.object1_id1 := p_strm_lalevl_tbl(j).object1_id1;
1880 l_slh_rulv_rec.object1_id2 := p_strm_lalevl_tbl(j).object1_id2;
1881 l_slh_rulv_rec.object2_id1 := p_strm_lalevl_tbl(j).object2_id1;
1882 l_slh_rulv_rec.object2_id2 := p_strm_lalevl_tbl(j).object2_id2;
1883 l_slh_rulv_rec.object3_id1 := p_strm_lalevl_tbl(j).object3_id1;
1884 l_slh_rulv_rec.object3_id2 := p_strm_lalevl_tbl(j).object3_id2;
1885
1886 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1887 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before SLH creation');
1888 END IF;
1889
1890 Okl_Rule_Pub.create_rule(
1891 p_api_version => 1.0,
1892 p_init_msg_list => Okc_Api.G_FALSE,
1893 x_return_status => x_return_status,
1894 x_msg_count => x_msg_count,
1895 x_msg_data => x_msg_data,
1896 p_rulv_rec => l_slh_rulv_rec,
1897 x_rulv_rec => x_slh_rulv_rec
1898 );
1899
1900 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1901 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'SLH status: '||x_return_status);
1902 END IF;
1903
1904 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
1905 RAISE update_failed;
1906 END IF;
1907
1908 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1909 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'SLH rule created');
1910 END IF;
1911
1912 ELSIF (p_strm_lalevl_tbl(j).rule_information_category = 'LASLL') THEN
1913
1914 l_sll_count := l_sll_count + 1;
1915 l_sll_rulv_tbl(l_sll_count).object1_id1 := p_strm_lalevl_tbl(j).object1_id1;
1916 l_sll_rulv_tbl(l_sll_count).jtot_object1_code := p_strm_lalevl_tbl(j).jtot_object1_code;
1917 l_sll_rulv_tbl(l_sll_count).dnz_chr_id := p_khr_id;
1918 l_sll_rulv_tbl(l_sll_count).rgp_id := l_rgp_id;
1919 l_sll_rulv_tbl(l_sll_count).std_template_yn := 'N';
1920 l_sll_rulv_tbl(l_sll_count).warn_yn := 'N';
1921 l_sll_rulv_tbl(l_sll_count).template_yn := 'N';
1922 l_sll_rulv_tbl(l_sll_count).sfwt_flag := 'N';
1923 l_sll_rulv_tbl(l_sll_count).rule_information_category := 'LASLL';
1924 l_sll_rulv_tbl(l_sll_count).rule_information1 := p_strm_lalevl_tbl(j).rule_information1;
1925 l_sll_rulv_tbl(l_sll_count).rule_information2 := p_strm_lalevl_tbl(j).rule_information2;
1926 l_sll_rulv_tbl(l_sll_count).rule_information3 := p_strm_lalevl_tbl(j).rule_information3;
1927 l_sll_rulv_tbl(l_sll_count).rule_information4 := p_strm_lalevl_tbl(j).rule_information4;
1928 l_sll_rulv_tbl(l_sll_count).rule_information5 := p_strm_lalevl_tbl(j).rule_information5;
1929 l_sll_rulv_tbl(l_sll_count).rule_information6 := p_strm_lalevl_tbl(j).rule_information6;
1930 l_sll_rulv_tbl(l_sll_count).rule_information7 := p_strm_lalevl_tbl(j).rule_information7;
1931 l_sll_rulv_tbl(l_sll_count).rule_information8 := p_strm_lalevl_tbl(j).rule_information8;
1932 l_sll_rulv_tbl(l_sll_count).rule_information9 := p_strm_lalevl_tbl(j).rule_information9;
1933 l_sll_rulv_tbl(l_sll_count).rule_information10 := p_strm_lalevl_tbl(j).rule_information10;
1934 l_sll_rulv_tbl(l_sll_count).rule_information11 := p_strm_lalevl_tbl(j).rule_information11;
1935 l_sll_rulv_tbl(l_sll_count).rule_information12 := p_strm_lalevl_tbl(j).rule_information12;
1936 l_sll_rulv_tbl(l_sll_count).rule_information13 := p_strm_lalevl_tbl(j).rule_information13;
1937 l_sll_rulv_tbl(l_sll_count).rule_information14 := p_strm_lalevl_tbl(j).rule_information14;
1938 l_sll_rulv_tbl(l_sll_count).rule_information15 := p_strm_lalevl_tbl(j).rule_information15;
1939 l_sll_rulv_tbl(l_sll_count).jtot_object1_code := p_strm_lalevl_tbl(j).jtot_object1_code;
1940 l_sll_rulv_tbl(l_sll_count).jtot_object2_code := p_strm_lalevl_tbl(j).jtot_object2_code;
1941 l_sll_rulv_tbl(l_sll_count).jtot_object3_code := p_strm_lalevl_tbl(j).jtot_object3_code;
1942 l_sll_rulv_tbl(l_sll_count).object1_id1 := p_strm_lalevl_tbl(j).object1_id1;
1943 l_sll_rulv_tbl(l_sll_count).object1_id2 := p_strm_lalevl_tbl(j).object1_id2;
1944 l_sll_rulv_tbl(l_sll_count).object2_id1 := x_slh_rulv_rec.id;
1945 -- nikshah 25-Nov-08 bug # 6697542
1946 l_sll_rulv_tbl(l_sll_count).object2_id2 := '#' ;--p_strm_lalevl_tbl(j).object2_id2;
1947 --l_sll_rulv_tbl(l_sll_count).object2_id2 := p_strm_lalevl_tbl(j).object2_id2;
1948 -- nikshah 25-Nov-08 bug # 6697542
1949 l_sll_rulv_tbl(l_sll_count).object3_id1 := p_strm_lalevl_tbl(j).object3_id1;
1950 l_sll_rulv_tbl(l_sll_count).object3_id2 := p_strm_lalevl_tbl(j).object3_id2;
1951 -- populate rule tbl data
1952 END IF;
1953 END IF;
1954 END LOOP;
1955
1956 IF (l_match_found = 'Y') THEN
1957
1958 l_match_found := 'N';
1959 Okl_Rule_Pub.create_rule(
1960 p_api_version => 1.0,
1961 p_init_msg_list => Okc_Api.G_FALSE,
1962 x_return_status => x_return_status,
1963 x_msg_count => x_msg_count,
1964 x_msg_data => x_msg_data,
1965 p_rulv_tbl => l_sll_rulv_tbl,
1966 x_rulv_tbl => x_sll_rulv_tbl
1967 );
1968
1969 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
1970 RAISE update_failed;
1971 END IF;
1972
1973 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1974 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'SLL rule created');
1975 END IF;
1976
1977 END IF;
1978
1979 END LOOP; -- Contract Header/Line
1980
1981 RETURN;
1982
1983 EXCEPTION
1984 WHEN update_failed THEN
1985 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1986 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'update failed in update_slh_sll');
1987 END IF;
1988 x_return_status := OKL_API.G_RET_STS_ERROR;
1989 --raise; -- handle error in called routine
1990 END update_slh_sll;
1991
1992 ------------------------------------------------------------------------------
1993 -- PROCEDURE update_ppd_amount
1994 -- This proecdure updates PPD Payments (SLH, SLL)
1995 -- Calls:
1996 -- Called by: rebook_contract (for PPD amount only)
1997
1998 ------------------------------------------------------------------------------
1999 PROCEDURE update_ppd_amount(
2000 x_return_status OUT NOCOPY VARCHAR2,
2001 x_msg_count OUT NOCOPY NUMBER,
2002 x_msg_data OUT NOCOPY VARCHAR2,
2003 p_khr_id IN OKC_K_HEADERS_V.ID%TYPE,
2004 p_kle_tbl IN kle_tbl_type,
2005 p_strm_lalevl_tbl IN strm_lalevl_tbl_type
2006 ) IS
2007
2008 l_api_name VARCHAR2(35) := 'update_ppd_amount';
2009 l_proc_name VARCHAR2(35) := 'UPDATE_PPD_AMOUNT';
2010 l_api_version NUMBER := 1.0;
2011
2012 CURSOR rgp_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
2013 p_cle_id OKC_K_LINES_V.ID%TYPE) IS
2014 SELECT ID
2015 FROM okc_rule_groups_v
2016 WHERE dnz_chr_id = p_chr_id
2017 AND cle_id = p_cle_id
2018 AND rgd_code = 'LALEVL';
2019
2020 CURSOR slh_csr (p_stream_id OKC_RULES_V.OBJECT1_ID1%TYPE,
2021 p_rgp_id OKC_RULES_V.RGP_ID%TYPE) IS
2022 SELECT id
2023 FROM okc_rules_v
2024 WHERE object1_id1 = p_stream_id
2025 AND rgp_id = p_rgp_id
2026 AND rule_information_category = 'LASLH';
2027
2028 CURSOR sll_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
2029 p_slh_id OKC_RULES_V.ID%TYPE,
2030 p_rgp_id OKC_RULE_GROUPS_V.ID%TYPE) IS
2031 SELECT id
2032 FROM okc_rules_v
2033 WHERE dnz_chr_id = p_chr_id
2034 AND rgp_id = p_rgp_id
2035 AND object2_id1 = p_slh_id
2036 AND rule_information_category = 'LASLL';
2037
2038 l_match_found VARCHAR2(1);
2039 l_slh_id NUMBER;
2040 l_rgpv_rec rgpv_rec_type;
2041 x_rgpv_rec rgpv_rec_type;
2042 l_rulv_rec rulv_rec_type;
2043 l_rulv_tbl rulv_tbl_type;
2044
2045 l_slh_rulv_rec rulv_rec_type;
2046 x_slh_rulv_rec rulv_rec_type;
2047
2048 l_sll_rulv_rec rulv_rec_type;
2049 x_sll_rulv_rec rulv_rec_type;
2050
2051 l_sll_rulv_tbl rulv_tbl_type;
2052 x_sll_rulv_tbl rulv_tbl_type;
2053
2054 l_sll_count NUMBER;
2055 k NUMBER;
2056 l_rgp_id OKC_RULE_GROUPS_V.ID%TYPE;
2057 l_slh_rule_id OKC_RULES_V.ID%TYPE;
2058
2059 l_previous_lasll_exists BOOLEAN := FALSE;
2060 update_failed EXCEPTION;
2061
2062 BEGIN
2063 IF (G_DEBUG_ENABLED = 'Y') THEN
2064 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
2065 END IF;
2066
2067 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2068 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2069 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
2070 END IF;
2071
2072 FOR i IN 1..p_kle_tbl.COUNT
2073 LOOP
2074 l_match_found := 'N';
2075 l_sll_count := 0;
2076 l_sll_rulv_tbl.DELETE; -- Bug# 2754344
2077 l_previous_lasll_exists := FALSE;
2078 FOR j IN 1..p_strm_lalevl_tbl.COUNT
2079 LOOP
2080 IF (p_khr_id = p_strm_lalevl_tbl(j).chr_id
2081 AND
2082 p_kle_tbl(i).id = p_strm_lalevl_tbl(j).cle_id) THEN
2083
2084 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2085 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'KLE ID: '||p_strm_lalevl_tbl(j).cle_id);
2086 END IF;
2087
2088 l_match_found := 'Y';
2089 IF (p_strm_lalevl_tbl(j).rule_information_category = 'LASLH') THEN
2090
2091 IF (l_previous_lasll_exists) THEN
2092 Okl_Rule_Pub.create_rule(
2093 p_api_version => 1.0,
2094 p_init_msg_list => Okc_Api.G_FALSE,
2095 x_return_status => x_return_status,
2096 x_msg_count => x_msg_count,
2097 x_msg_data => x_msg_data,
2098 p_rulv_tbl => l_sll_rulv_tbl,
2099 x_rulv_tbl => x_sll_rulv_tbl
2100 );
2101
2102 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2103 RAISE update_failed;
2104 END IF;
2105
2106 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2107 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'SLL rule created');
2108 END IF;
2109 l_previous_lasll_exists := FALSE;
2110 l_sll_rulv_tbl.DELETE; -- Bug# 2754344
2111
2112 END IF;
2113
2114 OPEN rgp_csr (p_khr_id,
2115 p_strm_lalevl_tbl(j).cle_id);
2116 FETCH rgp_csr INTO l_rgp_id;
2117
2118 IF rgp_csr%NOTFOUND THEN
2119 l_rgpv_rec.rgd_code := 'LALEVL';
2120 l_rgpv_rec.chr_id := NULL;
2121 l_rgpv_rec.dnz_chr_id := p_khr_id;
2122 l_rgpv_rec.cle_id := p_strm_lalevl_tbl(j).cle_id;
2123 l_rgpv_rec.rgp_type := 'KRG';
2124
2125 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2126 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before Rule group creation');
2127 END IF;
2128 OKL_RULE_PUB.create_rule_group(
2129 p_api_version => 1.0,
2130 p_init_msg_list => OKL_API.G_FALSE,
2131 x_return_status => x_return_status,
2132 x_msg_count => x_msg_count,
2133 x_msg_data => x_msg_data,
2134 p_rgpv_rec => l_rgpv_rec,
2135 x_rgpv_rec => x_rgpv_rec
2136 );
2137 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2138 raise update_failed;
2139 END IF;
2140 l_rgp_id := x_rgpv_rec.id;
2141
2142 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2143 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Rule Group Created');
2144 END IF;
2145 END IF;
2146
2147 CLOSE rgp_csr;
2148
2149 l_slh_id := NULL;
2150 OPEN slh_csr (p_strm_lalevl_tbl(j).object1_id1,
2151 l_rgp_id);
2152 FETCH slh_csr INTO l_slh_id;
2153 CLOSE slh_csr;
2154
2155 IF (l_slh_id IS NOT NULL) THEN -- delete rules (SLH, SLL)
2156
2157 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2158 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Inside delete rule');
2159 END IF;
2160 l_rulv_rec.id := l_slh_id;
2161 okl_rule_pub.delete_rule(
2162 p_api_version => 1.0,
2163 p_init_msg_list => OKC_API.G_FALSE,
2164 x_return_status => x_return_status,
2165 x_msg_count => x_msg_count,
2166 x_msg_data => x_msg_data,
2167 p_rulv_rec => l_rulv_rec
2168 );
2169 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2170 RAISE update_failed;
2171 END IF;
2172
2173 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2174 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'SLH deleted');
2175 END IF;
2176 k := 0;
2177 FOR sll_rec IN sll_csr(p_khr_id,
2178 l_slh_id,
2179 l_rgp_id)
2180 LOOP
2181 k := k + 1;
2182 l_rulv_tbl(k).id := sll_rec.id;
2183 END LOOP;
2184 okl_rule_pub.delete_rule(
2185 p_api_version => 1.0,
2186 p_init_msg_list => OKC_API.G_FALSE,
2187 x_return_status => x_return_status,
2188 x_msg_count => x_msg_count,
2189 x_msg_data => x_msg_data,
2190 p_rulv_tbl => l_rulv_tbl
2191 );
2192 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2193 RAISE update_failed;
2194 END IF;
2195
2196 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2197 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'SLL deleted');
2198 END IF;
2199 END IF;
2200
2201 l_slh_rulv_rec.object1_id1 := p_strm_lalevl_tbl(j).object1_id1;
2202 l_slh_rulv_rec.jtot_object1_code := p_strm_lalevl_tbl(j).jtot_object1_code;
2203 l_slh_rulv_rec.dnz_chr_id := p_khr_id;
2204 l_slh_rulv_rec.rgp_id := l_rgp_id;
2205 l_slh_rulv_rec.std_template_yn := 'N';
2206 l_slh_rulv_rec.warn_yn := 'N';
2207 l_slh_rulv_rec.template_yn := 'N';
2208 l_slh_rulv_rec.sfwt_flag := 'N';
2209 l_slh_rulv_rec.rule_information_category := 'LASLH';
2210 l_slh_rulv_rec.rule_information1 := p_strm_lalevl_tbl(j).rule_information1;
2211 l_slh_rulv_rec.rule_information2 := p_strm_lalevl_tbl(j).rule_information2;
2212 l_slh_rulv_rec.rule_information3 := p_strm_lalevl_tbl(j).rule_information3;
2213 l_slh_rulv_rec.rule_information4 := p_strm_lalevl_tbl(j).rule_information4;
2214 l_slh_rulv_rec.rule_information5 := p_strm_lalevl_tbl(j).rule_information5;
2215 l_slh_rulv_rec.rule_information6 := p_strm_lalevl_tbl(j).rule_information6;
2216 l_slh_rulv_rec.rule_information7 := p_strm_lalevl_tbl(j).rule_information7;
2217 l_slh_rulv_rec.rule_information8 := p_strm_lalevl_tbl(j).rule_information8;
2218 l_slh_rulv_rec.rule_information9 := p_strm_lalevl_tbl(j).rule_information9;
2219 l_slh_rulv_rec.rule_information10 := p_strm_lalevl_tbl(j).rule_information10;
2220 l_slh_rulv_rec.rule_information11 := p_strm_lalevl_tbl(j).rule_information11;
2221 l_slh_rulv_rec.rule_information12 := p_strm_lalevl_tbl(j).rule_information12;
2222 l_slh_rulv_rec.rule_information13 := p_strm_lalevl_tbl(j).rule_information13;
2223 l_slh_rulv_rec.rule_information14 := p_strm_lalevl_tbl(j).rule_information14;
2224 l_slh_rulv_rec.rule_information15 := p_strm_lalevl_tbl(j).rule_information15;
2225 l_slh_rulv_rec.jtot_object1_code := p_strm_lalevl_tbl(j).jtot_object1_code;
2226 l_slh_rulv_rec.jtot_object2_code := p_strm_lalevl_tbl(j).jtot_object2_code;
2227 l_slh_rulv_rec.jtot_object3_code := p_strm_lalevl_tbl(j).jtot_object3_code;
2228 l_slh_rulv_rec.object1_id1 := p_strm_lalevl_tbl(j).object1_id1;
2229 l_slh_rulv_rec.object1_id2 := p_strm_lalevl_tbl(j).object1_id2;
2230 l_slh_rulv_rec.object2_id1 := p_strm_lalevl_tbl(j).object2_id1;
2231 l_slh_rulv_rec.object2_id2 := p_strm_lalevl_tbl(j).object2_id2;
2232 l_slh_rulv_rec.object3_id1 := p_strm_lalevl_tbl(j).object3_id1;
2233 l_slh_rulv_rec.object3_id2 := p_strm_lalevl_tbl(j).object3_id2;
2234
2235 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2236 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before SLH creation');
2237 END IF;
2238
2239 Okl_Rule_Pub.create_rule(
2240 p_api_version => 1.0,
2241 p_init_msg_list => Okc_Api.G_FALSE,
2242 x_return_status => x_return_status,
2243 x_msg_count => x_msg_count,
2244 x_msg_data => x_msg_data,
2245 p_rulv_rec => l_slh_rulv_rec,
2246 x_rulv_rec => x_slh_rulv_rec
2247 );
2248
2249 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2250 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'SLH status: '||x_return_status);
2251 END IF;
2252
2253 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2254 RAISE update_failed;
2255 END IF;
2256
2257 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2258 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'SLH rule created');
2259 END IF;
2260
2261 ELSIF (p_strm_lalevl_tbl(j).rule_information_category = 'LASLL') THEN
2262
2263 l_previous_lasll_exists:= TRUE;
2264 l_sll_count := l_sll_count + 1;
2265 l_sll_rulv_tbl(l_sll_count).object1_id1 := p_strm_lalevl_tbl(j).object1_id1;
2266 l_sll_rulv_tbl(l_sll_count).jtot_object1_code := p_strm_lalevl_tbl(j).jtot_object1_code;
2267 l_sll_rulv_tbl(l_sll_count).dnz_chr_id := p_khr_id;
2268 l_sll_rulv_tbl(l_sll_count).rgp_id := l_rgp_id;
2269 l_sll_rulv_tbl(l_sll_count).std_template_yn := 'N';
2270 l_sll_rulv_tbl(l_sll_count).warn_yn := 'N';
2271 l_sll_rulv_tbl(l_sll_count).template_yn := 'N';
2272 l_sll_rulv_tbl(l_sll_count).sfwt_flag := 'N';
2273 l_sll_rulv_tbl(l_sll_count).rule_information_category := 'LASLL';
2274 l_sll_rulv_tbl(l_sll_count).rule_information1 := p_strm_lalevl_tbl(j).rule_information1;
2275 l_sll_rulv_tbl(l_sll_count).rule_information2 := p_strm_lalevl_tbl(j).rule_information2;
2276 l_sll_rulv_tbl(l_sll_count).rule_information3 := p_strm_lalevl_tbl(j).rule_information3;
2277 l_sll_rulv_tbl(l_sll_count).rule_information4 := p_strm_lalevl_tbl(j).rule_information4;
2278 l_sll_rulv_tbl(l_sll_count).rule_information5 := p_strm_lalevl_tbl(j).rule_information5;
2279 l_sll_rulv_tbl(l_sll_count).rule_information6 := p_strm_lalevl_tbl(j).rule_information6;
2280 l_sll_rulv_tbl(l_sll_count).rule_information7 := p_strm_lalevl_tbl(j).rule_information7;
2281 l_sll_rulv_tbl(l_sll_count).rule_information8 := p_strm_lalevl_tbl(j).rule_information8;
2282 l_sll_rulv_tbl(l_sll_count).rule_information9 := p_strm_lalevl_tbl(j).rule_information9;
2283 l_sll_rulv_tbl(l_sll_count).rule_information10 := p_strm_lalevl_tbl(j).rule_information10;
2284 l_sll_rulv_tbl(l_sll_count).rule_information11 := p_strm_lalevl_tbl(j).rule_information11;
2285 l_sll_rulv_tbl(l_sll_count).rule_information12 := p_strm_lalevl_tbl(j).rule_information12;
2286 l_sll_rulv_tbl(l_sll_count).rule_information13 := p_strm_lalevl_tbl(j).rule_information13;
2287 l_sll_rulv_tbl(l_sll_count).rule_information14 := p_strm_lalevl_tbl(j).rule_information14;
2288 l_sll_rulv_tbl(l_sll_count).rule_information15 := p_strm_lalevl_tbl(j).rule_information15;
2289 l_sll_rulv_tbl(l_sll_count).jtot_object1_code := p_strm_lalevl_tbl(j).jtot_object1_code;
2290 l_sll_rulv_tbl(l_sll_count).jtot_object2_code := p_strm_lalevl_tbl(j).jtot_object2_code;
2291 l_sll_rulv_tbl(l_sll_count).jtot_object3_code := p_strm_lalevl_tbl(j).jtot_object3_code;
2292 l_sll_rulv_tbl(l_sll_count).object1_id1 := p_strm_lalevl_tbl(j).object1_id1;
2293 l_sll_rulv_tbl(l_sll_count).object1_id2 := p_strm_lalevl_tbl(j).object1_id2;
2294 l_sll_rulv_tbl(l_sll_count).object2_id1 := x_slh_rulv_rec.id;
2295 -- nikshah 25-Nov-08 bug # 6697542
2296 l_sll_rulv_tbl(l_sll_count).object2_id2 := '#' ;--p_strm_lalevl_tbl(j).object2_id2;
2297 --l_sll_rulv_tbl(l_sll_count).object2_id2 := p_strm_lalevl_tbl(j).object2_id2;
2298 -- nikshah 25-Nov-08 bug # 6697542
2299 l_sll_rulv_tbl(l_sll_count).object3_id1 := p_strm_lalevl_tbl(j).object3_id1;
2300 l_sll_rulv_tbl(l_sll_count).object3_id2 := p_strm_lalevl_tbl(j).object3_id2;
2301 -- populate rule tbl data
2302 END IF;
2303 END IF;
2304 END LOOP;
2305
2306 IF (l_match_found = 'Y') THEN
2307
2308 l_match_found := 'N';
2309 Okl_Rule_Pub.create_rule(
2310 p_api_version => 1.0,
2311 p_init_msg_list => Okc_Api.G_FALSE,
2312 x_return_status => x_return_status,
2313 x_msg_count => x_msg_count,
2314 x_msg_data => x_msg_data,
2315 p_rulv_tbl => l_sll_rulv_tbl,
2316 x_rulv_tbl => x_sll_rulv_tbl
2317 );
2318
2319 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2320 RAISE update_failed;
2321 END IF;
2322
2323 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2324 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'SLL rule created');
2325 END IF;
2326
2327 END IF;
2328
2329 END LOOP; -- Contract Header/Line
2330
2331 RETURN;
2332
2333 EXCEPTION
2334 WHEN update_failed THEN
2335 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2336 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'update failed in update_ppd_amount');
2337 END IF;
2338 x_return_status := OKL_API.G_RET_STS_ERROR;
2339 NULL; -- handle error in called routine
2340 --raise;
2341 END update_ppd_amount;
2342
2343 ------------------------------------------------------------------------------
2344 -- PROCEDURE rebook_contract
2345 -- This proecdure process rebook for each contract supplied as parameter.
2346 -- Set values are in form of parameter too. Either specify or send NULL
2347 -- Calls:
2348 -- Called by:
2349 ------------------------------------------------------------------------------
2350 PROCEDURE rebook_contract(
2351 x_return_status OUT NOCOPY VARCHAR2,
2352 x_msg_count OUT NOCOPY NUMBER,
2353 x_msg_data OUT NOCOPY VARCHAR2,
2354 p_online_yn IN VARCHAR2,
2355 p_khr_id IN OKC_K_HEADERS_V.ID%TYPE,
2356 p_kle_tbl IN kle_tbl_type,
2357 p_line_count IN NUMBER,
2358 p_request_name IN OKL_MASS_RBK_CRITERIA.REQUEST_NAME%TYPE,
2359 p_book_type_code IN FA_BOOKS.BOOK_TYPE_CODE%TYPE,
2360 p_deprn_method_code IN FA_BOOKS.DEPRN_METHOD_CODE%TYPE,
2361 p_in_service_date IN FA_BOOKS.DATE_PLACED_IN_SERVICE%TYPE,
2362 p_life_in_months IN FA_BOOKS.LIFE_IN_MONTHS%TYPE,
2363 p_basic_rate IN FA_BOOKS.BASIC_RATE%TYPE,
2364 p_adjusted_rate IN FA_BOOKS.ADJUSTED_RATE%TYPE,
2365 p_residual_value IN OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
2366 p_strm_lalevl_tbl IN strm_lalevl_tbl_type,
2367 p_transaction_date IN OKL_RBK_SELECTED_CONTRACT.TRANSACTION_DATE%TYPE DEFAULT SYSDATE
2368 ) IS
2369 l_api_name VARCHAR2(35) := 'rebook_contract';
2370 l_proc_name VARCHAR2(35) := 'REBOOK_CONTRACT';
2371 l_api_version NUMBER := 1.0;
2372
2373 l_mstv_rec mstv_rec_type;
2374 x_mstv_rec mstv_rec_type;
2375
2376 l_mstv_tbl mstv_tbl_type;
2377 x_mstv_tbl mstv_tbl_type;
2378
2379 l_qcl_id NUMBER;
2380 l_msg_tbl Okl_Qa_Check_Pub.msg_tbl_type;
2381 l_qa_check_status VARCHAR2(1);
2382
2383 x_trx_number NUMBER;
2384 x_trx_status VARCHAR2(100);
2385
2386 l_khrv_rec khrv_rec_type;
2387 x_khrv_rec khrv_rec_type;
2388
2389 l_chrv_rec chrv_rec_type;
2390 x_chrv_rec chrv_rec_type;
2391
2392 l_cvmv_rec cvmv_rec_type;
2393 x_cvmv_rec cvmv_rec_type;
2394
2395 l_tcnv_rec tcnv_rec_type;
2396 x_tcnv_rec tcnv_rec_type;
2397
2398 l_c_no varchar2(100);
2399 l_sts varchar2(100);
2400
2401 CURSOR con_sts_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
2402 SELECT sts.ste_code
2403 FROM okc_statuses_b sts,
2404 okc_k_headers_b hdr
2405 WHERE hdr.sts_code = sts.code
2406 AND hdr.id = p_chr_id;
2407
2408 l_request_name okl_rbk_selected_contract.request_name%TYPE;
2409 rebook_contract_failed EXCEPTION;
2410
2411 l_transaction_date DATE;
2412 x_ignore_flag VARCHAR2(1);
2413 l_upfront_tax_status VARCHAR2(1) := 'S';
2414
2415 BEGIN
2416 IF (G_DEBUG_ENABLED = 'Y') THEN
2417 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
2418 END IF;
2419
2420 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2421 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
2422 END IF;
2423
2424 IF (p_transaction_date IS NULL
2425 OR
2426 p_transaction_date = OKL_API.G_MISS_DATE) THEN
2427
2428 l_transaction_date := TRUNC(SYSDATE);
2429 ELSE
2430 l_transaction_date := p_transaction_date;
2431 END IF;
2432
2433 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2434 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Contract : '||p_khr_id);
2435 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Tot Line : '||p_line_count);
2436 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Online? :' ||p_online_yn);
2437 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Transaction Date :' ||l_transaction_date);
2438 END IF;
2439
2440 g_stream_trx_number := NULL; -- initialize before start
2441
2442 IF (p_online_yn = 'N') THEN -- populate selected_contract table for Non-Online process only
2443 l_request_name := TO_CHAR(get_seq_id());
2444 l_mstv_rec.request_name := l_request_name;
2445 FOR i IN 1..p_line_count
2446 LOOP
2447 l_mstv_rec.khr_id := p_khr_id;
2448 l_mstv_rec.kle_id := p_kle_tbl(i).id;
2449 l_mstv_rec.status := 'NEW';
2450 l_mstv_rec.transaction_date := l_transaction_date;
2451
2452 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2453 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Req: '||l_mstv_rec.request_name);
2454 END IF;
2455 okl_mst_pvt.insert_row(
2456 p_api_version => 1.0,
2457 p_init_msg_list => OKL_API.G_FALSE,
2458 x_return_status => x_return_status,
2459 x_msg_count => x_msg_count,
2460 x_msg_data => x_msg_data,
2461 p_mstv_rec => l_mstv_rec,
2462 x_mstv_rec => x_mstv_rec
2463 );
2464
2465 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2466 RAISE rebook_contract_failed;
2467 END IF;
2468 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2469 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Line ID: '||p_kle_tbl(i).id);
2470 END IF;
2471 END LOOP;
2472
2473 ELSE
2474 l_request_name := p_request_name;
2475 END IF;
2476
2477 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2478 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before Versioning...');
2479 END IF;
2480 --
2481 -- Version the Original Contract, only if it is ACTIVE, OKC requirement
2482 --
2483
2484 FOR con_sts_rec IN con_sts_csr (p_khr_id)
2485 LOOP
2486 IF (con_sts_rec.ste_code = 'ACTIVE') THEN
2487
2488 l_cvmv_rec.chr_id := p_khr_id;
2489 okl_version_pub.version_contract(
2490 p_api_version => 1.0,
2491 p_init_msg_list => OKC_API.G_FALSE,
2492 x_return_status => x_return_status,
2493 x_msg_count => x_msg_count,
2494 x_msg_data => x_msg_data,
2495 p_cvmv_rec => l_cvmv_rec,
2496 p_commit => OKL_API.G_FALSE,
2497 x_cvmv_rec => x_cvmv_rec
2498 );
2499
2500 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2501 RAISE rebook_contract_failed;
2502 END IF;
2503
2504 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2505 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Contract is versioned: '||x_return_status);
2506 END IF;
2507 END IF;
2508 END LOOP;
2509
2510 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2511 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Versioning of Contract');
2512 END IF;
2513 -- Create Transaction for the rebook-ed contract
2514
2515 okl_transaction_pvt.create_transaction(
2516 p_api_version => l_api_version,
2517 p_init_msg_list => OKL_API.G_FALSE,
2518 x_return_status => x_return_status,
2519 x_msg_count => x_msg_count,
2520 x_msg_data => x_msg_data,
2521 p_chr_id => p_khr_id,
2522 p_new_chr_id => NULL,
2523 p_reason_code => 'OTHER',
2524 p_description => NULL,
2525 p_trx_date => l_transaction_date, --SYSDATE,
2526 p_trx_type => 'REBOOK',
2527 x_tcnv_rec => x_tcnv_rec
2528 );
2529
2530 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2531 RAISE rebook_contract_failed;
2532 END IF;
2533
2534 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2535 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Status After create transaction: '||x_return_status);
2536 END IF;
2537
2538 l_mstv_tbl := get_rec(l_request_name, p_khr_id, x_return_status);
2539
2540 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2541 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'after get_rec : '||x_return_status);
2542 END IF;
2543 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2544 RAISE rebook_contract_failed;
2545 END IF;
2546
2547 FOR i IN 1..l_mstv_tbl.COUNT
2548 LOOP
2549 l_mstv_tbl(i).transaction_id := x_tcnv_rec.id;
2550 l_mstv_tbl(i).status := 'UNDER REVISION';
2551 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2552 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ID : '|| l_mstv_tbl(i).id);
2553 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'TRX ID : '|| l_mstv_tbl(i).transaction_id);
2554 END IF;
2555 END LOOP;
2556
2557 okl_mst_pvt.update_row(
2558 p_api_version => l_api_version,
2559 p_init_msg_list => OKL_API.G_FALSE,
2560 x_return_status => x_return_status,
2561 x_msg_count => x_msg_count,
2562 x_msg_data => x_msg_data,
2563 p_mstv_tbl => l_mstv_tbl,
2564 x_mstv_tbl => x_mstv_tbl
2565 );
2566
2567 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2568 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'after update mst :'|| x_return_status);
2569 END IF;
2570 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2571 RAISE rebook_contract_failed;
2572 END IF;
2573
2574 -- Termination specific logic here
2575 IF (G_TERMINATION_TRX_ID IS NOT NULL) THEN
2576 --
2577 -- Update Mass rebook Transaction with source trx.
2578 --
2579 okl_api.set_message('OKL', 'AM', 'Termination Trx ID: ', G_TERMINATION_TRX_ID);
2580 l_tcnv_rec.id := x_tcnv_rec.id;
2581 l_tcnv_rec.source_trx_id := G_TERMINATION_TRX_ID;
2582 l_tcnv_rec.source_trx_type := G_TERMINATION_TRX_TYPE;
2583 G_MASS_RBK_TRX_ID := x_tcnv_rec.id;
2584
2585 Okl_Trx_Contracts_Pub.update_trx_contracts(
2586 p_api_version => l_api_version,
2587 p_init_msg_list => OKL_API.G_FALSE,
2588 x_return_status => x_return_status,
2589 x_msg_count => x_msg_count,
2590 x_msg_data => x_msg_data,
2591 p_tcnv_rec => l_tcnv_rec,
2592 x_tcnv_rec => x_tcnv_rec
2593 );
2594
2595 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2596 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After update transaction: '||x_return_status);
2597 END IF;
2598 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2599 RAISE OKL_API.G_EXCEPTION_ERROR;
2600 END IF;
2601
2602 END IF;
2603 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2604 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'after first loop ');
2605 END IF;
2606
2607 --DEBUG
2608 -- PPD specific logic here
2609 IF (G_PPD_TRX_ID IS NOT NULL) THEN
2610 --
2611 -- Update Mass rebook Transaction with source trx.
2612 --
2613 okl_api.set_message('OKL', 'AM', 'Termination Trx ID: ', G_TERMINATION_TRX_ID);
2614 l_tcnv_rec.id := x_tcnv_rec.id;
2615 l_tcnv_rec.source_trx_id := G_PPD_TRX_ID;
2616 --l_tcnv_rec.source_trx_type := G_PPD_TRX_TYPE;
2617 l_tcnv_rec.source_trx_type := 'TCN';
2618 G_MASS_RBK_TRX_ID := x_tcnv_rec.id;
2619
2620 Okl_Trx_Contracts_Pub.update_trx_contracts(
2621 p_api_version => l_api_version,
2622 p_init_msg_list => OKL_API.G_FALSE,
2623 x_return_status => x_return_status,
2624 x_msg_count => x_msg_count,
2625 x_msg_data => x_msg_data,
2626 p_tcnv_rec => l_tcnv_rec,
2627 x_tcnv_rec => x_tcnv_rec
2628 );
2629
2630 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2631 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After update transaction: '||x_return_status);
2632 END IF;
2633 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2634 RAISE OKL_API.G_EXCEPTION_ERROR;
2635 END IF;
2636
2637 END IF;
2638
2639 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2640 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'after second loop ');
2641 END IF;
2642 --
2643 -- Fix Bug# 2894810
2644 -- Create reversal journal entries before
2645 -- modifying the contract. This will help
2646 -- successfully reverse the current JE
2647 --
2648
2649 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2650 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Transaction date: '||l_transaction_date);
2651 END IF;
2652 -- Bug#4542290 - smadhava - 01-SEP-2005 - Added - Start
2653 -- Bypass accoutning call for source transaction = Loan/Principal Pay down or Partial termination
2654 IF ( G_PPD_TRX_ID IS NULL AND G_TERMINATION_TRX_ID IS NULL ) THEN
2655 -- Bug#4542290 - smadhava - 01-SEP-2005 - Added - End
2656
2657 OKL_LA_JE_PVT.GENERATE_JOURNAL_ENTRIES(
2658 p_api_version => l_api_version,
2659 p_init_msg_list => OKL_API.G_FALSE,
2660 p_commit => OKL_API.G_FALSE,
2661 p_contract_id => p_khr_id,
2662 p_transaction_type => 'Rebook',
2663 p_transaction_date => l_transaction_date, --trunc(SYSDATE),
2664 p_draft_yn => OKL_API.G_FALSE,
2665 x_return_status => x_return_status,
2666 x_msg_count => x_msg_count,
2667 x_msg_data => x_msg_data
2668 );
2669
2670 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2671 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'after generate journal entries ');
2672 END IF;
2673 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2674 RAISE rebook_contract_failed;
2675 END IF;
2676 -- Bug#4542290 - smadhava - 01-SEP-2005 - Added - Start
2677 END IF; -- end of check for the source transaction
2678 -- Bug#4542290 - smadhava - 01-SEP-2005 - Added - End
2679
2680
2681 -- Update contract according to parameter specified
2682 populate_asset_change(
2683 x_return_status => x_return_status,
2684 x_msg_count => x_msg_count,
2685 x_msg_data => x_msg_data,
2686 p_request_name => l_request_name,
2687 p_online_yn => p_online_yn,
2688 p_khr_id => p_khr_id,
2689 p_kle_tbl => p_kle_tbl,
2690 p_line_count => p_line_count,
2691 p_book_type_code => p_book_type_code,
2692 p_deprn_method_code => p_deprn_method_code,
2693 p_in_service_date => p_in_service_date,
2694 p_life_in_months => p_life_in_months,
2695 p_basic_rate => p_basic_rate,
2696 p_adjusted_rate => p_adjusted_rate,
2697 p_transaction_date => l_transaction_date
2698 );
2699
2700 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2701 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'after populate asset change ');
2702 END IF;
2703 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2704 RAISE rebook_contract_failed;
2705 END IF;
2706
2707 --
2708 -- Update RESIDUAL_VALUE if asked for ...
2709 --
2710 IF (p_residual_value IS NOT NULL) THEN
2711 update_residual_value(
2712 x_return_status => x_return_status,
2713 x_msg_count => x_msg_count,
2714 x_msg_data => x_msg_data,
2715 p_kle_tbl => p_kle_tbl,
2716 p_residual_value => p_residual_value
2717 );
2718
2719 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2720 RAISE rebook_contract_failed;
2721 END IF;
2722 END IF;
2723
2724 --
2725 -- Update SLH, SLL if provided, only for Non-OnLine process
2726 --
2727 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2728 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'before calling update_ppd_amount');
2729 END IF;
2730 IF (p_online_yn = 'N'
2731 AND
2732 p_strm_lalevl_tbl.COUNT > 0) THEN
2733 IF (G_PPD_TRX_ID IS NOT NULL) THEN
2734 update_ppd_amount(
2735 x_return_status => x_return_status,
2736 x_msg_count => x_msg_count,
2737 x_msg_data => x_msg_data,
2738 p_khr_id => p_khr_id,
2739 p_kle_tbl => p_kle_tbl,
2740 p_strm_lalevl_tbl => p_strm_lalevl_tbl
2741 );
2742 ELSE
2743 update_slh_sll(
2744 x_return_status => x_return_status,
2745 x_msg_count => x_msg_count,
2746 x_msg_data => x_msg_data,
2747 p_khr_id => p_khr_id,
2748 p_kle_tbl => p_kle_tbl,
2749 p_strm_lalevl_tbl => p_strm_lalevl_tbl
2750 );
2751 END IF;
2752
2753 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2754 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'after calling update_ppd_amount');
2755 END IF;
2756 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2757 RAISE rebook_contract_failed;
2758 END IF;
2759 END IF;
2760
2761 --
2762 -- Bug# 2843007, 14-MAR-2003
2763 -- Call Insurance API for asset termination
2764 --
2765 --Bug#5955320
2766 OKL_INSURANCE_POLICIES_PUB.cancel_create_policies(
2767 p_api_version => 1.0,
2768 p_init_msg_list => OKL_API.G_FALSE,
2769 x_return_status => x_return_status,
2770 x_msg_count => x_msg_count,
2771 x_msg_data => x_msg_data,
2772 p_khr_id => p_khr_id,
2773 p_cancellation_date => l_transaction_date, --SYSDATE
2774 --Bug# 4055812
2775 --Bug# 3945995
2776 p_transaction_id => G_MASS_RBK_TRX_ID,
2777 x_ignore_flag => x_ignore_flag
2778 );
2779
2780 IF (x_return_status = OKL_API.G_RET_STS_ERROR) then
2781 IF (x_ignore_flag = OKL_API.G_FALSE) THEN
2782 raise rebook_contract_failed;
2783 ELSE
2784 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2785 END IF;
2786 ELSIF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
2787 raise rebook_contract_failed;
2788 END IF;
2789
2790 -- Run QA Checker
2791
2792 get_qcl_id(
2793 x_return_status => x_return_status,
2794 p_qcl_name => 'OKL LA QA CHECK LIST',
2795 x_qcl_id => l_qcl_id
2796 );
2797
2798 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2799 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Running QA Checker...');
2800 END IF;
2801 l_qa_check_status := 'S';
2802 okl_contract_book_pub.execute_qa_check_list(
2803 p_api_version => 1.0,
2804 p_init_msg_list => OKL_API.G_FALSE,
2805 x_return_status => x_return_status,
2806 x_msg_count => x_msg_count,
2807 x_msg_data => x_msg_data,
2808 p_qcl_id => l_qcl_id,
2809 p_chr_id => p_khr_id,
2810 x_msg_tbl => l_msg_tbl
2811 );
2812
2813 FOR i IN 1..l_msg_tbl.LAST
2814 LOOP
2815 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2816 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Name : '||l_msg_tbl(i).name);
2817 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Description : '||l_msg_tbl(i).description);
2818 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Error Status: '||l_msg_tbl(i).error_status);
2819 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Data : '||l_msg_tbl(i).data);
2820 END IF;
2821
2822 IF (l_msg_tbl(i).error_status = 'E') THEN
2823 l_qa_check_status := 'E';
2824 END IF;
2825 END LOOP;
2826
2827 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2828 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After 1st Qa Checker '|| l_qa_check_status);
2829 END IF;
2830
2831 IF (l_qa_check_status <> 'S') THEN
2832 RAISE rebook_contract_failed;
2833 END IF;
2834
2835 -- R12B Authoring OA Migration
2836 -- Upfront Tax Calculation has been moved out of QA Checker.
2837 -- For Mass Rebook, Upfront Tax calculation will not be performed.
2838 -- The below call will only update the status of the Calculate Upfront Tax
2839 -- task to Complete.
2840 OKL_CONTRACT_BOOK_PVT.calculate_upfront_tax(
2841 p_api_version => 1.0,
2842 p_init_msg_list => OKL_API.G_FALSE,
2843 x_return_status => x_return_status,
2844 x_msg_count => x_msg_count,
2845 x_msg_data => x_msg_data,
2846 p_chr_id => p_khr_id,
2847 x_process_status => l_upfront_tax_status);
2848
2849 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2850 RAISE rebook_contract_failed;
2851 END IF;
2852
2853 -- Generate Stream
2854 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2855 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Submitting Request to generate Streams....');
2856 END IF;
2857 -- Changed to handle internal and external streams as well
2858 -- Fix Bug#
2859 --OKL_GENERATE_STREAMS_PUB.GENERATE_STREAMS(
2860 --
2861 OKL_LA_STREAM_PUB.GEN_INTR_EXTR_STREAM (
2862 p_api_version => 1.0,
2863 p_init_msg_list => OKL_API.G_FALSE,
2864 p_khr_id => p_khr_id,
2865 p_generation_ctx_code => 'AUTH',
2866 x_trx_number => x_trx_number,
2867 x_trx_status => x_trx_status,
2868 x_return_status => x_return_status,
2869 x_msg_count => x_msg_count,
2870 x_msg_data => x_msg_data
2871 );
2872
2873 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2874 RAISE rebook_contract_failed;
2875 END IF;
2876
2877 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2878 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Stream Status :'||x_return_status);
2879 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Trx# : '||x_trx_number);
2880 END IF;
2881
2882 g_stream_trx_number := x_trx_number;
2883
2884 RETURN;
2885
2886 EXCEPTION
2887
2888 WHEN rebook_contract_failed THEN
2889 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2890 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rebook_contract_failed');
2891 END IF;
2892 g_stream_trx_number := NULL;
2893 x_return_status := OKL_API.G_RET_STS_ERROR;
2894 --raise; -- propagate error to caller
2895 WHEN others THEN
2896 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2897 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rebook_contract_failed');
2898 END IF;
2899 g_stream_trx_number := NULL;
2900 x_return_status := OKL_API.G_RET_STS_ERROR;
2901 --raise; -- propagate error to caller
2902
2903 END rebook_contract;
2904
2905 ------------------------------------------------------------------------------
2906 -- PROCEDURE update_mass_rbk_contract
2907 -- Call this process to update selected contracts. This process updates
2908 -- selected_flag and status of contract provided as parameter
2909 -- Calls:
2910 -- Called by:
2911 ------------------------------------------------------------------------------
2912 PROCEDURE update_mass_rbk_contract(
2913 p_api_version IN NUMBER,
2914 p_init_msg_list IN VARCHAR2,
2915 x_return_status OUT NOCOPY VARCHAR2,
2916 x_msg_count OUT NOCOPY NUMBER,
2917 x_msg_data OUT NOCOPY VARCHAR2,
2918 p_mstv_tbl IN MSTV_TBL_TYPE,
2919 x_mstv_tbl OUT NOCOPY MSTV_TBL_TYPE
2920 ) IS
2921
2922 l_api_name VARCHAR2(35) := 'update_mass_rbk_contract';
2923 l_proc_name VARCHAR2(35) := 'UPDATE_MASS_RBK_CONTRACT';
2924 l_api_version NUMBER := 1.0;
2925
2926 CURSOR rbk_csr (p_request_name OKL_RBK_SELECTED_CONTRACT.REQUEST_NAME%TYPE,
2927 p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
2928 SELECT id
2929 FROM okl_rbk_selected_contract
2930 WHERE khr_id = p_chr_id
2931 AND request_name = p_request_name;
2932
2933 l_mstv_upd_tbl mstv_tbl_type;
2934 x_mstv_upd_tbl mstv_tbl_type;
2935 l_upd_count NUMBER := 0;
2936
2937 update_failed EXCEPTION;
2938
2939 BEGIN
2940 IF (G_DEBUG_ENABLED = 'Y') THEN
2941 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
2942 END IF;
2943 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2944 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
2945 END IF;
2946 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2947
2948 -- call START_ACTIVITY to create savepoint, check compatibility
2949 -- and initialize message list
2950 x_return_status := OKL_API.START_ACTIVITY(
2951 p_api_name => l_api_name,
2952 p_pkg_name => G_PKG_NAME,
2953 p_init_msg_list => p_init_msg_list,
2954 l_api_version => l_api_version,
2955 p_api_version => p_api_version,
2956 p_api_type => G_API_TYPE,
2957 x_return_status => x_return_status);
2958
2959 -- check if activity started successfully
2960 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
2961 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2962 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
2963 raise OKL_API.G_EXCEPTION_ERROR;
2964 END IF;
2965
2966 l_upd_count := 1;
2967 FOR i IN 1..p_mstv_tbl.COUNT
2968 LOOP
2969 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2970 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ID :'||p_mstv_tbl(i).id);
2971 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'KHR_ID :'||p_mstv_tbl(i).khr_id);
2972 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'REQ :'||p_mstv_tbl(i).request_name);
2973 END IF;
2974
2975 FOR rbk_rec IN rbk_csr(p_mstv_tbl(i).request_name,
2976 p_mstv_tbl(i).khr_id)
2977 LOOP
2978 l_mstv_upd_tbl(l_upd_count).id := rbk_rec.id;
2979 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2980 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ID :'||l_mstv_upd_tbl(l_upd_count).id);
2981 END IF;
2982 --insert into dd_dummy values (3.1, 'ID: '||l_mstv_upd_tbl(l_upd_count).id);
2983 l_mstv_upd_tbl(l_upd_count).selected_flag := p_mstv_tbl(i).selected_flag;
2984 l_mstv_upd_tbl(l_upd_count).status := p_mstv_tbl(i).status;
2985 l_upd_count := l_upd_count+ 1;
2986 END LOOP;
2987 END LOOP;
2988
2989 okl_mst_pvt.update_row(
2990 p_api_version => p_api_version,
2991 p_init_msg_list => p_init_msg_list,
2992 x_return_status => x_return_status,
2993 x_msg_count => x_msg_count,
2994 x_msg_data => x_msg_data,
2995 p_mstv_tbl => l_mstv_upd_tbl,
2996 x_mstv_tbl => x_mstv_upd_tbl
2997 );
2998
2999 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3000 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3001 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3002 raise OKL_API.G_EXCEPTION_ERROR;
3003 END IF;
3004
3005 --insert into dd_dummy values (3.2, 'After update');
3006 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
3007 x_msg_data => x_msg_data);
3008
3009 RETURN;
3010
3011 EXCEPTION
3012 WHEN update_failed THEN
3013 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3014
3015 when OKL_API.G_EXCEPTION_ERROR then
3016 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3017 p_api_name => l_api_name,
3018 p_pkg_name => G_PKG_NAME,
3019 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
3020 x_msg_count => x_msg_count,
3021 x_msg_data => x_msg_data,
3022 p_api_type => G_API_TYPE);
3023
3024 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
3025 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3026 p_api_name => l_api_name,
3027 p_pkg_name => G_PKG_NAME,
3028 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
3029 x_msg_count => x_msg_count,
3030 x_msg_data => x_msg_data,
3031 p_api_type => G_API_TYPE);
3032
3033 when OTHERS then
3034 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3035 p_api_name => l_api_name,
3036 p_pkg_name => G_PKG_NAME,
3037 p_exc_name => 'OTHERS',
3038 x_msg_count => x_msg_count,
3039 x_msg_data => x_msg_data,
3040 p_api_type => G_API_TYPE);
3041 END update_mass_rbk_contract;
3042
3043 ------------------------------------------------------------------------------
3044 -- PROCEDURE update_trx_asset
3045 -- Call this process to update status (TSU_CODE) of okl_trx_assets_v with
3046 -- p_status.
3047 -- Calls:
3048 -- Called by:
3049 ------------------------------------------------------------------------------
3050 PROCEDURE update_trx_asset(
3051 x_return_status OUT NOCOPY VARCHAR2,
3052 x_msg_count OUT NOCOPY NUMBER,
3053 x_msg_data OUT NOCOPY VARCHAR2,
3054 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
3055 p_status IN VARCHAR2
3056 ) IS
3057 --Bug# 3521126 :
3058 /*--modified cursor to change only status of current transaction--
3059 --CURSOR trx_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
3060 --SELECT txl.tas_id
3061 --FROM okl_txl_assets_v txl
3062 --WHERE txl.dnz_khr_id = p_chr_id
3063 --AND EXISTS (SELECT 'Y'
3064 --FROM okl_trx_assets_v trx
3065 --WHERE trx.id = txl.tas_id
3066 --AND trx.tsu_code = 'ENTERED');
3067 ---------------------------------------------------------------*/
3068 CURSOR trx_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
3069 SELECT trx.id
3070 FROM okl_trx_assets trx,
3071 okl_trx_types_tl ttyp,
3072 okl_txl_assets_b txl
3073 WHERE trx.id = txl.tas_id
3074 AND trx.try_id = ttyp.id
3075 AND trx.tas_type = 'CRB'
3076 AND trx.tsu_code = 'ENTERED'
3077 AND ttyp.name = 'Rebook'
3078 AND ttyp.language = 'US'
3079 AND txl.tal_type = 'CRB'
3080 AND txl.dnz_khr_id = p_chr_id;
3081
3082 l_thpv_rec thpv_rec_type;
3083 x_thpv_rec thpv_rec_type;
3084
3085 BEGIN
3086
3087 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3088
3089 FOR trx_rec IN trx_csr(p_chr_id)
3090 LOOP
3091 l_thpv_rec.id := trx_rec.id;
3092 l_thpv_rec.tsu_code := p_status;
3093
3094 okl_trx_assets_pub.update_trx_ass_h_def(
3095 p_api_version => 1.0,
3096 p_init_msg_list => OKL_API.G_FALSE,
3097 x_return_status => x_return_status,
3098 x_msg_count => x_msg_count,
3099 x_msg_data => x_msg_data,
3100 p_thpv_rec => l_thpv_rec,
3101 x_thpv_rec => x_thpv_rec
3102 );
3103
3104 END LOOP;
3105
3106 END update_trx_asset;
3107
3108 -- Bug# 4398936
3109 PROCEDURE process_securitization_stream(p_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
3110 p_rbk_trx_id IN NUMBER,
3111 x_return_status OUT NOCOPY VARCHAR2,
3112 x_msg_count OUT NOCOPY NUMBER,
3113 x_msg_data OUT NOCOPY VARCHAR2)
3114 IS
3115
3116 l_api_name VARCHAR2(35) := 'process_securitization_stream';
3117 l_proc_name VARCHAR2(35) := 'process_securitization_stream';
3118 l_api_version CONSTANT NUMBER := 1;
3119
3120 CURSOR l_okl_trbk_txn_csr
3121 IS
3122 SELECT date_transaction_occurred
3123 FROM okl_trx_contracts
3124 WHERE id = p_rbk_trx_id;
3125
3126 CURSOR l_okl_tcn_type_csr
3127 IS
3128 SELECT trxp.tcn_type,
3129 trxp.qte_id,
3130 trxp.date_transaction_occurred,
3131 qtev.qtp_code
3132 FROM okl_trx_contracts trxp,
3133 okl_trx_contracts trxc,
3134 okl_trx_quotes_v qtev
3135 WHERE trxp.id = trxc.source_trx_id
3136 AND trxc.id = p_rbk_trx_id
3137 AND trxc.tsu_code <> 'PROCESSED'
3138 AND qtev.id = trxp.qte_id;
3139
3140
3141
3142 --Bug 6740000 ssdeshpa start
3143 --Changed Stream Type Subclass to 'INVESTOR_DISBURSEMENT'
3144 CURSOR disb_strm_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
3145 SELECT strm.id
3146 FROM okl_streams strm,
3147 okl_strm_type_v TYPE
3148 WHERE TYPE.id = strm.sty_id
3149 AND TYPE.stream_type_subclass = 'INVESTOR_DISBURSEMENT'
3150 AND strm.khr_id = p_chr_id
3151 AND strm.say_code = 'CURR';
3152 --Bug 6740000 ssdeshpa End
3153
3154 CURSOR accu_strm_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
3155 SELECT strm.id
3156 FROM okl_streams strm,
3157 okl_strm_type_v TYPE
3158 WHERE TYPE.id = strm.sty_id
3159 AND TYPE.stream_type_purpose IN (
3160 'INVESTOR_RENTAL_ACCRUAL',
3161 'INVESTOR_PRE_TAX_INCOME',
3162 'INVESTOR_INTEREST_INCOME',
3163 'INVESTOR_VARIABLE_INTEREST'
3164 )
3165 AND strm.khr_id = p_chr_id
3166 AND strm.say_code = 'CURR';
3167
3168 CURSOR l_okl_alt_kle_csr(p_qte_id IN NUMBER)
3169 IS
3170 SELECT kle_id
3171 FROM okl_txl_quote_lines_v
3172 WHERE qte_id = p_qte_id
3173 AND qlt_code = 'AMCFIA';
3174
3175 --Bug 6740000 ssdeshpa start
3176 --Cursor to get the deal Type for Contract
3177 CURSOR get_deal_type_csr(p_chr_id OKL_K_HEADERS.ID%TYPE)
3178 IS
3179 SELECT DEAL_TYPE
3180 FROM OKL_K_HEADERS
3181 WHERE ID = p_chr_id;
3182
3183 l_deal_type OKL_K_HEADERS.DEAL_TYPE%TYPE;
3184 --Bug 6740000 ssdeshpa End
3185
3186 i NUMBER := 0;
3187 l_disb_strm_tbl OKL_STREAMS_PUB.stmv_tbl_type;
3188 x_disb_strm_tbl OKL_STREAMS_PUB.stmv_tbl_type;
3189
3190 l_accu_strm_tbl OKL_STREAMS_PUB.stmv_tbl_type;
3191 x_accu_strm_tbl OKL_STREAMS_PUB.stmv_tbl_type;
3192
3193
3194 lx_value VARCHAR2(1);
3195 lx_inv_agmt_chr_id_tbl Okl_Securitization_Pvt.inv_agmt_chr_id_tbl_type;
3196
3197 secu_failed EXCEPTION;
3198
3199 --l_stream_type_subclass okl_strm_type_b.stream_type_subclass%TYPE DEFAULT NULL;
3200 l_alt_purchase BOOLEAN := FALSE;
3201
3202 BEGIN
3203 IF (G_DEBUG_ENABLED = 'Y') THEN
3204 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
3205 END IF;
3206
3207 x_return_status := OKC_API.G_RET_STS_SUCCESS;
3208
3209 --
3210 -- Check for Securitized Contract
3211 --
3212 FOR l_okl_trbk_txn_rec IN l_okl_trbk_txn_csr
3213 LOOP
3214
3215 Okl_Securitization_Pvt.check_khr_securitized(
3216 p_api_version => 1.0,
3217 p_init_msg_list => OKC_API.G_FALSE,
3218 x_return_status => x_return_status,
3219 x_msg_count => x_msg_count,
3220 x_msg_data => x_msg_data,
3221 p_khr_id => p_chr_id,
3222 p_effective_date => l_okl_trbk_txn_rec.date_transaction_occurred,
3223 x_value => lx_value,
3224 x_inv_agmt_chr_id_tbl => lx_inv_agmt_chr_id_tbl
3225 );
3226
3227 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3228 RAISE secu_failed;
3229 END IF;
3230
3231 IF (lx_value = OKL_API.G_TRUE) THEN
3232 --
3233 -- HISTorize disbursement streams, with subclass = 'INVESTOR_DISBURSEMENT'
3234 --
3235 FOR disb_strm_rec IN disb_strm_csr (p_chr_id)
3236 LOOP
3237 i := disb_strm_csr%ROWCOUNT;
3238 l_disb_strm_tbl(i).id := disb_strm_rec.id;
3239 l_disb_strm_tbl(i).say_code := 'HIST';
3240 l_disb_strm_tbl(i).active_yn := 'N';
3241 l_disb_strm_tbl(i).date_history := SYSDATE;
3242 END LOOP;
3243
3244 IF (l_disb_strm_tbl.COUNT > 0) THEN
3245 okl_streams_pub.update_streams(
3246 p_api_version => 1.0,
3247 p_init_msg_list => OKC_API.G_FALSE,
3248 x_return_status => x_return_status,
3249 x_msg_count => x_msg_count,
3250 x_msg_data => x_msg_data,
3251 p_stmv_tbl => l_disb_strm_tbl,
3252 x_stmv_tbl => x_disb_strm_tbl
3253 );
3254
3255 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3256 RAISE secu_failed;
3257 END IF;
3258 END IF;
3259
3260 FOR l_okl_tcn_type_rec IN l_okl_tcn_type_csr
3261 LOOP
3262
3263 IF l_okl_tcn_type_rec.tcn_type = 'ALT' THEN
3264 IF l_okl_tcn_type_rec.qtp_code IN (
3265 'TER_PURCHASE', -- Termination - With Purchase
3266 'TER_ROLL_PURCHASE', -- Termination - Rollover To New Contract With Purchase
3267 'TER_RECOURSE', -- Termination - Recourse With Purchase
3268 'TER_MAN_PURCHASE' -- Termination - Manual With Purchase
3269 )
3270 THEN
3271 l_alt_purchase := TRUE;
3272 ELSE -- Termination without purchase
3273 l_alt_purchase := FALSE;
3274 END IF;
3275
3276 --Bug 6740000 ssdeshpa Start
3277 --get the Deal type for Contract
3278 OPEN get_deal_type_csr(p_chr_id);
3279 FETCH get_deal_type_csr INTO l_deal_type;
3280 CLOSE get_deal_type_csr;
3281 --Bug 6740000 ssdeshpa end
3282
3283 FOR l_okl_alt_kle_rec IN l_okl_alt_kle_csr(l_okl_tcn_type_rec.qte_id)
3284 LOOP
3285
3286 --Bug 6740000 ssdeshpa Start
3287 IF(l_deal_type IN('LEASEOP','LEASEDF','LEASEST')) THEN
3288 Okl_Securitization_Pvt.modify_pool_contents(
3289 p_api_version => 1.0,
3290 p_init_msg_list => OKC_API.G_FALSE,
3291 x_return_status => x_return_status,
3292 x_msg_count => x_msg_count,
3293 x_msg_data => x_msg_data,
3294 p_transaction_reason => Okl_Securitization_Pvt.G_TRX_REASON_ASSET_TERMINATION,
3295 p_khr_id => p_chr_id,
3296 p_kle_id => l_okl_alt_kle_rec.kle_id,
3297 p_transaction_date => l_okl_tcn_type_rec.date_transaction_occurred,
3298 p_effective_date => l_okl_tcn_type_rec.date_transaction_occurred,
3299 p_stream_type_subclass => 'RENT'
3300 );
3301 ELSIF(l_deal_type IN('LOAN', 'LOAN-REVOLVING')) THEN
3302 Okl_Securitization_Pvt.modify_pool_contents(
3303 p_api_version => 1.0,
3304 p_init_msg_list => OKC_API.G_FALSE,
3305 x_return_status => x_return_status,
3306 x_msg_count => x_msg_count,
3307 x_msg_data => x_msg_data,
3308 p_transaction_reason => Okl_Securitization_Pvt.G_TRX_REASON_ASSET_TERMINATION,
3309 p_khr_id => p_chr_id,
3310 p_kle_id => l_okl_alt_kle_rec.kle_id,
3311 p_transaction_date => l_okl_tcn_type_rec.date_transaction_occurred,
3312 p_effective_date => l_okl_tcn_type_rec.date_transaction_occurred,
3313 p_stream_type_subclass => 'LOAN_PAYMENT'
3314 );
3315 END IF;
3316 --Bug 6740000 ssdeshpa End
3317 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3318 RAISE secu_failed;
3319 END IF;
3320
3321 IF l_alt_purchase THEN
3322 Okl_Securitization_Pvt.modify_pool_contents(
3323 p_api_version => 1.0,
3324 p_init_msg_list => OKC_API.G_FALSE,
3325 x_return_status => x_return_status,
3326 x_msg_count => x_msg_count,
3327 x_msg_data => x_msg_data,
3328 p_transaction_reason => Okl_Securitization_Pvt.G_TRX_REASON_ASSET_DISPOSAL,
3329 p_khr_id => p_chr_id,
3330 p_kle_id => l_okl_alt_kle_rec.kle_id,
3331 p_transaction_date => l_okl_tcn_type_rec.date_transaction_occurred,
3332 p_effective_date => l_okl_tcn_type_rec.date_transaction_occurred,
3333 p_stream_type_subclass => 'RESIDUAL'
3334 );
3335 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3336 RAISE secu_failed;
3337 END IF;
3338 END IF;
3339
3340 END LOOP; -- l_okl_alt_kle_rec
3341
3342 END IF; -- l_okl_tcn_type_rec.tcn_type = 'ALT'
3343
3344
3345
3346 END LOOP; -- l_okl_tcn_type_csr
3347
3348
3349
3350 --
3351 -- Create Pool transaction for Mass Rebook
3352 --
3353 Okl_Securitization_Pvt.modify_pool_contents(
3354 p_api_version => 1.0,
3355 p_init_msg_list => OKC_API.G_FALSE,
3356 x_return_status => x_return_status,
3357 x_msg_count => x_msg_count,
3358 x_msg_data => x_msg_data,
3359 p_transaction_reason => Okl_Securitization_Pvt.G_TRX_REASON_CONTRACT_REBOOK,
3360 p_khr_id => p_chr_id,
3361 p_transaction_date => l_okl_trbk_txn_rec.date_transaction_occurred,
3362 p_effective_date => l_okl_trbk_txn_rec.date_transaction_occurred
3363 );
3364
3365 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3366 RAISE secu_failed;
3367 END IF;
3368
3369 -- Bug# 4775555: Start
3370 -- Accrual Streams will now be Historized in OKL_ACCRUAL_SEC_PVT.CREATE_STREAMS
3371 -- This API will create the new accrual streams, link the old and new streams
3372 -- and then Historize the old streams
3373 /*
3374 --
3375 -- HISTorize accrual streams
3376 --
3377 FOR accu_strm_rec IN accu_strm_csr (p_chr_id)
3378 LOOP
3379 i := accu_strm_csr%ROWCOUNT;
3380 l_accu_strm_tbl(i).id := accu_strm_rec.id;
3381 l_accu_strm_tbl(i).say_code := 'HIST';
3382 l_accu_strm_tbl(i).active_yn := 'N';
3383 END LOOP;
3384
3385 IF (l_accu_strm_tbl.COUNT > 0) THEN
3386 okl_streams_pub.update_streams(
3387 p_api_version => 1.0,
3388 p_init_msg_list => OKC_API.G_FALSE,
3389 x_return_status => x_return_status,
3390 x_msg_count => x_msg_count,
3391 x_msg_data => x_msg_data,
3392 p_stmv_tbl => l_accu_strm_tbl,
3393 x_stmv_tbl => x_accu_strm_tbl
3394 );
3395
3396 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3397 RAISE secu_failed;
3398 END IF;
3399 END IF;
3400 */
3401 -- Bug# 4775555: End
3402
3403 --
3404 -- Regenerate disbursement streams
3405 --
3406 okl_stream_generator_pvt.create_disb_streams(
3407 p_api_version => 1.0,
3408 p_init_msg_list => OKC_API.G_FALSE,
3409 x_return_status => x_return_status,
3410 x_msg_count => x_msg_count,
3411 x_msg_data => x_msg_data,
3412 p_contract_id => p_chr_id
3413 );
3414
3415 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3416 RAISE secu_failed;
3417 END IF;
3418
3419 -- Bug# 4775555
3420 --
3421 -- Regenerate Present Value Disbursement streams
3422 --
3423 okl_stream_generator_pvt.create_pv_streams(
3424 p_api_version => 1.0,
3425 p_init_msg_list => OKC_API.G_FALSE,
3426 x_return_status => x_return_status,
3427 x_msg_count => x_msg_count,
3428 x_msg_data => x_msg_data,
3429 p_contract_id => p_chr_id
3430 );
3431
3432 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3433 RAISE secu_failed;
3434 END IF;
3435 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3436 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After regerating Present Value Disbursement streams');
3437 END IF;
3438
3439 --
3440 -- Generate Investor accrual streams
3441 --
3442 OKL_ACCRUAL_SEC_PVT.CREATE_STREAMS(
3443 p_api_version => 1.0,
3444 p_init_msg_list => OKL_API.G_FALSE,
3445 x_return_status => x_return_status,
3446 x_msg_count => x_msg_count,
3447 x_msg_data => x_msg_data,
3448 p_khr_id => p_chr_id
3449 );
3450
3451 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3452 RAISE secu_failed;
3453 END IF;
3454
3455
3456 END IF;
3457 END LOOP; -- l_okl_trbk_txn_csr
3458 RETURN;
3459
3460 EXCEPTION
3461 WHEN secu_failed THEN
3462 NULL; -- excception is handled by caller
3463
3464 WHEN OTHERS THEN
3465 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3466 p_api_name => l_api_name,
3467 p_pkg_name => G_PKG_NAME,
3468 p_exc_name => 'OTHERS',
3469 x_msg_count => x_msg_count,
3470 x_msg_data => x_msg_data,
3471 p_api_type => G_API_TYPE);
3472
3473 END process_securitization_stream;
3474 -- Bug# 4398936
3475
3476 -- Bug# 5038395
3477 ------------------------------------------------------------------------------
3478 -- PROCEDURE mass_rebook_activate
3479 -- This procedure performs Approval and Activation for Mass rebook. This will
3480 -- be called from mass_rebook_after_yield that is called by Stream generation
3481 -- process after completing stream generation during mass rebook. This procedure
3482 -- will also be called from Submit button on Contract Booking UI if the user
3483 -- is trying to activate a contract for which Mass rebook is in progress.
3484 -- Calls:
3485 -- Called by:
3486 ------------------------------------------------------------------------------
3487 PROCEDURE mass_rebook_activate(
3488 p_api_version IN NUMBER,
3489 p_init_msg_list IN VARCHAR2,
3490 x_return_status OUT NOCOPY VARCHAR2,
3491 x_msg_count OUT NOCOPY NUMBER,
3492 x_msg_data OUT NOCOPY VARCHAR2,
3493 p_chr_id IN NUMBER
3494 ) IS
3495
3496 l_api_name VARCHAR2(35) := 'mass_rebook_activate';
3497 l_proc_name VARCHAR2(35) := 'MASS_REBOOK_ACTIVATE';
3498 l_api_version NUMBER := 1.0;
3499
3500 CURSOR check_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
3501 SELECT DISTINCT
3502 A.REQUEST_NAME,
3503 A.KHR_ID,
3504 A.TRANSACTION_ID,
3505 --Bug# 4107330
3506 A.TRANSACTION_DATE,
3507 B.MULTI_GAAP_YN, -- MGAAP 7263041
3508 C.REPORTING_PDT_ID -- MGAAP 7263041
3509 FROM okl_rbk_selected_contract A,
3510 okl_k_headers B,
3511 okl_products C
3512 WHERE A.khr_id = p_chr_id
3513 AND NVL(A.status,'NEW') = 'UNDER REVISION'
3514 AND A.KHR_ID = B.ID -- MGAAP 7263041
3515 AND B.PDT_ID = C.ID; -- MGAAP 7263041
3516 --AND NVL(status,'NEW') <> 'PROCESSED';
3517
3518
3519 CURSOR parent_trx_csr (p_trx_id NUMBER) IS
3520 SELECT source_trx_id, source_trx_type
3521 FROM okl_trx_contracts
3522 WHERE id = p_trx_id
3523 AND tsu_code <> 'PROCESSED';
3524
3525 CURSOR parent_tcn_type_csr (p_trx_id NUMBER) IS
3526 select tcn_type
3527 from okl_trx_contracts
3528 where id = p_trx_id;
3529
3530 l_rbk_id okl_rbk_selected_contract.id%TYPE;
3531 l_rbk_khr_id okl_rbk_selected_contract.khr_id%TYPE;
3532 l_rbk_transaction_id okl_rbk_selected_contract.transaction_id%TYPE;
3533
3534 -- MGAAP start 7263041
3535 l_multi_gaap_yn okl_k_headers.multi_gaap_yn%TYPE;
3536 l_reporting_pdt_id okl_products.reporting_pdt_id%TYPE;
3537 -- MGAAP end 7263041
3538
3539 --Bug# 4107330
3540 l_rbk_trx_date okl_rbk_selected_contract.transaction_date%TYPE;
3541 l_request_name okl_rbk_selected_contract.request_name%TYPE;
3542
3543 l_parent_tcn_type okl_trx_contracts.tcn_type%TYPE;
3544 l_mstv_tbl mstv_tbl_type;
3545 x_mstv_tbl mstv_tbl_type;
3546
3547 l_tcnv_rec tcnv_rec_type;
3548 x_tcnv_rec tcnv_rec_type;
3549
3550 l_am_tcnv_rec tcnv_rec_type;
3551 x_am_tcnv_rec tcnv_rec_type;
3552
3553 not_to_process EXCEPTION;
3554
3555 -- dedey,Bug#4264314
3556 lx_trx_number OKL_TRX_CONTRACTS.trx_number%TYPE := null; -- MGAAP 7263041
3557 l_accrual_rec OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type;
3558 l_stream_tbl OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type;
3559 -- dedey,Bug#4264314
3560
3561 --Bug# 4775555
3562 l_inv_accrual_rec OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type;
3563 l_inv_stream_tbl OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type;
3564 BEGIN
3565 IF (G_DEBUG_ENABLED = 'Y') THEN
3566 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
3567 END IF;
3568
3569 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3570 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
3571 END IF;
3572 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3573
3574 -- call START_ACTIVITY to create savepoint, check compatibility
3575 -- and initialize message list
3576 x_return_status := OKL_API.START_ACTIVITY(
3577 p_api_name => l_api_name,
3578 p_pkg_name => G_PKG_NAME,
3579 p_init_msg_list => p_init_msg_list,
3580 l_api_version => l_api_version,
3581 p_api_version => p_api_version,
3582 p_api_type => G_API_TYPE,
3583 x_return_status => x_return_status);
3584
3585 -- check if activity started successfully
3586 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3587 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3588 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3589 raise OKL_API.G_EXCEPTION_ERROR;
3590 END IF;
3591
3592 --
3593 -- Check contract for Mass Rebook
3594 --
3595 OPEN check_csr(p_chr_id);
3596 --Bug# 4107330
3597 FETCH check_csr INTO l_request_name,
3598 l_rbk_khr_id,
3599 l_rbk_transaction_id,
3600 l_rbk_trx_date,
3601 l_multi_gaap_yn, -- MGAAP 7263041
3602 l_reporting_pdt_id; -- MGAAP 7263041
3603 IF check_csr%NOTFOUND THEN
3604 RAISE not_to_process; -- Not a candidate for mass re-book
3605 END IF;
3606 CLOSE check_csr;
3607
3608 --insert into dd_dummy values (1, 'Selected for Mass rebook');
3609
3610 --
3611 -- Process after Yield for this contract
3612 --
3613 --debug_message('Submit for Approval...');
3614 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3615 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Approve Contract...');
3616 END IF;
3617 --Bug# 2566822 : Integration with AME/WF for approval
3618 --okl_contract_book_pub.submit_for_approval(
3619 okl_contract_book_pvt.approve_contract(
3620 p_api_version => p_api_version,
3621 p_init_msg_list => p_init_msg_list,
3622 x_return_status => x_return_status,
3623 x_msg_count => x_msg_count,
3624 x_msg_data => x_msg_data,
3625 p_chr_id => p_chr_id
3626 );
3627
3628 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3629 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3630 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3631 RAISE Okl_Api.G_EXCEPTION_ERROR;
3632 END IF;
3633
3634 -- dedey,Bug#4264314
3635
3636 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS; -- MGAAP 7263041
3637 OKL_CONTRACT_REBOOK_PVT.calc_accrual_adjustment(
3638 p_api_version => p_api_version,
3639 p_init_msg_list => p_init_msg_list,
3640 x_return_status => x_return_status,
3641 x_msg_count => x_msg_count,
3642 x_msg_data => x_msg_data,
3643 p_rbk_khr_id => p_chr_id,
3644 p_orig_khr_id => p_chr_id,
3645 p_trx_id => l_rbk_transaction_id,
3646 p_trx_date => sysdate, -- 4583578 passing sysdate instead of rebook date
3647 x_accrual_rec => l_accrual_rec,
3648 x_stream_tbl => l_stream_tbl);
3649
3650 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3651 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3652 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3653 RAISE Okl_Api.G_EXCEPTION_ERROR;
3654 END IF;
3655
3656 -- dedey,Bug#4264314
3657
3658 -- Bug# 4398936
3659 --
3660 -- Securitization stream processing
3661 --
3662 process_securitization_stream(p_chr_id => p_chr_id,
3663 p_rbk_trx_id => l_rbk_transaction_id,
3664 x_return_status => x_return_status,
3665 x_msg_count => x_msg_count,
3666 x_msg_data => x_msg_data);
3667
3668 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3669 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3670 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3671 raise OKL_API.G_EXCEPTION_ERROR;
3672 END IF;
3673 -- Bug# 4398936
3674
3675 --insert into dd_dummy values (2, 'Approval Done');
3676 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3677 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Submit for Activation ...');
3678 END IF;
3679
3680 okl_contract_book_pub.activate_contract(
3681 p_api_version => p_api_version,
3682 p_init_msg_list => p_init_msg_list,
3683 x_return_status => x_return_status,
3684 x_msg_count => x_msg_count,
3685 x_msg_data => x_msg_data,
3686 p_chr_id => p_chr_id
3687 );
3688
3689 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3690 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3691 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3692 raise OKL_API.G_EXCEPTION_ERROR;
3693 END IF;
3694
3695 -- R12B Authoring OA Migration
3696 -- Update the status of the Submit Contract task to Complete
3697 OKL_BOOK_CONTROLLER_PVT.update_book_controller_trx(
3698 p_api_version => p_api_version,
3699 p_init_msg_list => p_init_msg_list,
3700 x_return_status => x_return_status,
3701 x_msg_count => x_msg_count,
3702 x_msg_data => x_msg_data,
3703 p_khr_id => p_chr_id ,
3704 p_prog_short_name => OKL_BOOK_CONTROLLER_PVT.G_SUBMIT_CONTRACT,
3705 p_progress_status => OKL_BOOK_CONTROLLER_PVT.G_PROG_STS_COMPLETE);
3706
3707 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3708 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3709 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3710 raise OKL_API.G_EXCEPTION_ERROR;
3711 END IF;
3712
3713 --insert into dd_dummy values (3, 'Activation Done');
3714 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3715 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Activation Done');
3716 END IF;
3717
3718 -- Bug# 4775555: Start
3719 --
3720 -- Create Investor Disbursement Adjustment
3721 --
3722 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3723 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before call create_inv_disb_adjustment');
3724 END IF;
3725 OKL_CONTRACT_REBOOK_PVT.create_inv_disb_adjustment(
3726 p_api_version => p_api_version,
3727 p_init_msg_list => p_init_msg_list,
3728 x_return_status => x_return_status,
3729 x_msg_count => x_msg_count,
3730 x_msg_data => x_msg_data,
3731 p_orig_khr_id => p_chr_id
3732 );
3733 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3734 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After call create_inv_disb_adjustment'||x_return_status);
3735 END IF;
3736
3737 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3738 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3739 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3740 raise OKL_API.G_EXCEPTION_ERROR;
3741 END IF;
3742 -- Bug# 4775555: End
3743
3744 --Bug# 4107330
3745 -- This call is moved from Okl_Activate_Contract_Pub(OKLPACOB.pls)
3746 -- as the accrual adjustment api requires the Contract
3747 -- status to be 'BOOKED' before accrual adjustments can be
3748 -- generated.
3749
3750 -- dedey,Bug#4264314
3751
3752 IF(l_stream_tbl.COUNT>0) THEN
3753 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
3754 p_api_version => p_api_version,
3755 p_init_msg_list => p_init_msg_list,
3756 x_return_status => x_return_status,
3757 x_msg_count => x_msg_count,
3758 x_msg_data => x_msg_data ,
3759 x_trx_number => lx_trx_number,
3760 p_accrual_rec => l_accrual_rec,
3761 p_stream_tbl => l_stream_tbl);
3762
3763 -- dedey,Bug#4264314
3764
3765 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3766 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3767 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3768 RAISE Okl_Api.G_EXCEPTION_ERROR;
3769 END IF;
3770
3771 -- dedey,Bug#4264314
3772 END IF;
3773 -- dedey,Bug#4264314
3774
3775 -- MGAAP start 7263041
3776 IF (l_multi_gaap_yn = 'Y') THEN
3777
3778 OKL_STREAMS_SEC_PVT.SET_REPO_STREAMS; -- MGAAP 7263041
3779
3780 OKL_CONTRACT_REBOOK_PVT.calc_accrual_adjustment(
3781 p_api_version => p_api_version,
3782 p_init_msg_list => p_init_msg_list,
3783 x_return_status => x_return_status,
3784 x_msg_count => x_msg_count,
3785 x_msg_data => x_msg_data,
3786 p_rbk_khr_id => p_chr_id,
3787 p_orig_khr_id => p_chr_id,
3788 p_trx_id => l_rbk_transaction_id,
3789 p_trx_date => sysdate, -- 4583578 passing sysdate instead of rebook date
3790 x_accrual_rec => l_accrual_rec,
3791 x_stream_tbl => l_stream_tbl);
3792
3793 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS; -- MGAAP 7263041
3794
3795 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3796 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3797 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3798 RAISE Okl_Api.G_EXCEPTION_ERROR;
3799 END IF;
3800
3801 IF(l_stream_tbl.COUNT>0) THEN
3802
3803 l_accrual_rec.trx_number := lx_trx_number;
3804
3805 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
3806 p_api_version => p_api_version,
3807 p_init_msg_list => p_init_msg_list,
3808 x_return_status => x_return_status,
3809 x_msg_count => x_msg_count,
3810 x_msg_data => x_msg_data ,
3811 x_trx_number => lx_trx_number,
3812 p_accrual_rec => l_accrual_rec,
3813 p_stream_tbl => l_stream_tbl,
3814 p_representation_type => 'SECONDARY');
3815
3816
3817 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3818 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3819 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3820 RAISE Okl_Api.G_EXCEPTION_ERROR;
3821 END IF;
3822
3823 END IF;
3824
3825 END IF;
3826 -- MGAAP end 7263041
3827
3828
3829 -- Bug# 4775555: Start
3830 --
3831 -- Create Investor Accrual Adjustment
3832 --
3833 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3834 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before call calc_inv_acc_adjustment');
3835 END IF;
3836 OKL_CONTRACT_REBOOK_PVT.calc_inv_acc_adjustment(
3837 p_api_version => p_api_version,
3838 p_init_msg_list => p_init_msg_list,
3839 x_return_status => x_return_status,
3840 x_msg_count => x_msg_count,
3841 x_msg_data => x_msg_data,
3842 p_orig_khr_id => p_chr_id,
3843 p_trx_id => l_rbk_transaction_id,
3844 p_trx_date => sysdate,
3845 x_inv_accrual_rec => l_inv_accrual_rec,
3846 x_inv_stream_tbl => l_inv_stream_tbl
3847 );
3848
3849 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3850 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After call calc_inv_acc_adjustment'||x_return_status);
3851 END IF;
3852
3853 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3854 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3855 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3856 raise OKL_API.G_EXCEPTION_ERROR;
3857 END IF;
3858
3859 lx_trx_number := null; -- MGAAP 7263041
3860 IF (l_inv_stream_tbl.COUNT > 0) THEN
3861 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
3862 p_api_version => p_api_version,
3863 p_init_msg_list => p_init_msg_list,
3864 x_return_status => x_return_status,
3865 x_msg_count => x_msg_count,
3866 x_msg_data => x_msg_data ,
3867 x_trx_number => lx_trx_number,
3868 p_accrual_rec => l_inv_accrual_rec,
3869 p_stream_tbl => l_inv_stream_tbl);
3870
3871 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3872 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3873 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3874 RAISE Okl_Api.G_EXCEPTION_ERROR;
3875 END IF;
3876 END IF;
3877 -- Bug# 4775555: End
3878
3879 -- MGAAP start 7263041
3880 IF (l_multi_gaap_yn = 'Y') THEN
3881 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3882 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before call calc_inv_acc_adjustment for SECONDARY');
3883 END IF;
3884
3885 OKL_STREAMS_SEC_PVT.SET_REPO_STREAMS;
3886 OKL_CONTRACT_REBOOK_PVT.calc_inv_acc_adjustment(
3887 p_api_version => p_api_version,
3888 p_init_msg_list => p_init_msg_list,
3889 x_return_status => x_return_status,
3890 x_msg_count => x_msg_count,
3891 x_msg_data => x_msg_data,
3892 p_orig_khr_id => p_chr_id,
3893 p_trx_id => l_rbk_transaction_id,
3894 p_trx_date => sysdate,
3895 x_inv_accrual_rec => l_inv_accrual_rec,
3896 x_inv_stream_tbl => l_inv_stream_tbl,
3897 p_product_id => l_reporting_pdt_id
3898 );
3899
3900 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS;
3901
3902 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3903 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After call calc_inv_acc_adjustment'||x_return_status);
3904 END IF;
3905
3906 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3907 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3908 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3909 raise OKL_API.G_EXCEPTION_ERROR;
3910 END IF;
3911
3912 IF (l_inv_stream_tbl.COUNT > 0) THEN
3913 l_inv_accrual_rec.trx_number := lx_trx_number;
3914 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
3915 p_api_version => p_api_version,
3916 p_init_msg_list => p_init_msg_list,
3917 x_return_status => x_return_status,
3918 x_msg_count => x_msg_count,
3919 x_msg_data => x_msg_data ,
3920 x_trx_number => lx_trx_number,
3921 p_accrual_rec => l_inv_accrual_rec,
3922 p_stream_tbl => l_inv_stream_tbl,
3923 p_representation_type => 'SECONDARY');
3924
3925 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3926 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3927 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3928 RAISE Okl_Api.G_EXCEPTION_ERROR;
3929 END IF;
3930 END IF;
3931
3932 END IF;
3933 -- MGAAP end 7263041
3934
3935 --
3936 -- Update source transaction to PROCESSED, if any
3937 --
3938 FOR parent_trx_rec IN parent_trx_csr (l_rbk_transaction_id)
3939 LOOP
3940
3941 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3942 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Source Trx ID: '|| parent_trx_rec.source_trx_id);
3943 END IF;
3944
3945 IF (parent_trx_rec.source_trx_id IS NOT NULL) THEN
3946
3947 begin
3948 open parent_tcn_type_csr(parent_trx_rec.source_trx_id);
3949 FETCH parent_tcn_type_csr INTO l_parent_tcn_type;
3950
3951 IF parent_tcn_type_csr%NOTFOUND THEN
3952 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3953 CLOSE parent_tcn_type_csr;
3954 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3955 END IF;
3956 CLOSE parent_tcn_type_csr;
3957 end;
3958
3959 IF (l_parent_tcn_type = 'PPD') THEN
3960 --DEBUG
3961 --
3962 -- Cancel PPD Amount, if any
3963 --
3964 l_am_tcnv_rec.id := parent_trx_rec.source_trx_id;
3965 l_am_tcnv_rec.tsu_code := 'PROCESSED';
3966
3967 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3968 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'before update_trx_contracts');
3969 END IF;
3970
3971 Okl_Trx_Contracts_Pub.update_trx_contracts(
3972 p_api_version => l_api_version,
3973 p_init_msg_list => OKL_API.G_FALSE,
3974 x_return_status => x_return_status,
3975 x_msg_count => x_msg_count,
3976 x_msg_data => x_msg_data,
3977 p_tcnv_rec => l_am_tcnv_rec,
3978 x_tcnv_rec => x_am_tcnv_rec
3979 );
3980
3981 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3982 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'update_trx_contracts: '||x_return_status);
3983 END IF;
3984
3985 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3986 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3987 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3988 raise OKL_API.G_EXCEPTION_ERROR;
3989 END IF;
3990
3991 okl_api.set_message('OKL','AM','Term trx updated', parent_trx_rec.source_trx_id);
3992
3993 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3994 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before Cancel PPD : '||x_return_status);
3995 END IF;
3996 OKL_CS_PRINCIPAL_PAYDOWN_PUB.cancel_ppd(
3997 p_api_version => 1.0,
3998 p_init_msg_list => OKL_API.G_FALSE,
3999 x_return_status => x_return_status,
4000 x_msg_count => x_msg_count,
4001 x_msg_data => x_msg_data,
4002 p_khr_id => p_chr_id
4003 );
4004 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4005 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Cancel PPD : '||x_return_status);
4006 END IF;
4007
4008 okl_api.set_message('OKL','AM','After cancel PPD Amount', x_return_status);
4009
4010 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4011 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4012 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4013 raise OKL_API.G_EXCEPTION_ERROR;
4014 END IF;
4015
4016
4017 ELSIF (l_parent_tcn_type = 'ALT') THEN
4018 --ELSE
4019 l_am_tcnv_rec.id := parent_trx_rec.source_trx_id;
4020 --Bug# 6043327 : R12B SLA impact
4021 --l_am_tcnv_rec.tsu_code := 'PROCESSED';
4022 l_am_tcnv_rec.tmt_status_code := 'PROCESSED';
4023 l_am_tcnv_rec.tmt_contract_updated_yn := 'Y';
4024
4025 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4026 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'before update_trx_contracts');
4027 END IF;
4028
4029 Okl_Trx_Contracts_Pub.update_trx_contracts(
4030 p_api_version => l_api_version,
4031 p_init_msg_list => OKL_API.G_FALSE,
4032 x_return_status => x_return_status,
4033 x_msg_count => x_msg_count,
4034 x_msg_data => x_msg_data,
4035 p_tcnv_rec => l_am_tcnv_rec,
4036 x_tcnv_rec => x_am_tcnv_rec
4037 );
4038
4039 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4040 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'update_trx_contracts: '||x_return_status);
4041 END IF;
4042
4043 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4044 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4045 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4046 raise OKL_API.G_EXCEPTION_ERROR;
4047 END IF;
4048
4049 okl_api.set_message('OKL','AM','Term trx updated', parent_trx_rec.source_trx_id);
4050
4051 -- Bug 4556370
4052 -- Cancel Termination Quote, if any
4053 --
4054 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4055 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before Cancel Termination : '||x_return_status);
4056 END IF;
4057 OKL_AM_INTEGRATION_PVT.cancel_termination_quotes (
4058 p_api_version => 1.0,
4059 p_init_msg_list => OKL_API.G_FALSE,
4060 p_khr_id => p_chr_id,
4061 p_source_trx_id => parent_trx_rec.source_trx_id,
4062 p_source => l_parent_tcn_type, -- 'ALT'
4063 x_return_status => x_return_status,
4064 x_msg_count => x_msg_count,
4065 x_msg_data => x_msg_data
4066 );
4067 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4068 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Cancel Termination : '||x_return_status);
4069 END IF;
4070
4071 okl_api.set_message('OKL','AM','After cancel term quote', x_return_status);
4072
4073 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4074 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4075 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4076 raise OKL_API.G_EXCEPTION_ERROR;
4077 END IF;
4078
4079 END IF;
4080 END IF;
4081
4082 END LOOP;
4083
4084 --
4085 -- Update Transaction and Rebook status to PROCESSED
4086 --
4087
4088 l_mstv_tbl(1).request_name := l_request_name;
4089 l_mstv_tbl(1).khr_id := p_chr_id;
4090 l_mstv_tbl(1).status := 'PROCESSED';
4091
4092 okl_mass_rebook_pvt.update_mass_rbk_contract(
4093 p_api_version => l_api_version,
4094 p_init_msg_list => OKL_API.G_FALSE,
4095 x_return_status => x_return_status,
4096 x_msg_count => x_msg_count,
4097 x_msg_data => x_msg_data,
4098 p_mstv_tbl => l_mstv_tbl,
4099 x_mstv_tbl => x_mstv_tbl
4100 );
4101
4102
4103 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4104 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'update_mas_rbk_contract: '||x_return_status);
4105 END IF;
4106
4107 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4108 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4109 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4110 raise OKL_API.G_EXCEPTION_ERROR;
4111 END IF;
4112 --insert into dd_dummy values (4, 'update mass rebook status');
4113
4114 l_tcnv_rec.id := l_rbk_transaction_id;
4115 l_tcnv_rec.tsu_code := 'PROCESSED';
4116
4117
4118 Okl_Trx_Contracts_Pub.update_trx_contracts(
4119 p_api_version => l_api_version,
4120 p_init_msg_list => OKL_API.G_FALSE,
4121 x_return_status => x_return_status,
4122 x_msg_count => x_msg_count,
4123 x_msg_data => x_msg_data,
4124 p_tcnv_rec => l_tcnv_rec,
4125 x_tcnv_rec => x_tcnv_rec
4126 );
4127
4128 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4129 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'update_trx_contracts : '||x_return_status);
4130 END IF;
4131
4132 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4133 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4134 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4135 raise OKL_API.G_EXCEPTION_ERROR;
4136 END IF;
4137
4138 --insert into dd_dummy values (5, 'update trx status');
4139 --
4140 -- Update trx_asset status = 'PROCESSED'
4141 --
4142 update_trx_asset(
4143 x_return_status => x_return_status,
4144 x_msg_count => x_msg_count,
4145 x_msg_data => x_msg_data,
4146 p_chr_id => p_chr_id,
4147 p_status => 'PROCESSED'
4148 );
4149
4150 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4151 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4152 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4153 raise OKL_API.G_EXCEPTION_ERROR;
4154 END IF;
4155
4156 --insert into dd_dummy values (6, 'update trx asset status');
4157
4158 --DEBUG
4159 --IF G_PPD_TRX_ID IS NOT NULL THEN (To be checked by the API if for PPD)
4160 BEGIN
4161 --Create AR invoice for principal amount
4162 --Call BPD API to create AR journal entries
4163 OKL_CS_PRINCIPAL_PAYDOWN_PUB.invoice_apply_ppd(
4164 p_api_version => l_api_version,
4165 p_init_msg_list => OKL_API.G_FALSE,
4166 x_return_status => x_return_status,
4167 x_msg_count => x_msg_count,
4168 x_msg_data => x_msg_data,
4169 p_khr_id => p_chr_id,
4170 p_trx_id => l_rbk_transaction_id );
4171
4172 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
4173 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4174 END IF;
4175
4176 EXCEPTION WHEN OTHERS THEN
4177 null; -- For any errors during journal creation, we just ignore
4178 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4179 END;
4180 --END IF;
4181
4182 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
4183 x_msg_data => x_msg_data);
4184
4185
4186 --insert into dd_dummy values (7, 'returning after yield');
4187 RETURN;
4188
4189 EXCEPTION
4190 WHEN not_to_process THEN
4191 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4192
4193 when OKL_API.G_EXCEPTION_ERROR then
4194 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4195 p_api_name => l_api_name,
4196 p_pkg_name => G_PKG_NAME,
4197 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
4198 x_msg_count => x_msg_count,
4199 x_msg_data => x_msg_data,
4200 p_api_type => G_API_TYPE);
4201
4202 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
4203 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4204 p_api_name => l_api_name,
4205 p_pkg_name => G_PKG_NAME,
4206 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4207 x_msg_count => x_msg_count,
4208 x_msg_data => x_msg_data,
4209 p_api_type => G_API_TYPE);
4210
4211 when OTHERS then
4212 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4213 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Error...');
4214 END IF;
4215 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4216 p_api_name => l_api_name,
4217 p_pkg_name => G_PKG_NAME,
4218 p_exc_name => 'OTHERS',
4219 x_msg_count => x_msg_count,
4220 x_msg_data => x_msg_data,
4221 p_api_type => G_API_TYPE);
4222 END mass_rebook_activate;
4223 -- Bug# 5038395
4224
4225 ------------------------------------------------------------------------------
4226 -- PROCEDURE mass_rebook_after_yield
4227 -- Call this process after yeild comes back. It will do rest of the mass
4228 -- rebook process. It first checks eligibility of a contract for Mass Rebook
4229 -- and then process the same.
4230 -- Calls:
4231 -- Called by:
4232 ------------------------------------------------------------------------------
4233 PROCEDURE mass_rebook_after_yield(
4234 p_api_version IN NUMBER,
4235 p_init_msg_list IN VARCHAR2,
4236 x_return_status OUT NOCOPY VARCHAR2,
4237 x_msg_count OUT NOCOPY NUMBER,
4238 x_msg_data OUT NOCOPY VARCHAR2,
4239 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE
4240 ) IS
4241
4242 l_api_name VARCHAR2(35) := 'mass_rebook_after_yield';
4243 l_proc_name VARCHAR2(35) := 'MASS_REBOOK_AFTER_YIELD';
4244 l_api_version NUMBER := 1.0;
4245
4246 CURSOR check_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
4247 SELECT DISTINCT
4248 REQUEST_NAME,
4249 KHR_ID,
4250 TRANSACTION_ID,
4251 --Bug# 4107330
4252 TRANSACTION_DATE
4253 FROM okl_rbk_selected_contract
4254 WHERE khr_id = p_chr_id
4255 AND NVL(status,'NEW') = 'UNDER REVISION';
4256 --AND NVL(status,'NEW') <> 'PROCESSED';
4257
4258 l_rbk_khr_id okl_rbk_selected_contract.khr_id%TYPE;
4259 l_rbk_transaction_id okl_rbk_selected_contract.transaction_id%TYPE;
4260 --Bug# 4107330
4261 l_rbk_trx_date okl_rbk_selected_contract.transaction_date%TYPE;
4262 l_request_name okl_rbk_selected_contract.request_name%TYPE;
4263
4264 after_yield_failed EXCEPTION;
4265 not_to_process EXCEPTION;
4266
4267 BEGIN
4268 IF (G_DEBUG_ENABLED = 'Y') THEN
4269 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
4270 END IF;
4271
4272 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4273 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
4274 END IF;
4275 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4276
4277 -- call START_ACTIVITY to create savepoint, check compatibility
4278 -- and initialize message list
4279 x_return_status := OKL_API.START_ACTIVITY(
4280 p_api_name => l_api_name,
4281 p_pkg_name => G_PKG_NAME,
4282 p_init_msg_list => p_init_msg_list,
4283 l_api_version => l_api_version,
4284 p_api_version => p_api_version,
4285 p_api_type => G_API_TYPE,
4286 x_return_status => x_return_status);
4287
4288 -- check if activity started successfully
4289 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4290 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4291 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4292 raise OKL_API.G_EXCEPTION_ERROR;
4293 END IF;
4294
4295 --
4296 -- Check contract for Mass Rebook
4297 --
4298 OPEN check_csr(p_chr_id);
4299 --Bug# 4107330
4300 FETCH check_csr INTO l_request_name,
4301 l_rbk_khr_id,
4302 l_rbk_transaction_id,
4303 l_rbk_trx_date;
4304 IF check_csr%NOTFOUND THEN
4305 RAISE not_to_process; -- Not a candidate for mass re-book
4306 END IF;
4307 CLOSE check_csr;
4308
4309 --insert into dd_dummy values (1, 'Selected for Mass rebook');
4310
4311 -- Bug# 5038395
4312 -- This procedure will handle approval and activation for
4313 -- mass rebook
4314 okl_mass_rebook_pvt.mass_rebook_activate(
4315 p_api_version => p_api_version,
4316 p_init_msg_list => p_init_msg_list,
4317 x_return_status => x_return_status,
4318 x_msg_count => x_msg_count,
4319 x_msg_data => x_msg_data,
4320 p_chr_id => p_chr_id
4321 );
4322
4323 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4324 raise after_yield_failed;
4325 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4326 raise after_yield_failed;
4327 END IF;
4328
4329 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
4330 x_msg_data => x_msg_data);
4331
4332
4333 --insert into dd_dummy values (7, 'returning after yield');
4334 RETURN;
4335
4336 EXCEPTION
4337 WHEN not_to_process THEN
4338 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4339
4340 WHEN after_yield_failed THEN
4341
4342 -- Bug# 5038395
4343 -- Update status of Submit Contract task to Error
4344 OKL_BOOK_CONTROLLER_PVT.update_book_controller_trx(
4345 p_api_version => p_api_version,
4346 p_init_msg_list => OKL_API.G_FALSE, --To retain message stack
4347 x_return_status => x_return_status,
4348 x_msg_count => x_msg_count,
4349 x_msg_data => x_msg_data,
4350 p_khr_id => p_chr_id ,
4351 p_prog_short_name => OKL_BOOK_CONTROLLER_PVT.G_SUBMIT_CONTRACT ,
4352 p_progress_status => OKL_BOOK_CONTROLLER_PVT.G_PROG_STS_ERROR);
4353
4354 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4355
4356 when OKL_API.G_EXCEPTION_ERROR then
4357 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4358 p_api_name => l_api_name,
4359 p_pkg_name => G_PKG_NAME,
4360 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
4361 x_msg_count => x_msg_count,
4362 x_msg_data => x_msg_data,
4363 p_api_type => G_API_TYPE);
4364
4365 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
4366 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4367 p_api_name => l_api_name,
4368 p_pkg_name => G_PKG_NAME,
4369 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4370 x_msg_count => x_msg_count,
4371 x_msg_data => x_msg_data,
4372 p_api_type => G_API_TYPE);
4373
4374 when OTHERS then
4375 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4376 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Error...');
4377 END IF;
4378 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4379 p_api_name => l_api_name,
4380 p_pkg_name => G_PKG_NAME,
4381 p_exc_name => 'OTHERS',
4382 x_msg_count => x_msg_count,
4383 x_msg_data => x_msg_data,
4384 p_api_type => G_API_TYPE);
4385 END mass_rebook_after_yield;
4386
4387 ------------------------------------------------------------------------------
4388 -- PROCEDURE cancel_transaction
4389 -- Call this process to CANCEL any pending mass rebook transaction
4390 -- Calls:
4391 -- Called by:
4392 ------------------------------------------------------------------------------
4393 PROCEDURE cancel_transaction(
4394 x_return_status OUT NOCOPY VARCHAR2,
4395 x_msg_count OUT NOCOPY NUMBER,
4396 x_msg_data OUT NOCOPY VARCHAR2,
4397 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE
4398 ) IS
4399
4400 l_proc_name VARCHAR2(35) := 'CANCEL_TRANSACTION';
4401 l_api_name VARCHAR2(35) := 'CANCEL_TRANSACTION';
4402
4403 CURSOR trx_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
4404 SELECT DISTINCT
4405 REQUEST_NAME,
4406 KHR_ID,
4407 TRANSACTION_ID
4408 FROM okl_rbk_selected_contract
4409 WHERE khr_id = p_chr_id
4410 AND NVL(status,'NEW') <> 'PROCESSED';
4411
4412 l_mstv_tbl mstv_tbl_type;
4413 l_tcnv_rec tcnv_rec_type;
4414 x_mstv_tbl mstv_tbl_type;
4415 x_tcnv_rec tcnv_rec_type;
4416
4417 cancel_failed EXCEPTION;
4418
4419 BEGIN
4420 IF (G_DEBUG_ENABLED = 'Y') THEN
4421 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
4422 END IF;
4423
4424 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4425 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4426 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
4427 END IF;
4428
4429 FOR trx_rec IN trx_csr (p_chr_id)
4430 LOOP
4431
4432 --
4433 -- Update Transaction and Rebook status to CANCELLED
4434 --
4435
4436 l_mstv_tbl(1).request_name := trx_rec.request_name;
4437 l_mstv_tbl(1).khr_id := p_chr_id;
4438 l_mstv_tbl(1).status := 'CANCELED';
4439
4440 okl_mass_rebook_pvt.update_mass_rbk_contract(
4441 p_api_version => 1.0,
4442 p_init_msg_list => OKL_API.G_FALSE,
4443 x_return_status => x_return_status,
4444 x_msg_count => x_msg_count,
4445 x_msg_data => x_msg_data,
4446 p_mstv_tbl => l_mstv_tbl,
4447 x_mstv_tbl => x_mstv_tbl
4448 );
4449
4450 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
4451 RAISE cancel_failed;
4452 END IF;
4453 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4454 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After mass rebook trx update: '||x_return_status);
4455 END IF;
4456
4457 l_tcnv_rec.id := trx_rec.transaction_id;
4458 l_tcnv_rec.tsu_code := 'CANCELED';
4459
4460 Okl_Trx_Contracts_Pub.update_trx_contracts(
4461 p_api_version => 1.0,
4462 p_init_msg_list => OKL_API.G_FALSE,
4463 x_return_status => x_return_status,
4464 x_msg_count => x_msg_count,
4465 x_msg_data => x_msg_data,
4466 p_tcnv_rec => l_tcnv_rec,
4467 x_tcnv_rec => x_tcnv_rec
4468 );
4469
4470 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
4471 RAISE cancel_failed;
4472 END IF;
4473
4474 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4475 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After trx update: '||x_return_status);
4476 END IF;
4477
4478 END LOOP;
4479
4480 EXCEPTION
4481
4482 when cancel_failed then
4483 x_return_status := OKL_API.G_RET_STS_ERROR;
4484
4485 when OTHERS then
4486 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4487 p_api_name => l_api_name,
4488 p_pkg_name => G_PKG_NAME,
4489 p_exc_name => 'OTHERS',
4490 x_msg_count => x_msg_count,
4491 x_msg_data => x_msg_data,
4492 p_api_type => G_API_TYPE);
4493
4494 END cancel_transaction;
4495
4496 ------------------------------------------------------------------------------
4497 -- PROCEDURE process_mass_rebook
4498 -- This proecdure applies Rebook when called from On-line user
4499 -- Calls:
4500 -- Called by:
4501 ------------------------------------------------------------------------------
4502
4503 PROCEDURE process_mass_rebook(
4504 p_api_version IN NUMBER,
4505 p_init_msg_list IN VARCHAR2,
4506 x_return_status OUT NOCOPY VARCHAR2,
4507 x_msg_count OUT NOCOPY NUMBER,
4508 x_msg_data OUT NOCOPY VARCHAR2,
4509 p_request_name IN OKL_MASS_RBK_CRITERIA.REQUEST_NAME%TYPE
4510 ) IS
4511 l_api_name VARCHAR2(35) := 'process_mass_rebook';
4512 l_proc_name VARCHAR2(35) := 'PROCESS_MASS_REBOOK';
4513 l_api_version NUMBER := 1.0;
4514
4515 l_set_count NUMBER := 0;
4516 l_contract_count NUMBER := 0;
4517
4518 l_deprn_method_code VARCHAR2(35) := NULL;
4519 l_in_service_date DATE := NULL;
4520 l_life_in_months NUMBER := NULL;
4521 l_basic_rate NUMBER := NULL;
4522 l_adjusted_rate NUMBER := NULL;
4523 l_book_type_code FA_BOOKS.BOOK_TYPE_CODE%TYPE := NULL;
4524
4525 l_contract_id NUMBER;
4526 l_line_count NUMBER := 0;
4527 l_prev_contract_id NUMBER;
4528 l_kle_id NUMBER;
4529
4530 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - Start
4531 l_object_version_no OKL_K_HEADERS.OBJECT_VERSION_NUMBER%TYPE;
4532 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - End
4533
4534 l_kle_tbl kle_tbl_type;
4535 l_strm_lalevl_tbl strm_lalevl_tbl_type;
4536
4537 l_transaction_date OKL_RBK_SELECTED_CONTRACT.TRANSACTION_DATE%TYPE;
4538
4539 CURSOR rbk_set_csr (p_req_name VARCHAR2) IS
4540 SELECT criteria_code,
4541 criteria_value1,
4542 set_value
4543 FROM okl_mass_rbk_criteria
4544 WHERE request_name = p_req_name
4545 AND (set_value IS NOT NULL
4546 OR
4547 criteria_code = 'BOOK_TYPE_CODE'); -- in order to keep Tax Book as selection crietria
4548
4549 -- Bug#4542290 - smadhava - 26-AUG-2005 - Modified - Start
4550 -- Modified cusor to get the object version number of the OKL_K_HEADERS table
4551 CURSOR rbk_csr (p_req_name VARCHAR2) IS
4552 SELECT
4553 rbk.khr_id,
4554 rbk.contract_number,
4555 rbk.contract_description,
4556 rbk.kle_id,
4557 rbk.transaction_date,
4558 khr.object_version_number
4559 FROM okl_rbk_selected_contract rbk
4560 , okl_k_headers khr
4561 WHERE
4562 rbk.request_name = p_req_name
4563 AND rbk.selected_flag = 'Y'
4564 AND rbk.transaction_id IS NULL
4565 AND khr.id = rbk.khr_id;
4566 -- Bug#4542290 - smadhava - 26-AUG-2005 - Modified - End
4567
4568 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - Start
4569 l_pdt_params_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
4570 lp_khrv_rec OKL_KHR_PVT.khrv_rec_type;
4571 lx_khrv_rec OKL_KHR_PVT.khrv_rec_type;
4572
4573 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - End
4574 BEGIN
4575 IF (G_DEBUG_ENABLED = 'Y') THEN
4576 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
4577 END IF;
4578
4579 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4580 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
4581 END IF;
4582
4583 -- call START_ACTIVITY to create savepoint, check compatibility
4584 -- and initialize message list
4585 x_return_status := OKL_API.START_ACTIVITY(
4586 p_api_name => l_api_name,
4587 p_pkg_name => G_PKG_NAME,
4588 p_init_msg_list => p_init_msg_list,
4589 l_api_version => l_api_version,
4590 p_api_version => p_api_version,
4591 p_api_type => G_API_TYPE,
4592 x_return_status => x_return_status);
4593
4594 -- check if activity started successfully
4595 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4596 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4597 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4598 raise OKL_API.G_EXCEPTION_ERROR;
4599 END IF;
4600
4601 --
4602 -- Get SET_VALUE for ALl contracts to be processed
4603 --
4604
4605 l_set_count := 0;
4606 l_deprn_method_code := NULL;
4607 l_in_service_date := NULL;
4608 l_life_in_months := NULL;
4609 l_basic_rate := NULL;
4610 l_adjusted_rate := NULL;
4611 l_book_type_code := NULL;
4612
4613 FOR rbk_set_rec IN rbk_set_csr(p_request_name)
4614 LOOP
4615 l_set_count := l_set_count + 1;
4616 IF (rbk_set_rec.criteria_code = 'DEPRN_METHOD_CODE') THEN
4617 l_deprn_method_code := rbk_set_rec.set_value;
4618 ELSIF (rbk_set_rec.criteria_code = 'DATE_PLACED_IN_SERVICE') THEN
4619 l_in_service_date := rbk_set_rec.set_value;
4620 ELSIF (rbk_set_rec.criteria_code = 'LIFE_IN_MONTHS') THEN
4621 l_life_in_months := rbk_set_rec.set_value;
4622 ELSIF (rbk_set_rec.criteria_code = 'BASIC_RATE') THEN
4623 l_basic_rate := TO_NUMBER(rbk_set_rec.set_value);
4624 ELSIF (rbk_set_rec.criteria_code = 'ADJUSTED_RATE') THEN
4625 l_adjusted_rate := TO_NUMBER(rbk_set_rec.set_value);
4626 ELSIF (rbk_set_rec.criteria_code = 'BOOK_TYPE_CODE') THEN
4627 l_book_type_code := rbk_set_rec.criteria_value1; -- For selection only, do not Set value
4628 ELSE
4629 okl_api.set_message(
4630 G_APP_NAME,
4631 G_INVALID_SET_VALUE,
4632 'CRIT_CODE',
4633 rbk_set_rec.criteria_code
4634 );
4635 x_return_status := OKL_API.G_RET_STS_ERROR;
4636 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4637 END IF;
4638
4639 END LOOP;
4640
4641 IF (l_set_count = 0) THEN
4642 okl_api.set_message(
4643 G_APP_NAME,
4644 G_NO_SET_VALUE,
4645 'REQ_NAME',
4646 P_request_name
4647 );
4648 x_return_status := OKL_API.G_RET_STS_ERROR;
4649 RAISE OKL_API.G_EXCEPTION_ERROR;
4650 END IF;
4651
4652 l_contract_count := 0;
4653 l_line_count := 0;
4654 l_prev_contract_id := G_INIT_NUMBER;
4655 FOR rbk_rec IN rbk_csr(p_request_name)
4656 LOOP
4657
4658 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - Start
4659 OKL_K_RATE_PARAMS_PVT.get_product(
4660 p_api_version => p_api_version,
4661 p_init_msg_list => p_init_msg_list,
4662 x_return_status => x_return_status,
4663 x_msg_count => x_msg_count,
4664 x_msg_data => x_msg_data,
4665 p_khr_id => rbk_rec.khr_id,
4666 x_pdt_parameter_rec => l_pdt_params_rec);
4667
4668 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4669 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4670 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4671 RAISE OKL_API.G_EXCEPTION_ERROR;
4672 END IF;
4673 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - End
4674
4675 l_transaction_date := rbk_rec.transaction_date;
4676
4677 l_contract_count := l_contract_count + 1;
4678 IF (l_prev_contract_id = rbk_rec.khr_id
4679 OR
4680 l_contract_count = 1) THEN -- Either same contract or first record
4681 l_line_count := l_line_count + 1;
4682 l_kle_tbl(l_line_count).id := rbk_rec.kle_id;
4683 l_contract_id := rbk_rec.khr_id;
4684 l_prev_contract_id := rbk_rec.khr_id;
4685
4686 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - Start
4687 l_object_version_no := rbk_rec.object_version_number;
4688 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - End
4689 ELSE
4690 -- Call Rebook_Contract
4691 rebook_contract(
4692 x_return_status => x_return_status,
4693 x_msg_count => x_msg_count,
4694 x_msg_data => x_msg_data,
4695 p_online_yn => 'Y',
4696 p_khr_id => l_contract_id,
4697 p_kle_tbl => l_kle_tbl, -- FA Line ID
4698 p_line_count => l_line_count,
4699 p_request_name => p_request_name,
4700 p_book_type_code => l_book_type_code,
4701 p_deprn_method_code => l_deprn_method_code,
4702 p_in_service_date => l_in_service_date,
4703 p_life_in_months => l_life_in_months,
4704 p_basic_rate => l_basic_rate,
4705 p_adjusted_rate => l_adjusted_rate,
4706 p_residual_value => NULL, -- Not for On-Line Rebook
4707 p_strm_lalevl_tbl => l_strm_lalevl_tbl, -- Not for On-Line Rebook
4708 p_transaction_date => l_transaction_date
4709 );
4710 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
4711 raise OKL_API.G_EXCEPTION_ERROR;
4712 END IF;
4713 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - Start
4714 -- Updating the Last interest calculation date to the rebook
4715 -- transaction date if the Interest Calc. Basis=REAMORT and
4716 -- Rev. recognition method=STREAMS
4717 IF ( l_pdt_params_rec.interest_calculation_basis = G_ICB_REAMORT
4718 AND l_pdt_params_rec.revenue_recognition_method = G_RRM_STREAMS )
4719 THEN
4720 lp_khrv_rec.id := rbk_rec.khr_id;
4721 -- get the object version number of the record
4722 lp_khrv_rec.object_version_number := rbk_rec.object_version_number;
4723
4724 -- Update the last interest calc date field
4725 lp_khrv_rec.date_last_interim_interest_cal := l_transaction_date;
4726 OKL_KHR_PVT.update_row(
4727 p_api_version => p_api_version
4728 , p_init_msg_list => p_init_msg_list
4729 , x_return_status => x_return_status
4730 , x_msg_count => x_msg_count
4731 , x_msg_data => x_msg_data
4732 , p_khrv_rec => lp_khrv_rec
4733 , x_khrv_rec => lx_khrv_rec);
4734
4735 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4736 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4737 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4738 RAISE OKL_API.G_EXCEPTION_ERROR;
4739 END IF;
4740 END IF; -- end of check for ICB and RRM
4741 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - End
4742
4743 l_line_count := 1; -- Reset for next contract
4744 l_kle_tbl(l_line_count).id := rbk_rec.kle_id;
4745 l_contract_id := rbk_rec.khr_id;
4746 l_prev_contract_id := rbk_rec.khr_id;
4747
4748 END IF;
4749 END LOOP;
4750
4751 IF (l_contract_count = 0 ) THEN
4752 okl_api.set_message(
4753 G_APP_NAME,
4754 G_NO_SEL_CONTRACT,
4755 'REQ_NAME',
4756 p_request_name
4757 );
4758 RAISE OKL_API.G_EXCEPTION_ERROR;
4759 END IF;
4760
4761 -- Final Call for last contract
4762 rebook_contract(
4763 x_return_status => x_return_status,
4764 x_msg_count => x_msg_count,
4765 x_msg_data => x_msg_data,
4766 p_online_yn => 'Y',
4767 p_khr_id => l_contract_id,
4768 p_kle_tbl => l_kle_tbl, -- FA Line ID
4769 p_line_count => l_line_count,
4770 p_request_name => p_request_name,
4771 P_book_type_code => l_book_type_code,
4772 p_deprn_method_code => l_deprn_method_code,
4773 p_in_service_date => l_in_service_date,
4774 p_life_in_months => l_life_in_months,
4775 p_basic_rate => l_basic_rate,
4776 p_adjusted_rate => l_adjusted_rate,
4777 p_residual_value => NULL, -- Not for On-Line Rebook
4778 p_strm_lalevl_tbl => l_strm_lalevl_tbl, -- Not for On-Line Rebook
4779 p_transaction_date => l_transaction_date
4780 );
4781 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
4782 raise OKL_API.G_EXCEPTION_ERROR;
4783 END IF;
4784 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - Start
4785 -- Updating the Last interest calculation date to the rebook
4786 -- transaction date if the Interest Calc. Basis=REAMORT and
4787 -- Rev. recognition method=STREAMS
4788 IF ( l_pdt_params_rec.interest_calculation_basis = G_ICB_REAMORT
4789 AND l_pdt_params_rec.revenue_recognition_method = G_RRM_STREAMS )
4790 THEN
4791 lp_khrv_rec.id := l_contract_id;
4792 -- get the object version number of the record
4793 lp_khrv_rec.object_version_number := l_object_version_no;
4794
4795 -- Update the last interest calc date field
4796 lp_khrv_rec.date_last_interim_interest_cal := l_transaction_date;
4797 OKL_KHR_PVT.update_row(
4798 p_api_version => p_api_version
4799 , p_init_msg_list => p_init_msg_list
4800 , x_return_status => x_return_status
4801 , x_msg_count => x_msg_count
4802 , x_msg_data => x_msg_data
4803 , p_khrv_rec => lp_khrv_rec
4804 , x_khrv_rec => lx_khrv_rec);
4805
4806 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4807 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4808 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4809 RAISE OKL_API.G_EXCEPTION_ERROR;
4810 END IF;
4811 END IF; -- end of check for ICB and RRM
4812 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - End
4813
4814 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
4815 x_msg_data => x_msg_data);
4816
4817 RETURN;
4818
4819 EXCEPTION
4820 when OKL_API.G_EXCEPTION_ERROR then
4821 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4822 p_api_name => l_api_name,
4823 p_pkg_name => G_PKG_NAME,
4824 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
4825 x_msg_count => x_msg_count,
4826 x_msg_data => x_msg_data,
4827 p_api_type => G_API_TYPE);
4828
4829 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
4830 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4831 p_api_name => l_api_name,
4832 p_pkg_name => G_PKG_NAME,
4833 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4834 x_msg_count => x_msg_count,
4835 x_msg_data => x_msg_data,
4836 p_api_type => G_API_TYPE);
4837
4838 when OTHERS then
4839 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4840 p_api_name => l_api_name,
4841 p_pkg_name => G_PKG_NAME,
4842 p_exc_name => 'OTHERS',
4843 x_msg_count => x_msg_count,
4844 x_msg_data => x_msg_data,
4845 p_api_type => G_API_TYPE);
4846 END process_mass_rebook;
4847
4848 ------------------------------------------------------------------------------
4849 -- PROCEDURE apply_mass_rebook
4850 -- This proecdure uses to apply mass rebook for contracts. It should be called
4851 -- by those who does not have access to MASS REBOOK UI under OKL
4852 -- Calls:
4853 -- Called by:
4854 ------------------------------------------------------------------------------
4855
4856 PROCEDURE apply_mass_rebook(
4857 p_api_version IN NUMBER,
4858 p_init_msg_list IN VARCHAR2,
4859 x_return_status OUT NOCOPY VARCHAR2,
4860 x_msg_count OUT NOCOPY NUMBER,
4861 x_msg_data OUT NOCOPY VARCHAR2,
4862 p_rbk_tbl IN rbk_tbl_type,
4863 p_deprn_method_code IN FA_BOOKS.DEPRN_METHOD_CODE%TYPE,
4864 p_in_service_date IN FA_BOOKS.DATE_PLACED_IN_SERVICE%TYPE,
4865 p_life_in_months IN FA_BOOKS.LIFE_IN_MONTHS%TYPE,
4866 p_basic_rate IN FA_BOOKS.BASIC_RATE%TYPE,
4867 p_adjusted_rate IN FA_BOOKS.ADJUSTED_RATE%TYPE,
4868 p_residual_value IN OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
4869 p_strm_lalevl_tbl IN strm_lalevl_tbl_type
4870 ) IS
4871 l_api_name VARCHAR2(35) := 'apply_mass_rebook';
4872 l_proc_name VARCHAR2(35) := 'APPLY_MASS_REBOOK';
4873 l_api_version NUMBER := 1.0;
4874
4875 l_line_count NUMBER;
4876 l_contract_count NUMBER;
4877 l_contract_id NUMBER;
4878 l_prev_contract_id NUMBER;
4879
4880 l_kle_tbl kle_tbl_type;
4881
4882 BEGIN
4883 IF (G_DEBUG_ENABLED = 'Y') THEN
4884 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
4885 END IF;
4886
4887 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4888 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
4889 END IF;
4890 -- call START_ACTIVITY to create savepoint, check compatibility
4891 -- and initialize message list
4892 x_return_status := OKL_API.START_ACTIVITY(
4893 p_api_name => l_api_name,
4894 p_pkg_name => G_PKG_NAME,
4895 p_init_msg_list => p_init_msg_list,
4896 l_api_version => l_api_version,
4897 p_api_version => p_api_version,
4898 p_api_type => G_API_TYPE,
4899 x_return_status => x_return_status);
4900
4901 -- check if activity started successfully
4902 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4903 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4904 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4905 raise OKL_API.G_EXCEPTION_ERROR;
4906 END IF;
4907
4908 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4909 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Count: '||p_rbk_tbl.COUNT);
4910 END IF;
4911
4912 IF (p_rbk_tbl.COUNT > 0 ) THEN
4913 l_line_count := 0;
4914 l_contract_count := 0;
4915 l_prev_contract_id := G_INIT_NUMBER;
4916 FOR i IN 1..p_rbk_tbl.COUNT
4917 LOOP
4918 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4919 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Contract# :'||p_rbk_tbl(i).contract_number);
4920 END IF;
4921 l_contract_count := l_contract_count + 1;
4922 IF (l_prev_contract_id = p_rbk_tbl(i).khr_id
4923 OR
4924 l_contract_count = 1) THEN
4925 l_line_count := l_line_count + 1;
4926 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
4927 l_contract_id := p_rbk_tbl(i).khr_id;
4928 l_prev_contract_id := p_rbk_tbl(i).khr_id; --Bug# 2579620
4929 ELSE
4930 -- Call Rebook_Contract
4931 rebook_contract(
4932 x_return_status => x_return_status,
4933 x_msg_count => x_msg_count,
4934 x_msg_data => x_msg_data,
4935 p_online_yn => 'N',
4936 p_khr_id => l_contract_id,
4937 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
4938 p_line_count => l_line_count,
4939 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
4940 p_book_type_code => NULL,
4941 p_deprn_method_code => p_deprn_method_code,
4942 p_in_service_date => p_in_service_date,
4943 p_life_in_months => p_life_in_months,
4944 p_basic_rate => p_basic_rate,
4945 p_adjusted_rate => p_adjusted_rate,
4946 p_residual_value => p_residual_value,
4947 p_strm_lalevl_tbl => p_strm_lalevl_tbl
4948 );
4949 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
4950 raise OKL_API.G_EXCEPTION_ERROR;
4951 END IF;
4952 l_line_count := 1;
4953 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
4954 l_contract_id := p_rbk_tbl(i).khr_id;
4955 END IF;
4956 END LOOP;
4957
4958 rebook_contract(
4959 x_return_status => x_return_status,
4960 x_msg_count => x_msg_count,
4961 x_msg_data => x_msg_data,
4962 p_online_yn => 'N',
4963 p_khr_id => l_contract_id,
4964 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
4965 p_line_count => l_line_count,
4966 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
4967 p_book_type_code => NULL,
4968 p_deprn_method_code => p_deprn_method_code,
4969 p_in_service_date => p_in_service_date,
4970 p_life_in_months => p_life_in_months,
4971 p_basic_rate => p_basic_rate,
4972 p_adjusted_rate => p_adjusted_rate,
4973 p_residual_value => p_residual_value,
4974 p_strm_lalevl_tbl => p_strm_lalevl_tbl
4975 );
4976
4977 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4978 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rebook Contract status: '||x_return_status);
4979 END IF;
4980 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4981 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4982 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4983 raise OKL_API.G_EXCEPTION_ERROR;
4984 END IF;
4985
4986 ELSE
4987 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4988 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Nothing to Process...');
4989 END IF;
4990 x_return_status := OKL_API.G_RET_STS_ERROR;
4991 RAISE OKL_API.G_EXCEPTION_ERROR;
4992 END IF;
4993
4994 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
4995 x_msg_data => x_msg_data);
4996
4997
4998 RETURN;
4999
5000 EXCEPTION
5001 when OKL_API.G_EXCEPTION_ERROR then
5002 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5003 p_api_name => l_api_name,
5004 p_pkg_name => G_PKG_NAME,
5005 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5006 x_msg_count => x_msg_count,
5007 x_msg_data => x_msg_data,
5008 p_api_type => G_API_TYPE);
5009
5010 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5011 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5012 p_api_name => l_api_name,
5013 p_pkg_name => G_PKG_NAME,
5014 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5015 x_msg_count => x_msg_count,
5016 x_msg_data => x_msg_data,
5017 p_api_type => G_API_TYPE);
5018
5019 when OTHERS then
5020 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5021 p_api_name => l_api_name,
5022 p_pkg_name => G_PKG_NAME,
5023 p_exc_name => 'OTHERS',
5024 x_msg_count => x_msg_count,
5025 x_msg_data => x_msg_data,
5026 p_api_type => G_API_TYPE);
5027 END apply_mass_rebook;
5028
5029 ------------------------------------------------------------------------------
5030 -- PROCEDURE apply_mass_rebook
5031 -- This proecdure uses to apply mass rebook for contracts. It should be called
5032 -- by those who does not have access to MASS REBOOK UI under OKL.
5033 -- This process is overloaded from previous one to return stream transactio ID
5034 -- to caller program
5035 -- Calls:
5036 -- Called by:
5037 ------------------------------------------------------------------------------
5038
5039 PROCEDURE apply_mass_rebook(
5040 p_api_version IN NUMBER,
5041 p_init_msg_list IN VARCHAR2,
5042 x_return_status OUT NOCOPY VARCHAR2,
5043 x_msg_count OUT NOCOPY NUMBER,
5044 x_msg_data OUT NOCOPY VARCHAR2,
5045 p_rbk_tbl IN rbk_tbl_type,
5046 p_deprn_method_code IN FA_BOOKS.DEPRN_METHOD_CODE%TYPE,
5047 p_in_service_date IN FA_BOOKS.DATE_PLACED_IN_SERVICE%TYPE,
5048 p_life_in_months IN FA_BOOKS.LIFE_IN_MONTHS%TYPE,
5049 p_basic_rate IN FA_BOOKS.BASIC_RATE%TYPE,
5050 p_adjusted_rate IN FA_BOOKS.ADJUSTED_RATE%TYPE,
5051 p_residual_value IN OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
5052 p_strm_lalevl_tbl IN strm_lalevl_tbl_type,
5053 x_stream_trx_tbl OUT NOCOPY strm_trx_tbl_type
5054 ) IS
5055 l_api_name VARCHAR2(35) := 'apply_mass_rebook';
5056 l_proc_name VARCHAR2(35) := 'APPLY_MASS_REBOOK';
5057 l_api_version NUMBER := 1.0;
5058
5059 l_line_count NUMBER;
5060 l_contract_count NUMBER;
5061 l_contract_id NUMBER;
5062 l_prev_contract_id NUMBER;
5063
5064 l_kle_tbl kle_tbl_type;
5065
5066 BEGIN
5067 IF (G_DEBUG_ENABLED = 'Y') THEN
5068 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5069 END IF;
5070
5071 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5072 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5073 END IF;
5074 -- call START_ACTIVITY to create savepoint, check compatibility
5075 -- and initialize message list
5076 x_return_status := OKL_API.START_ACTIVITY(
5077 p_api_name => l_api_name,
5078 p_pkg_name => G_PKG_NAME,
5079 p_init_msg_list => p_init_msg_list,
5080 l_api_version => l_api_version,
5081 p_api_version => p_api_version,
5082 p_api_type => G_API_TYPE,
5083 x_return_status => x_return_status);
5084
5085 -- check if activity started successfully
5086 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5087 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5088 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5089 raise OKL_API.G_EXCEPTION_ERROR;
5090 END IF;
5091
5092
5093 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5094 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Count: '||p_rbk_tbl.COUNT);
5095 END IF;
5096
5097 IF (p_rbk_tbl.COUNT > 0 ) THEN
5098 l_line_count := 0;
5099 l_contract_count := 0;
5100 l_prev_contract_id := G_INIT_NUMBER;
5101 FOR i IN 1..p_rbk_tbl.COUNT
5102 LOOP
5103 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5104 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Contract# :'||p_rbk_tbl(i).contract_number);
5105 END IF;
5106 l_contract_count := l_contract_count + 1;
5107 IF (l_prev_contract_id = p_rbk_tbl(i).khr_id
5108 OR
5109 l_contract_count = 1) THEN
5110 l_line_count := l_line_count + 1;
5111 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5112 l_contract_id := p_rbk_tbl(i).khr_id;
5113 l_prev_contract_id := p_rbk_tbl(i).khr_id; --Bug# 2579620
5114 ELSE
5115 -- Call Rebook_Contract
5116 rebook_contract(
5117 x_return_status => x_return_status,
5118 x_msg_count => x_msg_count,
5119 x_msg_data => x_msg_data,
5120 p_online_yn => 'N',
5121 p_khr_id => l_contract_id,
5122 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5123 p_line_count => l_line_count,
5124 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5125 p_book_type_code => NULL,
5126 p_deprn_method_code => p_deprn_method_code,
5127 p_in_service_date => p_in_service_date,
5128 p_life_in_months => p_life_in_months,
5129 p_basic_rate => p_basic_rate,
5130 p_adjusted_rate => p_adjusted_rate,
5131 p_residual_value => p_residual_value,
5132 p_strm_lalevl_tbl => p_strm_lalevl_tbl
5133 );
5134
5135 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5136 raise OKL_API.G_EXCEPTION_ERROR;
5137 END IF;
5138
5139 x_stream_trx_tbl(l_contract_count).chr_id := l_contract_id;
5140 x_stream_trx_tbl(l_contract_count).trx_number := g_stream_trx_number;
5141
5142 l_line_count := 1;
5143 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5144 l_contract_id := p_rbk_tbl(i).khr_id;
5145
5146 END IF;
5147 END LOOP;
5148
5149 rebook_contract(
5150 x_return_status => x_return_status,
5151 x_msg_count => x_msg_count,
5152 x_msg_data => x_msg_data,
5153 p_online_yn => 'N',
5154 p_khr_id => l_contract_id,
5155 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5156 p_line_count => l_line_count,
5157 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5158 p_book_type_code => NULL,
5159 p_deprn_method_code => p_deprn_method_code,
5160 p_in_service_date => p_in_service_date,
5161 p_life_in_months => p_life_in_months,
5162 p_basic_rate => p_basic_rate,
5163 p_adjusted_rate => p_adjusted_rate,
5164 p_residual_value => p_residual_value,
5165 p_strm_lalevl_tbl => p_strm_lalevl_tbl
5166 );
5167
5168 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5169 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rebook Contract status: '||x_return_status);
5170 END IF;
5171 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5172 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5173 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5174 raise OKL_API.G_EXCEPTION_ERROR;
5175 END IF;
5176
5177 --l_contract_count := l_contract_count + 1;
5178 x_stream_trx_tbl(l_contract_count).chr_id := l_contract_id;
5179 x_stream_trx_tbl(l_contract_count).trx_number := g_stream_trx_number;
5180
5181 ELSE
5182 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5183 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Nothing to Process...');
5184 END IF;
5185 x_return_status := OKL_API.G_RET_STS_ERROR;
5186 RAISE OKL_API.G_EXCEPTION_ERROR;
5187 END IF;
5188
5189 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5190 x_msg_data => x_msg_data);
5191
5192
5193 RETURN;
5194
5195 EXCEPTION
5196 when OKL_API.G_EXCEPTION_ERROR then
5197 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5198 p_api_name => l_api_name,
5199 p_pkg_name => G_PKG_NAME,
5200 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5201 x_msg_count => x_msg_count,
5202 x_msg_data => x_msg_data,
5203 p_api_type => G_API_TYPE);
5204
5205 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5206 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5207 p_api_name => l_api_name,
5208 p_pkg_name => G_PKG_NAME,
5209 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5210 x_msg_count => x_msg_count,
5211 x_msg_data => x_msg_data,
5212 p_api_type => G_API_TYPE);
5213
5214 when OTHERS then
5215 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5216 p_api_name => l_api_name,
5217 p_pkg_name => G_PKG_NAME,
5218 p_exc_name => 'OTHERS',
5219 x_msg_count => x_msg_count,
5220 x_msg_data => x_msg_data,
5221 p_api_type => G_API_TYPE);
5222 END apply_mass_rebook;
5223
5224 ------------------------------------------------------------------------------
5225 -- PROCEDURE apply_mass_rebook
5226 -- This proecdure uses to apply mass rebook for contracts. It should be called
5227 -- by those who does not have access to MASS REBOOK UI under OKL.
5228 -- This process is overloaded from previous one to return stream transactio ID
5229 -- to caller program
5230 --
5231 -- Adding p_transaction_date parameter, if not provided, system
5232 -- will pass SYSDATE to downstream processes
5233 -- Calls:
5234 -- Called by:
5235 ------------------------------------------------------------------------------
5236
5237 PROCEDURE apply_mass_rebook(
5238 p_api_version IN NUMBER,
5239 p_init_msg_list IN VARCHAR2,
5240 x_return_status OUT NOCOPY VARCHAR2,
5241 x_msg_count OUT NOCOPY NUMBER,
5242 x_msg_data OUT NOCOPY VARCHAR2,
5243 p_rbk_tbl IN rbk_tbl_type,
5244 p_deprn_method_code IN FA_BOOKS.DEPRN_METHOD_CODE%TYPE,
5245 p_in_service_date IN FA_BOOKS.DATE_PLACED_IN_SERVICE%TYPE,
5246 p_life_in_months IN FA_BOOKS.LIFE_IN_MONTHS%TYPE,
5247 p_basic_rate IN FA_BOOKS.BASIC_RATE%TYPE,
5248 p_adjusted_rate IN FA_BOOKS.ADJUSTED_RATE%TYPE,
5249 p_residual_value IN OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
5250 p_strm_lalevl_tbl IN strm_lalevl_tbl_type,
5251 p_transaction_date IN OKL_RBK_SELECTED_CONTRACT.TRANSACTION_DATE%TYPE,
5252 x_stream_trx_tbl OUT NOCOPY strm_trx_tbl_type
5253 ) IS
5254 l_api_name VARCHAR2(35) := 'apply_mass_rebook';
5255 l_proc_name VARCHAR2(35) := 'APPLY_MASS_REBOOK';
5256 l_api_version NUMBER := 1.0;
5257
5258 l_line_count NUMBER;
5259 l_contract_count NUMBER;
5260 l_contract_id NUMBER;
5261 l_prev_contract_id NUMBER;
5262
5263 l_kle_tbl kle_tbl_type;
5264
5265 BEGIN
5266 IF (G_DEBUG_ENABLED = 'Y') THEN
5267 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5268 END IF;
5269
5270 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5271 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5272 END IF;
5273 -- call START_ACTIVITY to create savepoint, check compatibility
5274 -- and initialize message list
5275 x_return_status := OKL_API.START_ACTIVITY(
5276 p_api_name => l_api_name,
5277 p_pkg_name => G_PKG_NAME,
5278 p_init_msg_list => p_init_msg_list,
5279 l_api_version => l_api_version,
5280 p_api_version => p_api_version,
5281 p_api_type => G_API_TYPE,
5282 x_return_status => x_return_status);
5283
5284 -- check if activity started successfully
5285 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5286 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5287 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5288 raise OKL_API.G_EXCEPTION_ERROR;
5289 END IF;
5290
5291
5292 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5293 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Count: '||p_rbk_tbl.COUNT);
5294 END IF;
5295
5296 IF (p_rbk_tbl.COUNT > 0 ) THEN
5297 l_line_count := 0;
5298 l_contract_count := 0;
5299 l_prev_contract_id := G_INIT_NUMBER;
5300 FOR i IN 1..p_rbk_tbl.COUNT
5301 LOOP
5302 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5303 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Contract# :'||p_rbk_tbl(i).contract_number);
5304 END IF;
5305 l_contract_count := l_contract_count + 1;
5306 IF (l_prev_contract_id = p_rbk_tbl(i).khr_id
5307 OR
5308 l_contract_count = 1) THEN
5309 l_line_count := l_line_count + 1;
5310 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5311 l_contract_id := p_rbk_tbl(i).khr_id;
5312 l_prev_contract_id := p_rbk_tbl(i).khr_id; --Bug# 2579620
5313 ELSE
5314 -- Call Rebook_Contract
5315 rebook_contract(
5316 x_return_status => x_return_status,
5317 x_msg_count => x_msg_count,
5318 x_msg_data => x_msg_data,
5319 p_online_yn => 'N',
5320 p_khr_id => l_contract_id,
5321 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5322 p_line_count => l_line_count,
5323 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5324 p_book_type_code => NULL,
5325 p_deprn_method_code => p_deprn_method_code,
5326 p_in_service_date => p_in_service_date,
5327 p_life_in_months => p_life_in_months,
5328 p_basic_rate => p_basic_rate,
5329 p_adjusted_rate => p_adjusted_rate,
5330 p_residual_value => p_residual_value,
5331 p_strm_lalevl_tbl => p_strm_lalevl_tbl,
5332 p_transaction_date => p_transaction_date
5333 );
5334
5335 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5336 raise OKL_API.G_EXCEPTION_ERROR;
5337 END IF;
5338
5339 x_stream_trx_tbl(l_contract_count).chr_id := l_contract_id;
5340 x_stream_trx_tbl(l_contract_count).trx_number := g_stream_trx_number;
5341
5342 l_line_count := 1;
5343 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5344 l_contract_id := p_rbk_tbl(i).khr_id;
5345
5346 END IF;
5347 END LOOP;
5348
5349 rebook_contract(
5350 x_return_status => x_return_status,
5351 x_msg_count => x_msg_count,
5352 x_msg_data => x_msg_data,
5353 p_online_yn => 'N',
5354 p_khr_id => l_contract_id,
5355 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5356 p_line_count => l_line_count,
5357 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5358 p_book_type_code => NULL,
5359 p_deprn_method_code => p_deprn_method_code,
5360 p_in_service_date => p_in_service_date,
5361 p_life_in_months => p_life_in_months,
5362 p_basic_rate => p_basic_rate,
5363 p_adjusted_rate => p_adjusted_rate,
5364 p_residual_value => p_residual_value,
5365 p_strm_lalevl_tbl => p_strm_lalevl_tbl,
5366 p_transaction_date => p_transaction_date
5367 );
5368
5369 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5370 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rebook Contract status: '||x_return_status);
5371 END IF;
5372 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5373 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5374 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5375 raise OKL_API.G_EXCEPTION_ERROR;
5376 END IF;
5377
5378 --l_contract_count := l_contract_count + 1;
5379 x_stream_trx_tbl(l_contract_count).chr_id := l_contract_id;
5380 x_stream_trx_tbl(l_contract_count).trx_number := g_stream_trx_number;
5381
5382 ELSE
5383 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5384 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Nothing to Process...');
5385 END IF;
5386 x_return_status := OKL_API.G_RET_STS_ERROR;
5387 RAISE OKL_API.G_EXCEPTION_ERROR;
5388 END IF;
5389
5390 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5391 x_msg_data => x_msg_data);
5392
5393
5394 RETURN;
5395
5396 EXCEPTION
5397 when OKL_API.G_EXCEPTION_ERROR then
5398 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5399 p_api_name => l_api_name,
5400 p_pkg_name => G_PKG_NAME,
5401 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5402 x_msg_count => x_msg_count,
5403 x_msg_data => x_msg_data,
5404 p_api_type => G_API_TYPE);
5405
5406 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5407 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5408 p_api_name => l_api_name,
5409 p_pkg_name => G_PKG_NAME,
5410 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5411 x_msg_count => x_msg_count,
5412 x_msg_data => x_msg_data,
5413 p_api_type => G_API_TYPE);
5414
5415 when OTHERS then
5416 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5417 p_api_name => l_api_name,
5418 p_pkg_name => G_PKG_NAME,
5419 p_exc_name => 'OTHERS',
5420 x_msg_count => x_msg_count,
5421 x_msg_data => x_msg_data,
5422 p_api_type => G_API_TYPE);
5423 END apply_mass_rebook;
5424
5425 ------------------------------------------------------------------------------
5426 -- PROCEDURE apply_mass_rebook
5427 -- This proecdure uses to apply mass rebook for contracts.
5428 -- This has been overloaded for following specific purpose:
5429 -- 1. To get termination transaction ID (p_source_trx_id)
5430 -- 2. Use this ID to update transaction after successful completion of Mass rebook
5431 -- 3. To accept source transaction type (p_source_trx_type)
5432 -- 4. Return Mass rebook transaction id to caller (x_mass_rebook_trx_id)
5433 -- Calls:
5434 -- Called by:
5435 ------------------------------------------------------------------------------
5436 PROCEDURE apply_mass_rebook(
5437 p_api_version IN NUMBER,
5438 p_init_msg_list IN VARCHAR2,
5439 x_return_status OUT NOCOPY VARCHAR2,
5440 x_msg_count OUT NOCOPY NUMBER,
5441 x_msg_data OUT NOCOPY VARCHAR2,
5442 p_rbk_tbl IN rbk_tbl_type,
5443 p_deprn_method_code IN FA_BOOKS.DEPRN_METHOD_CODE%TYPE,
5444 p_in_service_date IN FA_BOOKS.DATE_PLACED_IN_SERVICE%TYPE,
5445 p_life_in_months IN FA_BOOKS.LIFE_IN_MONTHS%TYPE,
5446 p_basic_rate IN FA_BOOKS.BASIC_RATE%TYPE,
5447 p_adjusted_rate IN FA_BOOKS.ADJUSTED_RATE%TYPE,
5448 p_residual_value IN OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
5449 p_strm_lalevl_tbl IN strm_lalevl_tbl_type,
5450 p_source_trx_id IN OKL_TRX_CONTRACTS.SOURCE_TRX_ID%TYPE,
5451 p_source_trx_type IN OKL_TRX_CONTRACTS.SOURCE_TRX_TYPE%TYPE,
5452 x_mass_rebook_trx_id OUT NOCOPY OKL_TRX_CONTRACTS.ID%TYPE
5453 ) IS
5454
5455 l_api_name VARCHAR2(35) := 'apply_mass_rebook';
5456 l_proc_name VARCHAR2(35) := 'APPLY_MASS_REBOOK';
5457 l_api_version NUMBER := 1.0;
5458
5459 l_line_count NUMBER;
5460 l_contract_count NUMBER;
5461 l_contract_id NUMBER;
5462 l_prev_contract_id NUMBER;
5463
5464 l_kle_tbl kle_tbl_type;
5465
5466 l_tcnv_rec tcnv_rec_type;
5467 x_tcnv_rec tcnv_rec_type;
5468
5469 BEGIN
5470 IF (G_DEBUG_ENABLED = 'Y') THEN
5471 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5472 END IF;
5473
5474 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5475 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5476 END IF;
5477 -- call START_ACTIVITY to create savepoint, check compatibility
5478 -- and initialize message list
5479 x_return_status := OKL_API.START_ACTIVITY(
5480 p_api_name => l_api_name,
5481 p_pkg_name => G_PKG_NAME,
5482 p_init_msg_list => p_init_msg_list,
5483 l_api_version => l_api_version,
5484 p_api_version => p_api_version,
5485 p_api_type => G_API_TYPE,
5486 x_return_status => x_return_status);
5487
5488 -- check if activity started successfully
5489 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5490 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5491 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5492 raise OKL_API.G_EXCEPTION_ERROR;
5493 END IF;
5494
5495 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5496 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->Count: '||p_rbk_tbl.COUNT);
5497 END IF;
5498
5499 IF (p_rbk_tbl.COUNT > 0 ) THEN
5500 l_line_count := 0;
5501 l_contract_count := 0;
5502 l_prev_contract_id := G_INIT_NUMBER;
5503 FOR i IN 1..p_rbk_tbl.COUNT
5504 LOOP
5505 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5506 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->Contract# :'||p_rbk_tbl(i).contract_number);
5507 END IF;
5508 l_contract_count := l_contract_count + 1;
5509 IF (l_prev_contract_id = p_rbk_tbl(i).khr_id
5510 OR
5511 l_contract_count = 1) THEN
5512 l_line_count := l_line_count + 1;
5513 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5514 l_contract_id := p_rbk_tbl(i).khr_id;
5515 l_prev_contract_id := p_rbk_tbl(i).khr_id; --Bug# 2579620
5516 ELSE
5517 --
5518 -- Restart termination process
5519 -- cancel any ongoing transaction, if any
5520 --
5521 cancel_transaction(
5522 x_return_status => x_return_status,
5523 x_msg_count => x_msg_count,
5524 x_msg_data => x_msg_data,
5525 p_chr_id => l_contract_id
5526 );
5527
5528 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5529 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After cancel_transaction: '||x_return_status);
5530 END IF;
5531 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5532 raise OKL_API.G_EXCEPTION_ERROR;
5533 END IF;
5534
5535 G_TERMINATION_TRX_ID := p_source_trx_id;
5536 G_TERMINATION_TRX_TYPE := p_source_trx_type;
5537 G_MASS_RBK_TRX_ID := NULL;
5538
5539 okl_api.set_message('OKL', 'AM', 'Before Term Trx ID: ', G_TERMINATION_TRX_ID);
5540
5541 -- Call Rebook_Contract
5542 rebook_contract(
5543 x_return_status => x_return_status,
5544 x_msg_count => x_msg_count,
5545 x_msg_data => x_msg_data,
5546 p_online_yn => 'N',
5547 p_khr_id => l_contract_id,
5548 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5549 p_line_count => l_line_count,
5550 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5551 p_book_type_code => NULL,
5552 p_deprn_method_code => p_deprn_method_code,
5553 p_in_service_date => p_in_service_date,
5554 p_life_in_months => p_life_in_months,
5555 p_basic_rate => p_basic_rate,
5556 p_adjusted_rate => p_adjusted_rate,
5557 p_residual_value => p_residual_value,
5558 p_strm_lalevl_tbl => p_strm_lalevl_tbl
5559 );
5560 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5561 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After rebook_contract: '||x_return_status);
5562 END IF;
5563 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5564 raise OKL_API.G_EXCEPTION_ERROR;
5565 END IF;
5566
5567 x_mass_rebook_trx_id := G_MASS_RBK_TRX_ID;
5568
5569 l_line_count := 1;
5570 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5571 l_contract_id := p_rbk_tbl(i).khr_id;
5572 END IF;
5573 END LOOP;
5574
5575 --
5576 -- Restart termination process
5577 -- cancel any ongoing transaction, if any
5578 --
5579 cancel_transaction(
5580 x_return_status => x_return_status,
5581 x_msg_count => x_msg_count,
5582 x_msg_data => x_msg_data,
5583 p_chr_id => l_contract_id
5584 );
5585
5586 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5587 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After cancel_transaction: '||x_return_status);
5588 END IF;
5589 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5590 raise OKL_API.G_EXCEPTION_ERROR;
5591 END IF;
5592
5593
5594 G_TERMINATION_TRX_ID := p_source_trx_id;
5595 G_TERMINATION_TRX_TYPE := p_source_trx_type;
5596 G_MASS_RBK_TRX_ID := NULL;
5597
5598 okl_api.set_message('OKL', 'AM', 'Before Term Trx ID: ', G_TERMINATION_TRX_ID);
5599
5600 rebook_contract(
5601 x_return_status => x_return_status,
5602 x_msg_count => x_msg_count,
5603 x_msg_data => x_msg_data,
5604 p_online_yn => 'N',
5605 p_khr_id => l_contract_id,
5606 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5607 p_line_count => l_line_count,
5608 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5609 p_book_type_code => NULL,
5610 p_deprn_method_code => p_deprn_method_code,
5611 p_in_service_date => p_in_service_date,
5612 p_life_in_months => p_life_in_months,
5613 p_basic_rate => p_basic_rate,
5614 p_adjusted_rate => p_adjusted_rate,
5615 p_residual_value => p_residual_value,
5616 p_strm_lalevl_tbl => p_strm_lalevl_tbl
5617 );
5618
5619 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5620 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->rebook Contract status: '||x_return_status);
5621 END IF;
5622 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5623 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5624 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5625 raise OKL_API.G_EXCEPTION_ERROR;
5626 END IF;
5627
5628 x_mass_rebook_trx_id := G_MASS_RBK_TRX_ID;
5629
5630 ELSE
5631 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5632 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Nothing to Process...');
5633 END IF;
5634 x_return_status := OKL_API.G_RET_STS_ERROR;
5635 RAISE OKL_API.G_EXCEPTION_ERROR;
5636 END IF;
5637
5638 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5639 x_msg_data => x_msg_data);
5640
5641
5642 RETURN;
5643
5644 EXCEPTION
5645 when OKL_API.G_EXCEPTION_ERROR then
5646 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5647 p_api_name => l_api_name,
5648 p_pkg_name => G_PKG_NAME,
5649 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5650 x_msg_count => x_msg_count,
5651 x_msg_data => x_msg_data,
5652 p_api_type => G_API_TYPE);
5653
5654 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5655 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5656 p_api_name => l_api_name,
5657 p_pkg_name => G_PKG_NAME,
5658 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5659 x_msg_count => x_msg_count,
5660 x_msg_data => x_msg_data,
5661 p_api_type => G_API_TYPE);
5662
5663 when OTHERS then
5664 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5665 p_api_name => l_api_name,
5666 p_pkg_name => G_PKG_NAME,
5667 p_exc_name => 'OTHERS',
5668 x_msg_count => x_msg_count,
5669 x_msg_data => x_msg_data,
5670 p_api_type => G_API_TYPE);
5671 END apply_mass_rebook;
5672
5673 ------------------------------------------------------------------------------
5674 -- PROCEDURE apply_mass_rebook
5675 -- This proecdure uses to apply mass rebook for contracts.
5676 -- This has been overloaded for following specific purpose:
5677 -- 1. To accept transaction date from calling process, This date is going to
5678 -- be used for accounting too.
5679 -- Calls:
5680 -- Called by:
5681 ------------------------------------------------------------------------------
5682 PROCEDURE apply_mass_rebook(
5683 p_api_version IN NUMBER,
5684 p_init_msg_list IN VARCHAR2,
5685 x_return_status OUT NOCOPY VARCHAR2,
5686 x_msg_count OUT NOCOPY NUMBER,
5687 x_msg_data OUT NOCOPY VARCHAR2,
5688 p_rbk_tbl IN rbk_tbl_type,
5689 p_deprn_method_code IN FA_BOOKS.DEPRN_METHOD_CODE%TYPE,
5690 p_in_service_date IN FA_BOOKS.DATE_PLACED_IN_SERVICE%TYPE,
5691 p_life_in_months IN FA_BOOKS.LIFE_IN_MONTHS%TYPE,
5692 p_basic_rate IN FA_BOOKS.BASIC_RATE%TYPE,
5693 p_adjusted_rate IN FA_BOOKS.ADJUSTED_RATE%TYPE,
5694 p_residual_value IN OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
5695 p_strm_lalevl_tbl IN strm_lalevl_tbl_type,
5696 p_source_trx_id IN OKL_TRX_CONTRACTS.SOURCE_TRX_ID%TYPE,
5697 p_source_trx_type IN OKL_TRX_CONTRACTS.SOURCE_TRX_TYPE%TYPE,
5698 p_transaction_date IN OKL_RBK_SELECTED_CONTRACT.TRANSACTION_DATE%TYPE,
5699 x_mass_rebook_trx_id OUT NOCOPY OKL_TRX_CONTRACTS.ID%TYPE
5700 ) IS
5701
5702 l_api_name VARCHAR2(35) := 'apply_mass_rebook';
5703 l_proc_name VARCHAR2(35) := 'APPLY_MASS_REBOOK';
5704 l_api_version NUMBER := 1.0;
5705
5706 l_line_count NUMBER;
5707 l_contract_count NUMBER;
5708 l_contract_id NUMBER;
5709 l_prev_contract_id NUMBER;
5710
5711 l_kle_tbl kle_tbl_type;
5712
5713 l_tcnv_rec tcnv_rec_type;
5714 x_tcnv_rec tcnv_rec_type;
5715
5716 BEGIN
5717 IF (G_DEBUG_ENABLED = 'Y') THEN
5718 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5719 END IF;
5720
5721 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5722 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5723 END IF;
5724 -- call START_ACTIVITY to create savepoint, check compatibility
5725 -- and initialize message list
5726 x_return_status := OKL_API.START_ACTIVITY(
5727 p_api_name => l_api_name,
5728 p_pkg_name => G_PKG_NAME,
5729 p_init_msg_list => p_init_msg_list,
5730 l_api_version => l_api_version,
5731 p_api_version => p_api_version,
5732 p_api_type => G_API_TYPE,
5733 x_return_status => x_return_status);
5734
5735 -- check if activity started successfully
5736 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5737 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5738 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5739 raise OKL_API.G_EXCEPTION_ERROR;
5740 END IF;
5741
5742 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5743 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->Count: '||p_rbk_tbl.COUNT);
5744 END IF;
5745
5746 IF (p_rbk_tbl.COUNT > 0 ) THEN
5747 l_line_count := 0;
5748 l_contract_count := 0;
5749 l_prev_contract_id := G_INIT_NUMBER;
5750 FOR i IN 1..p_rbk_tbl.COUNT
5751 LOOP
5752 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5753 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->Contract# :'||p_rbk_tbl(i).contract_number);
5754 END IF;
5755 l_contract_count := l_contract_count + 1;
5756 IF (l_prev_contract_id = p_rbk_tbl(i).khr_id
5757 OR
5758 l_contract_count = 1) THEN
5759 l_line_count := l_line_count + 1;
5760 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5761 l_contract_id := p_rbk_tbl(i).khr_id;
5762 l_prev_contract_id := p_rbk_tbl(i).khr_id; --Bug# 2579620
5763 ELSE
5764 --
5765 -- Restart termination process
5766 -- cancel any ongoing transaction, if any
5767 --
5768 cancel_transaction(
5769 x_return_status => x_return_status,
5770 x_msg_count => x_msg_count,
5771 x_msg_data => x_msg_data,
5772 p_chr_id => l_contract_id
5773 );
5774
5775 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5776 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After cancel_transaction: '||x_return_status);
5777 END IF;
5778 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5779 raise OKL_API.G_EXCEPTION_ERROR;
5780 END IF;
5781
5782 G_TERMINATION_TRX_ID := p_source_trx_id;
5783 G_TERMINATION_TRX_TYPE := p_source_trx_type;
5784 G_MASS_RBK_TRX_ID := NULL;
5785
5786 okl_api.set_message('OKL', 'AM', 'Before Term Trx ID: ', G_TERMINATION_TRX_ID);
5787
5788 -- Call Rebook_Contract
5789 rebook_contract(
5790 x_return_status => x_return_status,
5791 x_msg_count => x_msg_count,
5792 x_msg_data => x_msg_data,
5793 p_online_yn => 'N',
5794 p_khr_id => l_contract_id,
5795 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5796 p_line_count => l_line_count,
5797 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5798 p_book_type_code => NULL,
5799 p_deprn_method_code => p_deprn_method_code,
5800 p_in_service_date => p_in_service_date,
5801 p_life_in_months => p_life_in_months,
5802 p_basic_rate => p_basic_rate,
5803 p_adjusted_rate => p_adjusted_rate,
5804 p_residual_value => p_residual_value,
5805 p_strm_lalevl_tbl => p_strm_lalevl_tbl,
5806 p_transaction_date => p_transaction_date
5807 );
5808 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5809 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After rebook_contract: '||x_return_status);
5810 END IF;
5811 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5812 raise OKL_API.G_EXCEPTION_ERROR;
5813 END IF;
5814
5815 x_mass_rebook_trx_id := G_MASS_RBK_TRX_ID;
5816
5817 l_line_count := 1;
5818 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5819 l_contract_id := p_rbk_tbl(i).khr_id;
5820 END IF;
5821 END LOOP;
5822
5823 --
5824 -- Restart termination process
5825 -- cancel any ongoing transaction, if any
5826 --
5827 cancel_transaction(
5828 x_return_status => x_return_status,
5829 x_msg_count => x_msg_count,
5830 x_msg_data => x_msg_data,
5831 p_chr_id => l_contract_id
5832 );
5833
5834 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5835 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After cancel_transaction: '||x_return_status);
5836 END IF;
5837 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5838 raise OKL_API.G_EXCEPTION_ERROR;
5839 END IF;
5840
5841
5842 G_TERMINATION_TRX_ID := p_source_trx_id;
5843 G_TERMINATION_TRX_TYPE := p_source_trx_type;
5844 G_MASS_RBK_TRX_ID := NULL;
5845
5846 okl_api.set_message('OKL', 'AM', 'Before Term Trx ID: ', G_TERMINATION_TRX_ID);
5847
5848 rebook_contract(
5849 x_return_status => x_return_status,
5850 x_msg_count => x_msg_count,
5851 x_msg_data => x_msg_data,
5852 p_online_yn => 'N',
5853 p_khr_id => l_contract_id,
5854 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5855 p_line_count => l_line_count,
5856 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5857 p_book_type_code => NULL,
5858 p_deprn_method_code => p_deprn_method_code,
5859 p_in_service_date => p_in_service_date,
5860 p_life_in_months => p_life_in_months,
5861 p_basic_rate => p_basic_rate,
5862 p_adjusted_rate => p_adjusted_rate,
5863 p_residual_value => p_residual_value,
5864 p_strm_lalevl_tbl => p_strm_lalevl_tbl,
5865 p_transaction_date => p_transaction_date
5866 );
5867
5868 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5869 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->rebook Contract status: '||x_return_status);
5870 END IF;
5871 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5872 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5873 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5874 raise OKL_API.G_EXCEPTION_ERROR;
5875 END IF;
5876
5877 x_mass_rebook_trx_id := G_MASS_RBK_TRX_ID;
5878
5879 ELSE
5880 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5881 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Nothing to Process...');
5882 END IF;
5883 x_return_status := OKL_API.G_RET_STS_ERROR;
5884 RAISE OKL_API.G_EXCEPTION_ERROR;
5885 END IF;
5886
5887 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5888 x_msg_data => x_msg_data);
5889
5890
5891 RETURN;
5892
5893 EXCEPTION
5894 when OKL_API.G_EXCEPTION_ERROR then
5895 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5896 p_api_name => l_api_name,
5897 p_pkg_name => G_PKG_NAME,
5898 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5899 x_msg_count => x_msg_count,
5900 x_msg_data => x_msg_data,
5901 p_api_type => G_API_TYPE);
5902
5903 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5904 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5905 p_api_name => l_api_name,
5906 p_pkg_name => G_PKG_NAME,
5907 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5908 x_msg_count => x_msg_count,
5909 x_msg_data => x_msg_data,
5910 p_api_type => G_API_TYPE);
5911
5912 when OTHERS then
5913 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5914 p_api_name => l_api_name,
5915 p_pkg_name => G_PKG_NAME,
5916 p_exc_name => 'OTHERS',
5917 x_msg_count => x_msg_count,
5918 x_msg_data => x_msg_data,
5919 p_api_type => G_API_TYPE);
5920 END apply_mass_rebook;
5921
5922 ------------------------------------------------------------------------------
5923 -- PROCEDURE apply_mass_rebook
5924 -- This proecdure uses to apply mass rebook for contracts.
5925 -- This has been overloaded for following specific purpose:
5926 -- 1. To accept prescheduled payment amount.
5927 -- Calls:
5928 -- Called by:
5929 ------------------------------------------------------------------------------
5930 PROCEDURE apply_mass_rebook(
5931 p_api_version IN NUMBER,
5932 p_init_msg_list IN VARCHAR2,
5933 x_return_status OUT NOCOPY VARCHAR2,
5934 x_msg_count OUT NOCOPY NUMBER,
5935 x_msg_data OUT NOCOPY VARCHAR2,
5936 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
5937 p_kle_tbl IN kle_tbl_type,
5938 p_source_trx_id IN OKL_TRX_CONTRACTS.SOURCE_TRX_ID%TYPE,
5939 p_source_trx_type IN OKL_TRX_CONTRACTS.SOURCE_TRX_TYPE%TYPE,
5940 p_transaction_date IN OKL_TRX_CONTRACTS.DATE_TRANSACTION_OCCURRED%TYPE,
5941 x_mass_rebook_trx_id OUT NOCOPY OKL_TRX_CONTRACTS.ID%TYPE,
5942 p_ppd_amount IN NUMBER,
5943 p_ppd_reason_code IN FND_LOOKUPS.LOOKUP_CODE%TYPE,
5944 p_payment_struc IN okl_mass_rebook_pvt.strm_lalevl_tbl_type
5945 )
5946 IS
5947 l_api_name VARCHAR2(35) := 'apply_mass_rebook';
5948 l_proc_name VARCHAR2(35) := 'APPLY_MASS_REBOOK';
5949 l_api_version NUMBER := 1.0;
5950
5951 l_line_count NUMBER;
5952 l_contract_count NUMBER;
5953 l_contract_id NUMBER;
5954 l_prev_contract_id NUMBER;
5955
5956 l_kle_tbl kle_tbl_type;
5957
5958 l_tcnv_rec tcnv_rec_type;
5959 x_tcnv_rec tcnv_rec_type;
5960 l_strm_lalevl_tbl strm_lalevl_tbl_type; /* DEBUG */
5961
5962 BEGIN
5963 IF (G_DEBUG_ENABLED = 'Y') THEN
5964 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5965 END IF;
5966
5967 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5968 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5969 END IF;
5970 -- call START_ACTIVITY to create savepoint, check compatibility
5971 -- and initialize message list
5972 x_return_status := OKL_API.START_ACTIVITY(
5973 p_api_name => l_api_name,
5974 p_pkg_name => G_PKG_NAME,
5975 p_init_msg_list => p_init_msg_list,
5976 l_api_version => l_api_version,
5977 p_api_version => p_api_version,
5978 p_api_type => G_API_TYPE,
5979 x_return_status => x_return_status);
5980
5981 -- check if activity started successfully
5982 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5983 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5984 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5985 raise OKL_API.G_EXCEPTION_ERROR;
5986 END IF;
5987
5988
5989 --
5990 -- Restart termination process
5991 -- cancel any ongoing transaction, if any
5992 --
5993 cancel_transaction(
5994 x_return_status => x_return_status,
5995 x_msg_count => x_msg_count,
5996 x_msg_data => x_msg_data,
5997 p_chr_id => p_chr_id
5998 );
5999
6000 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6001 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After cancel_transaction: '||x_return_status);
6002 END IF;
6003 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
6004 raise OKL_API.G_EXCEPTION_ERROR;
6005 END IF;
6006
6007
6008 /* DEBUG */
6009 G_TERMINATION_TRX_ID := NULL;
6010 G_PPD_TRX_ID := p_source_trx_id;
6011 G_PPD_TRX_TYPE := p_source_trx_type;
6012 G_MASS_RBK_TRX_ID := NULL;
6013
6014 --okl_api.set_message('OKL', 'AM', 'Before Term Trx ID: ', G_TERMINATION_TRX_ID);
6015
6016 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6017 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before calling rebook contract...');
6018 END IF;
6019 l_line_count := p_kle_tbl.COUNT;
6020 rebook_contract(
6021 x_return_status => x_return_status,
6022 x_msg_count => x_msg_count,
6023 x_msg_data => x_msg_data,
6024 p_online_yn => 'N',
6025 p_khr_id => p_chr_id,
6026 p_kle_tbl => p_kle_tbl, -- Table of Top Line ID
6027 p_line_count => l_line_count,
6028 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
6029 p_book_type_code => NULL,
6030 p_deprn_method_code => NULL,
6031 p_in_service_date => NULL,
6032 p_life_in_months => NULL,
6033 p_basic_rate => NULL,
6034 p_adjusted_rate => NULL,
6035 p_residual_value => NULL,
6036 p_strm_lalevl_tbl => p_payment_struc,
6037 p_transaction_date => p_transaction_date
6038 );
6039
6040 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6041 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->rebook Contract status: '||x_return_status);
6042 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After rebook contract: x_return_status=' || x_return_status);
6043 END IF;
6044 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
6045 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6046 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Raising OKL_API.G_RET_STS_UNEXP_ERROR:');
6047 END IF;
6048 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6049 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
6050 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6051 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Raising OKL_API.G_EXCEPTION_ERROR:');
6052 END IF;
6053 raise OKL_API.G_EXCEPTION_ERROR;
6054 END IF;
6055
6056 x_mass_rebook_trx_id := G_MASS_RBK_TRX_ID;
6057
6058 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
6059 x_msg_data => x_msg_data);
6060
6061
6062 RETURN;
6063
6064 EXCEPTION
6065 when OKL_API.G_EXCEPTION_ERROR then
6066 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6067 p_api_name => l_api_name,
6068 p_pkg_name => G_PKG_NAME,
6069 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
6070 x_msg_count => x_msg_count,
6071 x_msg_data => x_msg_data,
6072 p_api_type => G_API_TYPE);
6073 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6074 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After HANDLE_EXCEPTIONS: x_return_status='|| x_return_status);
6075 END IF;
6076
6077 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
6078 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6079 p_api_name => l_api_name,
6080 p_pkg_name => G_PKG_NAME,
6081 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
6082 x_msg_count => x_msg_count,
6083 x_msg_data => x_msg_data,
6084 p_api_type => G_API_TYPE);
6085
6086 when OTHERS then
6087 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6088 p_api_name => l_api_name,
6089 p_pkg_name => G_PKG_NAME,
6090 p_exc_name => 'OTHERS',
6091 x_msg_count => x_msg_count,
6092 x_msg_data => x_msg_data,
6093 p_api_type => G_API_TYPE);
6094
6095 --null;
6096 return;
6097 END apply_mass_rebook;
6098
6099 ------------------------------------------------------------------------------
6100 -- PROCEDURE create_mass_rbk_set_values
6101 -- This proecdure uses to create set values for mass rebook request
6102 -- Calls:
6103 -- Called by:
6104 ------------------------------------------------------------------------------
6105 /* Added for CR */
6106 PROCEDURE create_mass_rbk_set_values(
6107 p_api_version IN NUMBER,
6108 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6109 x_return_status OUT NOCOPY VARCHAR2,
6110 x_msg_count OUT NOCOPY NUMBER,
6111 x_msg_data OUT NOCOPY VARCHAR2,
6112 p_request_name IN OKL_MASS_RBK_CRITERIA.REQUEST_NAME%TYPE,
6113 p_mrbv_tbl IN mrbv_tbl_type,
6114 x_mrbv_tbl OUT NOCOPY mrbv_tbl_type)
6115 IS
6116
6117 l_api_name VARCHAR2(35) := 'create_mass_rbk_set_values';
6118 l_proc_name VARCHAR2(35) := 'CREATE_MASS_RBK_SET_VALUES';
6119 l_api_version NUMBER := 1.0;
6120 i INTEGER;
6121 l_set_value_present VARCHAR2(1) := 'N';
6122
6123 BEGIN
6124 IF (G_DEBUG_ENABLED = 'Y') THEN
6125 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
6126 END IF;
6127 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6128 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
6129 END IF;
6130 -- call START_ACTIVITY to create savepoint, check compatibility
6131 -- and initialize message list
6132 x_return_status := OKL_API.START_ACTIVITY(
6133 p_api_name => l_api_name,
6134 p_pkg_name => G_PKG_NAME,
6135 p_init_msg_list => p_init_msg_list,
6136 l_api_version => l_api_version,
6137 p_api_version => p_api_version,
6138 p_api_type => G_API_TYPE,
6139 x_return_status => x_return_status);
6140
6141 -- check if activity started successfully
6142 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
6143 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6144 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
6145 raise OKL_API.G_EXCEPTION_ERROR;
6146 END IF;
6147 --Validate the Set Values Data
6148 --Atleast one Set Value should be Present
6149 FOR i IN p_mrbv_tbl.FIRST..p_mrbv_tbl.LAST
6150 LOOP
6151 IF(p_mrbv_tbl.EXISTS(i)) THEN
6152 IF (p_mrbv_tbl(i).criteria_code = 'LIFE_IN_MONTHS'
6153 OR
6154 p_mrbv_tbl(i).criteria_code = 'BASIC_RATE'
6155 OR
6156 p_mrbv_tbl(i).criteria_code = 'ADJUSTED_RATE') THEN
6157
6158 IF (p_mrbv_tbl(i).operand IS NOT NULL
6159 OR
6160 p_mrbv_tbl(i).criteria_value1 IS NOT NULL
6161 OR
6162 p_mrbv_tbl(i).criteria_value2 IS NOT NULL) THEN
6163 okl_api.set_message(
6164 G_APP_NAME,
6165 G_INVALID_MATCH_OPTION,
6166 'CRIT_CODE',
6167 p_mrbv_tbl(i).criteria_code
6168 );
6169 RAISE OKL_API.G_EXCEPTION_ERROR;
6170 END IF;
6171 END IF;
6172 --Check for Data Integrity
6173 IF(p_mrbv_tbl(i).criteria_code = 'LIFE_IN_MONTHS' AND
6174 p_mrbv_tbl(i).set_value IS NOT NULL) THEN
6175 IF(p_mrbv_tbl(i).set_value <= 0 OR TRUNC(p_mrbv_tbl(i).set_value)<>(p_mrbv_tbl(i).set_value)) THEN
6176 okl_api.set_message(
6177 G_APP_NAME,
6178 'OKL_CONTRACTS_INVALID_VALUE',
6179 'COL_NAME',
6180 'LIFE_IN_MONTHS');
6181 RAISE OKL_API.G_EXCEPTION_ERROR;
6182 END IF;
6183
6184 END IF;
6185 IF(p_mrbv_tbl(i).criteria_code = 'BASIC_RATE' AND
6186 p_mrbv_tbl(i).set_value IS NOT NULL) THEN
6187 IF(p_mrbv_tbl(i).set_value <= 0 ) THEN
6188 okl_api.set_message(
6189 G_APP_NAME,
6190 'OKL_CONTRACTS_INVALID_VALUE',
6191 'COL_NAME',
6192 'BASIC_RATE');
6193 RAISE OKL_API.G_EXCEPTION_ERROR;
6194 END IF;
6195
6196 END IF;
6197 IF(p_mrbv_tbl(i).criteria_code = 'ADJUSTED_RATE' AND
6198 p_mrbv_tbl(i).set_value IS NOT NULL) THEN
6199 IF(p_mrbv_tbl(i).set_value <= 0 ) THEN
6200 okl_api.set_message(
6201 G_APP_NAME,
6202 'OKL_CONTRACTS_INVALID_VALUE',
6203 'COL_NAME',
6204 'ADJUSTED_RATE');
6205 RAISE OKL_API.G_EXCEPTION_ERROR;
6206 END IF;
6207
6208 END IF;
6209 IF (p_mrbv_tbl(i).set_value IS NOT NULL) THEN
6210 l_set_value_present := 'Y';
6211 END IF;
6212
6213 END IF;
6214 END LOOP;
6215 IF (l_set_value_present = 'N') THEN
6216 okl_api.set_message(
6217 G_APP_NAME,
6218 G_NO_SET_VALUE,
6219 'REQ_NAME',
6220 p_request_name
6221 );
6222 x_return_status := OKL_API.G_RET_STS_ERROR;
6223 END IF;
6224 --
6225 -- Insert Selection criteria
6226 --
6227 okl_mrb_pvt.insert_row(
6228 p_api_version => l_api_version,
6229 p_init_msg_list => p_init_msg_list,
6230 x_return_status => x_return_status,
6231 x_msg_count => x_msg_count,
6232 x_msg_data => x_msg_data,
6233 p_mrbv_tbl => p_mrbv_tbl,
6234 x_mrbv_tbl => x_mrbv_tbl
6235 );
6236
6237 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
6238 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6239 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
6240 raise OKL_API.G_EXCEPTION_ERROR;
6241 END IF;
6242
6243 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
6244 x_msg_data => x_msg_data);
6245
6246
6247 EXCEPTION
6248 when OKL_API.G_EXCEPTION_ERROR then
6249 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6250 p_api_name => l_api_name,
6251 p_pkg_name => G_PKG_NAME,
6252 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
6253 x_msg_count => x_msg_count,
6254 x_msg_data => x_msg_data,
6255 p_api_type => G_API_TYPE);
6256 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6257 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After HANDLE_EXCEPTIONS: x_return_status='|| x_return_status);
6258 END IF;
6259
6260 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
6261 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6262 p_api_name => l_api_name,
6263 p_pkg_name => G_PKG_NAME,
6264 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
6265 x_msg_count => x_msg_count,
6266 x_msg_data => x_msg_data,
6267 p_api_type => G_API_TYPE);
6268
6269 when OTHERS then
6270 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6271 p_api_name => l_api_name,
6272 p_pkg_name => G_PKG_NAME,
6273 p_exc_name => 'OTHERS',
6274 x_msg_count => x_msg_count,
6275 x_msg_data => x_msg_data,
6276 p_api_type => G_API_TYPE);
6277
6278
6279 END create_mass_rbk_set_values;
6280
6281 END OKL_MASS_REBOOK_PVT;