[Home] [Help]
PACKAGE BODY: APPS.OKL_MASS_REBOOK_PVT
Source
1 PACKAGE BODY OKL_MASS_REBOOK_PVT AS
2 /* $Header: OKLRMRPB.pls 120.38.12020000.3 2013/03/28 10:34:29 bkatraga 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 --ndani - 20-Mar-2013, Start - Mass Rebook accounting fix
2416 --Bug# 16526329 : Accounting Booking : Booking to make two accounting calls
2417 -- 'Booking' and 'Release' while booking a contract
2418
2419 -- cursor : to check whether Contract is having mixed asset or not
2420 CURSOR l_chk_con_csr (chrid NUMBER) IS
2421 SELECT COUNT (*)
2422 FROM (SELECT COUNT(*)
2423 FROM okc_k_lines_b cleb,
2424 okl_k_lines kle
2425 WHERE kle.id = cleb.id
2426 AND cleb.chr_id = chrid
2427 --ndani - 27-Mar-2013 - Bug# 16552978 - Start
2428 AND cleb.dnz_chr_id = chrid
2429 AND cleb.lse_id = 33
2430 AND cleb.sts_code <> 'ABANDONED'
2431 --ndani - 27-Mar-2013 - Bug# 16552978 - End
2432 GROUP BY NVL(kle.re_lease_yn,'N')
2433 );
2434
2435 -- cursor : to check whether Contract is having re-lease assets
2436 CURSOR l_con_rel_csr (chrid NUMBER) IS
2437 SELECT DISTINCT NVL(kle.re_lease_yn,'N')
2438 FROM okc_k_lines_b cleb,
2439 okl_k_lines kle
2440 WHERE kle.id = cleb.id
2441 AND cleb.chr_id = chrid
2442 --ndani - 27-Mar-2013 - Bug# 16552978 - Start
2443 AND cleb.dnz_chr_id = chrid
2444 AND cleb.lse_id = 33
2445 AND cleb.sts_code <> 'ABANDONED';
2446 --ndani - 27-Mar-2013 - Bug# 16552978 - End
2447
2448
2449 l_chk_contract_count NUMBER := 0;
2450 l_con_rel_flag okl_k_lines.re_lease_yn%TYPE;
2451 l_acct_trans_type VARCHAR2 (256);
2452 l_acc_call_rel_flag VARCHAR2 (1) := 'N';
2453
2454 --Bug# 16526329 , End
2455 --ndani - 20-Mar-2013, End - Mass Rebook accounting fix
2456
2457 BEGIN
2458 IF (G_DEBUG_ENABLED = 'Y') THEN
2459 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
2460 END IF;
2461
2462 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2463 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
2464 END IF;
2465
2466 IF (p_transaction_date IS NULL
2467 OR
2468 p_transaction_date = OKL_API.G_MISS_DATE) THEN
2469
2470 l_transaction_date := TRUNC(SYSDATE);
2471 ELSE
2472 l_transaction_date := p_transaction_date;
2473 END IF;
2474
2475 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2476 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Contract : '||p_khr_id);
2477 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Tot Line : '||p_line_count);
2478 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Online? :' ||p_online_yn);
2479 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Transaction Date :' ||l_transaction_date);
2480 END IF;
2481
2482 g_stream_trx_number := NULL; -- initialize before start
2483
2484 --Bug# 8756653
2485 -- Check if contract has been upgraded for effective dated rebook
2486 -- for all mass rebooks other than partial termination
2487 IF (G_TERMINATION_TRX_ID IS NULL) THEN
2488 OKL_LLA_UTIL_PVT.check_rebook_upgrade
2489 (p_api_version => 1.0,
2490 p_init_msg_list => OKL_API.G_FALSE,
2491 x_return_status => x_return_status,
2492 x_msg_count => x_msg_count,
2493 x_msg_data => x_msg_data,
2494 p_chr_id => p_khr_id);
2495
2496 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2497 RAISE rebook_contract_failed;
2498 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2499 RAISE rebook_contract_failed;
2500 END IF;
2501 END IF;
2502
2503 IF (p_online_yn = 'N') THEN -- populate selected_contract table for Non-Online process only
2504 l_request_name := TO_CHAR(get_seq_id());
2505 l_mstv_rec.request_name := l_request_name;
2506 FOR i IN 1..p_line_count
2507 LOOP
2508 l_mstv_rec.khr_id := p_khr_id;
2509 l_mstv_rec.kle_id := p_kle_tbl(i).id;
2510 l_mstv_rec.status := 'NEW';
2511 l_mstv_rec.transaction_date := l_transaction_date;
2512
2513 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2514 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Req: '||l_mstv_rec.request_name);
2515 END IF;
2516 okl_mst_pvt.insert_row(
2517 p_api_version => 1.0,
2518 p_init_msg_list => OKL_API.G_FALSE,
2519 x_return_status => x_return_status,
2520 x_msg_count => x_msg_count,
2521 x_msg_data => x_msg_data,
2522 p_mstv_rec => l_mstv_rec,
2523 x_mstv_rec => x_mstv_rec
2524 );
2525
2526 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2527 RAISE rebook_contract_failed;
2528 END IF;
2529 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2530 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Line ID: '||p_kle_tbl(i).id);
2531 END IF;
2532 END LOOP;
2533
2534 ELSE
2535 l_request_name := p_request_name;
2536 END IF;
2537
2538 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2539 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before Versioning...');
2540 END IF;
2541 --
2542 -- Version the Original Contract, only if it is ACTIVE, OKC requirement
2543 --
2544
2545 FOR con_sts_rec IN con_sts_csr (p_khr_id)
2546 LOOP
2547 IF (con_sts_rec.ste_code = 'ACTIVE') THEN
2548
2549 l_cvmv_rec.chr_id := p_khr_id;
2550 okl_version_pub.version_contract(
2551 p_api_version => 1.0,
2552 p_init_msg_list => OKC_API.G_FALSE,
2553 x_return_status => x_return_status,
2554 x_msg_count => x_msg_count,
2555 x_msg_data => x_msg_data,
2556 p_cvmv_rec => l_cvmv_rec,
2557 p_commit => OKL_API.G_FALSE,
2558 x_cvmv_rec => x_cvmv_rec
2559 );
2560
2561 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2562 RAISE rebook_contract_failed;
2563 END IF;
2564
2565 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2566 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Contract is versioned: '||x_return_status);
2567 END IF;
2568 END IF;
2569 END LOOP;
2570
2571 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2572 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Versioning of Contract');
2573 END IF;
2574 -- Create Transaction for the rebook-ed contract
2575
2576 okl_transaction_pvt.create_transaction(
2577 p_api_version => l_api_version,
2578 p_init_msg_list => OKL_API.G_FALSE,
2579 x_return_status => x_return_status,
2580 x_msg_count => x_msg_count,
2581 x_msg_data => x_msg_data,
2582 p_chr_id => p_khr_id,
2583 p_new_chr_id => NULL,
2584 p_reason_code => 'OTHER',
2585 p_description => NULL,
2586 p_trx_date => l_transaction_date, --SYSDATE,
2587 p_trx_type => 'REBOOK',
2588 x_tcnv_rec => x_tcnv_rec
2589 );
2590
2591 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2592 RAISE rebook_contract_failed;
2593 END IF;
2594
2595 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2596 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Status After create transaction: '||x_return_status);
2597 END IF;
2598
2599 l_mstv_tbl := get_rec(l_request_name, p_khr_id, x_return_status);
2600
2601 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2602 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'after get_rec : '||x_return_status);
2603 END IF;
2604 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2605 RAISE rebook_contract_failed;
2606 END IF;
2607
2608 FOR i IN 1..l_mstv_tbl.COUNT
2609 LOOP
2610 l_mstv_tbl(i).transaction_id := x_tcnv_rec.id;
2611 l_mstv_tbl(i).status := 'UNDER REVISION';
2612 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2613 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ID : '|| l_mstv_tbl(i).id);
2614 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'TRX ID : '|| l_mstv_tbl(i).transaction_id);
2615 END IF;
2616 END LOOP;
2617
2618 okl_mst_pvt.update_row(
2619 p_api_version => l_api_version,
2620 p_init_msg_list => OKL_API.G_FALSE,
2621 x_return_status => x_return_status,
2622 x_msg_count => x_msg_count,
2623 x_msg_data => x_msg_data,
2624 p_mstv_tbl => l_mstv_tbl,
2625 x_mstv_tbl => x_mstv_tbl
2626 );
2627
2628 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2629 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'after update mst :'|| x_return_status);
2630 END IF;
2631 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2632 RAISE rebook_contract_failed;
2633 END IF;
2634
2635 -- Termination specific logic here
2636 IF (G_TERMINATION_TRX_ID IS NOT NULL) THEN
2637 --
2638 -- Update Mass rebook Transaction with source trx.
2639 --
2640 okl_api.set_message('OKL', 'AM', 'Termination Trx ID: ', G_TERMINATION_TRX_ID);
2641 l_tcnv_rec.id := x_tcnv_rec.id;
2642 l_tcnv_rec.source_trx_id := G_TERMINATION_TRX_ID;
2643 l_tcnv_rec.source_trx_type := G_TERMINATION_TRX_TYPE;
2644 G_MASS_RBK_TRX_ID := x_tcnv_rec.id;
2645
2646 Okl_Trx_Contracts_Pub.update_trx_contracts(
2647 p_api_version => l_api_version,
2648 p_init_msg_list => OKL_API.G_FALSE,
2649 x_return_status => x_return_status,
2650 x_msg_count => x_msg_count,
2651 x_msg_data => x_msg_data,
2652 p_tcnv_rec => l_tcnv_rec,
2653 x_tcnv_rec => x_tcnv_rec
2654 );
2655
2656 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2657 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After update transaction: '||x_return_status);
2658 END IF;
2659 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2660 RAISE OKL_API.G_EXCEPTION_ERROR;
2661 END IF;
2662
2663 END IF;
2664 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2665 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'after first loop ');
2666 END IF;
2667
2668 --DEBUG
2669 -- PPD specific logic here
2670 IF (G_PPD_TRX_ID IS NOT NULL) THEN
2671 --
2672 -- Update Mass rebook Transaction with source trx.
2673 --
2674 okl_api.set_message('OKL', 'AM', 'Termination Trx ID: ', G_TERMINATION_TRX_ID);
2675 l_tcnv_rec.id := x_tcnv_rec.id;
2676 l_tcnv_rec.source_trx_id := G_PPD_TRX_ID;
2677 --l_tcnv_rec.source_trx_type := G_PPD_TRX_TYPE;
2678 l_tcnv_rec.source_trx_type := 'TCN';
2679 G_MASS_RBK_TRX_ID := x_tcnv_rec.id;
2680
2681 Okl_Trx_Contracts_Pub.update_trx_contracts(
2682 p_api_version => l_api_version,
2683 p_init_msg_list => OKL_API.G_FALSE,
2684 x_return_status => x_return_status,
2685 x_msg_count => x_msg_count,
2686 x_msg_data => x_msg_data,
2687 p_tcnv_rec => l_tcnv_rec,
2688 x_tcnv_rec => x_tcnv_rec
2689 );
2690
2691 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2692 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After update transaction: '||x_return_status);
2693 END IF;
2694 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2695 RAISE OKL_API.G_EXCEPTION_ERROR;
2696 END IF;
2697
2698 END IF;
2699
2700 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2701 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'after second loop ');
2702 END IF;
2703 --
2704 -- Fix Bug# 2894810
2705 -- Create reversal journal entries before
2706 -- modifying the contract. This will help
2707 -- successfully reverse the current JE
2708 --
2709
2710 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2711 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Transaction date: '||l_transaction_date);
2712 END IF;
2713 -- Bug#4542290 - smadhava - 01-SEP-2005 - Added - Start
2714 -- Bypass accoutning call for source transaction = Loan/Principal Pay down or Partial termination
2715 IF ( G_PPD_TRX_ID IS NULL AND G_TERMINATION_TRX_ID IS NULL ) THEN
2716 -- Bug#4542290 - smadhava - 01-SEP-2005 - Added - End
2717
2718 --ndani - 20-Mar-2013, Start - Mass Rebook accounting fix
2719 --Bug# 16526329 : Accounting Booking : Booking to make two accounting calls
2720
2721 -- Cursor called to check whether contract is mixed contract or not
2722 OPEN l_chk_con_csr (p_khr_id);
2723 FETCH l_chk_con_csr
2724 INTO l_chk_contract_count;
2725 CLOSE l_chk_con_csr;
2726
2727 l_acct_trans_type := 'Rebook';
2728
2729 -- if mixed contract call okl_la_je_pvt.generate_journal_entries for 'Release' seperately
2730 IF (l_chk_contract_count = 2) THEN
2731 l_acc_call_rel_flag := 'Y';
2732
2733 ELSE
2734 -- Cursor to check re-leased asset, if released then assign l_acct_trans_type for Release asset contract
2735 OPEN l_con_rel_csr (p_khr_id);
2736 FETCH l_con_rel_csr
2737 INTO l_con_rel_flag;
2738 CLOSE l_con_rel_csr;
2739
2740 IF (NVL (l_con_rel_flag,'N') = 'Y') THEN
2741 l_acct_trans_type := 'Rebook-Release';
2742 END IF;
2743 END IF;
2744
2745 --Bug# 16526329 , End
2746 --ndani - 20-Mar-2013, End - Mass Rebook accounting fix
2747
2748 OKL_LA_JE_PVT.GENERATE_JOURNAL_ENTRIES(
2749 p_api_version => l_api_version,
2750 p_init_msg_list => OKL_API.G_FALSE,
2751 p_commit => OKL_API.G_FALSE,
2752 p_contract_id => p_khr_id,
2753 p_transaction_type => l_acct_trans_type,--'Rebook',--ndani - 20-Mar-2013, Bug# 16526329- Mass Rebook accounting fix
2754 p_transaction_date => l_transaction_date, --trunc(SYSDATE),
2755 p_draft_yn => OKL_API.G_FALSE,
2756 x_return_status => x_return_status,
2757 x_msg_count => x_msg_count,
2758 x_msg_data => x_msg_data
2759 );
2760
2761 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2762 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'after generate journal entries ');
2763 END IF;
2764 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2765 RAISE rebook_contract_failed;
2766 END IF;
2767
2768 --ndani - 20-Mar-2013, Start - Mass Rebook accounting fix
2769 --Bug# 16526329 : Accounting Booking : Booking to make two accounting calls for reversal of
2770 -- 'Booking' and 'Release'
2771 -- Calling okl_la_je_pvt.generate_journal_entries() when Contract
2772 -- is created as mixed contract
2773
2774 IF l_acc_call_rel_flag = 'Y' THEN
2775
2776 OKL_LA_JE_PVT.GENERATE_JOURNAL_ENTRIES(
2777 p_api_version => l_api_version,
2778 p_init_msg_list => OKL_API.G_FALSE,
2779 p_commit => OKL_API.G_FALSE,
2780 p_contract_id => p_khr_id,
2781 p_transaction_type => 'Rebook-Release',
2782 p_transaction_date => l_transaction_date, --trunc(SYSDATE),
2783 p_draft_yn => OKL_API.G_FALSE,
2784 x_return_status => x_return_status,
2785 x_msg_count => x_msg_count,
2786 x_msg_data => x_msg_data
2787 );
2788
2789 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2790 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'after generate journal entries ');
2791 END IF;
2792 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2793 RAISE rebook_contract_failed;
2794 END IF;
2795
2796 END IF;
2797 --Bug# 16526329 , End
2798 --ndani - 20-Mar-2013, End - Mass Rebook accounting fix
2799
2800 -- Bug#4542290 - smadhava - 01-SEP-2005 - Added - Start
2801 END IF; -- end of check for the source transaction
2802 -- Bug#4542290 - smadhava - 01-SEP-2005 - Added - End
2803
2804
2805 -- Update contract according to parameter specified
2806 populate_asset_change(
2807 x_return_status => x_return_status,
2808 x_msg_count => x_msg_count,
2809 x_msg_data => x_msg_data,
2810 p_request_name => l_request_name,
2811 p_online_yn => p_online_yn,
2812 p_khr_id => p_khr_id,
2813 p_kle_tbl => p_kle_tbl,
2814 p_line_count => p_line_count,
2815 p_book_type_code => p_book_type_code,
2816 p_deprn_method_code => p_deprn_method_code,
2817 p_in_service_date => p_in_service_date,
2818 p_life_in_months => p_life_in_months,
2819 p_basic_rate => p_basic_rate,
2820 p_adjusted_rate => p_adjusted_rate,
2821 p_transaction_date => l_transaction_date
2822 );
2823
2824 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2825 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'after populate asset change ');
2826 END IF;
2827 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2828 RAISE rebook_contract_failed;
2829 END IF;
2830
2831 --
2832 -- Update RESIDUAL_VALUE if asked for ...
2833 --
2834 IF (p_residual_value IS NOT NULL) THEN
2835 update_residual_value(
2836 x_return_status => x_return_status,
2837 x_msg_count => x_msg_count,
2838 x_msg_data => x_msg_data,
2839 p_kle_tbl => p_kle_tbl,
2840 p_residual_value => p_residual_value
2841 );
2842
2843 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2844 RAISE rebook_contract_failed;
2845 END IF;
2846 END IF;
2847
2848 --
2849 -- Update SLH, SLL if provided, only for Non-OnLine process
2850 --
2851 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2852 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'before calling update_ppd_amount');
2853 END IF;
2854 IF (p_online_yn = 'N'
2855 AND
2856 p_strm_lalevl_tbl.COUNT > 0) THEN
2857 IF (G_PPD_TRX_ID IS NOT NULL) THEN
2858 update_ppd_amount(
2859 x_return_status => x_return_status,
2860 x_msg_count => x_msg_count,
2861 x_msg_data => x_msg_data,
2862 p_khr_id => p_khr_id,
2863 p_kle_tbl => p_kle_tbl,
2864 p_strm_lalevl_tbl => p_strm_lalevl_tbl
2865 );
2866 ELSE
2867 update_slh_sll(
2868 x_return_status => x_return_status,
2869 x_msg_count => x_msg_count,
2870 x_msg_data => x_msg_data,
2871 p_khr_id => p_khr_id,
2872 p_kle_tbl => p_kle_tbl,
2873 p_strm_lalevl_tbl => p_strm_lalevl_tbl
2874 );
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,'after calling update_ppd_amount');
2879 END IF;
2880 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2881 RAISE rebook_contract_failed;
2882 END IF;
2883 END IF;
2884
2885 --
2886 -- Bug# 2843007, 14-MAR-2003
2887 -- Call Insurance API for asset termination
2888 --
2889 --Bug#5955320
2890 OKL_INSURANCE_POLICIES_PUB.cancel_create_policies(
2891 p_api_version => 1.0,
2892 p_init_msg_list => OKL_API.G_FALSE,
2893 x_return_status => x_return_status,
2894 x_msg_count => x_msg_count,
2895 x_msg_data => x_msg_data,
2896 p_khr_id => p_khr_id,
2897 p_cancellation_date => l_transaction_date, --SYSDATE
2898 --Bug# 4055812
2899 --Bug# 3945995
2900 p_transaction_id => G_MASS_RBK_TRX_ID,
2901 x_ignore_flag => x_ignore_flag
2902 );
2903
2904 IF (x_return_status = OKL_API.G_RET_STS_ERROR) then
2905 IF (x_ignore_flag = OKL_API.G_FALSE) THEN
2906 raise rebook_contract_failed;
2907 ELSE
2908 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2909 END IF;
2910 ELSIF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
2911 raise rebook_contract_failed;
2912 END IF;
2913
2914 -- Run QA Checker
2915
2916 get_qcl_id(
2917 x_return_status => x_return_status,
2918 p_qcl_name => 'OKL LA QA CHECK LIST',
2919 x_qcl_id => l_qcl_id
2920 );
2921
2922 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2923 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Running QA Checker...');
2924 END IF;
2925 l_qa_check_status := 'S';
2926 okl_contract_book_pub.execute_qa_check_list(
2927 p_api_version => 1.0,
2928 p_init_msg_list => OKL_API.G_FALSE,
2929 x_return_status => x_return_status,
2930 x_msg_count => x_msg_count,
2931 x_msg_data => x_msg_data,
2932 p_qcl_id => l_qcl_id,
2933 p_chr_id => p_khr_id,
2934 x_msg_tbl => l_msg_tbl
2935 );
2936
2937 FOR i IN 1..l_msg_tbl.LAST
2938 LOOP
2939 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2940 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Name : '||l_msg_tbl(i).name);
2941 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Description : '||l_msg_tbl(i).description);
2942 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Error Status: '||l_msg_tbl(i).error_status);
2943 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Data : '||l_msg_tbl(i).data);
2944 END IF;
2945
2946 IF (l_msg_tbl(i).error_status = 'E') THEN
2947 l_qa_check_status := 'E';
2948 END IF;
2949 END LOOP;
2950
2951 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2952 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After 1st Qa Checker '|| l_qa_check_status);
2953 END IF;
2954
2955 IF (l_qa_check_status <> 'S') THEN
2956 RAISE rebook_contract_failed;
2957 END IF;
2958
2959 -- R12B Authoring OA Migration
2960 -- Upfront Tax Calculation has been moved out of QA Checker.
2961 -- For Mass Rebook, Upfront Tax calculation will not be performed.
2962 -- The below call will only update the status of the Calculate Upfront Tax
2963 -- task to Complete.
2964 OKL_CONTRACT_BOOK_PVT.calculate_upfront_tax(
2965 p_api_version => 1.0,
2966 p_init_msg_list => OKL_API.G_FALSE,
2967 x_return_status => x_return_status,
2968 x_msg_count => x_msg_count,
2969 x_msg_data => x_msg_data,
2970 p_chr_id => p_khr_id,
2971 x_process_status => l_upfront_tax_status);
2972
2973 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2974 RAISE rebook_contract_failed;
2975 END IF;
2976
2977 -- Generate Stream
2978 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2979 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Submitting Request to generate Streams....');
2980 END IF;
2981 -- Changed to handle internal and external streams as well
2982 -- Fix Bug#
2983 --OKL_GENERATE_STREAMS_PUB.GENERATE_STREAMS(
2984 --
2985 OKL_LA_STREAM_PUB.GEN_INTR_EXTR_STREAM (
2986 p_api_version => 1.0,
2987 p_init_msg_list => OKL_API.G_FALSE,
2988 p_khr_id => p_khr_id,
2989 p_generation_ctx_code => 'AUTH',
2990 x_trx_number => x_trx_number,
2991 x_trx_status => x_trx_status,
2992 x_return_status => x_return_status,
2993 x_msg_count => x_msg_count,
2994 x_msg_data => x_msg_data
2995 );
2996
2997 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2998 RAISE rebook_contract_failed;
2999 END IF;
3000
3001 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3002 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Stream Status :'||x_return_status);
3003 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Trx# : '||x_trx_number);
3004 END IF;
3005
3006 g_stream_trx_number := x_trx_number;
3007
3008 RETURN;
3009
3010 EXCEPTION
3011
3012 WHEN rebook_contract_failed THEN
3013 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3014 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rebook_contract_failed');
3015 END IF;
3016 g_stream_trx_number := NULL;
3017 x_return_status := OKL_API.G_RET_STS_ERROR;
3018 --raise; -- propagate error to caller
3019 WHEN others THEN
3020 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3021 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rebook_contract_failed');
3022 END IF;
3023 g_stream_trx_number := NULL;
3024 x_return_status := OKL_API.G_RET_STS_ERROR;
3025 --raise; -- propagate error to caller
3026
3027 END rebook_contract;
3028
3029 ------------------------------------------------------------------------------
3030 -- PROCEDURE update_mass_rbk_contract
3031 -- Call this process to update selected contracts. This process updates
3032 -- selected_flag and status of contract provided as parameter
3033 -- Calls:
3034 -- Called by:
3035 ------------------------------------------------------------------------------
3036 PROCEDURE update_mass_rbk_contract(
3037 p_api_version IN NUMBER,
3038 p_init_msg_list IN VARCHAR2,
3039 x_return_status OUT NOCOPY VARCHAR2,
3040 x_msg_count OUT NOCOPY NUMBER,
3041 x_msg_data OUT NOCOPY VARCHAR2,
3042 p_mstv_tbl IN MSTV_TBL_TYPE,
3043 x_mstv_tbl OUT NOCOPY MSTV_TBL_TYPE
3044 ) IS
3045
3046 l_api_name VARCHAR2(35) := 'update_mass_rbk_contract';
3047 l_proc_name VARCHAR2(35) := 'UPDATE_MASS_RBK_CONTRACT';
3048 l_api_version NUMBER := 1.0;
3049
3050 CURSOR rbk_csr (p_request_name OKL_RBK_SELECTED_CONTRACT.REQUEST_NAME%TYPE,
3051 p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
3052 SELECT id
3053 FROM okl_rbk_selected_contract
3054 WHERE khr_id = p_chr_id
3055 AND request_name = p_request_name;
3056
3057 l_mstv_upd_tbl mstv_tbl_type;
3058 x_mstv_upd_tbl mstv_tbl_type;
3059 l_upd_count NUMBER := 0;
3060
3061 update_failed EXCEPTION;
3062
3063 BEGIN
3064 IF (G_DEBUG_ENABLED = 'Y') THEN
3065 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
3066 END IF;
3067 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3068 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
3069 END IF;
3070 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3071
3072 -- call START_ACTIVITY to create savepoint, check compatibility
3073 -- and initialize message list
3074 x_return_status := OKL_API.START_ACTIVITY(
3075 p_api_name => l_api_name,
3076 p_pkg_name => G_PKG_NAME,
3077 p_init_msg_list => p_init_msg_list,
3078 l_api_version => l_api_version,
3079 p_api_version => p_api_version,
3080 p_api_type => G_API_TYPE,
3081 x_return_status => x_return_status);
3082
3083 -- check if activity started successfully
3084 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3085 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3086 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3087 raise OKL_API.G_EXCEPTION_ERROR;
3088 END IF;
3089
3090 l_upd_count := 1;
3091 FOR i IN 1..p_mstv_tbl.COUNT
3092 LOOP
3093 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3094 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ID :'||p_mstv_tbl(i).id);
3095 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'KHR_ID :'||p_mstv_tbl(i).khr_id);
3096 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'REQ :'||p_mstv_tbl(i).request_name);
3097 END IF;
3098
3099 FOR rbk_rec IN rbk_csr(p_mstv_tbl(i).request_name,
3100 p_mstv_tbl(i).khr_id)
3101 LOOP
3102 l_mstv_upd_tbl(l_upd_count).id := rbk_rec.id;
3103 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3104 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ID :'||l_mstv_upd_tbl(l_upd_count).id);
3105 END IF;
3106 --insert into dd_dummy values (3.1, 'ID: '||l_mstv_upd_tbl(l_upd_count).id);
3107 l_mstv_upd_tbl(l_upd_count).selected_flag := p_mstv_tbl(i).selected_flag;
3108 l_mstv_upd_tbl(l_upd_count).status := p_mstv_tbl(i).status;
3109 l_upd_count := l_upd_count+ 1;
3110 END LOOP;
3111 END LOOP;
3112
3113 okl_mst_pvt.update_row(
3114 p_api_version => p_api_version,
3115 p_init_msg_list => p_init_msg_list,
3116 x_return_status => x_return_status,
3117 x_msg_count => x_msg_count,
3118 x_msg_data => x_msg_data,
3119 p_mstv_tbl => l_mstv_upd_tbl,
3120 x_mstv_tbl => x_mstv_upd_tbl
3121 );
3122
3123 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3124 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3125 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3126 raise OKL_API.G_EXCEPTION_ERROR;
3127 END IF;
3128
3129 --insert into dd_dummy values (3.2, 'After update');
3130 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
3131 x_msg_data => x_msg_data);
3132
3133 RETURN;
3134
3135 EXCEPTION
3136 WHEN update_failed THEN
3137 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3138
3139 when OKL_API.G_EXCEPTION_ERROR then
3140 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3141 p_api_name => l_api_name,
3142 p_pkg_name => G_PKG_NAME,
3143 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
3144 x_msg_count => x_msg_count,
3145 x_msg_data => x_msg_data,
3146 p_api_type => G_API_TYPE);
3147
3148 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
3149 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3150 p_api_name => l_api_name,
3151 p_pkg_name => G_PKG_NAME,
3152 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
3153 x_msg_count => x_msg_count,
3154 x_msg_data => x_msg_data,
3155 p_api_type => G_API_TYPE);
3156
3157 when OTHERS then
3158 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3159 p_api_name => l_api_name,
3160 p_pkg_name => G_PKG_NAME,
3161 p_exc_name => 'OTHERS',
3162 x_msg_count => x_msg_count,
3163 x_msg_data => x_msg_data,
3164 p_api_type => G_API_TYPE);
3165 END update_mass_rbk_contract;
3166
3167 ------------------------------------------------------------------------------
3168 -- PROCEDURE update_trx_asset
3169 -- Call this process to update status (TSU_CODE) of okl_trx_assets_v with
3170 -- p_status.
3171 -- Calls:
3172 -- Called by:
3173 ------------------------------------------------------------------------------
3174 PROCEDURE update_trx_asset(
3175 x_return_status OUT NOCOPY VARCHAR2,
3176 x_msg_count OUT NOCOPY NUMBER,
3177 x_msg_data OUT NOCOPY VARCHAR2,
3178 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
3179 p_status IN VARCHAR2
3180 ) IS
3181 --Bug# 3521126 :
3182 /*--modified cursor to change only status of current transaction--
3183 --CURSOR trx_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
3184 --SELECT txl.tas_id
3185 --FROM okl_txl_assets_v txl
3186 --WHERE txl.dnz_khr_id = p_chr_id
3187 --AND EXISTS (SELECT 'Y'
3188 --FROM okl_trx_assets_v trx
3189 --WHERE trx.id = txl.tas_id
3190 --AND trx.tsu_code = 'ENTERED');
3191 ---------------------------------------------------------------*/
3192 CURSOR trx_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
3193 SELECT trx.id
3194 FROM okl_trx_assets trx,
3195 okl_trx_types_tl ttyp,
3196 okl_txl_assets_b txl
3197 WHERE trx.id = txl.tas_id
3198 AND trx.try_id = ttyp.id
3199 AND trx.tas_type = 'CRB'
3200 AND trx.tsu_code = 'ENTERED'
3201 AND ttyp.name = 'Rebook'
3202 AND ttyp.language = 'US'
3203 AND txl.tal_type = 'CRB'
3204 AND txl.dnz_khr_id = p_chr_id;
3205
3206 l_thpv_rec thpv_rec_type;
3207 x_thpv_rec thpv_rec_type;
3208
3209 BEGIN
3210
3211 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3212
3213 FOR trx_rec IN trx_csr(p_chr_id)
3214 LOOP
3215 l_thpv_rec.id := trx_rec.id;
3216 l_thpv_rec.tsu_code := p_status;
3217
3218 okl_trx_assets_pub.update_trx_ass_h_def(
3219 p_api_version => 1.0,
3220 p_init_msg_list => OKL_API.G_FALSE,
3221 x_return_status => x_return_status,
3222 x_msg_count => x_msg_count,
3223 x_msg_data => x_msg_data,
3224 p_thpv_rec => l_thpv_rec,
3225 x_thpv_rec => x_thpv_rec
3226 );
3227
3228 END LOOP;
3229
3230 END update_trx_asset;
3231
3232 -- Bug# 4398936
3233 PROCEDURE process_securitization_stream(p_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
3234 p_rbk_trx_id IN NUMBER,
3235 x_return_status OUT NOCOPY VARCHAR2,
3236 x_msg_count OUT NOCOPY NUMBER,
3237 x_msg_data OUT NOCOPY VARCHAR2)
3238 IS
3239
3240 l_api_name VARCHAR2(35) := 'process_securitization_stream';
3241 l_proc_name VARCHAR2(35) := 'process_securitization_stream';
3242 l_api_version CONSTANT NUMBER := 1;
3243
3244 CURSOR l_okl_trbk_txn_csr
3245 IS
3246 SELECT date_transaction_occurred
3247 FROM okl_trx_contracts
3248 WHERE id = p_rbk_trx_id;
3249
3250 CURSOR l_okl_tcn_type_csr
3251 IS
3252 SELECT trxp.tcn_type,
3253 trxp.qte_id,
3254 trxp.date_transaction_occurred,
3255 qtev.qtp_code
3256 FROM okl_trx_contracts trxp,
3257 okl_trx_contracts trxc,
3258 okl_trx_quotes_v qtev
3259 WHERE trxp.id = trxc.source_trx_id
3260 AND trxc.id = p_rbk_trx_id
3261 AND trxc.tsu_code <> 'PROCESSED'
3262 AND qtev.id = trxp.qte_id;
3263
3264
3265
3266 --Bug 6740000 ssdeshpa start
3267 --Changed Stream Type Subclass to 'INVESTOR_DISBURSEMENT'
3268 CURSOR disb_strm_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
3269 SELECT strm.id
3270 FROM okl_streams strm,
3271 okl_strm_type_v TYPE
3272 WHERE TYPE.id = strm.sty_id
3273 AND TYPE.stream_type_subclass = 'INVESTOR_DISBURSEMENT'
3274 AND strm.khr_id = p_chr_id
3275 AND strm.say_code = 'CURR';
3276 --Bug 6740000 ssdeshpa End
3277
3278 CURSOR accu_strm_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
3279 SELECT strm.id
3280 FROM okl_streams strm,
3281 okl_strm_type_v TYPE
3282 WHERE TYPE.id = strm.sty_id
3283 AND TYPE.stream_type_purpose IN (
3284 'INVESTOR_RENTAL_ACCRUAL',
3285 'INVESTOR_PRE_TAX_INCOME',
3286 'INVESTOR_INTEREST_INCOME',
3287 'INVESTOR_VARIABLE_INTEREST'
3288 )
3289 AND strm.khr_id = p_chr_id
3290 AND strm.say_code = 'CURR';
3291
3292 CURSOR l_okl_alt_kle_csr(p_qte_id IN NUMBER)
3293 IS
3294 SELECT kle_id
3295 FROM okl_txl_quote_lines_v
3296 WHERE qte_id = p_qte_id
3297 AND qlt_code = 'AMCFIA';
3298
3299 --Bug 6740000 ssdeshpa start
3300 --Cursor to get the deal Type for Contract
3301 CURSOR get_deal_type_csr(p_chr_id OKL_K_HEADERS.ID%TYPE)
3302 IS
3303 SELECT DEAL_TYPE
3304 FROM OKL_K_HEADERS
3305 WHERE ID = p_chr_id;
3306
3307 l_deal_type OKL_K_HEADERS.DEAL_TYPE%TYPE;
3308 --Bug 6740000 ssdeshpa End
3309
3310 i NUMBER := 0;
3311 l_disb_strm_tbl OKL_STREAMS_PUB.stmv_tbl_type;
3312 x_disb_strm_tbl OKL_STREAMS_PUB.stmv_tbl_type;
3313
3314 l_accu_strm_tbl OKL_STREAMS_PUB.stmv_tbl_type;
3315 x_accu_strm_tbl OKL_STREAMS_PUB.stmv_tbl_type;
3316
3317
3318 lx_value VARCHAR2(1);
3319 lx_inv_agmt_chr_id_tbl Okl_Securitization_Pvt.inv_agmt_chr_id_tbl_type;
3320
3321 secu_failed EXCEPTION;
3322
3323 --l_stream_type_subclass okl_strm_type_b.stream_type_subclass%TYPE DEFAULT NULL;
3324 l_alt_purchase BOOLEAN := FALSE;
3325
3326 BEGIN
3327 IF (G_DEBUG_ENABLED = 'Y') THEN
3328 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
3329 END IF;
3330
3331 x_return_status := OKC_API.G_RET_STS_SUCCESS;
3332
3333 --
3334 -- Check for Securitized Contract
3335 --
3336 FOR l_okl_trbk_txn_rec IN l_okl_trbk_txn_csr
3337 LOOP
3338
3339 Okl_Securitization_Pvt.check_khr_securitized(
3340 p_api_version => 1.0,
3341 p_init_msg_list => OKC_API.G_FALSE,
3342 x_return_status => x_return_status,
3343 x_msg_count => x_msg_count,
3344 x_msg_data => x_msg_data,
3345 p_khr_id => p_chr_id,
3346 p_effective_date => l_okl_trbk_txn_rec.date_transaction_occurred,
3347 x_value => lx_value,
3348 x_inv_agmt_chr_id_tbl => lx_inv_agmt_chr_id_tbl
3349 );
3350
3351 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3352 RAISE secu_failed;
3353 END IF;
3354
3355 IF (lx_value = OKL_API.G_TRUE) THEN
3356 --
3357 -- HISTorize disbursement streams, with subclass = 'INVESTOR_DISBURSEMENT'
3358 --
3359 FOR disb_strm_rec IN disb_strm_csr (p_chr_id)
3360 LOOP
3361 i := disb_strm_csr%ROWCOUNT;
3362 l_disb_strm_tbl(i).id := disb_strm_rec.id;
3363 l_disb_strm_tbl(i).say_code := 'HIST';
3364 l_disb_strm_tbl(i).active_yn := 'N';
3365 l_disb_strm_tbl(i).date_history := SYSDATE;
3366 END LOOP;
3367
3368 IF (l_disb_strm_tbl.COUNT > 0) THEN
3369 okl_streams_pub.update_streams(
3370 p_api_version => 1.0,
3371 p_init_msg_list => OKC_API.G_FALSE,
3372 x_return_status => x_return_status,
3373 x_msg_count => x_msg_count,
3374 x_msg_data => x_msg_data,
3375 p_stmv_tbl => l_disb_strm_tbl,
3376 x_stmv_tbl => x_disb_strm_tbl
3377 );
3378
3379 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3380 RAISE secu_failed;
3381 END IF;
3382 END IF;
3383
3384 FOR l_okl_tcn_type_rec IN l_okl_tcn_type_csr
3385 LOOP
3386
3387 IF l_okl_tcn_type_rec.tcn_type = 'ALT' THEN
3388 IF l_okl_tcn_type_rec.qtp_code IN (
3389 'TER_PURCHASE', -- Termination - With Purchase
3390 'TER_ROLL_PURCHASE', -- Termination - Rollover To New Contract With Purchase
3391 'TER_RECOURSE', -- Termination - Recourse With Purchase
3392 'TER_MAN_PURCHASE' -- Termination - Manual With Purchase
3393 )
3394 THEN
3395 l_alt_purchase := TRUE;
3396 ELSE -- Termination without purchase
3397 l_alt_purchase := FALSE;
3398 END IF;
3399
3400 --Bug 6740000 ssdeshpa Start
3401 --get the Deal type for Contract
3402 OPEN get_deal_type_csr(p_chr_id);
3403 FETCH get_deal_type_csr INTO l_deal_type;
3404 CLOSE get_deal_type_csr;
3405 --Bug 6740000 ssdeshpa end
3406
3407 FOR l_okl_alt_kle_rec IN l_okl_alt_kle_csr(l_okl_tcn_type_rec.qte_id)
3408 LOOP
3409
3410 --Bug 6740000 ssdeshpa Start
3411 IF(l_deal_type IN('LEASEOP','LEASEDF','LEASEST')) THEN
3412 Okl_Securitization_Pvt.modify_pool_contents(
3413 p_api_version => 1.0,
3414 p_init_msg_list => OKC_API.G_FALSE,
3415 x_return_status => x_return_status,
3416 x_msg_count => x_msg_count,
3417 x_msg_data => x_msg_data,
3418 p_transaction_reason => Okl_Securitization_Pvt.G_TRX_REASON_ASSET_TERMINATION,
3419 p_khr_id => p_chr_id,
3420 p_kle_id => l_okl_alt_kle_rec.kle_id,
3421 p_transaction_date => l_okl_tcn_type_rec.date_transaction_occurred,
3422 p_effective_date => l_okl_tcn_type_rec.date_transaction_occurred,
3423 p_stream_type_subclass => 'RENT'
3424 );
3425 ELSIF(l_deal_type IN('LOAN', 'LOAN-REVOLVING')) THEN
3426 Okl_Securitization_Pvt.modify_pool_contents(
3427 p_api_version => 1.0,
3428 p_init_msg_list => OKC_API.G_FALSE,
3429 x_return_status => x_return_status,
3430 x_msg_count => x_msg_count,
3431 x_msg_data => x_msg_data,
3432 p_transaction_reason => Okl_Securitization_Pvt.G_TRX_REASON_ASSET_TERMINATION,
3433 p_khr_id => p_chr_id,
3434 p_kle_id => l_okl_alt_kle_rec.kle_id,
3435 p_transaction_date => l_okl_tcn_type_rec.date_transaction_occurred,
3436 p_effective_date => l_okl_tcn_type_rec.date_transaction_occurred,
3437 p_stream_type_subclass => 'LOAN_PAYMENT'
3438 );
3439 END IF;
3440 --Bug 6740000 ssdeshpa End
3441 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3442 RAISE secu_failed;
3443 END IF;
3444
3445 IF l_alt_purchase THEN
3446 Okl_Securitization_Pvt.modify_pool_contents(
3447 p_api_version => 1.0,
3448 p_init_msg_list => OKC_API.G_FALSE,
3449 x_return_status => x_return_status,
3450 x_msg_count => x_msg_count,
3451 x_msg_data => x_msg_data,
3452 p_transaction_reason => Okl_Securitization_Pvt.G_TRX_REASON_ASSET_DISPOSAL,
3453 p_khr_id => p_chr_id,
3454 p_kle_id => l_okl_alt_kle_rec.kle_id,
3455 p_transaction_date => l_okl_tcn_type_rec.date_transaction_occurred,
3456 p_effective_date => l_okl_tcn_type_rec.date_transaction_occurred,
3457 p_stream_type_subclass => 'RESIDUAL'
3458 );
3459 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3460 RAISE secu_failed;
3461 END IF;
3462 END IF;
3463
3464 END LOOP; -- l_okl_alt_kle_rec
3465
3466 END IF; -- l_okl_tcn_type_rec.tcn_type = 'ALT'
3467
3468
3469
3470 END LOOP; -- l_okl_tcn_type_csr
3471
3472
3473
3474 --
3475 -- Create Pool transaction for Mass Rebook
3476 --
3477 Okl_Securitization_Pvt.modify_pool_contents(
3478 p_api_version => 1.0,
3479 p_init_msg_list => OKC_API.G_FALSE,
3480 x_return_status => x_return_status,
3481 x_msg_count => x_msg_count,
3482 x_msg_data => x_msg_data,
3483 p_transaction_reason => Okl_Securitization_Pvt.G_TRX_REASON_CONTRACT_REBOOK,
3484 p_khr_id => p_chr_id,
3485 p_transaction_date => l_okl_trbk_txn_rec.date_transaction_occurred,
3486 p_effective_date => l_okl_trbk_txn_rec.date_transaction_occurred
3487 );
3488
3489 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3490 RAISE secu_failed;
3491 END IF;
3492
3493 -- Bug# 4775555: Start
3494 -- Accrual Streams will now be Historized in OKL_ACCRUAL_SEC_PVT.CREATE_STREAMS
3495 -- This API will create the new accrual streams, link the old and new streams
3496 -- and then Historize the old streams
3497 /*
3498 --
3499 -- HISTorize accrual streams
3500 --
3501 FOR accu_strm_rec IN accu_strm_csr (p_chr_id)
3502 LOOP
3503 i := accu_strm_csr%ROWCOUNT;
3504 l_accu_strm_tbl(i).id := accu_strm_rec.id;
3505 l_accu_strm_tbl(i).say_code := 'HIST';
3506 l_accu_strm_tbl(i).active_yn := 'N';
3507 END LOOP;
3508
3509 IF (l_accu_strm_tbl.COUNT > 0) THEN
3510 okl_streams_pub.update_streams(
3511 p_api_version => 1.0,
3512 p_init_msg_list => OKC_API.G_FALSE,
3513 x_return_status => x_return_status,
3514 x_msg_count => x_msg_count,
3515 x_msg_data => x_msg_data,
3516 p_stmv_tbl => l_accu_strm_tbl,
3517 x_stmv_tbl => x_accu_strm_tbl
3518 );
3519
3520 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3521 RAISE secu_failed;
3522 END IF;
3523 END IF;
3524 */
3525 -- Bug# 4775555: End
3526
3527 --
3528 -- Regenerate disbursement streams
3529 --
3530 okl_stream_generator_pvt.create_disb_streams(
3531 p_api_version => 1.0,
3532 p_init_msg_list => OKC_API.G_FALSE,
3533 x_return_status => x_return_status,
3534 x_msg_count => x_msg_count,
3535 x_msg_data => x_msg_data,
3536 p_contract_id => p_chr_id
3537 );
3538
3539 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3540 RAISE secu_failed;
3541 END IF;
3542
3543 -- Bug# 4775555
3544 --
3545 -- Regenerate Present Value Disbursement streams
3546 --
3547 okl_stream_generator_pvt.create_pv_streams(
3548 p_api_version => 1.0,
3549 p_init_msg_list => OKC_API.G_FALSE,
3550 x_return_status => x_return_status,
3551 x_msg_count => x_msg_count,
3552 x_msg_data => x_msg_data,
3553 p_contract_id => p_chr_id
3554 );
3555
3556 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3557 RAISE secu_failed;
3558 END IF;
3559 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3560 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After regerating Present Value Disbursement streams');
3561 END IF;
3562
3563 --
3564 -- Generate Investor accrual streams
3565 --
3566 OKL_ACCRUAL_SEC_PVT.CREATE_STREAMS(
3567 p_api_version => 1.0,
3568 p_init_msg_list => OKL_API.G_FALSE,
3569 x_return_status => x_return_status,
3570 x_msg_count => x_msg_count,
3571 x_msg_data => x_msg_data,
3572 p_khr_id => p_chr_id
3573 );
3574
3575 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3576 RAISE secu_failed;
3577 END IF;
3578
3579
3580 END IF;
3581 END LOOP; -- l_okl_trbk_txn_csr
3582 RETURN;
3583
3584 EXCEPTION
3585 WHEN secu_failed THEN
3586 NULL; -- excception is handled by caller
3587
3588 WHEN OTHERS THEN
3589 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3590 p_api_name => l_api_name,
3591 p_pkg_name => G_PKG_NAME,
3592 p_exc_name => 'OTHERS',
3593 x_msg_count => x_msg_count,
3594 x_msg_data => x_msg_data,
3595 p_api_type => G_API_TYPE);
3596
3597 END process_securitization_stream;
3598 -- Bug# 4398936
3599
3600 -- Bug# 5038395
3601 ------------------------------------------------------------------------------
3602 -- PROCEDURE mass_rebook_activate
3603 -- This procedure performs Approval and Activation for Mass rebook. This will
3604 -- be called from mass_rebook_after_yield that is called by Stream generation
3605 -- process after completing stream generation during mass rebook. This procedure
3606 -- will also be called from Submit button on Contract Booking UI if the user
3607 -- is trying to activate a contract for which Mass rebook is in progress.
3608 -- Calls:
3609 -- Called by:
3610 ------------------------------------------------------------------------------
3611 PROCEDURE mass_rebook_activate(
3612 p_api_version IN NUMBER,
3613 p_init_msg_list IN VARCHAR2,
3614 x_return_status OUT NOCOPY VARCHAR2,
3615 x_msg_count OUT NOCOPY NUMBER,
3616 x_msg_data OUT NOCOPY VARCHAR2,
3617 p_chr_id IN NUMBER
3618 ) IS
3619
3620 l_api_name VARCHAR2(35) := 'mass_rebook_activate';
3621 l_proc_name VARCHAR2(35) := 'MASS_REBOOK_ACTIVATE';
3622 l_api_version NUMBER := 1.0;
3623
3624 CURSOR check_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
3625 SELECT DISTINCT
3626 A.REQUEST_NAME,
3627 A.KHR_ID,
3628 A.TRANSACTION_ID,
3629 --Bug# 4107330
3630 A.TRANSACTION_DATE,
3631 B.MULTI_GAAP_YN, -- MGAAP 7263041
3632 C.REPORTING_PDT_ID -- MGAAP 7263041
3633 FROM okl_rbk_selected_contract A,
3634 okl_k_headers B,
3635 okl_products C
3636 WHERE A.khr_id = p_chr_id
3637 AND NVL(A.status,'NEW') = 'UNDER REVISION'
3638 AND A.KHR_ID = B.ID -- MGAAP 7263041
3639 AND B.PDT_ID = C.ID; -- MGAAP 7263041
3640 --AND NVL(status,'NEW') <> 'PROCESSED';
3641
3642
3643 CURSOR parent_trx_csr (p_trx_id NUMBER) IS
3644 SELECT source_trx_id, source_trx_type
3645 FROM okl_trx_contracts
3646 WHERE id = p_trx_id
3647 AND tsu_code <> 'PROCESSED';
3648
3649 CURSOR parent_tcn_type_csr (p_trx_id NUMBER) IS
3650 select tcn_type
3651 from okl_trx_contracts
3652 where id = p_trx_id;
3653
3654 l_rbk_id okl_rbk_selected_contract.id%TYPE;
3655 l_rbk_khr_id okl_rbk_selected_contract.khr_id%TYPE;
3656 l_rbk_transaction_id okl_rbk_selected_contract.transaction_id%TYPE;
3657
3658 -- MGAAP start 7263041
3659 l_multi_gaap_yn okl_k_headers.multi_gaap_yn%TYPE;
3660 l_reporting_pdt_id okl_products.reporting_pdt_id%TYPE;
3661 -- MGAAP end 7263041
3662
3663 --Bug# 4107330
3664 l_rbk_trx_date okl_rbk_selected_contract.transaction_date%TYPE;
3665 l_request_name okl_rbk_selected_contract.request_name%TYPE;
3666
3667 l_parent_tcn_type okl_trx_contracts.tcn_type%TYPE;
3668 l_mstv_tbl mstv_tbl_type;
3669 x_mstv_tbl mstv_tbl_type;
3670
3671 l_tcnv_rec tcnv_rec_type;
3672 x_tcnv_rec tcnv_rec_type;
3673
3674 l_am_tcnv_rec tcnv_rec_type;
3675 x_am_tcnv_rec tcnv_rec_type;
3676
3677 not_to_process EXCEPTION;
3678
3679 -- dedey,Bug#4264314
3680 lx_trx_number OKL_TRX_CONTRACTS.trx_number%TYPE := null; -- MGAAP 7263041
3681 l_accrual_rec OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type;
3682 l_stream_tbl OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type;
3683 -- dedey,Bug#4264314
3684
3685 --Bug# 4775555
3686 l_inv_accrual_rec OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type;
3687 l_inv_stream_tbl OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type;
3688
3689 --Bug# 9191475
3690 lx_trxnum_tbl OKL_GENERATE_ACCRUALS_PVT.trxnum_tbl_type;
3691 l_trxnum_init_tbl OKL_GENERATE_ACCRUALS_PVT.trxnum_tbl_type;
3692
3693 BEGIN
3694 IF (G_DEBUG_ENABLED = 'Y') THEN
3695 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
3696 END IF;
3697
3698 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3699 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
3700 END IF;
3701 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3702
3703 -- call START_ACTIVITY to create savepoint, check compatibility
3704 -- and initialize message list
3705 x_return_status := OKL_API.START_ACTIVITY(
3706 p_api_name => l_api_name,
3707 p_pkg_name => G_PKG_NAME,
3708 p_init_msg_list => p_init_msg_list,
3709 l_api_version => l_api_version,
3710 p_api_version => p_api_version,
3711 p_api_type => G_API_TYPE,
3712 x_return_status => x_return_status);
3713
3714 -- check if activity started successfully
3715 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3716 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3717 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3718 raise OKL_API.G_EXCEPTION_ERROR;
3719 END IF;
3720
3721 --
3722 -- Check contract for Mass Rebook
3723 --
3724 OPEN check_csr(p_chr_id);
3725 --Bug# 4107330
3726 FETCH check_csr INTO l_request_name,
3727 l_rbk_khr_id,
3728 l_rbk_transaction_id,
3729 l_rbk_trx_date,
3730 l_multi_gaap_yn, -- MGAAP 7263041
3731 l_reporting_pdt_id; -- MGAAP 7263041
3732 IF check_csr%NOTFOUND THEN
3733 RAISE not_to_process; -- Not a candidate for mass re-book
3734 END IF;
3735 CLOSE check_csr;
3736
3737 --insert into dd_dummy values (1, 'Selected for Mass rebook');
3738
3739 --
3740 -- Process after Yield for this contract
3741 --
3742 --debug_message('Submit for Approval...');
3743 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3744 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Approve Contract...');
3745 END IF;
3746 --Bug# 2566822 : Integration with AME/WF for approval
3747 --okl_contract_book_pub.submit_for_approval(
3748 okl_contract_book_pvt.approve_contract(
3749 p_api_version => p_api_version,
3750 p_init_msg_list => p_init_msg_list,
3751 x_return_status => x_return_status,
3752 x_msg_count => x_msg_count,
3753 x_msg_data => x_msg_data,
3754 p_chr_id => p_chr_id
3755 );
3756
3757 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3758 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3759 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3760 RAISE Okl_Api.G_EXCEPTION_ERROR;
3761 END IF;
3762
3763 -- dedey,Bug#4264314
3764
3765 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS; -- MGAAP 7263041
3766 OKL_CONTRACT_REBOOK_PVT.calc_accrual_adjustment(
3767 p_api_version => p_api_version,
3768 p_init_msg_list => p_init_msg_list,
3769 x_return_status => x_return_status,
3770 x_msg_count => x_msg_count,
3771 x_msg_data => x_msg_data,
3772 p_rbk_khr_id => p_chr_id,
3773 p_orig_khr_id => p_chr_id,
3774 p_trx_id => l_rbk_transaction_id,
3775 p_trx_date => sysdate, -- 4583578 passing sysdate instead of rebook date
3776 x_accrual_rec => l_accrual_rec,
3777 x_stream_tbl => l_stream_tbl);
3778
3779 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3780 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3781 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3782 RAISE Okl_Api.G_EXCEPTION_ERROR;
3783 END IF;
3784
3785 -- dedey,Bug#4264314
3786
3787 -- Bug# 4398936
3788 --
3789 -- Securitization stream processing
3790 --
3791 process_securitization_stream(p_chr_id => p_chr_id,
3792 p_rbk_trx_id => l_rbk_transaction_id,
3793 x_return_status => x_return_status,
3794 x_msg_count => x_msg_count,
3795 x_msg_data => x_msg_data);
3796
3797 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3798 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3799 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3800 raise OKL_API.G_EXCEPTION_ERROR;
3801 END IF;
3802 -- Bug# 4398936
3803
3804 --insert into dd_dummy values (2, 'Approval Done');
3805 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3806 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Submit for Activation ...');
3807 END IF;
3808
3809 okl_contract_book_pub.activate_contract(
3810 p_api_version => p_api_version,
3811 p_init_msg_list => p_init_msg_list,
3812 x_return_status => x_return_status,
3813 x_msg_count => x_msg_count,
3814 x_msg_data => x_msg_data,
3815 p_chr_id => p_chr_id
3816 );
3817
3818 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3819 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3820 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3821 raise OKL_API.G_EXCEPTION_ERROR;
3822 END IF;
3823
3824 -- R12B Authoring OA Migration
3825 -- Update the status of the Submit Contract task to Complete
3826 OKL_BOOK_CONTROLLER_PVT.update_book_controller_trx(
3827 p_api_version => p_api_version,
3828 p_init_msg_list => p_init_msg_list,
3829 x_return_status => x_return_status,
3830 x_msg_count => x_msg_count,
3831 x_msg_data => x_msg_data,
3832 p_khr_id => p_chr_id ,
3833 p_prog_short_name => OKL_BOOK_CONTROLLER_PVT.G_SUBMIT_CONTRACT,
3834 p_progress_status => OKL_BOOK_CONTROLLER_PVT.G_PROG_STS_COMPLETE);
3835
3836 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3837 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3838 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3839 raise OKL_API.G_EXCEPTION_ERROR;
3840 END IF;
3841
3842 --insert into dd_dummy values (3, 'Activation Done');
3843 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3844 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Activation Done');
3845 END IF;
3846
3847 -- Bug# 4775555: Start
3848 --
3849 -- Create Investor Disbursement Adjustment
3850 --
3851 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3852 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before call create_inv_disb_adjustment');
3853 END IF;
3854 OKL_CONTRACT_REBOOK_PVT.create_inv_disb_adjustment(
3855 p_api_version => p_api_version,
3856 p_init_msg_list => p_init_msg_list,
3857 x_return_status => x_return_status,
3858 x_msg_count => x_msg_count,
3859 x_msg_data => x_msg_data,
3860 p_orig_khr_id => p_chr_id
3861 );
3862 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3863 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After call create_inv_disb_adjustment'||x_return_status);
3864 END IF;
3865
3866 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3867 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3868 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3869 raise OKL_API.G_EXCEPTION_ERROR;
3870 END IF;
3871 -- Bug# 4775555: End
3872
3873 --Bug# 4107330
3874 -- This call is moved from Okl_Activate_Contract_Pub(OKLPACOB.pls)
3875 -- as the accrual adjustment api requires the Contract
3876 -- status to be 'BOOKED' before accrual adjustments can be
3877 -- generated.
3878
3879 -- dedey,Bug#4264314
3880
3881 IF(l_stream_tbl.COUNT>0) THEN
3882 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
3883 p_api_version => p_api_version,
3884 p_init_msg_list => p_init_msg_list,
3885 x_return_status => x_return_status,
3886 x_msg_count => x_msg_count,
3887 x_msg_data => x_msg_data ,
3888 --Bug# 9191475
3889 --x_trx_number => lx_trx_number,
3890 x_trx_tbl => lx_trxnum_tbl,
3891 p_accrual_rec => l_accrual_rec,
3892 p_stream_tbl => l_stream_tbl);
3893
3894 -- dedey,Bug#4264314
3895
3896 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3897 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3898 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3899 RAISE Okl_Api.G_EXCEPTION_ERROR;
3900 END IF;
3901
3902 -- dedey,Bug#4264314
3903 END IF;
3904 -- dedey,Bug#4264314
3905
3906 -- MGAAP start 7263041
3907 IF (l_multi_gaap_yn = 'Y') THEN
3908
3909 OKL_STREAMS_SEC_PVT.SET_REPO_STREAMS; -- MGAAP 7263041
3910
3911 OKL_CONTRACT_REBOOK_PVT.calc_accrual_adjustment(
3912 p_api_version => p_api_version,
3913 p_init_msg_list => p_init_msg_list,
3914 x_return_status => x_return_status,
3915 x_msg_count => x_msg_count,
3916 x_msg_data => x_msg_data,
3917 p_rbk_khr_id => p_chr_id,
3918 p_orig_khr_id => p_chr_id,
3919 p_trx_id => l_rbk_transaction_id,
3920 p_trx_date => sysdate, -- 4583578 passing sysdate instead of rebook date
3921 x_accrual_rec => l_accrual_rec,
3922 x_stream_tbl => l_stream_tbl);
3923
3924 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS; -- MGAAP 7263041
3925
3926 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3927 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3928 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3929 RAISE Okl_Api.G_EXCEPTION_ERROR;
3930 END IF;
3931
3932 IF(l_stream_tbl.COUNT>0) THEN
3933 --Bug# 9191475
3934 --l_accrual_rec.trx_number := lx_trx_number;
3935
3936 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
3937 p_api_version => p_api_version,
3938 p_init_msg_list => p_init_msg_list,
3939 x_return_status => x_return_status,
3940 x_msg_count => x_msg_count,
3941 x_msg_data => x_msg_data ,
3942 --Bug# 9191475
3943 --x_trx_number => lx_trx_number,
3944 x_trx_tbl => lx_trxnum_tbl,
3945 p_accrual_rec => l_accrual_rec,
3946 p_stream_tbl => l_stream_tbl,
3947 p_representation_type => 'SECONDARY');
3948
3949
3950 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3951 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3952 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3953 RAISE Okl_Api.G_EXCEPTION_ERROR;
3954 END IF;
3955
3956 END IF;
3957
3958 END IF;
3959 -- MGAAP end 7263041
3960
3961
3962 -- Bug# 4775555: Start
3963 --
3964 -- Create Investor Accrual Adjustment
3965 --
3966 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3967 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before call calc_inv_acc_adjustment');
3968 END IF;
3969 OKL_CONTRACT_REBOOK_PVT.calc_inv_acc_adjustment(
3970 p_api_version => p_api_version,
3971 p_init_msg_list => p_init_msg_list,
3972 x_return_status => x_return_status,
3973 x_msg_count => x_msg_count,
3974 x_msg_data => x_msg_data,
3975 p_orig_khr_id => p_chr_id,
3976 p_trx_id => l_rbk_transaction_id,
3977 p_trx_date => sysdate,
3978 x_inv_accrual_rec => l_inv_accrual_rec,
3979 x_inv_stream_tbl => l_inv_stream_tbl
3980 );
3981
3982 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3983 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After call calc_inv_acc_adjustment'||x_return_status);
3984 END IF;
3985
3986 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3987 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3988 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
3989 raise OKL_API.G_EXCEPTION_ERROR;
3990 END IF;
3991
3992 lx_trx_number := null; -- MGAAP 7263041
3993 --Bug# 9191475
3994 lx_trxnum_tbl := l_trxnum_init_tbl;
3995 IF (l_inv_stream_tbl.COUNT > 0) THEN
3996 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
3997 p_api_version => p_api_version,
3998 p_init_msg_list => p_init_msg_list,
3999 x_return_status => x_return_status,
4000 x_msg_count => x_msg_count,
4001 x_msg_data => x_msg_data ,
4002 --Bug# 9191475
4003 --x_trx_number => lx_trx_number,
4004 x_trx_tbl => lx_trxnum_tbl,
4005 p_accrual_rec => l_inv_accrual_rec,
4006 p_stream_tbl => l_inv_stream_tbl);
4007
4008 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
4009 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
4010 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
4011 RAISE Okl_Api.G_EXCEPTION_ERROR;
4012 END IF;
4013 END IF;
4014 -- Bug# 4775555: End
4015
4016 -- MGAAP start 7263041
4017 IF (l_multi_gaap_yn = 'Y') THEN
4018 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4019 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before call calc_inv_acc_adjustment for SECONDARY');
4020 END IF;
4021
4022 OKL_STREAMS_SEC_PVT.SET_REPO_STREAMS;
4023 OKL_CONTRACT_REBOOK_PVT.calc_inv_acc_adjustment(
4024 p_api_version => p_api_version,
4025 p_init_msg_list => p_init_msg_list,
4026 x_return_status => x_return_status,
4027 x_msg_count => x_msg_count,
4028 x_msg_data => x_msg_data,
4029 p_orig_khr_id => p_chr_id,
4030 p_trx_id => l_rbk_transaction_id,
4031 p_trx_date => sysdate,
4032 x_inv_accrual_rec => l_inv_accrual_rec,
4033 x_inv_stream_tbl => l_inv_stream_tbl,
4034 p_product_id => l_reporting_pdt_id
4035 );
4036
4037 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS;
4038
4039 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4040 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After call calc_inv_acc_adjustment'||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 IF (l_inv_stream_tbl.COUNT > 0) THEN
4050 --Bug# 9191475
4051 --l_inv_accrual_rec.trx_number := lx_trx_number;
4052 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
4053 p_api_version => p_api_version,
4054 p_init_msg_list => p_init_msg_list,
4055 x_return_status => x_return_status,
4056 x_msg_count => x_msg_count,
4057 x_msg_data => x_msg_data ,
4058 --Bug# 9191475
4059 --x_trx_number => lx_trx_number,
4060 x_trx_tbl => lx_trxnum_tbl,
4061 p_accrual_rec => l_inv_accrual_rec,
4062 p_stream_tbl => l_inv_stream_tbl,
4063 p_representation_type => 'SECONDARY');
4064
4065 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
4066 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
4067 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
4068 RAISE Okl_Api.G_EXCEPTION_ERROR;
4069 END IF;
4070 END IF;
4071
4072 END IF;
4073 -- MGAAP end 7263041
4074
4075 --
4076 -- Update source transaction to PROCESSED, if any
4077 --
4078 FOR parent_trx_rec IN parent_trx_csr (l_rbk_transaction_id)
4079 LOOP
4080
4081 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4082 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Source Trx ID: '|| parent_trx_rec.source_trx_id);
4083 END IF;
4084
4085 IF (parent_trx_rec.source_trx_id IS NOT NULL) THEN
4086
4087 begin
4088 open parent_tcn_type_csr(parent_trx_rec.source_trx_id);
4089 FETCH parent_tcn_type_csr INTO l_parent_tcn_type;
4090
4091 IF parent_tcn_type_csr%NOTFOUND THEN
4092 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4093 CLOSE parent_tcn_type_csr;
4094 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4095 END IF;
4096 CLOSE parent_tcn_type_csr;
4097 end;
4098
4099 IF (l_parent_tcn_type = 'PPD') THEN
4100 --DEBUG
4101 --
4102 -- Cancel PPD Amount, if any
4103 --
4104 l_am_tcnv_rec.id := parent_trx_rec.source_trx_id;
4105 l_am_tcnv_rec.tsu_code := 'PROCESSED';
4106
4107 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4108 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'before update_trx_contracts');
4109 END IF;
4110
4111 Okl_Trx_Contracts_Pub.update_trx_contracts(
4112 p_api_version => l_api_version,
4113 p_init_msg_list => OKL_API.G_FALSE,
4114 x_return_status => x_return_status,
4115 x_msg_count => x_msg_count,
4116 x_msg_data => x_msg_data,
4117 p_tcnv_rec => l_am_tcnv_rec,
4118 x_tcnv_rec => x_am_tcnv_rec
4119 );
4120
4121 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4122 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'update_trx_contracts: '||x_return_status);
4123 END IF;
4124
4125 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4126 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4127 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4128 raise OKL_API.G_EXCEPTION_ERROR;
4129 END IF;
4130
4131 okl_api.set_message('OKL','AM','Term trx updated', parent_trx_rec.source_trx_id);
4132
4133 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4134 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before Cancel PPD : '||x_return_status);
4135 END IF;
4136 OKL_CS_PRINCIPAL_PAYDOWN_PUB.cancel_ppd(
4137 p_api_version => 1.0,
4138 p_init_msg_list => OKL_API.G_FALSE,
4139 x_return_status => x_return_status,
4140 x_msg_count => x_msg_count,
4141 x_msg_data => x_msg_data,
4142 p_khr_id => p_chr_id
4143 );
4144 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4145 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Cancel PPD : '||x_return_status);
4146 END IF;
4147
4148 okl_api.set_message('OKL','AM','After cancel PPD Amount', x_return_status);
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
4157 ELSIF (l_parent_tcn_type = 'ALT') THEN
4158 --ELSE
4159 l_am_tcnv_rec.id := parent_trx_rec.source_trx_id;
4160 --Bug# 6043327 : R12B SLA impact
4161 --l_am_tcnv_rec.tsu_code := 'PROCESSED';
4162 l_am_tcnv_rec.tmt_status_code := 'PROCESSED';
4163 l_am_tcnv_rec.tmt_contract_updated_yn := 'Y';
4164
4165 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4166 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'before update_trx_contracts');
4167 END IF;
4168
4169 Okl_Trx_Contracts_Pub.update_trx_contracts(
4170 p_api_version => l_api_version,
4171 p_init_msg_list => OKL_API.G_FALSE,
4172 x_return_status => x_return_status,
4173 x_msg_count => x_msg_count,
4174 x_msg_data => x_msg_data,
4175 p_tcnv_rec => l_am_tcnv_rec,
4176 x_tcnv_rec => x_am_tcnv_rec
4177 );
4178
4179 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4180 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'update_trx_contracts: '||x_return_status);
4181 END IF;
4182
4183 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4184 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4185 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4186 raise OKL_API.G_EXCEPTION_ERROR;
4187 END IF;
4188
4189 okl_api.set_message('OKL','AM','Term trx updated', parent_trx_rec.source_trx_id);
4190
4191 -- Bug 4556370
4192 -- Cancel Termination Quote, if any
4193 --
4194 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4195 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before Cancel Termination : '||x_return_status);
4196 END IF;
4197 OKL_AM_INTEGRATION_PVT.cancel_termination_quotes (
4198 p_api_version => 1.0,
4199 p_init_msg_list => OKL_API.G_FALSE,
4200 p_khr_id => p_chr_id,
4201 p_source_trx_id => parent_trx_rec.source_trx_id,
4202 p_source => l_parent_tcn_type, -- 'ALT'
4203 x_return_status => x_return_status,
4204 x_msg_count => x_msg_count,
4205 x_msg_data => x_msg_data
4206 );
4207 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4208 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Cancel Termination : '||x_return_status);
4209 END IF;
4210
4211 okl_api.set_message('OKL','AM','After cancel term quote', x_return_status);
4212
4213 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4214 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4215 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4216 raise OKL_API.G_EXCEPTION_ERROR;
4217 END IF;
4218
4219 END IF;
4220 END IF;
4221
4222 END LOOP;
4223
4224 --
4225 -- Update Transaction and Rebook status to PROCESSED
4226 --
4227
4228 l_mstv_tbl(1).request_name := l_request_name;
4229 l_mstv_tbl(1).khr_id := p_chr_id;
4230 l_mstv_tbl(1).status := 'PROCESSED';
4231
4232 okl_mass_rebook_pvt.update_mass_rbk_contract(
4233 p_api_version => l_api_version,
4234 p_init_msg_list => OKL_API.G_FALSE,
4235 x_return_status => x_return_status,
4236 x_msg_count => x_msg_count,
4237 x_msg_data => x_msg_data,
4238 p_mstv_tbl => l_mstv_tbl,
4239 x_mstv_tbl => x_mstv_tbl
4240 );
4241
4242
4243 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4244 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'update_mas_rbk_contract: '||x_return_status);
4245 END IF;
4246
4247 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4248 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4249 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4250 raise OKL_API.G_EXCEPTION_ERROR;
4251 END IF;
4252 --insert into dd_dummy values (4, 'update mass rebook status');
4253
4254 l_tcnv_rec.id := l_rbk_transaction_id;
4255 l_tcnv_rec.tsu_code := 'PROCESSED';
4256
4257
4258 Okl_Trx_Contracts_Pub.update_trx_contracts(
4259 p_api_version => l_api_version,
4260 p_init_msg_list => OKL_API.G_FALSE,
4261 x_return_status => x_return_status,
4262 x_msg_count => x_msg_count,
4263 x_msg_data => x_msg_data,
4264 p_tcnv_rec => l_tcnv_rec,
4265 x_tcnv_rec => x_tcnv_rec
4266 );
4267
4268 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4269 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'update_trx_contracts : '||x_return_status);
4270 END IF;
4271
4272 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4273 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4274 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4275 raise OKL_API.G_EXCEPTION_ERROR;
4276 END IF;
4277
4278 --insert into dd_dummy values (5, 'update trx status');
4279 --
4280 -- Update trx_asset status = 'PROCESSED'
4281 --
4282 update_trx_asset(
4283 x_return_status => x_return_status,
4284 x_msg_count => x_msg_count,
4285 x_msg_data => x_msg_data,
4286 p_chr_id => p_chr_id,
4287 p_status => 'PROCESSED'
4288 );
4289
4290 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4291 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4292 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4293 raise OKL_API.G_EXCEPTION_ERROR;
4294 END IF;
4295
4296 --insert into dd_dummy values (6, 'update trx asset status');
4297
4298 --DEBUG
4299 --IF G_PPD_TRX_ID IS NOT NULL THEN (To be checked by the API if for PPD)
4300 BEGIN
4301 --Create AR invoice for principal amount
4302 --Call BPD API to create AR journal entries
4303 OKL_CS_PRINCIPAL_PAYDOWN_PUB.invoice_apply_ppd(
4304 p_api_version => l_api_version,
4305 p_init_msg_list => OKL_API.G_FALSE,
4306 x_return_status => x_return_status,
4307 x_msg_count => x_msg_count,
4308 x_msg_data => x_msg_data,
4309 p_khr_id => p_chr_id,
4310 p_trx_id => l_rbk_transaction_id );
4311
4312 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
4313 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4314 END IF;
4315
4316 EXCEPTION WHEN OTHERS THEN
4317 null; -- For any errors during journal creation, we just ignore
4318 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4319 END;
4320 --END IF;
4321
4322 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
4323 x_msg_data => x_msg_data);
4324
4325
4326 --insert into dd_dummy values (7, 'returning after yield');
4327 RETURN;
4328
4329 EXCEPTION
4330 WHEN not_to_process THEN
4331 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4332
4333 when OKL_API.G_EXCEPTION_ERROR then
4334 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4335 p_api_name => l_api_name,
4336 p_pkg_name => G_PKG_NAME,
4337 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
4338 x_msg_count => x_msg_count,
4339 x_msg_data => x_msg_data,
4340 p_api_type => G_API_TYPE);
4341
4342 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
4343 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4344 p_api_name => l_api_name,
4345 p_pkg_name => G_PKG_NAME,
4346 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4347 x_msg_count => x_msg_count,
4348 x_msg_data => x_msg_data,
4349 p_api_type => G_API_TYPE);
4350
4351 when OTHERS then
4352 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4353 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Error...');
4354 END IF;
4355 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4356 p_api_name => l_api_name,
4357 p_pkg_name => G_PKG_NAME,
4358 p_exc_name => 'OTHERS',
4359 x_msg_count => x_msg_count,
4360 x_msg_data => x_msg_data,
4361 p_api_type => G_API_TYPE);
4362 END mass_rebook_activate;
4363 -- Bug# 5038395
4364
4365 ------------------------------------------------------------------------------
4366 -- PROCEDURE mass_rebook_after_yield
4367 -- Call this process after yeild comes back. It will do rest of the mass
4368 -- rebook process. It first checks eligibility of a contract for Mass Rebook
4369 -- and then process the same.
4370 -- Calls:
4371 -- Called by:
4372 ------------------------------------------------------------------------------
4373 PROCEDURE mass_rebook_after_yield(
4374 p_api_version IN NUMBER,
4375 p_init_msg_list IN VARCHAR2,
4376 x_return_status OUT NOCOPY VARCHAR2,
4377 x_msg_count OUT NOCOPY NUMBER,
4378 x_msg_data OUT NOCOPY VARCHAR2,
4379 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE
4380 ) IS
4381
4382 l_api_name VARCHAR2(35) := 'mass_rebook_after_yield';
4383 l_proc_name VARCHAR2(35) := 'MASS_REBOOK_AFTER_YIELD';
4384 l_api_version NUMBER := 1.0;
4385
4386 CURSOR check_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
4387 SELECT DISTINCT
4388 REQUEST_NAME,
4389 KHR_ID,
4390 TRANSACTION_ID,
4391 --Bug# 4107330
4392 TRANSACTION_DATE
4393 FROM okl_rbk_selected_contract
4394 WHERE khr_id = p_chr_id
4395 AND NVL(status,'NEW') = 'UNDER REVISION';
4396 --AND NVL(status,'NEW') <> 'PROCESSED';
4397
4398 l_rbk_khr_id okl_rbk_selected_contract.khr_id%TYPE;
4399 l_rbk_transaction_id okl_rbk_selected_contract.transaction_id%TYPE;
4400 --Bug# 4107330
4401 l_rbk_trx_date okl_rbk_selected_contract.transaction_date%TYPE;
4402 l_request_name okl_rbk_selected_contract.request_name%TYPE;
4403
4404 after_yield_failed EXCEPTION;
4405 not_to_process EXCEPTION;
4406
4407 BEGIN
4408 IF (G_DEBUG_ENABLED = 'Y') THEN
4409 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
4410 END IF;
4411
4412 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4413 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
4414 END IF;
4415 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4416
4417 -- call START_ACTIVITY to create savepoint, check compatibility
4418 -- and initialize message list
4419 x_return_status := OKL_API.START_ACTIVITY(
4420 p_api_name => l_api_name,
4421 p_pkg_name => G_PKG_NAME,
4422 p_init_msg_list => p_init_msg_list,
4423 l_api_version => l_api_version,
4424 p_api_version => p_api_version,
4425 p_api_type => G_API_TYPE,
4426 x_return_status => x_return_status);
4427
4428 -- check if activity started successfully
4429 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4430 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4431 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4432 raise OKL_API.G_EXCEPTION_ERROR;
4433 END IF;
4434
4435 --
4436 -- Check contract for Mass Rebook
4437 --
4438 OPEN check_csr(p_chr_id);
4439 --Bug# 4107330
4440 FETCH check_csr INTO l_request_name,
4441 l_rbk_khr_id,
4442 l_rbk_transaction_id,
4443 l_rbk_trx_date;
4444 IF check_csr%NOTFOUND THEN
4445 RAISE not_to_process; -- Not a candidate for mass re-book
4446 END IF;
4447 CLOSE check_csr;
4448
4449 --insert into dd_dummy values (1, 'Selected for Mass rebook');
4450
4451 -- Bug# 5038395
4452 -- This procedure will handle approval and activation for
4453 -- mass rebook
4454 okl_mass_rebook_pvt.mass_rebook_activate(
4455 p_api_version => p_api_version,
4456 p_init_msg_list => p_init_msg_list,
4457 x_return_status => x_return_status,
4458 x_msg_count => x_msg_count,
4459 x_msg_data => x_msg_data,
4460 p_chr_id => p_chr_id
4461 );
4462
4463 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4464 raise after_yield_failed;
4465 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
4466 raise after_yield_failed;
4467 END IF;
4468
4469 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
4470 x_msg_data => x_msg_data);
4471
4472
4473 --insert into dd_dummy values (7, 'returning after yield');
4474 RETURN;
4475
4476 EXCEPTION
4477 WHEN not_to_process THEN
4478 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4479
4480 WHEN after_yield_failed THEN
4481
4482 -- Bug# 5038395
4483 -- Update status of Submit Contract task to Error
4484 OKL_BOOK_CONTROLLER_PVT.update_book_controller_trx(
4485 p_api_version => p_api_version,
4486 p_init_msg_list => OKL_API.G_FALSE, --To retain message stack
4487 x_return_status => x_return_status,
4488 x_msg_count => x_msg_count,
4489 x_msg_data => x_msg_data,
4490 p_khr_id => p_chr_id ,
4491 p_prog_short_name => OKL_BOOK_CONTROLLER_PVT.G_SUBMIT_CONTRACT ,
4492 p_progress_status => OKL_BOOK_CONTROLLER_PVT.G_PROG_STS_ERROR);
4493
4494 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4495
4496 when OKL_API.G_EXCEPTION_ERROR then
4497 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4498 p_api_name => l_api_name,
4499 p_pkg_name => G_PKG_NAME,
4500 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
4501 x_msg_count => x_msg_count,
4502 x_msg_data => x_msg_data,
4503 p_api_type => G_API_TYPE);
4504
4505 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
4506 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4507 p_api_name => l_api_name,
4508 p_pkg_name => G_PKG_NAME,
4509 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4510 x_msg_count => x_msg_count,
4511 x_msg_data => x_msg_data,
4512 p_api_type => G_API_TYPE);
4513
4514 when OTHERS then
4515 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4516 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Error...');
4517 END IF;
4518 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4519 p_api_name => l_api_name,
4520 p_pkg_name => G_PKG_NAME,
4521 p_exc_name => 'OTHERS',
4522 x_msg_count => x_msg_count,
4523 x_msg_data => x_msg_data,
4524 p_api_type => G_API_TYPE);
4525 END mass_rebook_after_yield;
4526
4527 ------------------------------------------------------------------------------
4528 -- PROCEDURE cancel_transaction
4529 -- Call this process to CANCEL any pending mass rebook transaction
4530 -- Calls:
4531 -- Called by:
4532 ------------------------------------------------------------------------------
4533 PROCEDURE cancel_transaction(
4534 x_return_status OUT NOCOPY VARCHAR2,
4535 x_msg_count OUT NOCOPY NUMBER,
4536 x_msg_data OUT NOCOPY VARCHAR2,
4537 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE
4538 ) IS
4539
4540 l_proc_name VARCHAR2(35) := 'CANCEL_TRANSACTION';
4541 l_api_name VARCHAR2(35) := 'CANCEL_TRANSACTION';
4542
4543 CURSOR trx_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
4544 SELECT DISTINCT
4545 REQUEST_NAME,
4546 KHR_ID,
4547 TRANSACTION_ID
4548 FROM okl_rbk_selected_contract
4549 WHERE khr_id = p_chr_id
4550 AND NVL(status,'NEW') <> 'PROCESSED';
4551
4552 l_mstv_tbl mstv_tbl_type;
4553 l_tcnv_rec tcnv_rec_type;
4554 x_mstv_tbl mstv_tbl_type;
4555 x_tcnv_rec tcnv_rec_type;
4556
4557 cancel_failed EXCEPTION;
4558
4559 BEGIN
4560 IF (G_DEBUG_ENABLED = 'Y') THEN
4561 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
4562 END IF;
4563
4564 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4565 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4566 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
4567 END IF;
4568
4569 FOR trx_rec IN trx_csr (p_chr_id)
4570 LOOP
4571
4572 --
4573 -- Update Transaction and Rebook status to CANCELLED
4574 --
4575
4576 l_mstv_tbl(1).request_name := trx_rec.request_name;
4577 l_mstv_tbl(1).khr_id := p_chr_id;
4578 l_mstv_tbl(1).status := 'CANCELED';
4579
4580 okl_mass_rebook_pvt.update_mass_rbk_contract(
4581 p_api_version => 1.0,
4582 p_init_msg_list => OKL_API.G_FALSE,
4583 x_return_status => x_return_status,
4584 x_msg_count => x_msg_count,
4585 x_msg_data => x_msg_data,
4586 p_mstv_tbl => l_mstv_tbl,
4587 x_mstv_tbl => x_mstv_tbl
4588 );
4589
4590 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
4591 RAISE cancel_failed;
4592 END IF;
4593 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4594 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After mass rebook trx update: '||x_return_status);
4595 END IF;
4596
4597 l_tcnv_rec.id := trx_rec.transaction_id;
4598 l_tcnv_rec.tsu_code := 'CANCELED';
4599
4600 Okl_Trx_Contracts_Pub.update_trx_contracts(
4601 p_api_version => 1.0,
4602 p_init_msg_list => OKL_API.G_FALSE,
4603 x_return_status => x_return_status,
4604 x_msg_count => x_msg_count,
4605 x_msg_data => x_msg_data,
4606 p_tcnv_rec => l_tcnv_rec,
4607 x_tcnv_rec => x_tcnv_rec
4608 );
4609
4610 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
4611 RAISE cancel_failed;
4612 END IF;
4613
4614 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4615 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After trx update: '||x_return_status);
4616 END IF;
4617
4618 END LOOP;
4619
4620 EXCEPTION
4621
4622 when cancel_failed then
4623 x_return_status := OKL_API.G_RET_STS_ERROR;
4624
4625 when OTHERS then
4626 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4627 p_api_name => l_api_name,
4628 p_pkg_name => G_PKG_NAME,
4629 p_exc_name => 'OTHERS',
4630 x_msg_count => x_msg_count,
4631 x_msg_data => x_msg_data,
4632 p_api_type => G_API_TYPE);
4633
4634 END cancel_transaction;
4635
4636 ------------------------------------------------------------------------------
4637 -- PROCEDURE process_mass_rebook
4638 -- This proecdure applies Rebook when called from On-line user
4639 -- Calls:
4640 -- Called by:
4641 ------------------------------------------------------------------------------
4642
4643 PROCEDURE process_mass_rebook(
4644 p_api_version IN NUMBER,
4645 p_init_msg_list IN VARCHAR2,
4646 x_return_status OUT NOCOPY VARCHAR2,
4647 x_msg_count OUT NOCOPY NUMBER,
4648 x_msg_data OUT NOCOPY VARCHAR2,
4649 p_request_name IN OKL_MASS_RBK_CRITERIA.REQUEST_NAME%TYPE
4650 ) IS
4651 l_api_name VARCHAR2(35) := 'process_mass_rebook';
4652 l_proc_name VARCHAR2(35) := 'PROCESS_MASS_REBOOK';
4653 l_api_version NUMBER := 1.0;
4654
4655 l_set_count NUMBER := 0;
4656 l_contract_count NUMBER := 0;
4657
4658 l_deprn_method_code VARCHAR2(35) := NULL;
4659 l_in_service_date DATE := NULL;
4660 l_life_in_months NUMBER := NULL;
4661 l_basic_rate NUMBER := NULL;
4662 l_adjusted_rate NUMBER := NULL;
4663 l_book_type_code FA_BOOKS.BOOK_TYPE_CODE%TYPE := NULL;
4664
4665 l_contract_id NUMBER;
4666 l_line_count NUMBER := 0;
4667 l_prev_contract_id NUMBER;
4668 l_kle_id NUMBER;
4669
4670 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - Start
4671 l_object_version_no OKL_K_HEADERS.OBJECT_VERSION_NUMBER%TYPE;
4672 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - End
4673
4674 l_kle_tbl kle_tbl_type;
4675 l_strm_lalevl_tbl strm_lalevl_tbl_type;
4676
4677 l_transaction_date OKL_RBK_SELECTED_CONTRACT.TRANSACTION_DATE%TYPE;
4678
4679 CURSOR rbk_set_csr (p_req_name VARCHAR2) IS
4680 SELECT criteria_code,
4681 criteria_value1,
4682 set_value
4683 FROM okl_mass_rbk_criteria
4684 WHERE request_name = p_req_name
4685 AND (set_value IS NOT NULL
4686 OR
4687 criteria_code = 'BOOK_TYPE_CODE'); -- in order to keep Tax Book as selection crietria
4688
4689 -- Bug#4542290 - smadhava - 26-AUG-2005 - Modified - Start
4690 -- Modified cusor to get the object version number of the OKL_K_HEADERS table
4691 CURSOR rbk_csr (p_req_name VARCHAR2) IS
4692 SELECT
4693 rbk.khr_id,
4694 rbk.contract_number,
4695 rbk.contract_description,
4696 rbk.kle_id,
4697 rbk.transaction_date,
4698 khr.object_version_number
4699 FROM okl_rbk_selected_contract rbk
4700 , okl_k_headers khr
4701 WHERE
4702 rbk.request_name = p_req_name
4703 AND rbk.selected_flag = 'Y'
4704 AND rbk.transaction_id IS NULL
4705 AND khr.id = rbk.khr_id;
4706 -- Bug#4542290 - smadhava - 26-AUG-2005 - Modified - End
4707
4708 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - Start
4709 l_pdt_params_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
4710 lp_khrv_rec OKL_KHR_PVT.khrv_rec_type;
4711 lx_khrv_rec OKL_KHR_PVT.khrv_rec_type;
4712
4713 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - End
4714 BEGIN
4715 IF (G_DEBUG_ENABLED = 'Y') THEN
4716 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
4717 END IF;
4718
4719 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4720 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
4721 END IF;
4722
4723 -- call START_ACTIVITY to create savepoint, check compatibility
4724 -- and initialize message list
4725 x_return_status := OKL_API.START_ACTIVITY(
4726 p_api_name => l_api_name,
4727 p_pkg_name => G_PKG_NAME,
4728 p_init_msg_list => p_init_msg_list,
4729 l_api_version => l_api_version,
4730 p_api_version => p_api_version,
4731 p_api_type => G_API_TYPE,
4732 x_return_status => x_return_status);
4733
4734 -- check if activity started successfully
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
4741 --
4742 -- Get SET_VALUE for ALl contracts to be processed
4743 --
4744
4745 l_set_count := 0;
4746 l_deprn_method_code := NULL;
4747 l_in_service_date := NULL;
4748 l_life_in_months := NULL;
4749 l_basic_rate := NULL;
4750 l_adjusted_rate := NULL;
4751 l_book_type_code := NULL;
4752
4753 FOR rbk_set_rec IN rbk_set_csr(p_request_name)
4754 LOOP
4755 l_set_count := l_set_count + 1;
4756 IF (rbk_set_rec.criteria_code = 'DEPRN_METHOD_CODE') THEN
4757 l_deprn_method_code := rbk_set_rec.set_value;
4758 ELSIF (rbk_set_rec.criteria_code = 'DATE_PLACED_IN_SERVICE') THEN
4759 l_in_service_date := rbk_set_rec.set_value;
4760 ELSIF (rbk_set_rec.criteria_code = 'LIFE_IN_MONTHS') THEN
4761 l_life_in_months := rbk_set_rec.set_value;
4762 ELSIF (rbk_set_rec.criteria_code = 'BASIC_RATE') THEN
4763 l_basic_rate := TO_NUMBER(rbk_set_rec.set_value);
4764 ELSIF (rbk_set_rec.criteria_code = 'ADJUSTED_RATE') THEN
4765 l_adjusted_rate := TO_NUMBER(rbk_set_rec.set_value);
4766 ELSIF (rbk_set_rec.criteria_code = 'BOOK_TYPE_CODE') THEN
4767 l_book_type_code := rbk_set_rec.criteria_value1; -- For selection only, do not Set value
4768 ELSE
4769 okl_api.set_message(
4770 G_APP_NAME,
4771 G_INVALID_SET_VALUE,
4772 'CRIT_CODE',
4773 rbk_set_rec.criteria_code
4774 );
4775 x_return_status := OKL_API.G_RET_STS_ERROR;
4776 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4777 END IF;
4778
4779 END LOOP;
4780
4781 IF (l_set_count = 0) THEN
4782 okl_api.set_message(
4783 G_APP_NAME,
4784 G_NO_SET_VALUE,
4785 'REQ_NAME',
4786 P_request_name
4787 );
4788 x_return_status := OKL_API.G_RET_STS_ERROR;
4789 RAISE OKL_API.G_EXCEPTION_ERROR;
4790 END IF;
4791
4792 l_contract_count := 0;
4793 l_line_count := 0;
4794 l_prev_contract_id := G_INIT_NUMBER;
4795 FOR rbk_rec IN rbk_csr(p_request_name)
4796 LOOP
4797
4798 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - Start
4799 OKL_K_RATE_PARAMS_PVT.get_product(
4800 p_api_version => p_api_version,
4801 p_init_msg_list => p_init_msg_list,
4802 x_return_status => x_return_status,
4803 x_msg_count => x_msg_count,
4804 x_msg_data => x_msg_data,
4805 p_khr_id => rbk_rec.khr_id,
4806 x_pdt_parameter_rec => l_pdt_params_rec);
4807
4808 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4809 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4810 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4811 RAISE OKL_API.G_EXCEPTION_ERROR;
4812 END IF;
4813 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - End
4814
4815 l_transaction_date := rbk_rec.transaction_date;
4816
4817 l_contract_count := l_contract_count + 1;
4818 IF (l_prev_contract_id = rbk_rec.khr_id
4819 OR
4820 l_contract_count = 1) THEN -- Either same contract or first record
4821 l_line_count := l_line_count + 1;
4822 l_kle_tbl(l_line_count).id := rbk_rec.kle_id;
4823 l_contract_id := rbk_rec.khr_id;
4824 l_prev_contract_id := rbk_rec.khr_id;
4825
4826 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - Start
4827 l_object_version_no := rbk_rec.object_version_number;
4828 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - End
4829 ELSE
4830 -- Call Rebook_Contract
4831 rebook_contract(
4832 x_return_status => x_return_status,
4833 x_msg_count => x_msg_count,
4834 x_msg_data => x_msg_data,
4835 p_online_yn => 'Y',
4836 p_khr_id => l_contract_id,
4837 p_kle_tbl => l_kle_tbl, -- FA Line ID
4838 p_line_count => l_line_count,
4839 p_request_name => p_request_name,
4840 p_book_type_code => l_book_type_code,
4841 p_deprn_method_code => l_deprn_method_code,
4842 p_in_service_date => l_in_service_date,
4843 p_life_in_months => l_life_in_months,
4844 p_basic_rate => l_basic_rate,
4845 p_adjusted_rate => l_adjusted_rate,
4846 p_residual_value => NULL, -- Not for On-Line Rebook
4847 p_strm_lalevl_tbl => l_strm_lalevl_tbl, -- Not for On-Line Rebook
4848 p_transaction_date => l_transaction_date
4849 );
4850 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
4851 raise OKL_API.G_EXCEPTION_ERROR;
4852 END IF;
4853 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - Start
4854 -- Updating the Last interest calculation date to the rebook
4855 -- transaction date if the Interest Calc. Basis=REAMORT and
4856 -- Rev. recognition method=STREAMS
4857 IF ( l_pdt_params_rec.interest_calculation_basis = G_ICB_REAMORT
4858 AND l_pdt_params_rec.revenue_recognition_method = G_RRM_STREAMS )
4859 THEN
4860 lp_khrv_rec.id := rbk_rec.khr_id;
4861 -- get the object version number of the record
4862 lp_khrv_rec.object_version_number := rbk_rec.object_version_number;
4863
4864 -- Update the last interest calc date field
4865 lp_khrv_rec.date_last_interim_interest_cal := l_transaction_date;
4866 OKL_KHR_PVT.update_row(
4867 p_api_version => p_api_version
4868 , p_init_msg_list => p_init_msg_list
4869 , x_return_status => x_return_status
4870 , x_msg_count => x_msg_count
4871 , x_msg_data => x_msg_data
4872 , p_khrv_rec => lp_khrv_rec
4873 , x_khrv_rec => lx_khrv_rec);
4874
4875 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4876 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4877 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4878 RAISE OKL_API.G_EXCEPTION_ERROR;
4879 END IF;
4880 END IF; -- end of check for ICB and RRM
4881 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - End
4882
4883 l_line_count := 1; -- Reset for next contract
4884 l_kle_tbl(l_line_count).id := rbk_rec.kle_id;
4885 l_contract_id := rbk_rec.khr_id;
4886 l_prev_contract_id := rbk_rec.khr_id;
4887
4888 END IF;
4889 END LOOP;
4890
4891 IF (l_contract_count = 0 ) THEN
4892 okl_api.set_message(
4893 G_APP_NAME,
4894 G_NO_SEL_CONTRACT,
4895 'REQ_NAME',
4896 p_request_name
4897 );
4898 RAISE OKL_API.G_EXCEPTION_ERROR;
4899 END IF;
4900
4901 -- Final Call for last contract
4902 rebook_contract(
4903 x_return_status => x_return_status,
4904 x_msg_count => x_msg_count,
4905 x_msg_data => x_msg_data,
4906 p_online_yn => 'Y',
4907 p_khr_id => l_contract_id,
4908 p_kle_tbl => l_kle_tbl, -- FA Line ID
4909 p_line_count => l_line_count,
4910 p_request_name => p_request_name,
4911 P_book_type_code => l_book_type_code,
4912 p_deprn_method_code => l_deprn_method_code,
4913 p_in_service_date => l_in_service_date,
4914 p_life_in_months => l_life_in_months,
4915 p_basic_rate => l_basic_rate,
4916 p_adjusted_rate => l_adjusted_rate,
4917 p_residual_value => NULL, -- Not for On-Line Rebook
4918 p_strm_lalevl_tbl => l_strm_lalevl_tbl, -- Not for On-Line Rebook
4919 p_transaction_date => l_transaction_date
4920 );
4921 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
4922 raise OKL_API.G_EXCEPTION_ERROR;
4923 END IF;
4924 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - Start
4925 -- Updating the Last interest calculation date to the rebook
4926 -- transaction date if the Interest Calc. Basis=REAMORT and
4927 -- Rev. recognition method=STREAMS
4928 IF ( l_pdt_params_rec.interest_calculation_basis = G_ICB_REAMORT
4929 AND l_pdt_params_rec.revenue_recognition_method = G_RRM_STREAMS )
4930 THEN
4931 lp_khrv_rec.id := l_contract_id;
4932 -- get the object version number of the record
4933 lp_khrv_rec.object_version_number := l_object_version_no;
4934
4935 -- Update the last interest calc date field
4936 lp_khrv_rec.date_last_interim_interest_cal := l_transaction_date;
4937 OKL_KHR_PVT.update_row(
4938 p_api_version => p_api_version
4939 , p_init_msg_list => p_init_msg_list
4940 , x_return_status => x_return_status
4941 , x_msg_count => x_msg_count
4942 , x_msg_data => x_msg_data
4943 , p_khrv_rec => lp_khrv_rec
4944 , x_khrv_rec => lx_khrv_rec);
4945
4946 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4947 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4948 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4949 RAISE OKL_API.G_EXCEPTION_ERROR;
4950 END IF;
4951 END IF; -- end of check for ICB and RRM
4952 -- Bug#4542290 - smadhava - 26-AUG-2005 - Added - End
4953
4954 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
4955 x_msg_data => x_msg_data);
4956
4957 RETURN;
4958
4959 EXCEPTION
4960 when OKL_API.G_EXCEPTION_ERROR then
4961 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4962 p_api_name => l_api_name,
4963 p_pkg_name => G_PKG_NAME,
4964 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
4965 x_msg_count => x_msg_count,
4966 x_msg_data => x_msg_data,
4967 p_api_type => G_API_TYPE);
4968
4969 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
4970 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4971 p_api_name => l_api_name,
4972 p_pkg_name => G_PKG_NAME,
4973 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4974 x_msg_count => x_msg_count,
4975 x_msg_data => x_msg_data,
4976 p_api_type => G_API_TYPE);
4977
4978 when OTHERS then
4979 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4980 p_api_name => l_api_name,
4981 p_pkg_name => G_PKG_NAME,
4982 p_exc_name => 'OTHERS',
4983 x_msg_count => x_msg_count,
4984 x_msg_data => x_msg_data,
4985 p_api_type => G_API_TYPE);
4986 END process_mass_rebook;
4987
4988 ------------------------------------------------------------------------------
4989 -- PROCEDURE apply_mass_rebook
4990 -- This proecdure uses to apply mass rebook for contracts. It should be called
4991 -- by those who does not have access to MASS REBOOK UI under OKL
4992 -- Calls:
4993 -- Called by:
4994 ------------------------------------------------------------------------------
4995
4996 PROCEDURE apply_mass_rebook(
4997 p_api_version IN NUMBER,
4998 p_init_msg_list IN VARCHAR2,
4999 x_return_status OUT NOCOPY VARCHAR2,
5000 x_msg_count OUT NOCOPY NUMBER,
5001 x_msg_data OUT NOCOPY VARCHAR2,
5002 p_rbk_tbl IN rbk_tbl_type,
5003 p_deprn_method_code IN FA_BOOKS.DEPRN_METHOD_CODE%TYPE,
5004 p_in_service_date IN FA_BOOKS.DATE_PLACED_IN_SERVICE%TYPE,
5005 p_life_in_months IN FA_BOOKS.LIFE_IN_MONTHS%TYPE,
5006 p_basic_rate IN FA_BOOKS.BASIC_RATE%TYPE,
5007 p_adjusted_rate IN FA_BOOKS.ADJUSTED_RATE%TYPE,
5008 p_residual_value IN OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
5009 p_strm_lalevl_tbl IN strm_lalevl_tbl_type
5010 ) IS
5011 l_api_name VARCHAR2(35) := 'apply_mass_rebook';
5012 l_proc_name VARCHAR2(35) := 'APPLY_MASS_REBOOK';
5013 l_api_version NUMBER := 1.0;
5014
5015 l_line_count NUMBER;
5016 l_contract_count NUMBER;
5017 l_contract_id NUMBER;
5018 l_prev_contract_id NUMBER;
5019
5020 l_kle_tbl kle_tbl_type;
5021
5022 BEGIN
5023 IF (G_DEBUG_ENABLED = 'Y') THEN
5024 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5025 END IF;
5026
5027 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5028 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5029 END IF;
5030 -- call START_ACTIVITY to create savepoint, check compatibility
5031 -- and initialize message list
5032 x_return_status := OKL_API.START_ACTIVITY(
5033 p_api_name => l_api_name,
5034 p_pkg_name => G_PKG_NAME,
5035 p_init_msg_list => p_init_msg_list,
5036 l_api_version => l_api_version,
5037 p_api_version => p_api_version,
5038 p_api_type => G_API_TYPE,
5039 x_return_status => x_return_status);
5040
5041 -- check if activity started successfully
5042 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5043 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5044 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5045 raise OKL_API.G_EXCEPTION_ERROR;
5046 END IF;
5047
5048 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5049 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Count: '||p_rbk_tbl.COUNT);
5050 END IF;
5051
5052 IF (p_rbk_tbl.COUNT > 0 ) THEN
5053 l_line_count := 0;
5054 l_contract_count := 0;
5055 l_prev_contract_id := G_INIT_NUMBER;
5056 FOR i IN 1..p_rbk_tbl.COUNT
5057 LOOP
5058 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5059 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Contract# :'||p_rbk_tbl(i).contract_number);
5060 END IF;
5061 l_contract_count := l_contract_count + 1;
5062 IF (l_prev_contract_id = p_rbk_tbl(i).khr_id
5063 OR
5064 l_contract_count = 1) THEN
5065 l_line_count := l_line_count + 1;
5066 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5067 l_contract_id := p_rbk_tbl(i).khr_id;
5068 l_prev_contract_id := p_rbk_tbl(i).khr_id; --Bug# 2579620
5069 ELSE
5070 -- Call Rebook_Contract
5071 rebook_contract(
5072 x_return_status => x_return_status,
5073 x_msg_count => x_msg_count,
5074 x_msg_data => x_msg_data,
5075 p_online_yn => 'N',
5076 p_khr_id => l_contract_id,
5077 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5078 p_line_count => l_line_count,
5079 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5080 p_book_type_code => NULL,
5081 p_deprn_method_code => p_deprn_method_code,
5082 p_in_service_date => p_in_service_date,
5083 p_life_in_months => p_life_in_months,
5084 p_basic_rate => p_basic_rate,
5085 p_adjusted_rate => p_adjusted_rate,
5086 p_residual_value => p_residual_value,
5087 p_strm_lalevl_tbl => p_strm_lalevl_tbl
5088 );
5089 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5090 raise OKL_API.G_EXCEPTION_ERROR;
5091 END IF;
5092 l_line_count := 1;
5093 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5094 l_contract_id := p_rbk_tbl(i).khr_id;
5095 END IF;
5096 END LOOP;
5097
5098 rebook_contract(
5099 x_return_status => x_return_status,
5100 x_msg_count => x_msg_count,
5101 x_msg_data => x_msg_data,
5102 p_online_yn => 'N',
5103 p_khr_id => l_contract_id,
5104 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5105 p_line_count => l_line_count,
5106 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5107 p_book_type_code => NULL,
5108 p_deprn_method_code => p_deprn_method_code,
5109 p_in_service_date => p_in_service_date,
5110 p_life_in_months => p_life_in_months,
5111 p_basic_rate => p_basic_rate,
5112 p_adjusted_rate => p_adjusted_rate,
5113 p_residual_value => p_residual_value,
5114 p_strm_lalevl_tbl => p_strm_lalevl_tbl
5115 );
5116
5117 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5118 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rebook Contract status: '||x_return_status);
5119 END IF;
5120 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5121 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5122 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5123 raise OKL_API.G_EXCEPTION_ERROR;
5124 END IF;
5125
5126 ELSE
5127 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5128 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Nothing to Process...');
5129 END IF;
5130 x_return_status := OKL_API.G_RET_STS_ERROR;
5131 RAISE OKL_API.G_EXCEPTION_ERROR;
5132 END IF;
5133
5134 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5135 x_msg_data => x_msg_data);
5136
5137
5138 RETURN;
5139
5140 EXCEPTION
5141 when OKL_API.G_EXCEPTION_ERROR then
5142 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5143 p_api_name => l_api_name,
5144 p_pkg_name => G_PKG_NAME,
5145 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5146 x_msg_count => x_msg_count,
5147 x_msg_data => x_msg_data,
5148 p_api_type => G_API_TYPE);
5149
5150 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5151 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5152 p_api_name => l_api_name,
5153 p_pkg_name => G_PKG_NAME,
5154 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5155 x_msg_count => x_msg_count,
5156 x_msg_data => x_msg_data,
5157 p_api_type => G_API_TYPE);
5158
5159 when OTHERS then
5160 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5161 p_api_name => l_api_name,
5162 p_pkg_name => G_PKG_NAME,
5163 p_exc_name => 'OTHERS',
5164 x_msg_count => x_msg_count,
5165 x_msg_data => x_msg_data,
5166 p_api_type => G_API_TYPE);
5167 END apply_mass_rebook;
5168
5169 ------------------------------------------------------------------------------
5170 -- PROCEDURE apply_mass_rebook
5171 -- This proecdure uses to apply mass rebook for contracts. It should be called
5172 -- by those who does not have access to MASS REBOOK UI under OKL.
5173 -- This process is overloaded from previous one to return stream transactio ID
5174 -- to caller program
5175 -- Calls:
5176 -- Called by:
5177 ------------------------------------------------------------------------------
5178
5179 PROCEDURE apply_mass_rebook(
5180 p_api_version IN NUMBER,
5181 p_init_msg_list IN VARCHAR2,
5182 x_return_status OUT NOCOPY VARCHAR2,
5183 x_msg_count OUT NOCOPY NUMBER,
5184 x_msg_data OUT NOCOPY VARCHAR2,
5185 p_rbk_tbl IN rbk_tbl_type,
5186 p_deprn_method_code IN FA_BOOKS.DEPRN_METHOD_CODE%TYPE,
5187 p_in_service_date IN FA_BOOKS.DATE_PLACED_IN_SERVICE%TYPE,
5188 p_life_in_months IN FA_BOOKS.LIFE_IN_MONTHS%TYPE,
5189 p_basic_rate IN FA_BOOKS.BASIC_RATE%TYPE,
5190 p_adjusted_rate IN FA_BOOKS.ADJUSTED_RATE%TYPE,
5191 p_residual_value IN OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
5192 p_strm_lalevl_tbl IN strm_lalevl_tbl_type,
5193 x_stream_trx_tbl OUT NOCOPY strm_trx_tbl_type
5194 ) IS
5195 l_api_name VARCHAR2(35) := 'apply_mass_rebook';
5196 l_proc_name VARCHAR2(35) := 'APPLY_MASS_REBOOK';
5197 l_api_version NUMBER := 1.0;
5198
5199 l_line_count NUMBER;
5200 l_contract_count NUMBER;
5201 l_contract_id NUMBER;
5202 l_prev_contract_id NUMBER;
5203
5204 l_kle_tbl kle_tbl_type;
5205
5206 BEGIN
5207 IF (G_DEBUG_ENABLED = 'Y') THEN
5208 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5209 END IF;
5210
5211 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5212 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5213 END IF;
5214 -- call START_ACTIVITY to create savepoint, check compatibility
5215 -- and initialize message list
5216 x_return_status := OKL_API.START_ACTIVITY(
5217 p_api_name => l_api_name,
5218 p_pkg_name => G_PKG_NAME,
5219 p_init_msg_list => p_init_msg_list,
5220 l_api_version => l_api_version,
5221 p_api_version => p_api_version,
5222 p_api_type => G_API_TYPE,
5223 x_return_status => x_return_status);
5224
5225 -- check if activity started successfully
5226 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5227 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5228 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5229 raise OKL_API.G_EXCEPTION_ERROR;
5230 END IF;
5231
5232
5233 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5234 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Count: '||p_rbk_tbl.COUNT);
5235 END IF;
5236
5237 IF (p_rbk_tbl.COUNT > 0 ) THEN
5238 l_line_count := 0;
5239 l_contract_count := 0;
5240 l_prev_contract_id := G_INIT_NUMBER;
5241 FOR i IN 1..p_rbk_tbl.COUNT
5242 LOOP
5243 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5244 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Contract# :'||p_rbk_tbl(i).contract_number);
5245 END IF;
5246 l_contract_count := l_contract_count + 1;
5247 IF (l_prev_contract_id = p_rbk_tbl(i).khr_id
5248 OR
5249 l_contract_count = 1) THEN
5250 l_line_count := l_line_count + 1;
5251 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5252 l_contract_id := p_rbk_tbl(i).khr_id;
5253 l_prev_contract_id := p_rbk_tbl(i).khr_id; --Bug# 2579620
5254 ELSE
5255 -- Call Rebook_Contract
5256 rebook_contract(
5257 x_return_status => x_return_status,
5258 x_msg_count => x_msg_count,
5259 x_msg_data => x_msg_data,
5260 p_online_yn => 'N',
5261 p_khr_id => l_contract_id,
5262 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5263 p_line_count => l_line_count,
5264 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5265 p_book_type_code => NULL,
5266 p_deprn_method_code => p_deprn_method_code,
5267 p_in_service_date => p_in_service_date,
5268 p_life_in_months => p_life_in_months,
5269 p_basic_rate => p_basic_rate,
5270 p_adjusted_rate => p_adjusted_rate,
5271 p_residual_value => p_residual_value,
5272 p_strm_lalevl_tbl => p_strm_lalevl_tbl
5273 );
5274
5275 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5276 raise OKL_API.G_EXCEPTION_ERROR;
5277 END IF;
5278
5279 x_stream_trx_tbl(l_contract_count).chr_id := l_contract_id;
5280 x_stream_trx_tbl(l_contract_count).trx_number := g_stream_trx_number;
5281
5282 l_line_count := 1;
5283 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5284 l_contract_id := p_rbk_tbl(i).khr_id;
5285
5286 END IF;
5287 END LOOP;
5288
5289 rebook_contract(
5290 x_return_status => x_return_status,
5291 x_msg_count => x_msg_count,
5292 x_msg_data => x_msg_data,
5293 p_online_yn => 'N',
5294 p_khr_id => l_contract_id,
5295 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5296 p_line_count => l_line_count,
5297 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5298 p_book_type_code => NULL,
5299 p_deprn_method_code => p_deprn_method_code,
5300 p_in_service_date => p_in_service_date,
5301 p_life_in_months => p_life_in_months,
5302 p_basic_rate => p_basic_rate,
5303 p_adjusted_rate => p_adjusted_rate,
5304 p_residual_value => p_residual_value,
5305 p_strm_lalevl_tbl => p_strm_lalevl_tbl
5306 );
5307
5308 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5309 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rebook Contract status: '||x_return_status);
5310 END IF;
5311 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5312 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5313 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5314 raise OKL_API.G_EXCEPTION_ERROR;
5315 END IF;
5316
5317 --l_contract_count := l_contract_count + 1;
5318 x_stream_trx_tbl(l_contract_count).chr_id := l_contract_id;
5319 x_stream_trx_tbl(l_contract_count).trx_number := g_stream_trx_number;
5320
5321 ELSE
5322 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5323 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Nothing to Process...');
5324 END IF;
5325 x_return_status := OKL_API.G_RET_STS_ERROR;
5326 RAISE OKL_API.G_EXCEPTION_ERROR;
5327 END IF;
5328
5329 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5330 x_msg_data => x_msg_data);
5331
5332
5333 RETURN;
5334
5335 EXCEPTION
5336 when OKL_API.G_EXCEPTION_ERROR then
5337 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5338 p_api_name => l_api_name,
5339 p_pkg_name => G_PKG_NAME,
5340 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5341 x_msg_count => x_msg_count,
5342 x_msg_data => x_msg_data,
5343 p_api_type => G_API_TYPE);
5344
5345 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5346 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5347 p_api_name => l_api_name,
5348 p_pkg_name => G_PKG_NAME,
5349 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5350 x_msg_count => x_msg_count,
5351 x_msg_data => x_msg_data,
5352 p_api_type => G_API_TYPE);
5353
5354 when OTHERS then
5355 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5356 p_api_name => l_api_name,
5357 p_pkg_name => G_PKG_NAME,
5358 p_exc_name => 'OTHERS',
5359 x_msg_count => x_msg_count,
5360 x_msg_data => x_msg_data,
5361 p_api_type => G_API_TYPE);
5362 END apply_mass_rebook;
5363
5364 ------------------------------------------------------------------------------
5365 -- PROCEDURE apply_mass_rebook
5366 -- This proecdure uses to apply mass rebook for contracts. It should be called
5367 -- by those who does not have access to MASS REBOOK UI under OKL.
5368 -- This process is overloaded from previous one to return stream transactio ID
5369 -- to caller program
5370 --
5371 -- Adding p_transaction_date parameter, if not provided, system
5372 -- will pass SYSDATE to downstream processes
5373 -- Calls:
5374 -- Called by:
5375 ------------------------------------------------------------------------------
5376
5377 PROCEDURE apply_mass_rebook(
5378 p_api_version IN NUMBER,
5379 p_init_msg_list IN VARCHAR2,
5380 x_return_status OUT NOCOPY VARCHAR2,
5381 x_msg_count OUT NOCOPY NUMBER,
5382 x_msg_data OUT NOCOPY VARCHAR2,
5383 p_rbk_tbl IN rbk_tbl_type,
5384 p_deprn_method_code IN FA_BOOKS.DEPRN_METHOD_CODE%TYPE,
5385 p_in_service_date IN FA_BOOKS.DATE_PLACED_IN_SERVICE%TYPE,
5386 p_life_in_months IN FA_BOOKS.LIFE_IN_MONTHS%TYPE,
5387 p_basic_rate IN FA_BOOKS.BASIC_RATE%TYPE,
5388 p_adjusted_rate IN FA_BOOKS.ADJUSTED_RATE%TYPE,
5389 p_residual_value IN OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
5390 p_strm_lalevl_tbl IN strm_lalevl_tbl_type,
5391 p_transaction_date IN OKL_RBK_SELECTED_CONTRACT.TRANSACTION_DATE%TYPE,
5392 x_stream_trx_tbl OUT NOCOPY strm_trx_tbl_type
5393 ) IS
5394 l_api_name VARCHAR2(35) := 'apply_mass_rebook';
5395 l_proc_name VARCHAR2(35) := 'APPLY_MASS_REBOOK';
5396 l_api_version NUMBER := 1.0;
5397
5398 l_line_count NUMBER;
5399 l_contract_count NUMBER;
5400 l_contract_id NUMBER;
5401 l_prev_contract_id NUMBER;
5402
5403 l_kle_tbl kle_tbl_type;
5404
5405 BEGIN
5406 IF (G_DEBUG_ENABLED = 'Y') THEN
5407 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5408 END IF;
5409
5410 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5411 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5412 END IF;
5413 -- call START_ACTIVITY to create savepoint, check compatibility
5414 -- and initialize message list
5415 x_return_status := OKL_API.START_ACTIVITY(
5416 p_api_name => l_api_name,
5417 p_pkg_name => G_PKG_NAME,
5418 p_init_msg_list => p_init_msg_list,
5419 l_api_version => l_api_version,
5420 p_api_version => p_api_version,
5421 p_api_type => G_API_TYPE,
5422 x_return_status => x_return_status);
5423
5424 -- check if activity started successfully
5425 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5426 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5427 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5428 raise OKL_API.G_EXCEPTION_ERROR;
5429 END IF;
5430
5431
5432 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5433 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Count: '||p_rbk_tbl.COUNT);
5434 END IF;
5435
5436 IF (p_rbk_tbl.COUNT > 0 ) THEN
5437 l_line_count := 0;
5438 l_contract_count := 0;
5439 l_prev_contract_id := G_INIT_NUMBER;
5440 FOR i IN 1..p_rbk_tbl.COUNT
5441 LOOP
5442 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5443 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Contract# :'||p_rbk_tbl(i).contract_number);
5444 END IF;
5445 l_contract_count := l_contract_count + 1;
5446 IF (l_prev_contract_id = p_rbk_tbl(i).khr_id
5447 OR
5448 l_contract_count = 1) THEN
5449 l_line_count := l_line_count + 1;
5450 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5451 l_contract_id := p_rbk_tbl(i).khr_id;
5452 l_prev_contract_id := p_rbk_tbl(i).khr_id; --Bug# 2579620
5453 ELSE
5454 -- Call Rebook_Contract
5455 rebook_contract(
5456 x_return_status => x_return_status,
5457 x_msg_count => x_msg_count,
5458 x_msg_data => x_msg_data,
5459 p_online_yn => 'N',
5460 p_khr_id => l_contract_id,
5461 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5462 p_line_count => l_line_count,
5463 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5464 p_book_type_code => NULL,
5465 p_deprn_method_code => p_deprn_method_code,
5466 p_in_service_date => p_in_service_date,
5467 p_life_in_months => p_life_in_months,
5468 p_basic_rate => p_basic_rate,
5469 p_adjusted_rate => p_adjusted_rate,
5470 p_residual_value => p_residual_value,
5471 p_strm_lalevl_tbl => p_strm_lalevl_tbl,
5472 p_transaction_date => p_transaction_date
5473 );
5474
5475 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5476 raise OKL_API.G_EXCEPTION_ERROR;
5477 END IF;
5478
5479 x_stream_trx_tbl(l_contract_count).chr_id := l_contract_id;
5480 x_stream_trx_tbl(l_contract_count).trx_number := g_stream_trx_number;
5481
5482 l_line_count := 1;
5483 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5484 l_contract_id := p_rbk_tbl(i).khr_id;
5485
5486 END IF;
5487 END LOOP;
5488
5489 rebook_contract(
5490 x_return_status => x_return_status,
5491 x_msg_count => x_msg_count,
5492 x_msg_data => x_msg_data,
5493 p_online_yn => 'N',
5494 p_khr_id => l_contract_id,
5495 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5496 p_line_count => l_line_count,
5497 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5498 p_book_type_code => NULL,
5499 p_deprn_method_code => p_deprn_method_code,
5500 p_in_service_date => p_in_service_date,
5501 p_life_in_months => p_life_in_months,
5502 p_basic_rate => p_basic_rate,
5503 p_adjusted_rate => p_adjusted_rate,
5504 p_residual_value => p_residual_value,
5505 p_strm_lalevl_tbl => p_strm_lalevl_tbl,
5506 p_transaction_date => p_transaction_date
5507 );
5508
5509 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5510 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rebook Contract status: '||x_return_status);
5511 END IF;
5512 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5513 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5514 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5515 raise OKL_API.G_EXCEPTION_ERROR;
5516 END IF;
5517
5518 --l_contract_count := l_contract_count + 1;
5519 x_stream_trx_tbl(l_contract_count).chr_id := l_contract_id;
5520 x_stream_trx_tbl(l_contract_count).trx_number := g_stream_trx_number;
5521
5522 ELSE
5523 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5524 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Nothing to Process...');
5525 END IF;
5526 x_return_status := OKL_API.G_RET_STS_ERROR;
5527 RAISE OKL_API.G_EXCEPTION_ERROR;
5528 END IF;
5529
5530 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5531 x_msg_data => x_msg_data);
5532
5533
5534 RETURN;
5535
5536 EXCEPTION
5537 when OKL_API.G_EXCEPTION_ERROR then
5538 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5539 p_api_name => l_api_name,
5540 p_pkg_name => G_PKG_NAME,
5541 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5542 x_msg_count => x_msg_count,
5543 x_msg_data => x_msg_data,
5544 p_api_type => G_API_TYPE);
5545
5546 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5547 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5548 p_api_name => l_api_name,
5549 p_pkg_name => G_PKG_NAME,
5550 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5551 x_msg_count => x_msg_count,
5552 x_msg_data => x_msg_data,
5553 p_api_type => G_API_TYPE);
5554
5555 when OTHERS then
5556 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5557 p_api_name => l_api_name,
5558 p_pkg_name => G_PKG_NAME,
5559 p_exc_name => 'OTHERS',
5560 x_msg_count => x_msg_count,
5561 x_msg_data => x_msg_data,
5562 p_api_type => G_API_TYPE);
5563 END apply_mass_rebook;
5564
5565 ------------------------------------------------------------------------------
5566 -- PROCEDURE apply_mass_rebook
5567 -- This proecdure uses to apply mass rebook for contracts.
5568 -- This has been overloaded for following specific purpose:
5569 -- 1. To get termination transaction ID (p_source_trx_id)
5570 -- 2. Use this ID to update transaction after successful completion of Mass rebook
5571 -- 3. To accept source transaction type (p_source_trx_type)
5572 -- 4. Return Mass rebook transaction id to caller (x_mass_rebook_trx_id)
5573 -- Calls:
5574 -- Called by:
5575 ------------------------------------------------------------------------------
5576 PROCEDURE apply_mass_rebook(
5577 p_api_version IN NUMBER,
5578 p_init_msg_list IN VARCHAR2,
5579 x_return_status OUT NOCOPY VARCHAR2,
5580 x_msg_count OUT NOCOPY NUMBER,
5581 x_msg_data OUT NOCOPY VARCHAR2,
5582 p_rbk_tbl IN rbk_tbl_type,
5583 p_deprn_method_code IN FA_BOOKS.DEPRN_METHOD_CODE%TYPE,
5584 p_in_service_date IN FA_BOOKS.DATE_PLACED_IN_SERVICE%TYPE,
5585 p_life_in_months IN FA_BOOKS.LIFE_IN_MONTHS%TYPE,
5586 p_basic_rate IN FA_BOOKS.BASIC_RATE%TYPE,
5587 p_adjusted_rate IN FA_BOOKS.ADJUSTED_RATE%TYPE,
5588 p_residual_value IN OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
5589 p_strm_lalevl_tbl IN strm_lalevl_tbl_type,
5590 p_source_trx_id IN OKL_TRX_CONTRACTS.SOURCE_TRX_ID%TYPE,
5591 p_source_trx_type IN OKL_TRX_CONTRACTS.SOURCE_TRX_TYPE%TYPE,
5592 x_mass_rebook_trx_id OUT NOCOPY OKL_TRX_CONTRACTS.ID%TYPE
5593 ) IS
5594
5595 l_api_name VARCHAR2(35) := 'apply_mass_rebook';
5596 l_proc_name VARCHAR2(35) := 'APPLY_MASS_REBOOK';
5597 l_api_version NUMBER := 1.0;
5598
5599 l_line_count NUMBER;
5600 l_contract_count NUMBER;
5601 l_contract_id NUMBER;
5602 l_prev_contract_id NUMBER;
5603
5604 l_kle_tbl kle_tbl_type;
5605
5606 l_tcnv_rec tcnv_rec_type;
5607 x_tcnv_rec tcnv_rec_type;
5608
5609 BEGIN
5610 IF (G_DEBUG_ENABLED = 'Y') THEN
5611 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5612 END IF;
5613
5614 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5615 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5616 END IF;
5617 -- call START_ACTIVITY to create savepoint, check compatibility
5618 -- and initialize message list
5619 x_return_status := OKL_API.START_ACTIVITY(
5620 p_api_name => l_api_name,
5621 p_pkg_name => G_PKG_NAME,
5622 p_init_msg_list => p_init_msg_list,
5623 l_api_version => l_api_version,
5624 p_api_version => p_api_version,
5625 p_api_type => G_API_TYPE,
5626 x_return_status => x_return_status);
5627
5628 -- check if activity started successfully
5629 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5630 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5631 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5632 raise OKL_API.G_EXCEPTION_ERROR;
5633 END IF;
5634
5635 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5636 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->Count: '||p_rbk_tbl.COUNT);
5637 END IF;
5638
5639 IF (p_rbk_tbl.COUNT > 0 ) THEN
5640 l_line_count := 0;
5641 l_contract_count := 0;
5642 l_prev_contract_id := G_INIT_NUMBER;
5643 FOR i IN 1..p_rbk_tbl.COUNT
5644 LOOP
5645 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5646 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->Contract# :'||p_rbk_tbl(i).contract_number);
5647 END IF;
5648 l_contract_count := l_contract_count + 1;
5649 IF (l_prev_contract_id = p_rbk_tbl(i).khr_id
5650 OR
5651 l_contract_count = 1) THEN
5652 l_line_count := l_line_count + 1;
5653 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5654 l_contract_id := p_rbk_tbl(i).khr_id;
5655 l_prev_contract_id := p_rbk_tbl(i).khr_id; --Bug# 2579620
5656 ELSE
5657 --
5658 -- Restart termination process
5659 -- cancel any ongoing transaction, if any
5660 --
5661 cancel_transaction(
5662 x_return_status => x_return_status,
5663 x_msg_count => x_msg_count,
5664 x_msg_data => x_msg_data,
5665 p_chr_id => l_contract_id
5666 );
5667
5668 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5669 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After cancel_transaction: '||x_return_status);
5670 END IF;
5671 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5672 raise OKL_API.G_EXCEPTION_ERROR;
5673 END IF;
5674
5675 G_TERMINATION_TRX_ID := p_source_trx_id;
5676 G_TERMINATION_TRX_TYPE := p_source_trx_type;
5677 G_MASS_RBK_TRX_ID := NULL;
5678
5679 okl_api.set_message('OKL', 'AM', 'Before Term Trx ID: ', G_TERMINATION_TRX_ID);
5680
5681 -- Call Rebook_Contract
5682 rebook_contract(
5683 x_return_status => x_return_status,
5684 x_msg_count => x_msg_count,
5685 x_msg_data => x_msg_data,
5686 p_online_yn => 'N',
5687 p_khr_id => l_contract_id,
5688 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5689 p_line_count => l_line_count,
5690 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5691 p_book_type_code => NULL,
5692 p_deprn_method_code => p_deprn_method_code,
5693 p_in_service_date => p_in_service_date,
5694 p_life_in_months => p_life_in_months,
5695 p_basic_rate => p_basic_rate,
5696 p_adjusted_rate => p_adjusted_rate,
5697 p_residual_value => p_residual_value,
5698 p_strm_lalevl_tbl => p_strm_lalevl_tbl
5699 );
5700 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5701 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After rebook_contract: '||x_return_status);
5702 END IF;
5703 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5704 raise OKL_API.G_EXCEPTION_ERROR;
5705 END IF;
5706
5707 x_mass_rebook_trx_id := G_MASS_RBK_TRX_ID;
5708
5709 l_line_count := 1;
5710 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5711 l_contract_id := p_rbk_tbl(i).khr_id;
5712 END IF;
5713 END LOOP;
5714
5715 --
5716 -- Restart termination process
5717 -- cancel any ongoing transaction, if any
5718 --
5719 cancel_transaction(
5720 x_return_status => x_return_status,
5721 x_msg_count => x_msg_count,
5722 x_msg_data => x_msg_data,
5723 p_chr_id => l_contract_id
5724 );
5725
5726 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5727 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After cancel_transaction: '||x_return_status);
5728 END IF;
5729 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5730 raise OKL_API.G_EXCEPTION_ERROR;
5731 END IF;
5732
5733
5734 G_TERMINATION_TRX_ID := p_source_trx_id;
5735 G_TERMINATION_TRX_TYPE := p_source_trx_type;
5736 G_MASS_RBK_TRX_ID := NULL;
5737
5738 okl_api.set_message('OKL', 'AM', 'Before Term Trx ID: ', G_TERMINATION_TRX_ID);
5739
5740 rebook_contract(
5741 x_return_status => x_return_status,
5742 x_msg_count => x_msg_count,
5743 x_msg_data => x_msg_data,
5744 p_online_yn => 'N',
5745 p_khr_id => l_contract_id,
5746 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5747 p_line_count => l_line_count,
5748 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5749 p_book_type_code => NULL,
5750 p_deprn_method_code => p_deprn_method_code,
5751 p_in_service_date => p_in_service_date,
5752 p_life_in_months => p_life_in_months,
5753 p_basic_rate => p_basic_rate,
5754 p_adjusted_rate => p_adjusted_rate,
5755 p_residual_value => p_residual_value,
5756 p_strm_lalevl_tbl => p_strm_lalevl_tbl
5757 );
5758
5759 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5760 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->rebook Contract status: '||x_return_status);
5761 END IF;
5762 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5763 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5764 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5765 raise OKL_API.G_EXCEPTION_ERROR;
5766 END IF;
5767
5768 x_mass_rebook_trx_id := G_MASS_RBK_TRX_ID;
5769
5770 ELSE
5771 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5772 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Nothing to Process...');
5773 END IF;
5774 x_return_status := OKL_API.G_RET_STS_ERROR;
5775 RAISE OKL_API.G_EXCEPTION_ERROR;
5776 END IF;
5777
5778 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5779 x_msg_data => x_msg_data);
5780
5781
5782 RETURN;
5783
5784 EXCEPTION
5785 when OKL_API.G_EXCEPTION_ERROR then
5786 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5787 p_api_name => l_api_name,
5788 p_pkg_name => G_PKG_NAME,
5789 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5790 x_msg_count => x_msg_count,
5791 x_msg_data => x_msg_data,
5792 p_api_type => G_API_TYPE);
5793
5794 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5795 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5796 p_api_name => l_api_name,
5797 p_pkg_name => G_PKG_NAME,
5798 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5799 x_msg_count => x_msg_count,
5800 x_msg_data => x_msg_data,
5801 p_api_type => G_API_TYPE);
5802
5803 when OTHERS then
5804 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5805 p_api_name => l_api_name,
5806 p_pkg_name => G_PKG_NAME,
5807 p_exc_name => 'OTHERS',
5808 x_msg_count => x_msg_count,
5809 x_msg_data => x_msg_data,
5810 p_api_type => G_API_TYPE);
5811 END apply_mass_rebook;
5812
5813 ------------------------------------------------------------------------------
5814 -- PROCEDURE apply_mass_rebook
5815 -- This proecdure uses to apply mass rebook for contracts.
5816 -- This has been overloaded for following specific purpose:
5817 -- 1. To accept transaction date from calling process, This date is going to
5818 -- be used for accounting too.
5819 -- Calls:
5820 -- Called by:
5821 ------------------------------------------------------------------------------
5822 PROCEDURE apply_mass_rebook(
5823 p_api_version IN NUMBER,
5824 p_init_msg_list IN VARCHAR2,
5825 x_return_status OUT NOCOPY VARCHAR2,
5826 x_msg_count OUT NOCOPY NUMBER,
5827 x_msg_data OUT NOCOPY VARCHAR2,
5828 p_rbk_tbl IN rbk_tbl_type,
5829 p_deprn_method_code IN FA_BOOKS.DEPRN_METHOD_CODE%TYPE,
5830 p_in_service_date IN FA_BOOKS.DATE_PLACED_IN_SERVICE%TYPE,
5831 p_life_in_months IN FA_BOOKS.LIFE_IN_MONTHS%TYPE,
5832 p_basic_rate IN FA_BOOKS.BASIC_RATE%TYPE,
5833 p_adjusted_rate IN FA_BOOKS.ADJUSTED_RATE%TYPE,
5834 p_residual_value IN OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
5835 p_strm_lalevl_tbl IN strm_lalevl_tbl_type,
5836 p_source_trx_id IN OKL_TRX_CONTRACTS.SOURCE_TRX_ID%TYPE,
5837 p_source_trx_type IN OKL_TRX_CONTRACTS.SOURCE_TRX_TYPE%TYPE,
5838 p_transaction_date IN OKL_RBK_SELECTED_CONTRACT.TRANSACTION_DATE%TYPE,
5839 x_mass_rebook_trx_id OUT NOCOPY OKL_TRX_CONTRACTS.ID%TYPE
5840 ) IS
5841
5842 l_api_name VARCHAR2(35) := 'apply_mass_rebook';
5843 l_proc_name VARCHAR2(35) := 'APPLY_MASS_REBOOK';
5844 l_api_version NUMBER := 1.0;
5845
5846 l_line_count NUMBER;
5847 l_contract_count NUMBER;
5848 l_contract_id NUMBER;
5849 l_prev_contract_id NUMBER;
5850
5851 l_kle_tbl kle_tbl_type;
5852
5853 l_tcnv_rec tcnv_rec_type;
5854 x_tcnv_rec tcnv_rec_type;
5855
5856 BEGIN
5857 IF (G_DEBUG_ENABLED = 'Y') THEN
5858 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5859 END IF;
5860
5861 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5862 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5863 END IF;
5864 -- call START_ACTIVITY to create savepoint, check compatibility
5865 -- and initialize message list
5866 x_return_status := OKL_API.START_ACTIVITY(
5867 p_api_name => l_api_name,
5868 p_pkg_name => G_PKG_NAME,
5869 p_init_msg_list => p_init_msg_list,
5870 l_api_version => l_api_version,
5871 p_api_version => p_api_version,
5872 p_api_type => G_API_TYPE,
5873 x_return_status => x_return_status);
5874
5875 -- check if activity started successfully
5876 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5877 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5878 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
5879 raise OKL_API.G_EXCEPTION_ERROR;
5880 END IF;
5881
5882 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5883 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->Count: '||p_rbk_tbl.COUNT);
5884 END IF;
5885
5886 IF (p_rbk_tbl.COUNT > 0 ) THEN
5887 l_line_count := 0;
5888 l_contract_count := 0;
5889 l_prev_contract_id := G_INIT_NUMBER;
5890 FOR i IN 1..p_rbk_tbl.COUNT
5891 LOOP
5892 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5893 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->Contract# :'||p_rbk_tbl(i).contract_number);
5894 END IF;
5895 l_contract_count := l_contract_count + 1;
5896 IF (l_prev_contract_id = p_rbk_tbl(i).khr_id
5897 OR
5898 l_contract_count = 1) THEN
5899 l_line_count := l_line_count + 1;
5900 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5901 l_contract_id := p_rbk_tbl(i).khr_id;
5902 l_prev_contract_id := p_rbk_tbl(i).khr_id; --Bug# 2579620
5903 ELSE
5904 --
5905 -- Restart termination process
5906 -- cancel any ongoing transaction, if any
5907 --
5908 cancel_transaction(
5909 x_return_status => x_return_status,
5910 x_msg_count => x_msg_count,
5911 x_msg_data => x_msg_data,
5912 p_chr_id => l_contract_id
5913 );
5914
5915 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5916 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After cancel_transaction: '||x_return_status);
5917 END IF;
5918 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5919 raise OKL_API.G_EXCEPTION_ERROR;
5920 END IF;
5921
5922 G_TERMINATION_TRX_ID := p_source_trx_id;
5923 G_TERMINATION_TRX_TYPE := p_source_trx_type;
5924 G_MASS_RBK_TRX_ID := NULL;
5925
5926 okl_api.set_message('OKL', 'AM', 'Before Term Trx ID: ', G_TERMINATION_TRX_ID);
5927
5928 -- Call Rebook_Contract
5929 rebook_contract(
5930 x_return_status => x_return_status,
5931 x_msg_count => x_msg_count,
5932 x_msg_data => x_msg_data,
5933 p_online_yn => 'N',
5934 p_khr_id => l_contract_id,
5935 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5936 p_line_count => l_line_count,
5937 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5938 p_book_type_code => NULL,
5939 p_deprn_method_code => p_deprn_method_code,
5940 p_in_service_date => p_in_service_date,
5941 p_life_in_months => p_life_in_months,
5942 p_basic_rate => p_basic_rate,
5943 p_adjusted_rate => p_adjusted_rate,
5944 p_residual_value => p_residual_value,
5945 p_strm_lalevl_tbl => p_strm_lalevl_tbl,
5946 p_transaction_date => p_transaction_date
5947 );
5948 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5949 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After rebook_contract: '||x_return_status);
5950 END IF;
5951 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5952 raise OKL_API.G_EXCEPTION_ERROR;
5953 END IF;
5954
5955 x_mass_rebook_trx_id := G_MASS_RBK_TRX_ID;
5956
5957 l_line_count := 1;
5958 l_kle_tbl(l_line_count).id := p_rbk_tbl(i).kle_id;
5959 l_contract_id := p_rbk_tbl(i).khr_id;
5960 END IF;
5961 END LOOP;
5962
5963 --
5964 -- Restart termination process
5965 -- cancel any ongoing transaction, if any
5966 --
5967 cancel_transaction(
5968 x_return_status => x_return_status,
5969 x_msg_count => x_msg_count,
5970 x_msg_data => x_msg_data,
5971 p_chr_id => l_contract_id
5972 );
5973
5974 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5975 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After cancel_transaction: '||x_return_status);
5976 END IF;
5977 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
5978 raise OKL_API.G_EXCEPTION_ERROR;
5979 END IF;
5980
5981
5982 G_TERMINATION_TRX_ID := p_source_trx_id;
5983 G_TERMINATION_TRX_TYPE := p_source_trx_type;
5984 G_MASS_RBK_TRX_ID := NULL;
5985
5986 okl_api.set_message('OKL', 'AM', 'Before Term Trx ID: ', G_TERMINATION_TRX_ID);
5987
5988 rebook_contract(
5989 x_return_status => x_return_status,
5990 x_msg_count => x_msg_count,
5991 x_msg_data => x_msg_data,
5992 p_online_yn => 'N',
5993 p_khr_id => l_contract_id,
5994 p_kle_tbl => l_kle_tbl, -- Table of Top Line ID
5995 p_line_count => l_line_count,
5996 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
5997 p_book_type_code => NULL,
5998 p_deprn_method_code => p_deprn_method_code,
5999 p_in_service_date => p_in_service_date,
6000 p_life_in_months => p_life_in_months,
6001 p_basic_rate => p_basic_rate,
6002 p_adjusted_rate => p_adjusted_rate,
6003 p_residual_value => p_residual_value,
6004 p_strm_lalevl_tbl => p_strm_lalevl_tbl,
6005 p_transaction_date => p_transaction_date
6006 );
6007
6008 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6009 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->rebook Contract status: '||x_return_status);
6010 END IF;
6011 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
6012 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6013 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
6014 raise OKL_API.G_EXCEPTION_ERROR;
6015 END IF;
6016
6017 x_mass_rebook_trx_id := G_MASS_RBK_TRX_ID;
6018
6019 ELSE
6020 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6021 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Nothing to Process...');
6022 END IF;
6023 x_return_status := OKL_API.G_RET_STS_ERROR;
6024 RAISE OKL_API.G_EXCEPTION_ERROR;
6025 END IF;
6026
6027 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
6028 x_msg_data => x_msg_data);
6029
6030
6031 RETURN;
6032
6033 EXCEPTION
6034 when OKL_API.G_EXCEPTION_ERROR then
6035 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6036 p_api_name => l_api_name,
6037 p_pkg_name => G_PKG_NAME,
6038 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
6039 x_msg_count => x_msg_count,
6040 x_msg_data => x_msg_data,
6041 p_api_type => G_API_TYPE);
6042
6043 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
6044 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6045 p_api_name => l_api_name,
6046 p_pkg_name => G_PKG_NAME,
6047 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
6048 x_msg_count => x_msg_count,
6049 x_msg_data => x_msg_data,
6050 p_api_type => G_API_TYPE);
6051
6052 when OTHERS then
6053 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6054 p_api_name => l_api_name,
6055 p_pkg_name => G_PKG_NAME,
6056 p_exc_name => 'OTHERS',
6057 x_msg_count => x_msg_count,
6058 x_msg_data => x_msg_data,
6059 p_api_type => G_API_TYPE);
6060 END apply_mass_rebook;
6061
6062 ------------------------------------------------------------------------------
6063 -- PROCEDURE apply_mass_rebook
6064 -- This proecdure uses to apply mass rebook for contracts.
6065 -- This has been overloaded for following specific purpose:
6066 -- 1. To accept prescheduled payment amount.
6067 -- Calls:
6068 -- Called by:
6069 ------------------------------------------------------------------------------
6070 PROCEDURE apply_mass_rebook(
6071 p_api_version IN NUMBER,
6072 p_init_msg_list IN VARCHAR2,
6073 x_return_status OUT NOCOPY VARCHAR2,
6074 x_msg_count OUT NOCOPY NUMBER,
6075 x_msg_data OUT NOCOPY VARCHAR2,
6076 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
6077 p_kle_tbl IN kle_tbl_type,
6078 p_source_trx_id IN OKL_TRX_CONTRACTS.SOURCE_TRX_ID%TYPE,
6079 p_source_trx_type IN OKL_TRX_CONTRACTS.SOURCE_TRX_TYPE%TYPE,
6080 p_transaction_date IN OKL_TRX_CONTRACTS.DATE_TRANSACTION_OCCURRED%TYPE,
6081 x_mass_rebook_trx_id OUT NOCOPY OKL_TRX_CONTRACTS.ID%TYPE,
6082 p_ppd_amount IN NUMBER,
6083 p_ppd_reason_code IN FND_LOOKUPS.LOOKUP_CODE%TYPE,
6084 p_payment_struc IN okl_mass_rebook_pvt.strm_lalevl_tbl_type
6085 )
6086 IS
6087 l_api_name VARCHAR2(35) := 'apply_mass_rebook';
6088 l_proc_name VARCHAR2(35) := 'APPLY_MASS_REBOOK';
6089 l_api_version NUMBER := 1.0;
6090
6091 l_line_count NUMBER;
6092 l_contract_count NUMBER;
6093 l_contract_id NUMBER;
6094 l_prev_contract_id NUMBER;
6095
6096 l_kle_tbl kle_tbl_type;
6097
6098 l_tcnv_rec tcnv_rec_type;
6099 x_tcnv_rec tcnv_rec_type;
6100 l_strm_lalevl_tbl strm_lalevl_tbl_type; /* DEBUG */
6101
6102 BEGIN
6103 IF (G_DEBUG_ENABLED = 'Y') THEN
6104 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
6105 END IF;
6106
6107 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6108 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
6109 END IF;
6110 -- call START_ACTIVITY to create savepoint, check compatibility
6111 -- and initialize message list
6112 x_return_status := OKL_API.START_ACTIVITY(
6113 p_api_name => l_api_name,
6114 p_pkg_name => G_PKG_NAME,
6115 p_init_msg_list => p_init_msg_list,
6116 l_api_version => l_api_version,
6117 p_api_version => p_api_version,
6118 p_api_type => G_API_TYPE,
6119 x_return_status => x_return_status);
6120
6121 -- check if activity started successfully
6122 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
6123 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6124 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
6125 raise OKL_API.G_EXCEPTION_ERROR;
6126 END IF;
6127
6128
6129 --
6130 -- Restart termination process
6131 -- cancel any ongoing transaction, if any
6132 --
6133 cancel_transaction(
6134 x_return_status => x_return_status,
6135 x_msg_count => x_msg_count,
6136 x_msg_data => x_msg_data,
6137 p_chr_id => p_chr_id
6138 );
6139
6140 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6141 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->After cancel_transaction: '||x_return_status);
6142 END IF;
6143 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
6144 raise OKL_API.G_EXCEPTION_ERROR;
6145 END IF;
6146
6147
6148 /* DEBUG */
6149 G_TERMINATION_TRX_ID := NULL;
6150 G_PPD_TRX_ID := p_source_trx_id;
6151 G_PPD_TRX_TYPE := p_source_trx_type;
6152 G_MASS_RBK_TRX_ID := NULL;
6153
6154 --okl_api.set_message('OKL', 'AM', 'Before Term Trx ID: ', G_TERMINATION_TRX_ID);
6155
6156 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6157 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before calling rebook contract...');
6158 END IF;
6159 l_line_count := p_kle_tbl.COUNT;
6160 rebook_contract(
6161 x_return_status => x_return_status,
6162 x_msg_count => x_msg_count,
6163 x_msg_data => x_msg_data,
6164 p_online_yn => 'N',
6165 p_khr_id => p_chr_id,
6166 p_kle_tbl => p_kle_tbl, -- Table of Top Line ID
6167 p_line_count => l_line_count,
6168 p_request_name => NULL, -- Not a ON-LINE Mass Rebook
6169 p_book_type_code => NULL,
6170 p_deprn_method_code => NULL,
6171 p_in_service_date => NULL,
6172 p_life_in_months => NULL,
6173 p_basic_rate => NULL,
6174 p_adjusted_rate => NULL,
6175 p_residual_value => NULL,
6176 p_strm_lalevl_tbl => p_payment_struc,
6177 p_transaction_date => p_transaction_date
6178 );
6179
6180 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6181 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'----->rebook Contract status: '||x_return_status);
6182 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After rebook contract: x_return_status=' || x_return_status);
6183 END IF;
6184 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
6185 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6186 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Raising OKL_API.G_RET_STS_UNEXP_ERROR:');
6187 END IF;
6188 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6189 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
6190 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6191 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Raising OKL_API.G_EXCEPTION_ERROR:');
6192 END IF;
6193 raise OKL_API.G_EXCEPTION_ERROR;
6194 END IF;
6195
6196 x_mass_rebook_trx_id := G_MASS_RBK_TRX_ID;
6197
6198 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
6199 x_msg_data => x_msg_data);
6200
6201
6202 RETURN;
6203
6204 EXCEPTION
6205 when OKL_API.G_EXCEPTION_ERROR then
6206 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6207 p_api_name => l_api_name,
6208 p_pkg_name => G_PKG_NAME,
6209 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
6210 x_msg_count => x_msg_count,
6211 x_msg_data => x_msg_data,
6212 p_api_type => G_API_TYPE);
6213 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6214 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After HANDLE_EXCEPTIONS: x_return_status='|| x_return_status);
6215 END IF;
6216
6217 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
6218 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6219 p_api_name => l_api_name,
6220 p_pkg_name => G_PKG_NAME,
6221 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
6222 x_msg_count => x_msg_count,
6223 x_msg_data => x_msg_data,
6224 p_api_type => G_API_TYPE);
6225
6226 when OTHERS then
6227 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6228 p_api_name => l_api_name,
6229 p_pkg_name => G_PKG_NAME,
6230 p_exc_name => 'OTHERS',
6231 x_msg_count => x_msg_count,
6232 x_msg_data => x_msg_data,
6233 p_api_type => G_API_TYPE);
6234
6235 --null;
6236 return;
6237 END apply_mass_rebook;
6238
6239 ------------------------------------------------------------------------------
6240 -- PROCEDURE create_mass_rbk_set_values
6241 -- This proecdure uses to create set values for mass rebook request
6242 -- Calls:
6243 -- Called by:
6244 ------------------------------------------------------------------------------
6245 /* Added for CR */
6246 PROCEDURE create_mass_rbk_set_values(
6247 p_api_version IN NUMBER,
6248 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6249 x_return_status OUT NOCOPY VARCHAR2,
6250 x_msg_count OUT NOCOPY NUMBER,
6251 x_msg_data OUT NOCOPY VARCHAR2,
6252 p_request_name IN OKL_MASS_RBK_CRITERIA.REQUEST_NAME%TYPE,
6253 p_mrbv_tbl IN mrbv_tbl_type,
6254 x_mrbv_tbl OUT NOCOPY mrbv_tbl_type)
6255 IS
6256
6257 l_api_name VARCHAR2(35) := 'create_mass_rbk_set_values';
6258 l_proc_name VARCHAR2(35) := 'CREATE_MASS_RBK_SET_VALUES';
6259 l_api_version NUMBER := 1.0;
6260 i INTEGER;
6261 l_set_value_present VARCHAR2(1) := 'N';
6262
6263 BEGIN
6264 IF (G_DEBUG_ENABLED = 'Y') THEN
6265 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
6266 END IF;
6267 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6268 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
6269 END IF;
6270 -- call START_ACTIVITY to create savepoint, check compatibility
6271 -- and initialize message list
6272 x_return_status := OKL_API.START_ACTIVITY(
6273 p_api_name => l_api_name,
6274 p_pkg_name => G_PKG_NAME,
6275 p_init_msg_list => p_init_msg_list,
6276 l_api_version => l_api_version,
6277 p_api_version => p_api_version,
6278 p_api_type => G_API_TYPE,
6279 x_return_status => x_return_status);
6280
6281 -- check if activity started successfully
6282 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
6283 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6284 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
6285 raise OKL_API.G_EXCEPTION_ERROR;
6286 END IF;
6287 --Validate the Set Values Data
6288 --Atleast one Set Value should be Present
6289 FOR i IN p_mrbv_tbl.FIRST..p_mrbv_tbl.LAST
6290 LOOP
6291 IF(p_mrbv_tbl.EXISTS(i)) THEN
6292 IF (p_mrbv_tbl(i).criteria_code = 'LIFE_IN_MONTHS'
6293 OR
6294 p_mrbv_tbl(i).criteria_code = 'BASIC_RATE'
6295 OR
6296 p_mrbv_tbl(i).criteria_code = 'ADJUSTED_RATE') THEN
6297
6298 IF (p_mrbv_tbl(i).operand IS NOT NULL
6299 OR
6300 p_mrbv_tbl(i).criteria_value1 IS NOT NULL
6301 OR
6302 p_mrbv_tbl(i).criteria_value2 IS NOT NULL) THEN
6303 okl_api.set_message(
6304 G_APP_NAME,
6305 G_INVALID_MATCH_OPTION,
6306 'CRIT_CODE',
6307 p_mrbv_tbl(i).criteria_code
6308 );
6309 RAISE OKL_API.G_EXCEPTION_ERROR;
6310 END IF;
6311 END IF;
6312 --Check for Data Integrity
6313 IF(p_mrbv_tbl(i).criteria_code = 'LIFE_IN_MONTHS' AND
6314 p_mrbv_tbl(i).set_value IS NOT NULL) THEN
6315 IF(p_mrbv_tbl(i).set_value <= 0 OR TRUNC(p_mrbv_tbl(i).set_value)<>(p_mrbv_tbl(i).set_value)) THEN
6316 okl_api.set_message(
6317 G_APP_NAME,
6318 'OKL_CONTRACTS_INVALID_VALUE',
6319 'COL_NAME',
6320 'LIFE_IN_MONTHS');
6321 RAISE OKL_API.G_EXCEPTION_ERROR;
6322 END IF;
6323
6324 END IF;
6325 IF(p_mrbv_tbl(i).criteria_code = 'BASIC_RATE' AND
6326 p_mrbv_tbl(i).set_value IS NOT NULL) THEN
6327 IF(p_mrbv_tbl(i).set_value <= 0 ) THEN
6328 okl_api.set_message(
6329 G_APP_NAME,
6330 'OKL_CONTRACTS_INVALID_VALUE',
6331 'COL_NAME',
6332 'BASIC_RATE');
6333 RAISE OKL_API.G_EXCEPTION_ERROR;
6334 END IF;
6335
6336 END IF;
6337 IF(p_mrbv_tbl(i).criteria_code = 'ADJUSTED_RATE' AND
6338 p_mrbv_tbl(i).set_value IS NOT NULL) THEN
6339 IF(p_mrbv_tbl(i).set_value <= 0 ) THEN
6340 okl_api.set_message(
6341 G_APP_NAME,
6342 'OKL_CONTRACTS_INVALID_VALUE',
6343 'COL_NAME',
6344 'ADJUSTED_RATE');
6345 RAISE OKL_API.G_EXCEPTION_ERROR;
6346 END IF;
6347
6348 END IF;
6349 IF (p_mrbv_tbl(i).set_value IS NOT NULL) THEN
6350 l_set_value_present := 'Y';
6351 END IF;
6352
6353 END IF;
6354 END LOOP;
6355 IF (l_set_value_present = 'N') THEN
6356 okl_api.set_message(
6357 G_APP_NAME,
6358 G_NO_SET_VALUE,
6359 'REQ_NAME',
6360 p_request_name
6361 );
6362 x_return_status := OKL_API.G_RET_STS_ERROR;
6363 END IF;
6364 --
6365 -- Insert Selection criteria
6366 --
6367 okl_mrb_pvt.insert_row(
6368 p_api_version => l_api_version,
6369 p_init_msg_list => p_init_msg_list,
6370 x_return_status => x_return_status,
6371 x_msg_count => x_msg_count,
6372 x_msg_data => x_msg_data,
6373 p_mrbv_tbl => p_mrbv_tbl,
6374 x_mrbv_tbl => x_mrbv_tbl
6375 );
6376
6377 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
6378 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6379 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
6380 raise OKL_API.G_EXCEPTION_ERROR;
6381 END IF;
6382
6383 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
6384 x_msg_data => x_msg_data);
6385
6386
6387 EXCEPTION
6388 when OKL_API.G_EXCEPTION_ERROR then
6389 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6390 p_api_name => l_api_name,
6391 p_pkg_name => G_PKG_NAME,
6392 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
6393 x_msg_count => x_msg_count,
6394 x_msg_data => x_msg_data,
6395 p_api_type => G_API_TYPE);
6396 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6397 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After HANDLE_EXCEPTIONS: x_return_status='|| x_return_status);
6398 END IF;
6399
6400 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
6401 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6402 p_api_name => l_api_name,
6403 p_pkg_name => G_PKG_NAME,
6404 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
6405 x_msg_count => x_msg_count,
6406 x_msg_data => x_msg_data,
6407 p_api_type => G_API_TYPE);
6408
6409 when OTHERS then
6410 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6411 p_api_name => l_api_name,
6412 p_pkg_name => G_PKG_NAME,
6413 p_exc_name => 'OTHERS',
6414 x_msg_count => x_msg_count,
6415 x_msg_data => x_msg_data,
6416 p_api_type => G_API_TYPE);
6417
6418
6419 END create_mass_rbk_set_values;
6420
6421 END OKL_MASS_REBOOK_PVT;