[Home] [Help]
PACKAGE BODY: APPS.OKL_CONTRACT_REBOOK_PVT
Source
1 PACKAGE BODY OKL_CONTRACT_REBOOK_PVT AS
2 /* $Header: OKLRRBKB.pls 120.50.12010000.2 2008/10/20 18:33:34 apaul ship $*/
3
4 G_MODULE VARCHAR2(255) := 'okl.stream.esg.okl_esg_transport_pvt';
5 G_DEBUG_ENABLED CONSTANT VARCHAR2(10) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
6 G_IS_DEBUG_STATEMENT_ON BOOLEAN;
7
8 -- Global Variables
9 G_INIT_NUMBER NUMBER := -9999;
10 G_PKG_NAME CONSTANT VARCHAR2(200) := 'OKL_CONTRACT_REBOOK_PVT';
11 G_APP_NAME CONSTANT VARCHAR2(3) := OKL_API.G_APP_NAME;
12 G_API_TYPE CONSTANT VARCHAR2(4) := '_PVT';
13
14 --Bug# 4212626
15 G_INSURANCE_LSE_ID CONSTANT NUMBER := 47;
16
17 -- subtype tcnv_rec_type IS OKL_TRX_CONTRACTS_PVT.tcnv_rec_type;
18 SUBTYPE stmv_rec_type IS OKL_STREAMS_PUB.stmv_rec_type;
19 SUBTYPE stmv_tbl_type IS OKL_STREAMS_PUB.stmv_tbl_type;
20 SUBTYPE selv_rec_type IS OKL_STREAMS_PUB.selv_rec_type;
21 SUBTYPE selv_tbl_type IS OKL_STREAMS_PUB.selv_tbl_type;
22 SUBTYPE khrv_rec_type IS OKL_CONTRACT_PUB.khrv_rec_type;
23 SUBTYPE chrv_rec_type IS OKL_OKC_MIGRATION_PVT.chrv_rec_type;
24 SUBTYPE clev_tbl_type IS OKL_OKC_MIGRATION_PVT.clev_tbl_type;
25 SUBTYPE klev_tbl_type IS OKL_CONTRACT_PUB.klev_tbl_type;
26 SUBTYPE klev_rec_type IS OKL_CONTRACT_PUB.klev_rec_type;
27 SUBTYPE clev_rec_type IS OKL_OKC_MIGRATION_PVT.clev_rec_type;
28 SUBTYPE rulv_rec_type IS OKL_RULE_PUB.rulv_rec_type;
29 SUBTYPE rulv_tbl_type IS OKL_RULE_PUB.rulv_tbl_type;
30 SUBTYPE rgpv_rec_type IS OKL_RULE_PUB.rgpv_rec_type;
31 SUBTYPE cvmv_rec_type IS OKL_VERSION_PUB.cvmv_rec_type;
32 --SUBTYPE cimv_rec_type IS Okl_Okc_Migration_Pvt.cimv_rec_type;
33 --SUBTYPE talv_rec_type IS Okl_Txl_Assets_Pub.tlpv_rec_type;
34 --SUBTYPE itiv_tbl_type IS Okl_Txl_Itm_Insts_Pub.iipv_tbl_type;
35 SUBTYPE cplv_rec_type IS OKL_OKC_MIGRATION_PVT.cplv_rec_type;
36 SUBTYPE rmpv_rec_type IS OKL_RULE_PUB.rmpv_rec_type;
37 SUBTYPE inv_agmt_chr_id_tbl_type IS okl_securitization_pvt.inv_agmt_chr_id_tbl_type;
38
39 -- sjalasut: added global constants to support fee types; changes added as part of Rebook Change Control Enhancement. START
40 G_ROLLOVER_FEE CONSTANT fnd_lookups.lookup_code%TYPE DEFAULT 'ROLLOVER';
41 -- sjalasut: added global constants to support fee types; changes added as part of Rebook Change Control Enhancement. END
42
43 /*
44 -- mvasudev, 08/23/2004
45 -- Added Constants to enable Business Event
46 */
47 G_WF_EVT_KHR_REBOOK_REQUESTED CONSTANT VARCHAR2(50) := 'oracle.apps.okl.la.lease_contract.rebook_requested';
48
49 G_WF_ITM_SRC_CONTRACT_ID CONSTANT VARCHAR2(20) := 'SOURCE_CONTRACT_ID';
50 G_WF_ITM_REVISION_DATE CONSTANT VARCHAR2(15) := 'REVISION_DATE';
51 G_WF_ITM_DEST_CONTRACT_ID CONSTANT VARCHAR2(25) := 'DESTINATION_CONTRACT_ID';
52
53
54 ------------------------------------------------------------------------------
55 -- PROCEDURE Report_Error
56 -- It is a generalized routine to display error on Concurrent Manager Log file
57 -- Calls:
58 -- Called by:
59 ------------------------------------------------------------------------------
60
61 PROCEDURE Report_Error(
62 x_msg_count OUT NOCOPY NUMBER,
63 x_msg_data OUT NOCOPY VARCHAR2
64 ) IS
65
66 x_msg_index_out NUMBER;
67 x_msg_out VARCHAR2(2000);
68
69 BEGIN
70
71 okl_api.end_activity(
72 X_msg_count => x_msg_count,
73 X_msg_data => x_msg_data
74 );
75
76 FOR i IN 1..x_msg_count
77 LOOP
78 FND_MSG_PUB.GET(
79 p_msg_index => i,
80 p_encoded => FND_API.G_FALSE,
81 p_data => x_msg_data,
82 p_msg_index_out => x_msg_index_out
83 );
84
85 END LOOP;
86 RETURN;
87 EXCEPTION
88 WHEN OTHERS THEN
89 NULL;
90 END Report_Error;
91
92
93 ---------------------------------------------------------------------------
94 -- FUNCTION get_chrv_rec for: OKC_K_HEADERS_V
95 ---------------------------------------------------------------------------
96 FUNCTION get_chrv_rec (p_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
97 x_return_status OUT NOCOPY VARCHAR2)
98 RETURN chrv_rec_type IS
99 CURSOR okc_chrv_pk_csr(p_id OKC_K_HEADERS_V.ID%TYPE) IS
100 SELECT ID,
101 OBJECT_VERSION_NUMBER,
102 SFWT_FLAG,
103 CHR_ID_RESPONSE,
104 CHR_ID_AWARD,
105 INV_ORGANIZATION_ID,
106 STS_CODE,
107 QCL_ID,
108 SCS_CODE,
109 CONTRACT_NUMBER,
110 CURRENCY_CODE,
111 CONTRACT_NUMBER_MODIFIER,
112 ARCHIVED_YN,
113 DELETED_YN,
114 CUST_PO_NUMBER_REQ_YN,
115 PRE_PAY_REQ_YN,
116 CUST_PO_NUMBER,
117 SHORT_DESCRIPTION,
118 COMMENTS,
119 DESCRIPTION,
120 DPAS_RATING,
121 COGNOMEN,
122 TEMPLATE_YN,
123 TEMPLATE_USED,
124 DATE_APPROVED,
125 DATETIME_CANCELLED,
126 AUTO_RENEW_DAYS,
127 DATE_ISSUED,
128 DATETIME_RESPONDED,
129 NON_RESPONSE_REASON,
130 NON_RESPONSE_EXPLAIN,
131 RFP_TYPE,
132 CHR_TYPE,
133 KEEP_ON_MAIL_LIST,
134 SET_ASIDE_REASON,
135 SET_ASIDE_PERCENT,
136 RESPONSE_COPIES_REQ,
137 DATE_CLOSE_PROJECTED,
138 DATETIME_PROPOSED,
139 DATE_SIGNED,
140 DATE_TERMINATED,
141 DATE_RENEWED,
142 TRN_CODE,
143 START_DATE,
144 END_DATE,
145 AUTHORING_ORG_ID,
146 BUY_OR_SELL,
147 ISSUE_OR_RECEIVE,
148 ESTIMATED_AMOUNT,
149 ESTIMATED_AMOUNT_RENEWED,
150 CURRENCY_CODE_RENEWED,
151 UPG_ORIG_SYSTEM_REF,
152 UPG_ORIG_SYSTEM_REF_ID,
153 APPLICATION_ID,
154 ORIG_SYSTEM_SOURCE_CODE,
155 ORIG_SYSTEM_ID1,
156 ORIG_SYSTEM_REFERENCE1,
157 ATTRIBUTE_CATEGORY,
158 ATTRIBUTE1,
159 ATTRIBUTE2,
160 ATTRIBUTE3,
161 ATTRIBUTE4,
162 ATTRIBUTE5,
163 ATTRIBUTE6,
164 ATTRIBUTE7,
165 ATTRIBUTE8,
166 ATTRIBUTE9,
167 ATTRIBUTE10,
168 ATTRIBUTE11,
169 ATTRIBUTE12,
170 ATTRIBUTE13,
171 ATTRIBUTE14,
172 ATTRIBUTE15,
173 CREATED_BY,
174 CREATION_DATE,
175 LAST_UPDATED_BY,
176 LAST_UPDATE_DATE,
177 LAST_UPDATE_LOGIN
178 FROM okc_k_headers_v chrv
179 WHERE chrv.id = p_id;
180 x_chrv_rec chrv_rec_type;
181 BEGIN
182 OPEN okc_chrv_pk_csr (p_chr_id);
183 FETCH okc_chrv_pk_csr INTO
184 x_chrv_rec.ID,
185 x_chrv_rec.OBJECT_VERSION_NUMBER,
186 x_chrv_rec.SFWT_FLAG,
187 x_chrv_rec.CHR_ID_RESPONSE,
188 x_chrv_rec.CHR_ID_AWARD,
189 x_chrv_rec.INV_ORGANIZATION_ID,
190 x_chrv_rec.STS_CODE,
191 x_chrv_rec.QCL_ID,
192 x_chrv_rec.SCS_CODE,
193 x_chrv_rec.CONTRACT_NUMBER,
194 x_chrv_rec.CURRENCY_CODE,
195 x_chrv_rec.CONTRACT_NUMBER_MODIFIER,
196 x_chrv_rec.ARCHIVED_YN,
197 x_chrv_rec.DELETED_YN,
198 x_chrv_rec.CUST_PO_NUMBER_REQ_YN,
199 x_chrv_rec.PRE_PAY_REQ_YN,
200 x_chrv_rec.CUST_PO_NUMBER,
201 x_chrv_rec.SHORT_DESCRIPTION,
202 x_chrv_rec.COMMENTS,
203 x_chrv_rec.DESCRIPTION,
204 x_chrv_rec.DPAS_RATING,
205 x_chrv_rec.COGNOMEN,
206 x_chrv_rec.TEMPLATE_YN,
207 x_chrv_rec.TEMPLATE_USED,
208 x_chrv_rec.DATE_APPROVED,
209 x_chrv_rec.DATETIME_CANCELLED,
210 x_chrv_rec.AUTO_RENEW_DAYS,
211 x_chrv_rec.DATE_ISSUED,
212 x_chrv_rec.DATETIME_RESPONDED,
213 x_chrv_rec.NON_RESPONSE_REASON,
214 x_chrv_rec.NON_RESPONSE_EXPLAIN,
215 x_chrv_rec.RFP_TYPE,
216 x_chrv_rec.CHR_TYPE,
217 x_chrv_rec.KEEP_ON_MAIL_LIST,
218 x_chrv_rec.SET_ASIDE_REASON,
219 x_chrv_rec.SET_ASIDE_PERCENT,
220 x_chrv_rec.RESPONSE_COPIES_REQ,
221 x_chrv_rec.DATE_CLOSE_PROJECTED,
222 x_chrv_rec.DATETIME_PROPOSED,
223 x_chrv_rec.DATE_SIGNED,
224 x_chrv_rec.DATE_TERMINATED,
225 x_chrv_rec.DATE_RENEWED,
226 x_chrv_rec.TRN_CODE,
227 x_chrv_rec.START_DATE,
228 x_chrv_rec.END_DATE,
229 x_chrv_rec.AUTHORING_ORG_ID,
230 x_chrv_rec.BUY_OR_SELL,
231 x_chrv_rec.ISSUE_OR_RECEIVE,
232 x_chrv_rec.ESTIMATED_AMOUNT,
233 x_chrv_rec.ESTIMATED_AMOUNT_RENEWED,
234 x_chrv_rec.CURRENCY_CODE_RENEWED,
235 x_chrv_rec.UPG_ORIG_SYSTEM_REF,
236 x_chrv_rec.UPG_ORIG_SYSTEM_REF_ID,
237 x_chrv_rec.APPLICATION_ID,
238 x_chrv_rec.ORIG_SYSTEM_SOURCE_CODE,
239 x_chrv_rec.ORIG_SYSTEM_ID1,
240 x_chrv_rec.ORIG_SYSTEM_REFERENCE1,
241 x_chrv_rec.ATTRIBUTE_CATEGORY,
242 x_chrv_rec.ATTRIBUTE1,
243 x_chrv_rec.ATTRIBUTE2,
244 x_chrv_rec.ATTRIBUTE3,
245 x_chrv_rec.ATTRIBUTE4,
246 x_chrv_rec.ATTRIBUTE5,
247 x_chrv_rec.ATTRIBUTE6,
248 x_chrv_rec.ATTRIBUTE7,
249 x_chrv_rec.ATTRIBUTE8,
250 x_chrv_rec.ATTRIBUTE9,
251 x_chrv_rec.ATTRIBUTE10,
252 x_chrv_rec.ATTRIBUTE11,
253 x_chrv_rec.ATTRIBUTE12,
254 x_chrv_rec.ATTRIBUTE13,
255 x_chrv_rec.ATTRIBUTE14,
256 x_chrv_rec.ATTRIBUTE15,
257 x_chrv_rec.CREATED_BY,
258 x_chrv_rec.CREATION_DATE,
259 x_chrv_rec.LAST_UPDATED_BY,
260 x_chrv_rec.LAST_UPDATE_DATE,
261 x_chrv_rec.LAST_UPDATE_LOGIN;
262 IF okc_chrv_pk_csr%NOTFOUND THEN
263 x_return_status := OKL_API.G_RET_STS_ERROR;
264 END IF;
265 CLOSE okc_chrv_pk_csr;
266 RETURN(x_chrv_rec);
267 EXCEPTION
268 WHEN OTHERS THEN
269 -- store SQL error message on message stack for caller
270 OKL_API.set_message(
271 G_APP_NAME,
272 G_UNEXPECTED_ERROR,
273 'SQLcode',
274 SQLCODE,
275 'SQLerrm',
276 SQLERRM);
277 -- notify caller of an UNEXPECTED error
278 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
279 -- if the cursor is open
280 IF okc_chrv_pk_csr%ISOPEN THEN
281 CLOSE okc_chrv_pk_csr;
282 END IF;
283
284 END get_chrv_rec;
285
286 ---------------------------------------------------------------------------
287 -- FUNCTION get_khrv_rec for: OKL_K_HEADERS_V
288 ---------------------------------------------------------------------------
289 FUNCTION get_khrv_rec (
290 p_khr_id IN OKL_K_HEADERS_V.ID%TYPE,
291 x_return_status OUT NOCOPY VARCHAR2
292 ) RETURN khrv_rec_type IS
293 CURSOR okl_k_headers_v_pk_csr (p_id IN OKL_K_HEADERS_V.ID%TYPE) IS
294 SELECT
295 ID,
296 OBJECT_VERSION_NUMBER,
297 ISG_ID,
298 KHR_ID,
299 PDT_ID,
300 AMD_CODE,
301 DATE_FIRST_ACTIVITY,
302 GENERATE_ACCRUAL_YN,
303 GENERATE_ACCRUAL_OVERRIDE_YN,
304 DATE_REFINANCED,
305 CREDIT_ACT_YN,
306 TERM_DURATION,
307 CONVERTED_ACCOUNT_YN,
308 DATE_CONVERSION_EFFECTIVE,
309 SYNDICATABLE_YN,
310 SALESTYPE_YN,
311 DATE_DEAL_TRANSFERRED,
312 DATETIME_PROPOSAL_EFFECTIVE,
313 DATETIME_PROPOSAL_INEFFECTIVE,
314 DATE_PROPOSAL_ACCEPTED,
315 ATTRIBUTE_CATEGORY,
316 ATTRIBUTE1,
317 ATTRIBUTE2,
318 ATTRIBUTE3,
319 ATTRIBUTE4,
320 ATTRIBUTE5,
321 ATTRIBUTE6,
322 ATTRIBUTE7,
323 ATTRIBUTE8,
324 ATTRIBUTE9,
325 ATTRIBUTE10,
326 ATTRIBUTE11,
327 ATTRIBUTE12,
328 ATTRIBUTE13,
329 ATTRIBUTE14,
330 ATTRIBUTE15,
331 CREATED_BY,
332 CREATION_DATE,
333 LAST_UPDATED_BY,
334 LAST_UPDATE_DATE,
335 LAST_UPDATE_LOGIN,
336 PRE_TAX_YIELD,
337 AFTER_TAX_YIELD,
338 IMPLICIT_INTEREST_RATE,
339 IMPLICIT_NON_IDC_INTEREST_RATE,
340 TARGET_PRE_TAX_YIELD,
341 TARGET_AFTER_TAX_YIELD,
342 TARGET_IMPLICIT_INTEREST_RATE,
343 TARGET_IMPLICIT_NONIDC_INTRATE,
344 DATE_LAST_INTERIM_INTEREST_CAL,
345 DEAL_TYPE,
346 PRE_TAX_IRR,
347 AFTER_TAX_IRR,
348 EXPECTED_DELIVERY_DATE,
349 ACCEPTED_DATE,
350 PREFUNDING_ELIGIBLE_YN,
351 REVOLVING_CREDIT_YN
352 FROM OKL_K_HEADERS_V
353 WHERE OKL_K_HEADERS_V.id = p_id;
354 l_okl_k_headers_v_pk okl_k_headers_v_pk_csr%ROWTYPE;
355 l_khrv_rec khrv_rec_type;
356 BEGIN
357
358 x_return_status := OKL_API.G_RET_STS_SUCCESS;
359 -- Get current database values
360 OPEN okl_k_headers_v_pk_csr (p_khr_id);
361 FETCH okl_k_headers_v_pk_csr INTO
362 l_khrv_rec.ID,
363 l_khrv_rec.OBJECT_VERSION_NUMBER,
364 l_khrv_rec.ISG_ID,
365 l_khrv_rec.KHR_ID,
366 l_khrv_rec.PDT_ID,
367 l_khrv_rec.AMD_CODE,
368 l_khrv_rec.DATE_FIRST_ACTIVITY,
369 l_khrv_rec.GENERATE_ACCRUAL_YN,
370 l_khrv_rec.GENERATE_ACCRUAL_OVERRIDE_YN,
371 l_khrv_rec.DATE_REFINANCED,
372 l_khrv_rec.CREDIT_ACT_YN,
373 l_khrv_rec.TERM_DURATION,
374 l_khrv_rec.CONVERTED_ACCOUNT_YN,
375 l_khrv_rec.DATE_CONVERSION_EFFECTIVE,
376 l_khrv_rec.SYNDICATABLE_YN,
377 l_khrv_rec.SALESTYPE_YN,
378 l_khrv_rec.DATE_DEAL_TRANSFERRED,
379 l_khrv_rec.DATETIME_PROPOSAL_EFFECTIVE,
380 l_khrv_rec.DATETIME_PROPOSAL_INEFFECTIVE,
381 l_khrv_rec.DATE_PROPOSAL_ACCEPTED,
382 l_khrv_rec.ATTRIBUTE_CATEGORY,
383 l_khrv_rec.ATTRIBUTE1,
384 l_khrv_rec.ATTRIBUTE2,
385 l_khrv_rec.ATTRIBUTE3,
386 l_khrv_rec.ATTRIBUTE4,
387 l_khrv_rec.ATTRIBUTE5,
388 l_khrv_rec.ATTRIBUTE6,
389 l_khrv_rec.ATTRIBUTE7,
390 l_khrv_rec.ATTRIBUTE8,
391 l_khrv_rec.ATTRIBUTE9,
392 l_khrv_rec.ATTRIBUTE10,
393 l_khrv_rec.ATTRIBUTE11,
394 l_khrv_rec.ATTRIBUTE12,
395 l_khrv_rec.ATTRIBUTE13,
396 l_khrv_rec.ATTRIBUTE14,
397 l_khrv_rec.ATTRIBUTE15,
398 l_khrv_rec.CREATED_BY,
399 l_khrv_rec.CREATION_DATE,
400 l_khrv_rec.LAST_UPDATED_BY,
401 l_khrv_rec.LAST_UPDATE_DATE,
402 l_khrv_rec.LAST_UPDATE_LOGIN,
403 l_khrv_rec.PRE_TAX_YIELD,
404 l_khrv_rec.AFTER_TAX_YIELD,
405 l_khrv_rec.IMPLICIT_INTEREST_RATE,
406 l_khrv_rec.IMPLICIT_NON_IDC_INTEREST_RATE,
407 l_khrv_rec.TARGET_PRE_TAX_YIELD,
408 l_khrv_rec.TARGET_AFTER_TAX_YIELD,
409 l_khrv_rec.TARGET_IMPLICIT_INTEREST_RATE,
410 l_khrv_rec.TARGET_IMPLICIT_NONIDC_INTRATE,
411 l_khrv_rec.DATE_LAST_INTERIM_INTEREST_CAL,
412 l_khrv_rec.DEAL_TYPE,
413 l_khrv_rec.PRE_TAX_IRR,
414 l_khrv_rec.AFTER_TAX_IRR,
415 l_khrv_rec.EXPECTED_DELIVERY_DATE,
416 l_khrv_rec.ACCEPTED_DATE,
417 l_khrv_rec.PREFUNDING_ELIGIBLE_YN,
418 l_khrv_rec.REVOLVING_CREDIT_YN
419 ;
420 IF okl_k_headers_v_pk_csr%NOTFOUND THEN
421 x_return_status := OKL_API.G_RET_STS_ERROR;
422 END IF;
423 CLOSE okl_k_headers_v_pk_csr;
424 RETURN(l_khrv_rec);
425 EXCEPTION
426 WHEN OTHERS THEN
427 -- store SQL error message on message stack for caller
428 OKL_API.set_message(
429 G_APP_NAME,
430 G_UNEXPECTED_ERROR,
431 'SQLcode',
432 SQLCODE,
433 'SQLerrm',
434 SQLERRM);
435 -- notify caller of an UNEXPECTED error
436 -- if the cursor is open
437 IF okl_k_headers_v_pk_csr%ISOPEN THEN
438 CLOSE okl_k_headers_v_pk_csr;
439 END IF;
440 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
441 END get_khrv_rec;
442
443 ------------------------------------------------------------------------------
444 -- PROCEDURE validate_rebook_reason
445 --
446 -- This procedure validate rebook reason code
447 --
448 -- Calls:
449 -- Called By:
450 ------------------------------------------------------------------------------
451 PROCEDURE validate_rebook_reason(
452 x_return_status OUT NOCOPY VARCHAR2,
453 x_msg_count OUT NOCOPY NUMBER,
454 x_msg_data OUT NOCOPY VARCHAR2,
455 p_rebook_reason_code IN VARCHAR2
456 ) IS
457
458 l_proc_name VARCHAR2(35) := 'VALIDATE_REBOOK_REASON';
459 l_dummy VARCHAR2(1);
460
461 CURSOR rebook_csr (p_rebook_reason_code VARCHAR2) IS
462 SELECT 'X'
463 FROM FND_LOOKUPS
464 WHERE lookup_type = 'OKL_REBOOK_REASON'
465 AND lookup_code = p_rebook_reason_code;
466
467 rebook_failed EXCEPTION;
468
469 BEGIN
470 IF (G_DEBUG_ENABLED = 'Y') THEN
471 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
472 END IF;
473 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
474 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
475 END IF;
476 x_return_status := OKC_API.G_RET_STS_SUCCESS;
477
478 OPEN rebook_csr(p_rebook_reason_code);
479 FETCH rebook_csr INTO l_dummy;
480 IF rebook_csr%NOTFOUND THEN
481 RAISE rebook_failed;
482 END IF;
483 CLOSE rebook_csr;
484
485 RETURN;
486
487 EXCEPTION
488 WHEN rebook_failed THEN
489 okl_api.set_message(
490 G_APP_NAME,
491 G_INVALID_VALUE,
492 'COL_NAME',
493 'REBOOK REASON'
494 );
495 x_return_status := OKC_API.G_RET_STS_ERROR;
496
497 END validate_rebook_reason;
498
499 ------------------------------------------------------------------------------
500 -- PROCEDURE copy_rebook_stream
501 --
502 -- This procedure copys streams from Rebook Contract to Original Contract
503 --
504 -- Calls:
505 -- Called By:
506 ------------------------------------------------------------------------------
507 PROCEDURE copy_rebook_stream(
508 x_return_status OUT NOCOPY VARCHAR2,
509 x_msg_count OUT NOCOPY NUMBER,
510 x_msg_data OUT NOCOPY VARCHAR2,
511 p_orig_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
512 p_rebook_chr_id IN OKC_K_HEADERS_V.ID%TYPE
513 ) IS
514 l_proc_name VARCHAR2(35) := 'COPY_REBOOK_STREAM';
515 l_stmv_rec stmv_rec_type;
516 l_selv_tbl selv_tbl_type;
517 x_stmv_rec stmv_rec_type;
518 x_selv_tbl selv_tbl_type;
519 l_no_of_ele NUMBER := 0;
520 copy_failed EXCEPTION;
521
522 CURSOR strm_hdr_csr (p_rebook_chr_id OKC_K_HEADERS_V.ID%TYPE) IS -- Bug 3984890
523 SELECT
524 str.id,
525 str.sty_id,
526 str.khr_id,
527 str.kle_id,
528 str.sgn_code,
529 str.say_code,
530 str.transaction_number,
531 str.active_yn,
532 str.object_version_number,
533 str.created_by,
534 str.creation_date,
535 str.last_updated_by,
536 str.last_update_date,
537 str.date_current,
538 str.date_working,
539 str.date_history,
540 str.comments,
541 str.program_id,
542 str.request_id,
543 str.program_application_id,
544 str.program_update_date,
545 str.last_update_login,
546 str.purpose_code,
547 sty.stream_type_purpose,
548 --Bug# 4212626
549 trx_id,
550 link_hist_stream_id
551 -- sty_code -- dropped after inclusion
552 FROM okl_streams str,
553 okl_strm_type_v sty
554 WHERE str.khr_id = p_rebook_chr_id
555 AND str.sty_id = sty.id
556 AND str.say_code = 'CURR';
557
558
559 -- Bug# 2857333
560 CURSOR orig_strm_csr (p_khr_id OKC_K_HEADERS_V.ID%TYPE,
561 p_kle_id OKC_K_LINES_V.ID%TYPE,
562 p_sty_id OKL_STREAMS.sty_id%TYPE,
563 p_purpose_code OKL_STREAMS.PURPOSE_CODE%TYPE) IS
564 SELECT id
565 FROM okl_streams
566 WHERE khr_id = p_khr_id
567 AND sty_id = p_sty_id
568 AND NVL(kle_id,-1) = NVL(p_kle_id, -1)
569 AND say_code <> 'HIST'
570 -- AND sgn_code <> 'INTC' -- bug 4737555
571 AND sgn_code NOT IN ('INTC','LATE_CALC') -- Bug 6472228
572 AND NVL(purpose_code,'XXXX') = NVL(p_purpose_code, 'XXXX');
573
574 CURSOR strm_element_csr(p_stm_id okl_strm_elements.stm_id%TYPE) IS
575 SELECT *
576 FROM okl_strm_elements
577 WHERE stm_id = p_stm_id;
578
579 CURSOR orig_line_csr (p_line_id OKC_K_LINES_B.ID%TYPE) IS
580 SELECT orig_system_id1
581 FROM okc_k_lines_b
582 WHERE id = p_line_id;
583
584 CURSOR new_line_csr (p_line_id OKC_K_LINES_B.ID%TYPE) IS
585 SELECT id
586 FROM okc_k_lines_b
587 WHERE orig_system_id1 = p_line_id;
588
589 CURSOR unbill_adj_csr( khrId NUMBER,
590 kleid NUMBER ) IS
591 SELECT NVL(ele.amount,0) amount
592 FROM okl_strm_elements ele,
593 okl_streams str,
594 --okl_strm_type_tl sty
595 okl_strm_type_v sty
596 WHERE NVL(str.kle_id,-1) = kleid
597 AND str.khr_id = khrId
598 AND str.sty_id = sty.id
599 AND str.say_code = 'CURR'
600 AND str.active_yn = 'Y'
601 --AND sty.name = 'BILLING ADJUSTMENT'
602 AND sty.stream_type_purpose = 'REBOOK_BILLING_ADJUSTMENT'
603 --AND sty.LANGUAGE = 'US'
604 AND ele.stm_id = str.id
605 AND ele.date_billed IS NULL;
606
607 CURSOR undesb_adj_csr( khrId NUMBER,
608 kleid NUMBER ) IS
609 SELECT NVL(ele.amount,0) amount
610 FROM okl_strm_elements ele,
611 okl_streams str,
612 --okl_strm_type_tl sty
613 okl_strm_type_v sty
614 WHERE NVL(str.kle_id,-1) = kleid
615 AND str.khr_id = khrId
616 AND str.sty_id = sty.id
617 AND str.say_code = 'CURR'
618 AND str.active_yn = 'Y'
619 --AND sty.name = 'INVESTOR DISBURSEMENT ADJUSTMENT'
620 AND sty.stream_type_purpose = 'INVESTOR_DISB_ADJUSTMENT'
621 --AND sty.LANGUAGE = 'US'
622 AND ele.stm_id = str.id
623 AND ele.date_billed IS NULL;
624
625 /* not required after UDS
626 CURSOR strm_code_csr (p_sty_id NUMBER) IS
627 SELECT code
628 FROM okl_strm_type_v
629 WHERE id = p_sty_id;
630 */
631
632 l_orig_line_id OKC_K_LINES_B.ID%TYPE;
633
634 l_orig_strm_tbl stmv_tbl_type;
635 x_orig_strm_tbl stmv_tbl_type;
636
637 l_orig_strm_count NUMBER := 0;
638 --l_strm_code OKL_STRM_TYPE_V.CODE%TYPE;
639 l_unbill_adj_amount NUMBER := 0;
640 l_undesb_adj_amount NUMBER := 0;
641
642 x_billing_adj_sty_id NUMBER;
643 x_inv_disb_adj_sty_id NUMBER;
644
645 --Bug# 4212626
646 -- Cursor to fetch Streams deleted during rebook
647 CURSOR deleted_streams_csr(p_orig_chr_id IN NUMBER,
648 p_rebook_chr_id IN NUMBER) IS
649 SELECT orig_stm.id orig_stm_id,
650 sty.stream_type_purpose,
651 cle.lse_id
652 FROM okl_streams orig_stm,
653 okc_k_lines_b cle,
654 okl_strm_type_v sty
655 WHERE orig_stm.khr_id = p_orig_chr_id
656 AND orig_stm.say_code = 'CURR'
657 --AND orig_stm.sgn_code <> 'INTC' -- bug 4737555
658 AND orig_stm.sgn_code NOT IN ('INTC','LATE_CALC') -- Bug6472228
659 AND cle.id(+) = orig_stm.kle_id
660 AND cle.dnz_chr_id(+) = orig_stm.khr_id
661 AND sty.id = orig_stm.sty_id
662 AND NOT EXISTS (SELECT 1
663 FROM okl_streams new_stm
664 WHERE new_stm.khr_id = p_rebook_chr_id
665 AND new_stm.say_code = 'CURR'
666 AND new_stm.link_hist_stream_id = orig_stm.id);
667
668 --Bug# 4212626
669 -- Cursor to determine if Stream is billed
670 CURSOR stm_not_billed_csr(p_stm_id IN NUMBER) IS
671 SELECT 1
672 FROM okl_strm_elements sel
673 WHERE sel.stm_id = p_stm_id
674 AND sel.date_billed IS NULL
675 AND rownum = 1;
676
677 stm_not_billed_rec stm_not_billed_csr%ROWTYPE;
678
679 BEGIN
680 IF (G_DEBUG_ENABLED = 'Y') THEN
681 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
682 END IF;
683 x_return_status := OKC_API.G_RET_STS_SUCCESS;
684 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
685 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
686 END IF;
687
688 /*
689 * Not required, got purpose from driving cursor strm_hdr_csr
690 *
691 -- Get Stream id for purpose = BILLING ADJUSTMENT
692 OKL_STREAMS_UTIL.get_primary_stream_type(
693 p_khr_id => p_orig_chr_id,
694 p_primary_sty_purpose => 'REBOOK_BILLING_ADJUSTMENT',
695 x_return_status => x_return_status,
696 x_primary_sty_id => x_billing_adj_sty_id
697 );
698
699 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
700 RAISE copy_failed;
701 END IF;
702
703 -- Get Stream id for purpose = INVESTOR_DISB_ADJUSTMENT
704 x_inv_disb_adj_sty_id := NULL;
705 OPEN inv_adj_csr;
706 FETCH inv_adj_csr INTO x_inv_disb_adj_sty_id;
707 CLOSE inv_adj_csr;
708
709 OKL_STREAMS_UTIL.get_primary_stream_type(
710 p_khr_id => p_orig_chr_id,
711 p_primary_sty_purpose => 'INVESTOR_DISB_ADJUSTMENT',
712 x_return_status => x_return_status,
713 x_primary_sty_id => x_inv_disb_adj_sty_id
714 );
715
716 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
717 RAISE copy_failed;
718 END IF;
719 */
720
721 --Bug# 4212626: start
722 -- Historize Streams in the original contract
723 -- which are deleted during rebook
724 -- This cursor ignores all streams linked to
725 -- the Insurance Line, so no Insurance Streams
726 -- will be historized by this process
727
728 l_orig_strm_tbl.DELETE;
729 l_orig_strm_count := 0;
730
731 FOR deleted_streams_rec IN deleted_streams_csr
732 (p_orig_chr_id => p_orig_chr_id,
733 p_rebook_chr_id => p_rebook_chr_id)
734 LOOP
735
736 -- Ignore Insurance Streams
737 IF (NVL(deleted_streams_rec.lse_id,-1) = G_INSURANCE_LSE_ID) THEN
738
739 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
740 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Ignore Insurance Stream Line ID: '||deleted_streams_rec.orig_stm_id);
741 END IF;
742 NULL;
743
744 -- Ignore Investor Disbursement Adjustment Streams when
745 -- historizing streams deleted during rebook.
746 ELSIF (deleted_streams_rec.stream_type_purpose = 'INVESTOR_DISB_ADJUSTMENT') THEN
747
748 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
749 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Ignore Inv Disb Adj Stream Line ID: '||deleted_streams_rec.orig_stm_id);
750 END IF;
751 NULL;
752
753 -- Bug# 4775555
754 -- Ignore all Investor Streams when historizing streams deleted during rebook.
755 ELSIF (deleted_streams_rec.stream_type_purpose IN
756 ('INVESTOR_CNTRCT_OBLIGATION_PAY','INVESTOR_DISB_ADJUSTMENT','INVESTOR_EVERGREEN_RENT_PAY',
757 'INVESTOR_INTEREST_INCOME','INVESTOR_INTEREST_PAYABLE','INVESTOR_LATE_FEE_PAYABLE',
758 'INVESTOR_LATE_INTEREST_PAY','INVESTOR_PAYABLE','INVESTOR_PRETAX_INCOME',
759 'INVESTOR_PRINCIPAL_PAYABLE','INVESTOR_RECEIVABLE','INVESTOR_RENTAL_ACCRUAL',
760 'INVESTOR_RENT_BUYBACK','INVESTOR_RENT_DISB_BASIS','INVESTOR_RENT_PAYABLE',
761 'INVESTOR_RESIDUAL_BUYBACK','INVESTOR_RESIDUAL_DISB_BASIS','INVESTOR_RESIDUAL_PAY',
762 'INVESTOR_VARIABLE_INTEREST','PV_RENT_SECURITIZED','PV_RV_SECURITIZED'))THEN
763
764 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
765 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Ignore Investor Stream Line ID: '||deleted_streams_rec.orig_stm_id);
766 END IF;
767 NULL;
768
769 -- Historize Billing Adjustment Streams only if they have been billed, else
770 -- ignore Billing Adjustment Streams.
771 ELSIF (deleted_streams_rec.stream_type_purpose = 'REBOOK_BILLING_ADJUSTMENT') THEN
772
773 OPEN stm_not_billed_csr(p_stm_id => deleted_streams_rec.orig_stm_id);
774 FETCH stm_not_billed_csr INTO stm_not_billed_rec;
775 IF stm_not_billed_csr%FOUND THEN
776 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
777 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Ignore Billing Adj Stream Line ID: '||deleted_streams_rec.orig_stm_id);
778 END IF;
779 NULL;
780
781 ELSE
782 l_orig_strm_count := l_orig_strm_count + 1;
783 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
784 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Historize Billing Adj Stream Line ID: '||deleted_streams_rec.orig_stm_id);
785 END IF;
786
787 l_orig_strm_tbl(l_orig_strm_count).id := deleted_streams_rec.orig_stm_id;
788 l_orig_strm_tbl(l_orig_strm_count).say_code := 'HIST';
789 l_orig_strm_tbl(l_orig_strm_count).date_history := SYSDATE;
790 l_orig_strm_tbl(l_orig_strm_count).active_yn := 'N';
791 END IF;
792 CLOSE stm_not_billed_csr;
793
794 ELSE
795 l_orig_strm_count := l_orig_strm_count + 1;
796
797 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
798 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Historize Deleted Stream Line ID: '||deleted_streams_rec.orig_stm_id);
799 END IF;
800
801 l_orig_strm_tbl(l_orig_strm_count).id := deleted_streams_rec.orig_stm_id;
802 l_orig_strm_tbl(l_orig_strm_count).say_code := 'HIST';
803 l_orig_strm_tbl(l_orig_strm_count).date_history := SYSDATE;
804 l_orig_strm_tbl(l_orig_strm_count).active_yn := 'N';
805 END IF;
806 END LOOP;
807 --Bug# 4212626: end
808
809 IF (l_orig_strm_tbl.COUNT > 0) THEN
810 okl_streams_pub.update_streams(
811 p_api_version => 1.0,
812 p_init_msg_list => OKC_API.G_FALSE,
813 x_return_status => x_return_status,
814 x_msg_count => x_msg_count,
815 x_msg_data => x_msg_data,
816 p_stmv_tbl => l_orig_strm_tbl,
817 x_stmv_tbl => x_orig_strm_tbl
818 );
819
820 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
821 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Update of Deleted Orig strm to HIST '||x_return_status);
822 END IF;
823
824 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
825 RAISE copy_failed;
826 END IF;
827 END IF;
828
829 FOR strm_hdr_rec IN strm_hdr_csr (p_rebook_chr_id)
830 LOOP
831 /*
832 OPEN strm_hdr_csr(p_rebook_chr_id);
833 FETCH strm_hdr_csr INTO l_stmv_rec;
834
835 IF strm_hdr_csr%NOTFOUND THEN
836 okl_api.set_message(
837 G_APP_NAME,
838 G_LLA_NO_STREAM
839 );
840
841 RAISE copy_failed;
842 END IF;
843 CLOSE strm_hdr_csr;
844 */
845 --l_stmv_rec := strm_hdr_rec;
846
847 l_stmv_rec.id := strm_hdr_rec.id;
848 l_stmv_rec.sty_id := strm_hdr_rec.sty_id;
849 l_stmv_rec.khr_id := strm_hdr_rec.khr_id;
850 l_stmv_rec.kle_id := strm_hdr_rec.kle_id;
851 l_stmv_rec.sgn_code := strm_hdr_rec.sgn_code;
852 l_stmv_rec.say_code := strm_hdr_rec.say_code;
853 l_stmv_rec.transaction_number := strm_hdr_rec.transaction_number;
854 l_stmv_rec.active_yn := strm_hdr_rec.active_yn;
855 l_stmv_rec.object_version_number := strm_hdr_rec.object_version_number;
856 l_stmv_rec.created_by := strm_hdr_rec.created_by;
857 l_stmv_rec.creation_date := strm_hdr_rec.creation_date;
858 l_stmv_rec.last_updated_by := strm_hdr_rec.last_updated_by;
859 l_stmv_rec.last_update_date := strm_hdr_rec.last_update_date;
860 l_stmv_rec.date_current := strm_hdr_rec.date_current;
861 l_stmv_rec.date_working := strm_hdr_rec.date_working;
862 l_stmv_rec.date_history := strm_hdr_rec.date_history;
863 l_stmv_rec.comments := strm_hdr_rec.comments;
864 l_stmv_rec.program_id := strm_hdr_rec.program_id;
865 l_stmv_rec.request_id := strm_hdr_rec.request_id;
866 l_stmv_rec.program_application_id := strm_hdr_rec.program_application_id;
867 l_stmv_rec.program_update_date := strm_hdr_rec.program_update_date;
868 l_stmv_rec.last_update_login := strm_hdr_rec.last_update_login;
869 l_stmv_rec.purpose_code := strm_hdr_rec.purpose_code;
870 --Bug# 4212626
871 l_stmv_rec.trx_id := strm_hdr_rec.trx_id;
872 l_stmv_rec.link_hist_stream_id := strm_hdr_rec.link_hist_stream_id;
873
874
875 /* not required after UDS
876 -- Get Stream name
877 FOR strm_code_rec IN strm_code_csr (l_stmv_rec.sty_id)
878 LOOP
879 l_strm_code := strm_code_rec.code;
880 END LOOP;
881 */
882
883 --
884 -- Get Original line id, Bug# 2745885
885 --
886 IF (l_stmv_rec.kle_id IS NOT NULL) THEN
887 OPEN orig_line_csr (l_stmv_rec.kle_id);
888 FETCH orig_line_csr INTO l_orig_line_id;
889 CLOSE orig_line_csr;
890
891 IF( l_orig_line_id IS NULL) THEN -- New line added during rebook
892 OPEN new_line_csr(l_stmv_rec.kle_id);
893 FETCH new_line_csr INTO l_orig_line_id;
894 CLOSE new_line_csr;
895 END IF;
896
897 ELSE
898 l_orig_line_id := NULL; -- Stream at header level
899 END IF;
900
901 --
902 -- Get unbilled adjustment stream amount
903 --
904 l_unbill_adj_amount := 0;
905 --Bug# 4212626: Billing Adjustment is now calculated during Activation
906 /*
907 OPEN unbill_adj_csr (p_orig_chr_id,
908 NVL(l_orig_line_id,-1));
909 FETCH unbill_adj_csr INTO l_unbill_adj_amount;
910 CLOSE unbill_adj_csr;
911 */
912
913 --
914 -- Get undisbursed adjustment stream amount
915 --
916 l_undesb_adj_amount := 0;
917 OPEN undesb_adj_csr (p_orig_chr_id,
918 NVL(l_orig_line_id,-1));
919 FETCH undesb_adj_csr INTO l_undesb_adj_amount;
920 CLOSE undesb_adj_csr;
921
922 --
923 -- Bug# 2857333, 03/12/2003
924 -- Process to check and update stream to 'HIST'
925 -- on original contract
926 --
927 l_orig_strm_tbl.DELETE;
928 l_orig_strm_count := 0;
929
930 FOR orig_strm_rec IN orig_strm_csr (p_orig_chr_id,
931 l_orig_line_id,
932 l_stmv_rec.sty_id,
933 l_stmv_rec.purpose_code)
934 LOOP
935 l_orig_strm_count := l_orig_strm_count + 1;
936
937 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
938 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Stream Line ID: '||orig_strm_rec.id);
939 END IF;
940
941 l_orig_strm_tbl(l_orig_strm_count).id := orig_strm_rec.id;
942 l_orig_strm_tbl(l_orig_strm_count).say_code := 'HIST';
943 l_orig_strm_tbl(l_orig_strm_count).active_yn := 'N';
944 l_orig_strm_tbl(l_orig_strm_count).date_history := SYSDATE;
945 END LOOP;
946
947 IF (l_orig_strm_tbl.COUNT > 0) THEN
948 okl_streams_pub.update_streams(
949 p_api_version => 1.0,
950 p_init_msg_list => OKC_API.G_FALSE,
951 x_return_status => x_return_status,
952 x_msg_count => x_msg_count,
953 x_msg_data => x_msg_data,
954 p_stmv_tbl => l_orig_strm_tbl,
955 x_stmv_tbl => x_orig_strm_tbl
956 );
957
958 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
959 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Update of Orig strm to HIST '||x_return_status);
960 END IF;
961
962 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
963 RAISE copy_failed;
964 END IF;
965 END IF;
966
967 l_stmv_rec.khr_id := p_orig_chr_id; -- Overwriting Rebook CHR_ID with Original CHR_ID
968 l_stmv_rec.kle_id := l_orig_line_id; -- Overwritting Rebook Line ID with Original Line ID
969 l_stmv_rec.say_code := 'CURR';
970 -- l_stmv_rec.active_yn := 'Y'; -- Commented for Multi-Gap enhancement
971 l_stmv_rec.sgn_code := 'STMP-REBK';
972 l_stmv_rec.comments := 'Copied Stream From Contract '||
973 l_stmv_rec.khr_id||', TRX_NUMBER='||l_stmv_rec.transaction_number||
974 ' during Rebooking.';
975 l_no_of_ele := 0;
976 l_stmv_rec.date_current := SYSDATE;
977 l_selv_tbl.DELETE; -- initialize table
978
979 FOR strm_element_rec IN strm_element_csr(l_stmv_rec.id)
980 LOOP
981 l_no_of_ele := l_no_of_ele + 1;
982
983 l_selv_tbl(l_no_of_ele).object_version_number := strm_element_rec.object_version_number;
984 l_selv_tbl(l_no_of_ele).stm_id := strm_element_rec.stm_id;
985
986 --
987 -- Consider unbilled adjustment from orig contract, if any
988 --
989 --Bug# 4212626: Calculation of l_unbill_adj_amount has been commented out, so l_unbill_adj_amount
990 --will always be zero.
991 --IF (l_strm_code = 'BILLING ADJUSTMENT') THEN
992
993 --debug_message('Adj: '||l_unbill_adj_amount);
994 --debug_message('x_billing_adj_sty_id : '||x_billing_adj_sty_id);
995 --debug_message('l_stmv_rec.sty_id : '||l_stmv_rec.sty_id);
996
997 l_selv_tbl(l_no_of_ele).amount := strm_element_rec.amount;
998 --IF (x_billing_adj_sty_id = l_stmv_rec.sty_id) THEN
999
1000 IF (strm_hdr_rec.stream_type_purpose = 'REBOOK_BILLING_ADJUSTMENT') THEN -- Bug 3984890
1001 l_selv_tbl(l_no_of_ele).amount := strm_element_rec.amount + NVL(l_unbill_adj_amount,0);
1002 END IF;
1003
1004 --
1005 -- Consider undisbursed adjustment from orig contract, if any
1006 --
1007
1008 --IF (l_strm_code = 'INVESTOR DISBURSEMENT ADJUSTMENT') THEN
1009 --IF (x_inv_disb_adj_sty_id = l_stmv_rec.sty_id) THEN
1010
1011 IF (strm_hdr_rec.stream_type_purpose = 'INVESTOR_DISB_ADJUSTMENT') THEN -- Bug 3984890
1012 l_selv_tbl(l_no_of_ele).amount := strm_element_rec.amount + NVL(l_undesb_adj_amount,0);
1013 END IF;
1014
1015 l_selv_tbl(l_no_of_ele).comments := strm_element_rec.comments;
1016 l_selv_tbl(l_no_of_ele).accrued_yn := strm_element_rec.accrued_yn;
1017 l_selv_tbl(l_no_of_ele).stream_element_date := strm_element_rec.stream_element_date;
1018 l_selv_tbl(l_no_of_ele).program_id := strm_element_rec.program_id;
1019 l_selv_tbl(l_no_of_ele).request_id := strm_element_rec.request_id;
1020 l_selv_tbl(l_no_of_ele).program_application_id := strm_element_rec.program_application_id;
1021 l_selv_tbl(l_no_of_ele).program_update_date := strm_element_rec.program_update_date;
1022 l_selv_tbl(l_no_of_ele).se_line_number := strm_element_rec.se_line_number;
1023 l_selv_tbl(l_no_of_ele).date_billed := strm_element_rec.date_billed;
1024 --Bug# 4212626
1025 l_selv_tbl(l_no_of_ele).bill_adj_flag := strm_element_rec.bill_adj_flag;
1026 l_selv_tbl(l_no_of_ele).accrual_adj_flag := strm_element_rec.accrual_adj_flag;
1027 --Bug#4884423
1028 l_selv_tbl(l_no_of_ele).date_disbursed := strm_element_rec.date_disbursed;
1029
1030 END LOOP;
1031
1032 IF (l_no_of_ele = 0) THEN
1033 okl_api.set_message(
1034 G_APP_NAME,
1035 G_LLA_NO_STREAM_ELEMENT
1036 );
1037 RAISE copy_failed;
1038 END IF;
1039
1040 -- call API to create new streams
1041 okl_streams_pub.create_streams(
1042 p_api_version => 1.0,
1043 p_init_msg_list => OKC_API.G_FALSE,
1044 x_return_status => x_return_status,
1045 x_msg_count => x_msg_count,
1046 x_msg_data => x_msg_data,
1047 p_stmv_rec => l_stmv_rec,
1048 p_selv_tbl => l_selv_tbl,
1049 x_stmv_rec => x_stmv_rec,
1050 x_selv_tbl => x_selv_tbl
1051 );
1052
1053 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1054 RAISE copy_failed;
1055 END IF;
1056
1057 END LOOP; -- Header stream
1058
1059
1060 RETURN;
1061
1062 EXCEPTION
1063 WHEN copy_failed THEN
1064 x_return_status := OKC_API.G_RET_STS_ERROR;
1065 END copy_rebook_stream;
1066
1067 ------------------------------------------------------------------------------
1068 -- PROCEDURE get_orig_chr_id
1069 --
1070 -- This procedure gets the Oroginal Contract ID for a given contract.
1071 -- Used here to get Parent Contract Header ID from which rebooking got initiated
1072 --
1073 -- Calls:
1074 -- Called By:
1075 ------------------------------------------------------------------------------
1076 PROCEDURE get_orig_chr_id(
1077 x_return_status OUT NOCOPY VARCHAR2,
1078 p_chr_id IN NUMBER,
1079 x_orig_chr_id OUT NOCOPY OKC_K_HEADERS_V.ID%TYPE
1080 ) IS
1081
1082 l_proc_name VARCHAR2(35) := 'GET_ORIG_CHR_ID';
1083 l_orig_system_id OKC_K_HEADERS_V.ID%TYPE;
1084 orig_failed EXCEPTION;
1085
1086 CURSOR orig_csr (p_chr_id OKC_K_HEADERS_V.id%TYPE) IS
1087 SELECT orig_system_id1
1088 FROM OKC_K_HEADERS_V
1089 WHERE id = p_chr_id;
1090
1091 BEGIN
1092 IF (G_DEBUG_ENABLED = 'Y') THEN
1093 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
1094 END IF;
1095
1096 x_return_status := OKC_API.G_RET_STS_SUCCESS;
1097 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1098 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
1099 END IF;
1100
1101 OPEN orig_csr(p_chr_id);
1102 FETCH orig_csr INTO l_orig_system_id;
1103 IF orig_csr%NOTFOUND THEN
1104 RAISE orig_failed;
1105 END IF;
1106 IF (l_orig_system_id IS NULL) THEN
1107 RAISE orig_failed;
1108 END IF;
1109
1110 CLOSE orig_csr;
1111 x_orig_chr_id := l_orig_system_id;
1112
1113 RETURN;
1114
1115 EXCEPTION
1116
1117 WHEN orig_failed THEN
1118 IF orig_csr%ISOPEN THEN
1119 CLOSE orig_csr;
1120 END IF;
1121 x_return_status := OKC_API.G_RET_STS_ERROR;
1122
1123 END get_orig_chr_id;
1124
1125 ------------------------------------------------------------------------------
1126 -- PROCEDURE change_stream_status
1127 --
1128 -- This procedure changes Stream Status to 3rd parameter for a contract
1129 --
1130 -- Calls:
1131 -- Called By:
1132 ------------------------------------------------------------------------------
1133 PROCEDURE change_stream_status(
1134 x_return_status OUT NOCOPY VARCHAR2,
1135 x_msg_count OUT NOCOPY NUMBER,
1136 x_msg_data OUT NOCOPY VARCHAR2,
1137 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
1138 p_status IN VARCHAR2,
1139 p_active_yn IN VARCHAR2
1140 ) IS
1141
1142 l_proc_name VARCHAR2(35) := 'CHANGE_STREAM_STATUS';
1143 l_stmv_rec stmv_rec_type;
1144 x_stmv_rec stmv_rec_type;
1145 strm_failed EXCEPTION;
1146 l_id NUMBER;
1147
1148 CURSOR strm_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
1149 SELECT id
1150 FROM okl_streams
1151 WHERE khr_id = p_chr_id
1152 -- BUg 4737555
1153 -- AND SGN_CODE <> 'INTC';
1154 AND SGN_CODE NOT IN ('INTC','LATE_CALC'); -- Bug 6472228
1155
1156 BEGIN
1157 IF (G_DEBUG_ENABLED = 'Y') THEN
1158 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
1159 END IF;
1160 x_return_status := OKC_API.G_RET_STS_SUCCESS;
1161
1162 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1163 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
1164 END IF;
1165
1166 FOR strm_rec IN strm_csr (p_chr_id)
1167 LOOP
1168 /*
1169 OPEN strm_csr(p_chr_id);
1170 FETCH strm_csr INTO l_id;
1171 IF strm_csr%NOTFOUND THEN
1172 okl_api.set_message(
1173 G_APP_NAME,
1174 G_LLA_NO_STREAM
1175 );
1176 debug_message('Failed');
1177 RAISE strm_failed;
1178 END IF;
1179 CLOSE strm_csr;
1180 */
1181
1182 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1183 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After CSR');
1184 END IF;
1185 l_stmv_rec.id := strm_rec.id;
1186 l_stmv_rec.khr_id := p_chr_id;
1187 l_stmv_rec.say_code := p_status;
1188 l_stmv_rec.active_yn := p_active_yn;
1189
1190 IF p_status = 'WORK' THEN
1191 l_stmv_rec.date_working := SYSDATE;
1192 ELSIF p_status = 'CURR' THEN
1193 l_stmv_rec.date_current := SYSDATE;
1194 ELSIF p_status = 'HIST' THEN
1195 l_stmv_rec.date_history := SYSDATE;
1196 END IF;
1197
1198 okl_streams_pub.update_streams(
1199 p_api_version => 1.0,
1200 p_init_msg_list => OKC_API.G_FALSE,
1201 x_return_status => x_return_status,
1202 x_msg_count => x_msg_count,
1203 x_msg_data => x_msg_data,
1204 p_stmv_rec => l_stmv_rec,
1205 x_stmv_rec => x_stmv_rec
1206 );
1207 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1208 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Update API Call');
1209 END IF;
1210 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1211 RAISE strm_failed;
1212 END IF;
1213
1214 END LOOP;
1215
1216 RETURN;
1217
1218 EXCEPTION
1219 WHEN strm_failed THEN
1220 IF strm_csr%ISOPEN THEN
1221 CLOSE strm_csr;
1222 END IF;
1223 x_return_status := OKC_API.G_RET_STS_ERROR;
1224 END change_stream_status;
1225
1226 ------------------------------------------------------------------------------
1227 -- PROCEDURE get_sll_rules
1228 --
1229 -- This procedure retrieves all SLL related to given SLH rule under LALEVL Category
1230 --
1231 -- Calls:
1232 -- Called By:
1233 ------------------------------------------------------------------------------
1234 PROCEDURE get_rule_info(
1235 x_return_status OUT NOCOPY VARCHAR2,
1236 p_rebook_chr_id IN NUMBER,
1237 p_rebook_cle_id IN NUMBER,
1238 p_rgd_code IN VARCHAR2,
1239 p_rule_code IN VARCHAR2,
1240 x_rulv_rec OUT NOCOPY rulv_rec_type,
1241 x_rule_count OUT NOCOPY NUMBER
1242 ) IS
1243 CURSOR okc_rulv_csr (p_rgd_code IN VARCHAR2,
1244 p_rule_code IN VARCHAR2,
1245 p_chr_id IN NUMBER,
1246 p_cle_id IN NUMBER) IS
1247 SELECT
1248 rule.ID,
1249 rule.OBJECT_VERSION_NUMBER,
1250 rule.SFWT_FLAG,
1251 rule.OBJECT1_ID1,
1252 rule.OBJECT2_ID1,
1253 rule.OBJECT3_ID1,
1254 rule.OBJECT1_ID2,
1255 rule.OBJECT2_ID2,
1256 rule.OBJECT3_ID2,
1257 rule.JTOT_OBJECT1_CODE,
1258 rule.JTOT_OBJECT2_CODE,
1259 rule.JTOT_OBJECT3_CODE,
1260 rule.DNZ_CHR_ID,
1261 rule.RGP_ID,
1262 rule.PRIORITY,
1263 rule.STD_TEMPLATE_YN,
1264 rule.COMMENTS,
1265 rule.WARN_YN,
1266 rule.ATTRIBUTE_CATEGORY,
1267 rule.ATTRIBUTE1,
1268 rule.ATTRIBUTE2,
1269 rule.ATTRIBUTE3,
1270 rule.ATTRIBUTE4,
1271 rule.ATTRIBUTE5,
1272 rule.ATTRIBUTE6,
1273 rule.ATTRIBUTE7,
1274 rule.ATTRIBUTE8,
1275 rule.ATTRIBUTE9,
1276 rule.ATTRIBUTE10,
1277 rule.ATTRIBUTE11,
1278 rule.ATTRIBUTE12,
1279 rule.ATTRIBUTE13,
1280 rule.ATTRIBUTE14,
1281 rule.ATTRIBUTE15,
1282 rule.CREATED_BY,
1283 rule.CREATION_DATE,
1284 rule.LAST_UPDATED_BY,
1285 rule.LAST_UPDATE_DATE,
1286 rule.LAST_UPDATE_LOGIN,
1287 --rule.TEXT,
1288 rule.RULE_INFORMATION_CATEGORY,
1289 rule.RULE_INFORMATION1,
1290 rule.RULE_INFORMATION2,
1291 rule.RULE_INFORMATION3,
1292 rule.RULE_INFORMATION4,
1293 rule.RULE_INFORMATION5,
1294 rule.RULE_INFORMATION6,
1295 rule.RULE_INFORMATION7,
1296 rule.RULE_INFORMATION8,
1297 rule.RULE_INFORMATION9,
1298 rule.RULE_INFORMATION10,
1299 rule.RULE_INFORMATION11,
1300 rule.RULE_INFORMATION12,
1301 rule.RULE_INFORMATION13,
1302 rule.RULE_INFORMATION14,
1303 rule.RULE_INFORMATION15,
1304 rule.TEMPLATE_YN,
1305 rule.ans_set_jtot_object_code,
1306 rule.ans_set_jtot_object_id1,
1307 rule.ans_set_jtot_object_id2,
1308 rule.DISPLAY_SEQUENCE
1309 FROM OKC_RULE_GROUPS_V rgp,
1310 Okc_Rules_V rule
1311 WHERE rgp.id = rule.rgp_id
1312 AND rgp.rgd_code = p_rgd_code
1313 AND RULE_INFORMATION_CATEGORY = p_rule_code
1314 AND rgp.dnz_chr_id = p_chr_id
1315 AND NVL(rgp.cle_id, -1) = p_cle_id;
1316
1317 l_rulv_rec rulv_rec_type;
1318 i NUMBER DEFAULT 0;
1319 l_proc_name VARCHAR2(35) := 'GET_RULE_INFO';
1320 BEGIN
1321 IF (G_DEBUG_ENABLED = 'Y') THEN
1322 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
1323 END IF;
1324
1325 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1326 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
1327 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rgd_code : '||p_rgd_code);
1328 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rule_code : '||p_rule_code);
1329 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'chr_id : '||p_rebook_chr_id);
1330 END IF;
1331 -- Get current database values
1332 OPEN okc_rulv_csr (p_rgd_code,
1333 p_rule_code,
1334 p_rebook_chr_id,
1335 p_rebook_cle_id);
1336 LOOP
1337 FETCH okc_rulv_csr INTO
1338 l_rulv_rec.ID,
1339 l_rulv_rec.OBJECT_VERSION_NUMBER,
1340 l_rulv_rec.SFWT_FLAG,
1341 l_rulv_rec.OBJECT1_ID1,
1342 l_rulv_rec.OBJECT2_ID1,
1343 l_rulv_rec.OBJECT3_ID1,
1344 l_rulv_rec.OBJECT1_ID2,
1345 l_rulv_rec.OBJECT2_ID2,
1346 l_rulv_rec.OBJECT3_ID2,
1347 l_rulv_rec.JTOT_OBJECT1_CODE,
1348 l_rulv_rec.JTOT_OBJECT2_CODE,
1349 l_rulv_rec.JTOT_OBJECT3_CODE,
1350 l_rulv_rec.DNZ_CHR_ID,
1351 l_rulv_rec.RGP_ID,
1352 l_rulv_rec.PRIORITY,
1353 l_rulv_rec.STD_TEMPLATE_YN,
1354 l_rulv_rec.COMMENTS,
1355 l_rulv_rec.WARN_YN,
1356 l_rulv_rec.ATTRIBUTE_CATEGORY,
1357 l_rulv_rec.ATTRIBUTE1,
1358 l_rulv_rec.ATTRIBUTE2,
1359 l_rulv_rec.ATTRIBUTE3,
1360 l_rulv_rec.ATTRIBUTE4,
1361 l_rulv_rec.ATTRIBUTE5,
1362 l_rulv_rec.ATTRIBUTE6,
1363 l_rulv_rec.ATTRIBUTE7,
1364 l_rulv_rec.ATTRIBUTE8,
1365 l_rulv_rec.ATTRIBUTE9,
1366 l_rulv_rec.ATTRIBUTE10,
1367 l_rulv_rec.ATTRIBUTE11,
1368 l_rulv_rec.ATTRIBUTE12,
1369 l_rulv_rec.ATTRIBUTE13,
1370 l_rulv_rec.ATTRIBUTE14,
1371 l_rulv_rec.ATTRIBUTE15,
1372 l_rulv_rec.CREATED_BY,
1373 l_rulv_rec.CREATION_DATE,
1374 l_rulv_rec.LAST_UPDATED_BY,
1375 l_rulv_rec.LAST_UPDATE_DATE,
1376 l_rulv_rec.LAST_UPDATE_LOGIN,
1377 --l_rulv_rec.TEXT,
1378 l_rulv_rec.RULE_INFORMATION_CATEGORY,
1379 l_rulv_rec.RULE_INFORMATION1,
1380 l_rulv_rec.RULE_INFORMATION2,
1381 l_rulv_rec.RULE_INFORMATION3,
1382 l_rulv_rec.RULE_INFORMATION4,
1383 l_rulv_rec.RULE_INFORMATION5,
1384 l_rulv_rec.RULE_INFORMATION6,
1385 l_rulv_rec.RULE_INFORMATION7,
1386 l_rulv_rec.RULE_INFORMATION8,
1387 l_rulv_rec.RULE_INFORMATION9,
1388 l_rulv_rec.RULE_INFORMATION10,
1389 l_rulv_rec.RULE_INFORMATION11,
1390 l_rulv_rec.RULE_INFORMATION12,
1391 l_rulv_rec.RULE_INFORMATION13,
1392 l_rulv_rec.RULE_INFORMATION14,
1393 l_rulv_rec.RULE_INFORMATION15,
1394 l_rulv_rec.TEMPLATE_YN,
1395 l_rulv_rec.ans_set_jtot_object_code,
1396 l_rulv_rec.ans_set_jtot_object_id1,
1397 l_rulv_rec.ans_set_jtot_object_id2,
1398 l_rulv_rec.DISPLAY_SEQUENCE ;
1399 EXIT WHEN okc_rulv_csr%NOTFOUND;
1400 i := okc_rulv_csr%RowCount;
1401 x_rulv_rec := l_rulv_rec;
1402 END LOOP;
1403 CLOSE okc_rulv_csr;
1404 x_rule_count := i;
1405
1406 RETURN;
1407
1408 END get_rule_info;
1409
1410 ------------------------------------------------------------------------------
1411 -- PROCEDURE get_sll_rules
1412 --
1413 -- This procedure retrieves all SLL related to given SLH rule under LALEVL Category
1414 --
1415 -- Calls:
1416 -- Called By:
1417 ------------------------------------------------------------------------------
1418 PROCEDURE get_sll_rules(
1419 x_return_status OUT NOCOPY VARCHAR2,
1420 x_msg_count OUT NOCOPY NUMBER,
1421 x_msg_data OUT NOCOPY VARCHAR2,
1422 p_rgpv_rec IN rgpv_rec_type,
1423 p_rdf_code IN VARCHAR2,
1424 p_slh_id IN NUMBER,
1425 x_rulv_tbl OUT NOCOPY rulv_tbl_type,
1426 x_rule_count OUT NOCOPY NUMBER
1427 ) IS
1428 CURSOR okc_rulv_csr (p_rgp_id IN NUMBER,
1429 p_rdf_code IN VARCHAR2,
1430 p_slh_id IN NUMBER) IS
1431 SELECT
1432 ID,
1433 OBJECT_VERSION_NUMBER,
1434 SFWT_FLAG,
1435 OBJECT1_ID1,
1436 OBJECT2_ID1,
1437 OBJECT3_ID1,
1438 OBJECT1_ID2,
1439 OBJECT2_ID2,
1440 OBJECT3_ID2,
1441 JTOT_OBJECT1_CODE,
1442 JTOT_OBJECT2_CODE,
1443 JTOT_OBJECT3_CODE,
1444 DNZ_CHR_ID,
1445 RGP_ID,
1446 PRIORITY,
1447 STD_TEMPLATE_YN,
1448 COMMENTS,
1449 WARN_YN,
1450 ATTRIBUTE_CATEGORY,
1451 ATTRIBUTE1,
1452 ATTRIBUTE2,
1453 ATTRIBUTE3,
1454 ATTRIBUTE4,
1455 ATTRIBUTE5,
1456 ATTRIBUTE6,
1457 ATTRIBUTE7,
1458 ATTRIBUTE8,
1459 ATTRIBUTE9,
1460 ATTRIBUTE10,
1461 ATTRIBUTE11,
1462 ATTRIBUTE12,
1463 ATTRIBUTE13,
1464 ATTRIBUTE14,
1465 ATTRIBUTE15,
1466 CREATED_BY,
1467 CREATION_DATE,
1468 LAST_UPDATED_BY,
1469 LAST_UPDATE_DATE,
1470 LAST_UPDATE_LOGIN,
1471 --TEXT,
1472 RULE_INFORMATION_CATEGORY,
1473 RULE_INFORMATION1,
1474 RULE_INFORMATION2,
1475 RULE_INFORMATION3,
1476 RULE_INFORMATION4,
1477 RULE_INFORMATION5,
1478 RULE_INFORMATION6,
1479 RULE_INFORMATION7,
1480 RULE_INFORMATION8,
1481 RULE_INFORMATION9,
1482 RULE_INFORMATION10,
1483 RULE_INFORMATION11,
1484 RULE_INFORMATION12,
1485 RULE_INFORMATION13,
1486 RULE_INFORMATION14,
1487 RULE_INFORMATION15,
1488 TEMPLATE_YN,
1489 ans_set_jtot_object_code,
1490 ans_set_jtot_object_id1,
1491 ans_set_jtot_object_id2,
1492 DISPLAY_SEQUENCE
1493 FROM Okc_Rules_V
1494 WHERE okc_rules_v.rgp_id = p_rgp_id
1495 AND okc_rules_v.object2_id1 = p_slh_id
1496 AND RULE_INFORMATION_CATEGORY = DECODE(p_rdf_code,NULL,RULE_INFORMATION_CATEGORY,p_rdf_code);
1497
1498 l_rulv_rec rulv_rec_type;
1499 i NUMBER DEFAULT 0;
1500 l_proc_name VARCHAR2(35) := 'GET_SLL_RULES';
1501 BEGIN
1502 IF (G_DEBUG_ENABLED = 'Y') THEN
1503 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
1504 END IF;
1505
1506 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1507 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
1508 END IF;
1509 -- Get current database values
1510 OPEN okc_rulv_csr (p_rgpv_rec.id,
1511 p_rdf_code,
1512 p_slh_id);
1513 LOOP
1514 FETCH okc_rulv_csr INTO
1515 l_rulv_rec.ID,
1516 l_rulv_rec.OBJECT_VERSION_NUMBER,
1517 l_rulv_rec.SFWT_FLAG,
1518 l_rulv_rec.OBJECT1_ID1,
1519 l_rulv_rec.OBJECT2_ID1,
1520 l_rulv_rec.OBJECT3_ID1,
1521 l_rulv_rec.OBJECT1_ID2,
1522 l_rulv_rec.OBJECT2_ID2,
1523 l_rulv_rec.OBJECT3_ID2,
1524 l_rulv_rec.JTOT_OBJECT1_CODE,
1525 l_rulv_rec.JTOT_OBJECT2_CODE,
1526 l_rulv_rec.JTOT_OBJECT3_CODE,
1527 l_rulv_rec.DNZ_CHR_ID,
1528 l_rulv_rec.RGP_ID,
1529 l_rulv_rec.PRIORITY,
1530 l_rulv_rec.STD_TEMPLATE_YN,
1531 l_rulv_rec.COMMENTS,
1532 l_rulv_rec.WARN_YN,
1533 l_rulv_rec.ATTRIBUTE_CATEGORY,
1534 l_rulv_rec.ATTRIBUTE1,
1535 l_rulv_rec.ATTRIBUTE2,
1536 l_rulv_rec.ATTRIBUTE3,
1537 l_rulv_rec.ATTRIBUTE4,
1538 l_rulv_rec.ATTRIBUTE5,
1539 l_rulv_rec.ATTRIBUTE6,
1540 l_rulv_rec.ATTRIBUTE7,
1541 l_rulv_rec.ATTRIBUTE8,
1542 l_rulv_rec.ATTRIBUTE9,
1543 l_rulv_rec.ATTRIBUTE10,
1544 l_rulv_rec.ATTRIBUTE11,
1545 l_rulv_rec.ATTRIBUTE12,
1546 l_rulv_rec.ATTRIBUTE13,
1547 l_rulv_rec.ATTRIBUTE14,
1548 l_rulv_rec.ATTRIBUTE15,
1549 l_rulv_rec.CREATED_BY,
1550 l_rulv_rec.CREATION_DATE,
1551 l_rulv_rec.LAST_UPDATED_BY,
1552 l_rulv_rec.LAST_UPDATE_DATE,
1553 l_rulv_rec.LAST_UPDATE_LOGIN,
1554 --l_rulv_rec.TEXT,
1555 l_rulv_rec.RULE_INFORMATION_CATEGORY,
1556 l_rulv_rec.RULE_INFORMATION1,
1557 l_rulv_rec.RULE_INFORMATION2,
1558 l_rulv_rec.RULE_INFORMATION3,
1559 l_rulv_rec.RULE_INFORMATION4,
1560 l_rulv_rec.RULE_INFORMATION5,
1561 l_rulv_rec.RULE_INFORMATION6,
1562 l_rulv_rec.RULE_INFORMATION7,
1563 l_rulv_rec.RULE_INFORMATION8,
1564 l_rulv_rec.RULE_INFORMATION9,
1565 l_rulv_rec.RULE_INFORMATION10,
1566 l_rulv_rec.RULE_INFORMATION11,
1567 l_rulv_rec.RULE_INFORMATION12,
1568 l_rulv_rec.RULE_INFORMATION13,
1569 l_rulv_rec.RULE_INFORMATION14,
1570 l_rulv_rec.RULE_INFORMATION15,
1571 l_rulv_rec.TEMPLATE_YN,
1572 l_rulv_rec.ans_set_jtot_object_code,
1573 l_rulv_rec.ans_set_jtot_object_id1,
1574 l_rulv_rec.ans_set_jtot_object_id2,
1575 l_rulv_rec.DISPLAY_SEQUENCE ;
1576 EXIT WHEN okc_rulv_csr%NOTFOUND;
1577 i := okc_rulv_csr%RowCount;
1578 x_rulv_tbl(i) := l_rulv_rec;
1579 END LOOP;
1580 CLOSE okc_rulv_csr;
1581 x_rule_count := i;
1582
1583 RETURN;
1584
1585 END get_sll_rules;
1586
1587 ------------------------------------------------------------------------------
1588 -- PROCEDURE sync_header_slh_sll
1589 --
1590 -- This procedure synchronizes Header SLH and SLL Rules
1591 --
1592 -- Calls:
1593 -- Called By:
1594 ------------------------------------------------------------------------------
1595
1596 PROCEDURE sync_header_slh_sll(
1597 x_return_status OUT NOCOPY VARCHAR2,
1598 x_msg_count OUT NOCOPY NUMBER,
1599 x_msg_data OUT NOCOPY VARCHAR2,
1600 p_for_line IN VARCHAR2, -- DEFAULT 'N',
1601 p_rebook_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
1602 p_orig_chr_id IN OKC_K_HEADERS_V.ID%TYPE
1603 ) IS
1604
1605 l_proc_name VARCHAR2(35) := 'SYNC_HEADER_SLH_SLL';
1606 sync_header_failed EXCEPTION;
1607
1608 CURSOR rgp_csr(p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
1609 SELECT
1610 id
1611 ,object_version_number
1612 ,sfwt_flag
1613 ,rgd_code
1614 ,sat_code
1615 ,rgp_type
1616 ,cle_id
1617 ,chr_id
1618 ,dnz_chr_id
1619 ,parent_rgp_id
1620 ,comments
1621 ,attribute_category
1622 ,attribute1
1623 ,attribute2
1624 ,attribute3
1625 ,attribute4
1626 ,attribute5
1627 ,attribute6
1628 ,attribute7
1629 ,attribute8
1630 ,attribute9
1631 ,attribute10
1632 ,attribute11
1633 ,attribute12
1634 ,attribute13
1635 ,attribute14
1636 ,attribute15
1637 ,created_by
1638 ,creation_date
1639 ,last_updated_by
1640 ,last_update_date
1641 ,last_update_login
1642 FROM okc_rule_groups_v
1643 WHERE dnz_chr_id = p_chr_id
1644 AND cle_id IS NULL
1645 AND rgd_code = 'LALEVL';
1646
1647 CURSOR orig_rgp_csr(p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
1648
1649 SELECT id
1650 FROM okc_rule_groups_v
1651 WHERE dnz_chr_id = p_chr_id
1652 AND cle_id IS NULL
1653 AND rgd_code = 'LALEVL';
1654
1655 --x_new_rgpv_rec rgpv_rec_type;
1656 x_new_slh_rulv_rec rulv_rec_type;
1657
1658 x_slh_rulv_tbl rulv_tbl_type;
1659 x_slh_rule_count NUMBER;
1660
1661 x_sll_rulv_tbl rulv_tbl_type;
1662 x_sll_rule_count NUMBER;
1663
1664 x_rulv_rec rulv_rec_type;
1665
1666 l_rebook_rgpv_rec rgpv_rec_type;
1667 l_slh_rulv_rec rulv_rec_type;
1668 l_sll_rulv_rec rulv_rec_type;
1669
1670 l_rebook_rgp_id NUMBER;
1671 l_orig_rgp_id NUMBER;
1672
1673 l_rebook_cle_id NUMBER;
1674 l_orig_cle_id NUMBER;
1675
1676 l_rulv_tbl rulv_tbl_type;
1677 i NUMBER := 0;
1678
1679 l_rgpv_rec rgpv_rec_type;
1680 x_rgpv_rec rgpv_rec_type;
1681
1682 BEGIN
1683 IF (G_DEBUG_ENABLED = 'Y') THEN
1684 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
1685 END IF;
1686 x_return_status := OKC_API.G_RET_STS_SUCCESS;
1687 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1688 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
1689 END IF;
1690
1691 FOR rebook_rgp_rec IN rgp_csr(p_rebook_chr_id) -- Getting Rebook RGP_ID
1692 LOOP
1693
1694 OPEN orig_rgp_csr(p_orig_chr_id); -- Get Original Contract RGP_ID
1695 FETCH orig_rgp_csr INTO l_orig_rgp_id;
1696 IF orig_rgp_csr%NOTFOUND THEN -- Header payment added during rebook
1697 -- Create LALEVL rule group at header
1698 l_rgpv_rec := NULL;
1699
1700 l_rgpv_rec.rgd_code := 'LALEVL';
1701 l_rgpv_rec.chr_id := p_orig_chr_id;
1702 l_rgpv_rec.dnz_chr_id := p_orig_chr_id;
1703 l_rgpv_rec.cle_id := NULL;
1704 l_rgpv_rec.rgp_type := 'KRG';
1705
1706 OKL_RULE_PUB.create_rule_group(
1707 p_api_version => 1.0,
1708 p_init_msg_list => OKL_API.G_FALSE,
1709 x_return_status => x_return_status,
1710 x_msg_count => x_msg_count,
1711 x_msg_data => x_msg_data,
1712 p_rgpv_rec => l_rgpv_rec,
1713 x_rgpv_rec => x_rgpv_rec
1714 );
1715
1716 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
1717 RAISE sync_header_failed;
1718 END IF;
1719
1720 l_orig_rgp_id := x_rgpv_rec.id;
1721
1722 END IF;
1723
1724 CLOSE orig_rgp_csr;
1725
1726 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1727 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Orig RGP ID: ' || l_orig_rgp_id);
1728 END IF;
1729
1730 l_rebook_rgpv_rec := rebook_rgp_rec;
1731 --
1732 -- Get SLH Rule from Rebook Contract
1733 --
1734 Okl_Rule_Apis_Pvt.Get_Contract_Rules(
1735 p_api_version => 1.0,
1736 p_init_msg_list => Okl_Api.G_FALSE,
1737 p_rgpv_rec => l_rebook_rgpv_rec,
1738 p_rdf_code => 'LASLH',
1739 x_return_status => x_return_status,
1740 x_msg_count => x_msg_count,
1741 x_msg_data => x_msg_data,
1742 x_rulv_tbl => x_slh_rulv_tbl,
1743 x_rule_count => x_slh_rule_count
1744 );
1745 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
1746 RAISE sync_header_failed;
1747 END IF;
1748
1749 --x_slh_rulv_tbl_out := x_slh_rulv_tbl;
1750 --x_slh_count := x_slh_rule_count;
1751
1752 FOR i IN 1..x_slh_rule_count
1753 LOOP
1754 l_slh_rulv_rec := x_slh_rulv_tbl(i);
1755 l_slh_rulv_rec.rgp_id := l_orig_rgp_id;
1756 l_slh_rulv_rec.dnz_chr_id := p_orig_chr_id;
1757
1758 Okl_Rule_Pub.create_rule(
1759 p_api_version => 1.0,
1760 p_init_msg_list => Okc_Api.G_FALSE,
1761 x_return_status => x_return_status,
1762 x_msg_count => x_msg_count,
1763 x_msg_data => x_msg_data,
1764 p_rulv_rec => l_slh_rulv_rec,
1765 x_rulv_rec => x_new_slh_rulv_rec
1766 );
1767 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
1768 x_return_status := Okc_Api.G_RET_STS_ERROR;
1769 RAISE sync_header_failed;
1770 END IF;
1771
1772 --
1773 -- Get SLL Rules from Header for a SLH
1774 --
1775 get_sll_rules(
1776 x_return_status => x_return_status,
1777 x_msg_count => x_msg_count,
1778 x_msg_data => x_msg_data,
1779 p_rgpv_rec => l_rebook_rgpv_rec,
1780 p_rdf_code => 'LASLL',
1781 p_slh_id => x_slh_rulv_tbl(i).id,
1782 x_rulv_tbl => x_sll_rulv_tbl,
1783 x_rule_count => x_sll_rule_count
1784 );
1785 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
1786 RAISE sync_header_failed;
1787 END IF;
1788
1789 --x_sll_rulv_tbl_out := x_sll_rulv_tbl;
1790 --x_sll_count := x_sll_rule_count;
1791
1792 -- Create a SLL rule under SLH created above
1793 FOR i IN 1..x_sll_rule_count
1794 LOOP
1795
1796 l_sll_rulv_rec := x_sll_rulv_tbl(i);
1797 l_sll_rulv_rec.rgp_id := l_orig_rgp_id;
1798 l_sll_rulv_rec.object2_id1 := x_new_slh_rulv_rec.id;
1799 l_sll_rulv_rec.dnz_chr_id := p_orig_chr_id;
1800
1801 Okl_Rule_Pub.create_rule(
1802 p_api_version => 1.0,
1803 p_init_msg_list => Okc_Api.G_FALSE,
1804 x_return_status => x_return_status,
1805 x_msg_count => x_msg_count,
1806 x_msg_data => x_msg_data,
1807 p_rulv_rec => l_sll_rulv_rec,
1808 x_rulv_rec => x_rulv_rec
1809 );
1810 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
1811 x_return_status := Okc_Api.G_RET_STS_ERROR;
1812 RAISE sync_header_failed;
1813 END IF;
1814 END LOOP; -- SLL
1815
1816 END LOOP; -- SLH
1817
1818 END LOOP;
1819
1820 EXCEPTION
1821 WHEN sync_header_failed THEN
1822 x_return_status := OKC_API.G_RET_STS_ERROR;
1823
1824 END sync_header_slh_sll;
1825
1826 ------------------------------------------------------------------------------
1827 -- PROCEDURE sync_slh_sll
1828 --
1829 -- This procedure synchronizes SLH and SLL Rules
1830 --
1831 -- Calls:
1832 -- Called By:
1833 ------------------------------------------------------------------------------
1834
1835 PROCEDURE sync_slh_sll(
1836 x_return_status OUT NOCOPY VARCHAR2,
1837 x_msg_count OUT NOCOPY NUMBER,
1838 x_msg_data OUT NOCOPY VARCHAR2,
1839 p_for_line IN VARCHAR2, -- DEFAULT 'N',
1840 p_rebook_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
1841 p_orig_chr_id IN OKC_K_HEADERS_V.ID%TYPE
1842 ) IS
1843
1844 l_proc_name VARCHAR2(35) := 'SYNC_SLH_SLL';
1845 sync_failed EXCEPTION;
1846
1847 x_new_rgpv_rec rgpv_rec_type;
1848 x_new_slh_rulv_rec rulv_rec_type;
1849
1850 x_slh_rulv_tbl rulv_tbl_type;
1851 x_slh_rule_count NUMBER;
1852
1853 x_sll_rulv_tbl rulv_tbl_type;
1854 x_sll_rule_count NUMBER;
1855
1856 x_rulv_rec rulv_rec_type;
1857
1858 l_rebook_rgpv_rec rgpv_rec_type;
1859 l_slh_rulv_rec rulv_rec_type;
1860 l_sll_rulv_rec rulv_rec_type;
1861
1862 l_rebook_rgp_id NUMBER;
1863 l_orig_rgp_id NUMBER;
1864
1865 l_rebook_cle_id NUMBER;
1866 l_orig_cle_id NUMBER;
1867
1868 l_rulv_tbl rulv_tbl_type;
1869 i NUMBER := 0;
1870
1871 CURSOR rgp_csr(p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
1872 SELECT
1873 id
1874 ,object_version_number
1875 ,sfwt_flag
1876 ,rgd_code
1877 ,sat_code
1878 ,rgp_type
1879 ,cle_id
1880 ,chr_id
1881 ,dnz_chr_id
1882 ,parent_rgp_id
1883 ,comments
1884 ,attribute_category
1885 ,attribute1
1886 ,attribute2
1887 ,attribute3
1888 ,attribute4
1889 ,attribute5
1890 ,attribute6
1891 ,attribute7
1892 ,attribute8
1893 ,attribute9
1894 ,attribute10
1895 ,attribute11
1896 ,attribute12
1897 ,attribute13
1898 ,attribute14
1899 ,attribute15
1900 ,created_by
1901 ,creation_date
1902 ,last_updated_by
1903 ,last_update_date
1904 ,last_update_login
1905 FROM okc_rule_groups_v
1906 WHERE dnz_chr_id = p_chr_id
1907 AND rgd_code = 'LALEVL';
1908
1909 CURSOR orig_cle_csr(p_cle_id OKC_K_LINES_V.ID%TYPE) IS
1910 SELECT orig_system_id1
1911 FROM okc_k_lines_v
1912 WHERE id = p_cle_id;
1913
1914 CURSOR orig_rgp_csr(p_cle_id OKC_K_LINES_V.ID%TYPE,
1915 p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
1916 SELECT id
1917 FROM okc_rule_groups_v
1918 WHERE dnz_chr_id = p_chr_id
1919 AND ((cle_id = p_cle_id AND p_cle_id IS NOT NULL)
1920 OR
1921 cle_id IS NULL AND p_cle_id IS NULL)
1922 AND rgd_code = 'LALEVL';
1923
1924 CURSOR del_rgp_csr(p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
1925 SELECT id
1926 FROM okc_rule_groups_v
1927 WHERE dnz_chr_id = p_chr_id
1928 AND rgd_code = 'LALEVL';
1929
1930 CURSOR rule_csr(p_rgp_id NUMBER) IS
1931 SELECT id
1932 FROM okc_rules_v
1933 WHERE rgp_id = p_rgp_id;
1934
1935 --Bug# 4899328
1936 l_lalevl_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
1937 x_lalevl_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
1938
1939 BEGIN
1940 IF (G_DEBUG_ENABLED = 'Y') THEN
1941 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
1942 END IF;
1943 x_return_status := OKC_API.G_RET_STS_SUCCESS;
1944 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1945 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
1946 END IF;
1947
1948 /*
1949 -- Delete SLH, SLL from Original Contract
1950 i := 1;
1951
1952 FOR del_rgp_rec IN del_rgp_csr(p_orig_chr_id)
1953 LOOP
1954 FOR rule_rec IN rule_csr(del_rgp_rec.id)
1955 LOOP
1956 l_rulv_tbl(i).id := rule_rec.id;
1957 i := i+ 1;
1958 END LOOP;
1959 END LOOP;
1960
1961 okl_rule_pub.delete_rule(
1962 p_api_version => 1.0,
1963 p_init_msg_list => OKC_API.G_FALSE,
1964 x_return_status => x_return_status,
1965 x_msg_count => x_msg_count,
1966 x_msg_data => x_msg_data,
1967 p_rulv_tbl => l_rulv_tbl
1968 );
1969 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1970 RAISE sync_failed;
1971 END IF;
1972 */
1973
1974 FOR rebook_rgp_rec IN rgp_csr(p_rebook_chr_id) -- Getting Rebook RGP_ID
1975 LOOP
1976 l_orig_cle_id := NULL;
1977 IF rebook_rgp_rec.cle_id IS NOT NULL THEN -- For line level rule group get Original Contract Line No.
1978 OPEN orig_cle_csr(rebook_rgp_rec.cle_id);
1979 FETCH orig_cle_csr INTO l_orig_cle_id;
1980 CLOSE orig_cle_csr;
1981
1982 ELSE -- Header level payment
1983 sync_header_slh_sll(
1984 x_return_status => x_return_status,
1985 x_msg_count => x_msg_count,
1986 x_msg_data => x_msg_data,
1987 p_for_line => 'N',
1988 p_rebook_chr_id => p_rebook_chr_id,
1989 p_orig_chr_id => p_orig_chr_id
1990 );
1991 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1992 RAISE sync_failed;
1993 END IF;
1994 GOTO process_next;
1995
1996 END IF;
1997
1998 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1999 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Rebook CLE ID: '||rebook_rgp_rec.id);
2000 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Orig CLE ID: '|| l_orig_cle_id);
2001 END IF;
2002
2003 IF (l_orig_cle_id IS NULL) THEN
2004 GOTO process_next;
2005 END IF;
2006
2007 --Bug# 4899328
2008 l_orig_rgp_id := NULL;
2009 OPEN orig_rgp_csr(l_orig_cle_id,
2010 p_orig_chr_id); -- Get Original Contract RGP_ID
2011 FETCH orig_rgp_csr INTO l_orig_rgp_id;
2012 CLOSE orig_rgp_csr;
2013
2014 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2015 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Orig RGP ID: ' || l_orig_rgp_id);
2016 END IF;
2017
2018 l_rebook_rgpv_rec := rebook_rgp_rec;
2019 --
2020 -- Get SLH Rule from Rebook Contract
2021 --
2022 Okl_Rule_Apis_Pvt.Get_Contract_Rules(
2023 p_api_version => 1.0,
2024 p_init_msg_list => Okl_Api.G_FALSE,
2025 p_rgpv_rec => l_rebook_rgpv_rec,
2026 p_rdf_code => 'LASLH',
2027 x_return_status => x_return_status,
2028 x_msg_count => x_msg_count,
2029 x_msg_data => x_msg_data,
2030 x_rulv_tbl => x_slh_rulv_tbl,
2031 x_rule_count => x_slh_rule_count
2032 );
2033 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2034 RAISE sync_failed;
2035 END IF;
2036
2037 --x_slh_rulv_tbl_out := x_slh_rulv_tbl;
2038 --x_slh_count := x_slh_rule_count;
2039
2040 --Bug# 4899328
2041 IF l_orig_rgp_id IS NULL THEN
2042
2043 l_lalevl_rgpv_rec.id := null;
2044 l_lalevl_rgpv_rec.rgd_code := 'LALEVL';
2045 l_lalevl_rgpv_rec.dnz_chr_id := p_orig_chr_id;
2046 l_lalevl_rgpv_rec.cle_id := l_orig_cle_id;
2047 l_lalevl_rgpv_rec.rgp_type := 'KRG';
2048
2049 OKL_RULE_PUB.create_rule_group(
2050 p_api_version => 1.0,
2051 p_init_msg_list => Okc_Api.G_False,
2052 x_return_status => x_return_status,
2053 x_msg_count => x_msg_count,
2054 x_msg_data => x_msg_data,
2055 p_rgpv_rec => l_lalevl_rgpv_rec,
2056 x_rgpv_rec => x_lalevl_rgpv_rec);
2057
2058 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2059 RAISE sync_failed;
2060 END IF;
2061
2062 l_orig_rgp_id := x_lalevl_rgpv_rec.id;
2063
2064 END IF;
2065 --Bug# 4899328
2066
2067 FOR i IN 1..x_slh_rule_count
2068 LOOP
2069 l_slh_rulv_rec := x_slh_rulv_tbl(i);
2070 l_slh_rulv_rec.rgp_id := l_orig_rgp_id;
2071 l_slh_rulv_rec.dnz_chr_id := p_orig_chr_id;
2072
2073 Okl_Rule_Pub.create_rule(
2074 p_api_version => 1.0,
2075 p_init_msg_list => Okc_Api.G_FALSE,
2076 x_return_status => x_return_status,
2077 x_msg_count => x_msg_count,
2078 x_msg_data => x_msg_data,
2079 p_rulv_rec => l_slh_rulv_rec,
2080 x_rulv_rec => x_new_slh_rulv_rec
2081 );
2082 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2083 x_return_status := Okc_Api.G_RET_STS_ERROR;
2084 RAISE sync_failed;
2085 END IF;
2086
2087 --
2088 -- Get SLL Rules from Header for a SLH
2089 --
2090 get_sll_rules(
2091 x_return_status => x_return_status,
2092 x_msg_count => x_msg_count,
2093 x_msg_data => x_msg_data,
2094 p_rgpv_rec => l_rebook_rgpv_rec,
2095 p_rdf_code => 'LASLL',
2096 p_slh_id => x_slh_rulv_tbl(i).id,
2097 x_rulv_tbl => x_sll_rulv_tbl,
2098 x_rule_count => x_sll_rule_count
2099 );
2100 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2101 RAISE sync_failed;
2102 END IF;
2103
2104 --x_sll_rulv_tbl_out := x_sll_rulv_tbl;
2105 --x_sll_count := x_sll_rule_count;
2106
2107 -- Create a SLL rule under SLH created above
2108 FOR i IN 1..x_sll_rule_count
2109 LOOP
2110
2111 l_sll_rulv_rec := x_sll_rulv_tbl(i);
2112 l_sll_rulv_rec.rgp_id := l_orig_rgp_id;
2113 l_sll_rulv_rec.object2_id1 := x_new_slh_rulv_rec.id;
2114 l_sll_rulv_rec.dnz_chr_id := p_orig_chr_id;
2115
2116 Okl_Rule_Pub.create_rule(
2117 p_api_version => 1.0,
2118 p_init_msg_list => Okc_Api.G_FALSE,
2119 x_return_status => x_return_status,
2120 x_msg_count => x_msg_count,
2121 x_msg_data => x_msg_data,
2122 p_rulv_rec => l_sll_rulv_rec,
2123 x_rulv_rec => x_rulv_rec
2124 );
2125 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2126 x_return_status := Okc_Api.G_RET_STS_ERROR;
2127 RAISE sync_failed;
2128 END IF;
2129 END LOOP; -- SLL
2130
2131 END LOOP; -- SLH
2132
2133 <<process_next>>
2134 NULL;
2135 END LOOP;
2136
2137 EXCEPTION
2138 WHEN sync_failed THEN
2139 x_return_status := OKC_API.G_RET_STS_ERROR;
2140 END sync_slh_sll;
2141
2142 ------------------------------------------------------------------------------
2143 -- PROCEDURE sync_sales_tax
2144 --
2145 -- This procedure synchronizes sales tax rules for both contract header
2146 -- and line
2147 --
2148 -- Calls:
2149 -- Called By:
2150 ------------------------------------------------------------------------------
2151 PROCEDURE sync_sales_tax (
2152 x_return_status OUT NOCOPY VARCHAR2,
2153 x_msg_count OUT NOCOPY NUMBER,
2154 x_msg_data OUT NOCOPY VARCHAR2,
2155 p_rebook_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
2156 p_orig_chr_id IN OKC_K_HEADERS_V.ID%TYPE
2157 ) IS
2158
2159 l_proc_name VARCHAR2(35) := 'SYNC_SALES_TAX';
2160 sync_tax_failed EXCEPTION;
2161
2162 x_rbk_lastcl_rec rulv_rec_type;
2163 x_rbk_lastcl_count NUMBER;
2164
2165 x_orig_lastcl_rec rulv_rec_type;
2166 x_orig_lastcl_count NUMBER;
2167
2168 x_rbk_lastpr_rec rulv_rec_type;
2169 x_rbk_lastpr_count NUMBER;
2170
2171 x_orig_lastpr_rec rulv_rec_type;
2172 x_orig_lastpr_count NUMBER;
2173
2174 x_rulv_rec rulv_rec_type;
2175
2176 l_rgpv_rec rgpv_rec_type;
2177 x_rgpv_rec rgpv_rec_type;
2178
2179 BEGIN
2180 IF (G_DEBUG_ENABLED = 'Y') THEN
2181 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
2182 END IF;
2183
2184 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2185 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
2186 END IF;
2187
2188 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2189
2190 -- Get Sales Tax header rule
2191 -- LAHDTX: LASTCL, LASTPR
2192 --
2193 -- 1. Get rebook chnages for LASTCL
2194 get_rule_info(
2195 x_return_status => x_return_status,
2196 p_rebook_chr_id => p_rebook_chr_id,
2197 p_rebook_cle_id => -1,
2198 p_rgd_code => 'LAHDTX',
2199 p_rule_code => 'LASTCL',
2200 x_rulv_rec => x_rbk_lastcl_rec,
2201 x_rule_count => x_rbk_lastcl_count
2202 );
2203 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2204 x_return_status := Okc_Api.G_RET_STS_ERROR;
2205 RAISE sync_tax_failed;
2206 END IF;
2207
2208 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2209 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Rbk count: '||x_rbk_lastcl_count);
2210 END IF;
2211 -- 2. Get orig rule ID for LASTCL
2212 get_rule_info(
2213 x_return_status => x_return_status,
2214 p_rebook_chr_id => p_orig_chr_id,
2215 p_rebook_cle_id => -1,
2216 p_rgd_code => 'LAHDTX',
2217 p_rule_code => 'LASTCL',
2218 x_rulv_rec => x_orig_lastcl_rec,
2219 x_rule_count => x_orig_lastcl_count
2220 );
2221
2222 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2223 x_return_status := Okc_Api.G_RET_STS_ERROR;
2224 RAISE sync_tax_failed;
2225 END IF;
2226
2227 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2228 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Orig count: '||x_orig_lastcl_count);
2229 END IF;
2230 -- 3. Update rule LASTCL
2231 IF (x_orig_lastcl_count > 0) THEN
2232 -- Update rule information
2233 IF (x_rbk_lastcl_count > 0) THEN
2234
2235 x_rbk_lastcl_rec.id := x_orig_lastcl_rec.id;
2236 x_rbk_lastcl_rec.rgp_id := x_orig_lastcl_rec.rgp_id;
2237
2238 -- Check for changes during rebook
2239 IF (x_rbk_lastcl_rec.rule_information1 <> x_orig_lastcl_rec.rule_information1
2240 OR
2241 x_rbk_lastcl_rec.rule_information2 <> x_orig_lastcl_rec.rule_information2
2242 OR
2243 x_rbk_lastcl_rec.rule_information3 <> x_orig_lastcl_rec.rule_information3
2244 OR
2245 x_rbk_lastcl_rec.rule_information4 <> x_orig_lastcl_rec.rule_information4
2246 OR
2247 x_rbk_lastcl_rec.rule_information5 <> x_orig_lastcl_rec.rule_information5
2248 OR
2249 x_rbk_lastcl_rec.rule_information6 <> x_orig_lastcl_rec.rule_information6
2250 OR
2251 x_rbk_lastcl_rec.rule_information7 <> x_orig_lastcl_rec.rule_information7
2252 ) THEN
2253
2254 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2255 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Update LASTCL rule: '||x_rbk_lastcl_rec.id);
2256 END IF;
2257 okl_rule_pub.update_rule(
2258 p_api_version => 1.0,
2259 p_init_msg_list => OKL_API.G_FALSE,
2260 x_return_status => x_return_status,
2261 x_msg_count => x_msg_count,
2262 x_msg_data => x_msg_data,
2263 p_rulv_rec => x_rbk_lastcl_rec,
2264 x_rulv_rec => x_rulv_rec
2265 );
2266
2267 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2268 x_return_status := Okc_Api.G_RET_STS_ERROR;
2269 RAISE sync_tax_failed;
2270 END IF;
2271 END IF; -- LASTCL changed
2272 END IF;
2273 ELSE
2274 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2275 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Create Rule Group and Rule: LASTCL');
2276 END IF;
2277 -- Create rule group and rule information
2278 l_rgpv_rec.rgd_code := 'LAHDTX';
2279 l_rgpv_rec.chr_id := p_orig_chr_id;
2280 l_rgpv_rec.dnz_chr_id := p_orig_chr_id;
2281 l_rgpv_rec.cle_id := NULL;
2282 l_rgpv_rec.rgp_type := 'KRG';
2283 okl_rule_pub.create_rule_group(
2284 p_api_version => 1.0,
2285 p_init_msg_list => OKL_API.G_FALSE,
2286 x_return_status => x_return_status,
2287 x_msg_count => x_msg_count,
2288 x_msg_data => x_msg_data,
2289 p_rgpv_rec => l_rgpv_rec,
2290 x_rgpv_rec => x_rgpv_rec
2291 );
2292
2293 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2294 x_return_status := Okc_Api.G_RET_STS_ERROR;
2295 RAISE sync_tax_failed;
2296 END IF;
2297
2298 x_rbk_lastcl_rec.id := NULL;
2299 x_rbk_lastcl_rec.rgp_id := x_rgpv_rec.id;
2300 okl_rule_pub.create_rule(
2301 p_api_version => 1.0,
2302 p_init_msg_list => OKL_API.G_FALSE,
2303 x_return_status => x_return_status,
2304 x_msg_count => x_msg_count,
2305 x_msg_data => x_msg_data,
2306 p_rulv_rec => x_rbk_lastcl_rec,
2307 x_rulv_rec => x_rulv_rec
2308 );
2309
2310 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2311 x_return_status := Okc_Api.G_RET_STS_ERROR;
2312 RAISE sync_tax_failed;
2313 END IF;
2314
2315 END IF; -- LASTCL
2316
2317 -- 1. Get rebook chnages for LASTPR
2318 get_rule_info(
2319 x_return_status => x_return_status,
2320 p_rebook_chr_id => p_rebook_chr_id,
2321 p_rebook_cle_id => -1,
2322 p_rgd_code => 'LAHDTX',
2323 p_rule_code => 'LASTPR',
2324 x_rulv_rec => x_rbk_lastpr_rec,
2325 x_rule_count => x_rbk_lastpr_count
2326 );
2327 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2328 x_return_status := Okc_Api.G_RET_STS_ERROR;
2329 RAISE sync_tax_failed;
2330 END IF;
2331
2332 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2333 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Rbk count: '||x_rbk_lastcl_count);
2334 END IF;
2335 -- 2. Get orig rule ID for LASTPR
2336 get_rule_info(
2337 x_return_status => x_return_status,
2338 p_rebook_chr_id => p_orig_chr_id,
2339 p_rebook_cle_id => -1,
2340 p_rgd_code => 'LAHDTX',
2341 p_rule_code => 'LASTPR',
2342 x_rulv_rec => x_orig_lastpr_rec,
2343 x_rule_count => x_orig_lastpr_count
2344 );
2345
2346 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2347 x_return_status := Okc_Api.G_RET_STS_ERROR;
2348 RAISE sync_tax_failed;
2349 END IF;
2350
2351 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2352 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Orig count: '||x_orig_lastpr_count);
2353 END IF;
2354 -- 3. Update rule LASTPR
2355 IF (x_orig_lastcl_count > 0) THEN
2356 -- Update rule information
2357 IF (x_rbk_lastcl_count > 0) THEN
2358
2359 x_rbk_lastpr_rec.id := x_orig_lastpr_rec.id;
2360 x_rbk_lastpr_rec.rgp_id := x_orig_lastpr_rec.rgp_id;
2361
2362 -- Check for changes during rebook
2363 IF (x_rbk_lastpr_rec.rule_information1 <> x_orig_lastpr_rec.rule_information1
2364 OR
2365 x_rbk_lastpr_rec.rule_information2 <> x_orig_lastpr_rec.rule_information2
2366 OR
2367 x_rbk_lastpr_rec.rule_information3 <> x_orig_lastpr_rec.rule_information3
2368 OR
2369 x_rbk_lastpr_rec.rule_information4 <> x_orig_lastpr_rec.rule_information4
2370 ) THEN
2371
2372 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2373 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Update LASTPR rule: '||x_rbk_lastpr_rec.id);
2374 END IF;
2375 okl_rule_pub.update_rule(
2376 p_api_version => 1.0,
2377 p_init_msg_list => OKL_API.G_FALSE,
2378 x_return_status => x_return_status,
2379 x_msg_count => x_msg_count,
2380 x_msg_data => x_msg_data,
2381 p_rulv_rec => x_rbk_lastpr_rec,
2382 x_rulv_rec => x_rulv_rec
2383 );
2384
2385 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2386 x_return_status := Okc_Api.G_RET_STS_ERROR;
2387 RAISE sync_tax_failed;
2388 END IF;
2389 END IF; -- LASTCL changed
2390 END IF;
2391 ELSE
2392 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2393 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Create Rule Group and Rule: LASTPR');
2394 END IF;
2395 -- Create rule group and rule information
2396
2397 IF (x_rgpv_rec.id IS NULL
2398 OR
2399 x_rgpv_rec.id = OKL_API.G_MISS_NUM) THEN
2400 l_rgpv_rec.rgd_code := 'LAHDTX';
2401 l_rgpv_rec.chr_id := p_orig_chr_id;
2402 l_rgpv_rec.dnz_chr_id := p_orig_chr_id;
2403 l_rgpv_rec.cle_id := NULL;
2404 l_rgpv_rec.rgp_type := 'KRG';
2405 okl_rule_pub.create_rule_group(
2406 p_api_version => 1.0,
2407 p_init_msg_list => OKL_API.G_FALSE,
2408 x_return_status => x_return_status,
2409 x_msg_count => x_msg_count,
2410 x_msg_data => x_msg_data,
2411 p_rgpv_rec => l_rgpv_rec,
2412 x_rgpv_rec => x_rgpv_rec
2413 );
2414
2415 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2416 x_return_status := Okc_Api.G_RET_STS_ERROR;
2417 RAISE sync_tax_failed;
2418 END IF;
2419 END IF;
2420 x_rbk_lastpr_rec.id := NULL;
2421 x_rbk_lastpr_rec.rgp_id := x_rgpv_rec.id;
2422 okl_rule_pub.create_rule(
2423 p_api_version => 1.0,
2424 p_init_msg_list => OKL_API.G_FALSE,
2425 x_return_status => x_return_status,
2426 x_msg_count => x_msg_count,
2427 x_msg_data => x_msg_data,
2428 p_rulv_rec => x_rbk_lastpr_rec,
2429 x_rulv_rec => x_rulv_rec
2430 );
2431
2432 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2433 x_return_status := Okc_Api.G_RET_STS_ERROR;
2434 RAISE sync_tax_failed;
2435 END IF;
2436
2437 END IF; -- LASTPR
2438 EXCEPTION
2439 WHEN sync_tax_failed THEN
2440 x_return_status := OKC_API.G_RET_STS_ERROR;
2441 END sync_sales_tax;
2442
2443 ------------------------------------------------------------------------------
2444 -- PROCEDURE sync_party_role
2445 --
2446 -- This procedure synchronizes party roles created during rebook process
2447 -- Sunchronize Lease Vendor (OKX_VENDOR) only
2448 --
2449 -- Calls:
2450 -- Called By:
2451 ------------------------------------------------------------------------------
2452
2453 PROCEDURE sync_party_role(
2454 x_return_status OUT NOCOPY VARCHAR2,
2455 x_msg_count OUT NOCOPY NUMBER,
2456 x_msg_data OUT NOCOPY VARCHAR2,
2457 p_rebook_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
2458 p_orig_chr_id IN OKC_K_HEADERS_V.ID%TYPE
2459 ) IS
2460
2461 CURSOR rebook_party_csr (p_rebook_chr_id OKC_K_HEADERS_B.ID%TYPE,
2462 p_orig_chr_id OKC_K_HEADERS_B.ID%TYPE) IS
2463 SELECT rbk.id,
2464 rbk.object1_id1,
2465 rbk.object1_id2,
2466 rbk.jtot_object1_code,
2467 rbk.rle_code
2468 FROM okc_k_party_roles_b rbk
2469 WHERE rbk.chr_id = p_rebook_chr_id
2470 AND rbk.jtot_object1_code = 'OKX_VENDOR' -- Bug# 3311403
2471 AND NOT EXISTS (
2472 SELECT 'Y'
2473 FROM okc_k_party_roles_b orig
2474 WHERE orig.object1_id1 = rbk.object1_id1
2475 AND orig.object1_id2 = rbk.object1_id2
2476 AND orig.jtot_object1_code = rbk.jtot_object1_code
2477 AND orig.rle_code = rbk.rle_code
2478 AND orig.chr_id = p_orig_chr_id
2479 AND orig.jtot_object1_code = 'OKX_VENDOR' -- Bug# 3311403
2480 );
2481
2482 CURSOR party_rule_csr (p_chr_id NUMBER,
2483 p_cpl_id NUMBER) IS
2484 SELECT rgp_id
2485 FROM okc_rg_party_roles_v
2486 WHERE cpl_id = p_cpl_id
2487 AND dnz_chr_id = p_chr_id;
2488
2489 l_proc_name VARCHAR2(35) := 'SYNC_PARTY_ROLE';
2490 x_cpl_id NUMBER;
2491 x_rgp_id NUMBER;
2492
2493 CURSOR rbk_evg_hdr_csr (p_chr_id NUMBER) IS
2494 SELECT *
2495 FROM okl_party_payment_hdr
2496 WHERE dnz_chr_id = p_chr_id
2497 AND cle_id IS NULL;
2498
2499 CURSOR orig_evg_hdr_csr (p_chr_id NUMBER) IS
2500 SELECT id
2501 FROM okl_party_payment_hdr
2502 WHERE dnz_chr_id = p_chr_id
2503 AND cle_id IS NULL;
2504
2505 CURSOR orig_party_csr (p_chr_id NUMBER) IS
2506 SELECT party.id party_id,
2507 party.object1_id1,
2508 pyd.ID pyd_id,
2509 pyd.CPL_ID,
2510 pyd.VENDOR_ID,
2511 pyd.PAY_SITE_ID,
2512 pyd.PAYMENT_TERM_ID,
2513 pyd.PAYMENT_METHOD_CODE,
2514 pyd.PAY_GROUP_CODE,
2515 pyd.PAYMENT_HDR_ID,
2516 pyd.PAYMENT_START_DATE,
2517 pyd.PAYMENT_FREQUENCY,
2518 pyd.REMIT_DAYS,
2519 pyd.DISBURSEMENT_BASIS,
2520 pyd.DISBURSEMENT_FIXED_AMOUNT,
2521 pyd.DISBURSEMENT_PERCENT,
2522 pyd.PROCESSING_FEE_BASIS,
2523 pyd.PROCESSING_FEE_FIXED_AMOUNT,
2524 pyd.PROCESSING_FEE_PERCENT,
2525 pyd.PAYMENT_BASIS
2526 FROM okc_k_party_roles_b party,
2527 okl_party_payment_dtls pyd
2528 WHERE party.dnz_chr_id = p_chr_id
2529 AND party.rle_code = 'OKL_VENDOR'
2530 AND party.cle_id IS NULL
2531 AND party.id = pyd.cpl_id (+);
2532
2533 CURSOR rbk_evg_dtl_csr (p_pmnt_hdr_id NUMBER,
2534 p_vendor_id NUMBER) IS
2535 select *
2536 from okl_party_payment_dtls
2537 where payment_hdr_id = p_pmnt_hdr_id
2538 and vendor_id = p_vendor_id;
2539
2540 rbk_evg_dtl_rec rbk_evg_dtl_csr%ROWTYPE;
2541
2542 l_orig_evg_hdr_id NUMBER;
2543 l_rbk_evg_hdr_id NUMBER;
2544
2545 l_pphv_rec okl_party_payments_pvt.pphv_rec_type;
2546 x_pphv_rec okl_party_payments_pvt.pphv_rec_type;
2547
2548 l_ppydv_c_rec okl_party_payments_pvt.ppydv_rec_type;
2549 l_ppydv_u_rec okl_party_payments_pvt.ppydv_rec_type;
2550 x_ppydv_rec okl_party_payments_pvt.ppydv_rec_type;
2551
2552 sync_party_failed EXCEPTION;
2553
2554 BEGIN
2555 IF (G_DEBUG_ENABLED = 'Y') THEN
2556 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
2557 END IF;
2558 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2559 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2560 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
2561 END IF;
2562
2563 -- Sync evergreen passthru at contract header and party
2564 FOR rbk_evg_hdr_rec IN rbk_evg_hdr_csr (p_rebook_chr_id)
2565 LOOP
2566 l_rbk_evg_hdr_id := rbk_evg_hdr_rec.id; -- saved for use during detail update/create
2567 OPEN orig_evg_hdr_csr (p_orig_chr_id);
2568 FETCH orig_evg_hdr_csr INTO l_orig_evg_hdr_id;
2569 IF orig_evg_hdr_csr%NOTFOUND THEN
2570 -- create header rec
2571 l_pphv_rec.dnz_chr_id := p_orig_chr_id;
2572 l_pphv_rec.payout_basis := rbk_evg_hdr_rec.payout_basis;
2573 l_pphv_rec.payout_basis_formula := rbk_evg_hdr_rec.payout_basis_formula;
2574 l_pphv_rec.passthru_stream_type_id := rbk_evg_hdr_rec.passthru_stream_type_id;
2575 --added by rkuttiya for bug #6873960
2576 l_pphv_rec.effective_from := rbk_evg_hdr_rec.effective_from;
2577 l_pphv_rec.passthru_term := rbk_evg_hdr_rec.passthru_term;
2578 --
2579
2580 okl_party_payments_pvt.create_party_payment_hdr(
2581 p_api_version => 1.0,
2582 p_init_msg_list => OKL_API.G_FALSE,
2583 x_return_status => x_return_status,
2584 x_msg_count => x_msg_count,
2585 x_msg_data => x_msg_data,
2586 p_pphv_rec => l_pphv_rec,
2587 x_pphv_rec => x_pphv_rec
2588 );
2589 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2590 RAISE sync_party_failed;
2591 END IF;
2592 ELSE
2593 -- Update header rec
2594 l_pphv_rec.id := l_orig_evg_hdr_id;
2595 l_pphv_rec.dnz_chr_id := p_orig_chr_id;
2596 l_pphv_rec.payout_basis := rbk_evg_hdr_rec.payout_basis;
2597 l_pphv_rec.payout_basis_formula := rbk_evg_hdr_rec.payout_basis_formula;
2598 l_pphv_rec.passthru_stream_type_id := rbk_evg_hdr_rec.passthru_stream_type_id;
2599 okl_party_payments_pvt.update_party_payment_hdr(
2600 p_api_version => 1.0,
2601 p_init_msg_list => OKL_API.G_FALSE,
2602 x_return_status => x_return_status,
2603 x_msg_count => x_msg_count,
2604 x_msg_data => x_msg_data,
2605 p_pphv_rec => l_pphv_rec,
2606 x_pphv_rec => x_pphv_rec
2607 );
2608 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2609 RAISE sync_party_failed;
2610 END IF;
2611 END IF;
2612 CLOSE orig_evg_hdr_csr;
2613 END LOOP;
2614
2615 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2616 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'x_pphv_rec.id: '||x_pphv_rec.id);
2617 END IF;
2618 IF (l_rbk_evg_hdr_id IS NOT NULL) THEN -- header evergreen exists
2619 -- Update vendor evergreen detail if any
2620 FOR orig_party_rec IN orig_party_csr (p_orig_chr_id)
2621 LOOP
2622 IF (orig_party_rec.payment_hdr_id IS NOT NULL) THEN
2623
2624 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2625 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Update party payment detail for Vendor: '||orig_party_rec.object1_id1);
2626 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'orig_party_rec.payment_hdr_id: '||orig_party_rec.payment_hdr_id);
2627 END IF;
2628 -- update evg detail
2629 --Bug# 4880939: Changed Open/Fetch to For Loop
2630 /*
2631 OPEN rbk_evg_dtl_csr (l_rbk_evg_hdr_id,
2632 orig_party_rec.object1_id1
2633 );
2634 FETCH rbk_evg_dtl_csr INTO rbk_evg_dtl_rec;
2635 CLOSE rbk_evg_dtl_csr;
2636 */
2637
2638 FOR rbk_evg_dtl_rec IN rbk_evg_dtl_csr (l_rbk_evg_hdr_id,
2639 orig_party_rec.object1_id1)
2640 LOOP
2641
2642 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2643 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'orig_party_rec.pyd_id: '||orig_party_rec.pyd_id);
2644 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rbk_evg_dtl_rec.pay_site_id: '||rbk_evg_dtl_rec.pay_site_id);
2645 END IF;
2646
2647
2648 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2649 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rbk_evg_dtl_rec.remit_days: '||rbk_evg_dtl_rec.remit_days);
2650 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rbk_evg_dtl_rec.payment_method_code: '||rbk_evg_dtl_rec.payment_method_code);
2651 END IF;
2652 l_ppydv_u_rec.id := orig_party_rec.pyd_id;
2653 l_ppydv_u_rec.pay_site_id := rbk_evg_dtl_rec.pay_site_id;
2654 l_ppydv_u_rec.payment_term_id := rbk_evg_dtl_rec.payment_term_id;
2655 l_ppydv_u_rec.payment_method_code := rbk_evg_dtl_rec.payment_method_code;
2656 l_ppydv_u_rec.pay_group_code := rbk_evg_dtl_rec.pay_group_code;
2657 l_ppydv_u_rec.payment_start_date := rbk_evg_dtl_rec.payment_start_date;
2658 l_ppydv_u_rec.payment_frequency := rbk_evg_dtl_rec.payment_frequency;
2659 l_ppydv_u_rec.remit_days := rbk_evg_dtl_rec.remit_days;
2660 l_ppydv_u_rec.disbursement_basis := rbk_evg_dtl_rec.disbursement_basis;
2661 l_ppydv_u_rec.disbursement_fixed_amount := rbk_evg_dtl_rec.disbursement_fixed_amount;
2662 l_ppydv_u_rec.disbursement_percent := rbk_evg_dtl_rec.disbursement_percent;
2663 l_ppydv_u_rec.processing_fee_basis := rbk_evg_dtl_rec.processing_fee_basis;
2664 l_ppydv_u_rec.processing_fee_fixed_amount := rbk_evg_dtl_rec.processing_fee_fixed_amount;
2665 l_ppydv_u_rec.processing_fee_percent := rbk_evg_dtl_rec.processing_fee_percent;
2666 l_ppydv_u_rec.payment_basis := rbk_evg_dtl_rec.payment_basis;
2667
2668 okl_party_payments_pvt.update_party_payment_dtls(
2669 p_api_version => 1.0,
2670 p_init_msg_list => OKL_API.G_FALSE,
2671 x_return_status => x_return_status,
2672 x_msg_count => x_msg_count,
2673 x_msg_data => x_msg_data,
2674 p_ppydv_rec => l_ppydv_u_rec,
2675 x_ppydv_rec => x_ppydv_rec
2676 );
2677
2678 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2679 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Update Status: '||x_return_status);
2680 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'x_ppydv_rec.id: '||x_ppydv_rec.id);
2681 END IF;
2682 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2683 RAISE sync_party_failed;
2684 END IF;
2685 END LOOP;
2686 --Bug# 4880939
2687 ELSE
2688 -- create evg detail
2689
2690 l_ppydv_c_rec := NULL;
2691 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2692 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Create party payment detail for Vendor: '||orig_party_rec.object1_id1);
2693 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'orig_party_rec.payment_hdr_id: '||orig_party_rec.payment_hdr_id);
2694 END IF;
2695 -- update evg detail
2696 --Bug# 4880939: Changed Open/Fetch to For Loop
2697 /*
2698 OPEN rbk_evg_dtl_csr (l_rbk_evg_hdr_id,
2699 orig_party_rec.object1_id1
2700 );
2701 FETCH rbk_evg_dtl_csr INTO rbk_evg_dtl_rec;
2702 CLOSE rbk_evg_dtl_csr;
2703 */
2704
2705 FOR rbk_evg_dtl_rec IN rbk_evg_dtl_csr (l_rbk_evg_hdr_id,
2706 orig_party_rec.object1_id1)
2707 LOOP
2708
2709 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2710 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'orig_party_rec.pyd_id: '||orig_party_rec.pyd_id);
2711 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rbk_evg_dtl_rec.pay_site_id: '||rbk_evg_dtl_rec.pay_site_id);
2712 END IF;
2713
2714
2715 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2716 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rbk_evg_dtl_rec.remit_days: '||rbk_evg_dtl_rec.remit_days);
2717 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rbk_evg_dtl_rec.payment_method_code: '||rbk_evg_dtl_rec.payment_method_code);
2718 END IF;
2719
2720 --l_ppydv_c_rec.object_version_number := 1;
2721 --rkuttiya added for bug 6873960
2722 l_ppydv_c_rec.payment_hdr_id := x_pphv_rec.id ;
2723 l_ppydv_c_rec.cpl_id := orig_party_rec.party_id;
2724 l_ppydv_c_rec.vendor_id := orig_party_rec.object1_id1;
2725 l_ppydv_c_rec.pay_site_id := rbk_evg_dtl_rec.pay_site_id;
2726 l_ppydv_c_rec.payment_term_id := rbk_evg_dtl_rec.payment_term_id;
2727 l_ppydv_c_rec.payment_method_code := rbk_evg_dtl_rec.payment_method_code;
2728 l_ppydv_c_rec.pay_group_code := rbk_evg_dtl_rec.pay_group_code;
2729 l_ppydv_c_rec.payment_start_date := rbk_evg_dtl_rec.payment_start_date;
2730 l_ppydv_c_rec.payment_frequency := rbk_evg_dtl_rec.payment_frequency;
2731 l_ppydv_c_rec.remit_days := rbk_evg_dtl_rec.remit_days;
2732 l_ppydv_c_rec.disbursement_basis := rbk_evg_dtl_rec.disbursement_basis;
2733 l_ppydv_c_rec.disbursement_fixed_amount := rbk_evg_dtl_rec.disbursement_fixed_amount;
2734 l_ppydv_c_rec.disbursement_percent := rbk_evg_dtl_rec.disbursement_percent;
2735 l_ppydv_c_rec.processing_fee_basis := rbk_evg_dtl_rec.processing_fee_basis;
2736 l_ppydv_c_rec.processing_fee_fixed_amount := rbk_evg_dtl_rec.processing_fee_fixed_amount;
2737 l_ppydv_c_rec.processing_fee_percent := rbk_evg_dtl_rec.processing_fee_percent;
2738 l_ppydv_c_rec.payment_basis := rbk_evg_dtl_rec.payment_basis;
2739
2740 okl_party_payments_pvt.create_party_payment_dtls(
2741 p_api_version => 1.0,
2742 p_init_msg_list => OKL_API.G_FALSE,
2743 x_return_status => x_return_status,
2744 x_msg_count => x_msg_count,
2745 x_msg_data => x_msg_data,
2746 p_ppydv_rec => l_ppydv_c_rec,
2747 x_ppydv_rec => x_ppydv_rec
2748 );
2749
2750 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2751 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Create Status: '||x_return_status);
2752 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'x_ppydv_rec.id: '||x_ppydv_rec.id);
2753 END IF;
2754 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2755 RAISE sync_party_failed;
2756 END IF;
2757 END LOOP;
2758 --Bug# 4880939
2759 END IF;
2760 END LOOP;
2761 END IF;
2762
2763 FOR rebook_party_rec IN rebook_party_csr (p_rebook_chr_id,
2764 p_orig_chr_id)
2765 LOOP
2766
2767 okl_copy_contract_pub.copy_party_roles(
2768 p_api_version => 1.0,
2769 p_init_msg_list => OKL_API.G_FALSE,
2770 x_return_status => x_return_status,
2771 x_msg_count => x_msg_count,
2772 x_msg_data => x_msg_data,
2773 p_cpl_id => rebook_party_rec.id,
2774 p_cle_id => NULL,
2775 p_chr_id => p_orig_chr_id,
2776 p_rle_code => rebook_party_rec.rle_code,
2777 x_cpl_id => x_cpl_id
2778 );
2779
2780 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2781 RAISE sync_party_failed;
2782 END IF;
2783
2784 FOR party_rule_rec IN party_rule_csr (p_rebook_chr_id,
2785 rebook_party_rec.id)
2786 LOOP
2787 --
2788 -- Now copy Rules attached to the party copied above
2789 --
2790 okl_copy_contract_pub.copy_rules (
2791 p_api_version => 1.0,
2792 p_init_msg_list => OKL_API.G_FALSE,
2793 x_return_status => x_return_status,
2794 x_msg_count => x_msg_count,
2795 x_msg_data => x_msg_data,
2796 p_rgp_id => party_rule_rec.rgp_id,
2797 p_cle_id => NULL,
2798 p_chr_id => p_orig_chr_id,
2799 p_to_template_yn => 'N',
2800 x_rgp_id => x_rgp_id
2801 );
2802
2803 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2804 RAISE sync_party_failed;
2805 END IF;
2806 END LOOP; -- rule
2807
2808 END LOOP; -- role
2809
2810 EXCEPTION
2811 WHEN sync_party_failed THEN
2812 x_return_status := OKC_API.G_RET_STS_ERROR;
2813 END sync_party_role;
2814
2815 ------------------------------------------------------------------------------
2816 -- PROCEDURE sync_header_values
2817 --
2818 -- This procedure synchronizes Rebook and Original Contract Header Values
2819 -- . Change Due Date
2820 -- . Change Start Date
2821 -- . Extend Term
2822 --
2823 -- Calls:
2824 -- Called By:
2825 ------------------------------------------------------------------------------
2826
2827 PROCEDURE sync_header_values(
2828 x_return_status OUT NOCOPY VARCHAR2,
2829 x_msg_count OUT NOCOPY NUMBER,
2830 x_msg_data OUT NOCOPY VARCHAR2,
2831 p_rebook_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
2832 p_orig_chr_id IN OKC_K_HEADERS_V.ID%TYPE
2833 ) IS
2834
2835 CURSOR header_csr(p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
2836 SELECT start_date,
2837 end_date,
2838 term_duration,
2839 pre_tax_yield,
2840 after_tax_yield,
2841 target_pre_tax_yield,
2842 target_after_tax_yield,
2843 pre_tax_irr,
2844 after_tax_irr,
2845 implicit_interest_rate,
2846 --Bug# 4558486
2847 khr_attribute_category,
2848 khr_attribute1,
2849 khr_attribute2,
2850 khr_attribute3,
2851 khr_attribute4,
2852 khr_attribute5,
2853 khr_attribute6,
2854 khr_attribute7,
2855 khr_attribute8,
2856 khr_attribute9,
2857 khr_attribute10,
2858 khr_attribute11,
2859 khr_attribute12,
2860 khr_attribute13,
2861 khr_attribute14,
2862 khr_attribute15
2863 --Bug# 4558486
2864 -- sjalasut, added for rebook change control enhancement. START
2865 ,date_tradein
2866 ,tradein_amount
2867 ,tradein_description
2868 -- sjalasut, added for rebook change control enhancement. END
2869 FROM okl_k_headers_full_v
2870 WHERE id = p_chr_id;
2871
2872 l_proc_name VARCHAR2(35) := 'SYNC_HEADER_VALUES';
2873 l_khrv_rec khrv_rec_type;
2874 l_chrv_rec chrv_rec_type;
2875 x_khrv_rec khrv_rec_type;
2876 x_chrv_rec chrv_rec_type;
2877
2878 sync_failed EXCEPTION;
2879
2880 BEGIN
2881 IF (G_DEBUG_ENABLED = 'Y') THEN
2882 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
2883 END IF;
2884 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2885 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
2886 END IF;
2887 x_return_status := OKC_API.G_RET_STS_SUCCESS;
2888
2889 l_khrv_rec := get_khrv_rec(
2890 p_khr_id => p_orig_chr_id,
2891 x_return_status => x_return_status
2892 );
2893 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2894 RAISE sync_failed;
2895 END IF;
2896
2897 l_chrv_rec := get_chrv_rec(
2898 p_chr_id => p_orig_chr_id,
2899 x_return_status => x_return_status
2900 );
2901 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2902 RAISE sync_failed;
2903 END IF;
2904
2905 FOR header_rec IN header_csr(p_rebook_chr_id)
2906 LOOP
2907 --l_khrv_rec.id := p_orig_chr_id;
2908 --l_chrv_rec.id := p_orig_chr_id;
2909
2910 l_khrv_rec.term_duration := header_rec.term_duration;
2911
2912 l_khrv_rec.pre_tax_yield := header_rec.pre_tax_yield;
2913 l_khrv_rec.after_tax_yield := header_rec.after_tax_yield;
2914 l_khrv_rec.target_pre_tax_yield := header_rec.target_pre_tax_yield;
2915 l_khrv_rec.target_after_tax_yield := header_rec.target_after_tax_yield;
2916 l_khrv_rec.pre_tax_irr := header_rec.pre_tax_irr;
2917 l_khrv_rec.after_tax_irr := header_rec.after_tax_irr;
2918 l_khrv_rec.implicit_interest_rate := header_rec.implicit_interest_rate;
2919
2920 --Bug# 4558486
2921 l_khrv_rec.attribute_category := header_rec.khr_attribute_category;
2922 l_khrv_rec.attribute1 := header_rec.khr_attribute1;
2923 l_khrv_rec.attribute2 := header_rec.khr_attribute2;
2924 l_khrv_rec.attribute3 := header_rec.khr_attribute3;
2925 l_khrv_rec.attribute4 := header_rec.khr_attribute4;
2926 l_khrv_rec.attribute5 := header_rec.khr_attribute5;
2927 l_khrv_rec.attribute6 := header_rec.khr_attribute6;
2928 l_khrv_rec.attribute7 := header_rec.khr_attribute7;
2929 l_khrv_rec.attribute8 := header_rec.khr_attribute8;
2930 l_khrv_rec.attribute9 := header_rec.khr_attribute9;
2931 l_khrv_rec.attribute10 := header_rec.khr_attribute10;
2932 l_khrv_rec.attribute11 := header_rec.khr_attribute11;
2933 l_khrv_rec.attribute12 := header_rec.khr_attribute12;
2934 l_khrv_rec.attribute13 := header_rec.khr_attribute13;
2935 l_khrv_rec.attribute14 := header_rec.khr_attribute14;
2936 l_khrv_rec.attribute15 := header_rec.khr_attribute15;
2937 --Bug# 4558486
2938
2939 -- sjalasut, added for rebook change control enhancement. START
2940 l_khrv_rec.date_tradein := header_rec.date_tradein;
2941 l_khrv_rec.tradein_amount := header_rec.tradein_amount;
2942 l_khrv_rec.tradein_description := header_rec.tradein_description;
2943 -- sjalasut, added for rebook change control enhancement. END
2944
2945 l_chrv_rec.start_date := header_rec.start_date;
2946 l_chrv_rec.end_date := header_rec.end_date;
2947
2948 okl_contract_pub.update_contract_header(
2949 p_api_version => 1.0,
2950 p_init_msg_list => OKC_API.G_FALSE,
2951 x_return_status => x_return_status,
2952 x_msg_count => x_msg_count,
2953 x_msg_data => x_msg_data,
2954 p_restricted_update => OKC_API.G_FALSE,
2955 p_chrv_rec => l_chrv_rec,
2956 p_khrv_rec => l_khrv_rec,
2957 x_chrv_rec => x_chrv_rec,
2958 x_khrv_rec => x_khrv_rec
2959 );
2960 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
2961 x_return_status := Okc_Api.G_RET_STS_ERROR;
2962 RAISE sync_failed;
2963 END IF;
2964
2965 END LOOP;
2966
2967 RETURN;
2968
2969 EXCEPTION
2970 WHEN sync_failed THEN
2971 x_return_status := OKC_API.G_RET_STS_ERROR;
2972 END sync_header_values;
2973
2974 PROCEDURE sync_passthru_party(
2975 x_return_status OUT NOCOPY VARCHAR2
2976 ) IS
2977 BEGIN
2978 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2979 END sync_passthru_party;
2980
2981 ------------------------------------------------------------------------------
2982 -- PROCEDURE process_pth_detail
2983 --
2984 -- This procedure creates/updates passthru detail
2985 --
2986 -- Calls:
2987 -- Called By:
2988 ------------------------------------------------------------------------------
2989 PROCEDURE process_pth_detail(
2990 x_return_status OUT NOCOPY VARCHAR2,
2991 x_msg_count OUT NOCOPY NUMBER,
2992 x_msg_data OUT NOCOPY VARCHAR2,
2993 p_orig_chr_id IN NUMBER,
2994 p_orig_cle_id IN NUMBER,
2995 p_orig_cpl_id IN NUMBER,
2996 p_vendor_id IN OKC_K_PARTY_ROLES_B.OBJECT1_ID1%TYPE,
2997 p_rbk_chr_id IN NUMBER,
2998 p_rbk_cle_id IN NUMBER,
2999 p_rbk_cpl_id IN NUMBER
3000 ) IS
3001
3002 CURSOR rbk_pth_detail_csr (p_cle_id NUMBER,
3003 p_cpl_id NUMBER) IS
3004 SELECT hdr.id hdr_id,
3005 hdr.passthru_term,
3006 dtl.*
3007 FROM okl_party_payment_dtls dtl,
3008 okl_party_payment_hdr hdr
3009 WHERE cpl_id = p_cpl_id
3010 AND cle_id = p_cle_id
3011 AND hdr.id = dtl.payment_hdr_id;
3012
3013 CURSOR orig_pth_detail_csr (p_vendor_id OKC_K_PARTY_ROLES_B.OBJECT1_ID1%TYPE,
3014 p_cle_id NUMBER,
3015 p_term OKL_PARTY_PAYMENT_HDR.PASSTHRU_TERM%TYPE) IS
3016 SELECT dtl.*
3017 FROM okl_party_payment_dtls dtl,
3018 okl_party_payment_hdr hdr
3019 WHERE vendor_id = p_vendor_id
3020 AND cle_id = p_cle_id
3021 AND hdr.passthru_term = p_term
3022 AND hdr.id = dtl.payment_hdr_id;
3023
3024 orig_pth_detail_rec orig_pth_detail_csr%ROWTYPE;
3025
3026 CURSOR orig_pth_hdr_csr (p_cle_id NUMBER,
3027 p_term OKL_PARTY_PAYMENT_HDR.PASSTHRU_TERM%TYPE) IS
3028 SELECT id
3029 FROM okl_party_payment_hdr
3030 WHERE cle_id = p_cle_id
3031 AND passthru_term = p_term;
3032
3033 l_orig_pth_hdr_id NUMBER;
3034
3035 process_pth_failed EXCEPTION;
3036
3037 l_proc_name VARCHAR2(35) := 'PROCESS_PTH_DETAIL';
3038 l_ppydv_rec okl_party_payments_pvt.ppydv_rec_type;
3039 x_ppydv_rec okl_party_payments_pvt.ppydv_rec_type;
3040
3041 BEGIN
3042 IF (G_DEBUG_ENABLED = 'Y') THEN
3043 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
3044 END IF;
3045
3046 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3047 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3048 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
3049 END IF;
3050
3051 FOR rbk_pth_detail_rec IN rbk_pth_detail_csr(p_cle_id => p_rbk_cle_id,
3052 p_cpl_id => p_rbk_cpl_id)
3053 LOOP
3054 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3055 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'>>> pth rebook detail...term :'||rbk_pth_detail_rec.passthru_term);
3056 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'>>> pth rebook detail...cle :'||p_orig_cle_id);
3057 END IF;
3058 OPEN orig_pth_detail_csr (p_vendor_id => p_vendor_id,
3059 p_cle_id => p_orig_cle_id,
3060 p_term => rbk_pth_detail_rec.passthru_term);
3061 FETCH orig_pth_detail_csr INTO orig_pth_detail_rec;
3062 IF orig_pth_detail_csr%NOTFOUND THEN
3063 -- Create passthru detail
3064 OPEN orig_pth_hdr_csr(p_cle_id => p_orig_cle_id,
3065 p_term => rbk_pth_detail_rec.passthru_term);
3066 FETCH orig_pth_hdr_csr INTO l_orig_pth_hdr_id;
3067 CLOSE orig_pth_hdr_csr;
3068
3069 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3070 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'>>>> pth orig detail not found.');
3071 END IF;
3072 l_ppydv_rec.id := NULL;
3073 l_ppydv_rec.cpl_id := p_orig_cpl_id;
3074 l_ppydv_rec.vendor_id := p_vendor_id;
3075 l_ppydv_rec.payment_hdr_id := l_orig_pth_hdr_id;
3076 l_ppydv_rec.pay_site_id := rbk_pth_detail_rec.pay_site_id;
3077 l_ppydv_rec.payment_term_id := rbk_pth_detail_rec.payment_term_id;
3078 l_ppydv_rec.payment_method_code := rbk_pth_detail_rec.payment_method_code;
3079 l_ppydv_rec.pay_group_code := rbk_pth_detail_rec.pay_group_code;
3080 l_ppydv_rec.payment_start_date := rbk_pth_detail_rec.payment_start_date;
3081 l_ppydv_rec.payment_frequency := rbk_pth_detail_rec.payment_frequency;
3082 l_ppydv_rec.remit_days := rbk_pth_detail_rec.remit_days;
3083 l_ppydv_rec.disbursement_basis := rbk_pth_detail_rec.disbursement_basis;
3084 l_ppydv_rec.disbursement_fixed_amount := rbk_pth_detail_rec.disbursement_fixed_amount;
3085 l_ppydv_rec.disbursement_percent := rbk_pth_detail_rec.disbursement_percent;
3086 l_ppydv_rec.processing_fee_basis := rbk_pth_detail_rec.processing_fee_basis;
3087 l_ppydv_rec.processing_fee_fixed_amount := rbk_pth_detail_rec.processing_fee_fixed_amount;
3088 l_ppydv_rec.processing_fee_percent := rbk_pth_detail_rec.processing_fee_percent;
3089 l_ppydv_rec.payment_basis := rbk_pth_detail_rec.payment_basis;
3090
3091 okl_party_payments_pvt.create_party_payment_dtls(
3092 p_api_version => 1.0,
3093 p_init_msg_list => OKL_API.G_FALSE,
3094 x_return_status => x_return_status,
3095 x_msg_count => x_msg_count,
3096 x_msg_data => x_msg_data,
3097 p_ppydv_rec => l_ppydv_rec,
3098 x_ppydv_rec => x_ppydv_rec
3099 );
3100 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3101 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'>>>> Pth detail created: '||x_return_status);
3102 END IF;
3103
3104 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3105 RAISE process_pth_failed;
3106 END IF;
3107 ELSE
3108 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3109 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'>>>> pth orig detail...header_id: '||orig_pth_detail_rec.payment_hdr_id);
3110 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'>>>> pth orig detail...id : '||orig_pth_detail_rec.id);
3111 END IF;
3112 l_ppydv_rec.id := orig_pth_detail_rec.id;
3113 l_ppydv_rec.cpl_id := p_orig_cpl_id;
3114 l_ppydv_rec.vendor_id := p_vendor_id;
3115 l_ppydv_rec.payment_hdr_id := orig_pth_detail_rec.payment_hdr_id;
3116 l_ppydv_rec.pay_site_id := rbk_pth_detail_rec.pay_site_id;
3117 l_ppydv_rec.payment_term_id := rbk_pth_detail_rec.payment_term_id;
3118 l_ppydv_rec.payment_method_code := rbk_pth_detail_rec.payment_method_code;
3119 l_ppydv_rec.pay_group_code := rbk_pth_detail_rec.pay_group_code;
3120 l_ppydv_rec.payment_start_date := rbk_pth_detail_rec.payment_start_date;
3121 l_ppydv_rec.payment_frequency := rbk_pth_detail_rec.payment_frequency;
3122 l_ppydv_rec.remit_days := rbk_pth_detail_rec.remit_days;
3123 l_ppydv_rec.disbursement_basis := rbk_pth_detail_rec.disbursement_basis;
3124 l_ppydv_rec.disbursement_fixed_amount := rbk_pth_detail_rec.disbursement_fixed_amount;
3125 l_ppydv_rec.disbursement_percent := rbk_pth_detail_rec.disbursement_percent;
3126 l_ppydv_rec.processing_fee_basis := rbk_pth_detail_rec.processing_fee_basis;
3127 l_ppydv_rec.processing_fee_fixed_amount := rbk_pth_detail_rec.processing_fee_fixed_amount;
3128 l_ppydv_rec.processing_fee_percent := rbk_pth_detail_rec.processing_fee_percent;
3129 l_ppydv_rec.payment_basis := rbk_pth_detail_rec.payment_basis;
3130
3131 okl_party_payments_pvt.update_party_payment_dtls(
3132 p_api_version => 1.0,
3133 p_init_msg_list => OKL_API.G_FALSE,
3134 x_return_status => x_return_status,
3135 x_msg_count => x_msg_count,
3136 x_msg_data => x_msg_data,
3137 p_ppydv_rec => l_ppydv_rec,
3138 x_ppydv_rec => x_ppydv_rec
3139 );
3140 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3141 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'>>>> Pth detail updated: '||x_return_status);
3142 END IF;
3143
3144 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3145 RAISE process_pth_failed;
3146 END IF;
3147 -- update passthru detail
3148 END IF;
3149 CLOSE orig_pth_detail_csr;
3150 END LOOP; -- rbk_pth_detail_csr
3151
3152 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3153 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_proc_name ---> done');
3154 END IF;
3155
3156 EXCEPTION
3157
3158 WHEN process_pth_failed THEN
3159 x_return_status := OKL_API.G_RET_STS_ERROR;
3160 END process_pth_detail;
3161
3162 ------------------------------------------------------------------------------
3163 -- PROCEDURE sync_passthru_detail
3164 --
3165 -- This procedure synchronizes passthru line detail and corresponding vendor
3166 -- and vendor level parameters as well
3167 --
3168 -- Calls:
3169 -- Called By:
3170 ------------------------------------------------------------------------------
3171 PROCEDURE sync_passthru_detail(
3172 x_return_status OUT NOCOPY VARCHAR2,
3173 x_msg_count OUT NOCOPY NUMBER,
3174 x_msg_data OUT NOCOPY VARCHAR2,
3175 p_rebook_chr_id IN NUMBER,
3176 p_orig_chr_id IN NUMBER
3177 ) IS
3178 l_proc_name VARCHAR2(35) := 'SYNC_PASSTHRU_DETAIL';
3179 pth_failed EXCEPTION;
3180
3181 CURSOR pth_csr (p_chr_id NUMBER) IS
3182 SELECT okc.id, okc.orig_system_id1, okc.lse_id
3183 FROM okc_k_lines_b okc,
3184 okl_k_lines okl
3185 WHERE dnz_chr_id = p_chr_id
3186 AND lse_id = 52 -- FEE top line
3187 AND okl.fee_type = 'PASSTHROUGH'
3188 AND okc.id = okl.id
3189 AND okc.orig_system_id1 IS NOT NULL -- only old lines
3190 --Bug# 4959361
3191 AND okc.sts_code <> 'TERMINATED'
3192 UNION -- Service line
3193 SELECT okc.id, okc.orig_system_id1, okc.lse_id
3194 FROM okc_k_lines_b okc
3195 WHERE dnz_chr_id = p_chr_id
3196 AND lse_id = 48 -- SERVICE top line
3197 AND okc.orig_system_id1 IS NOT NULL -- only old lines
3198 --Bug# 4959361
3199 AND okc.sts_code <> 'TERMINATED'
3200 UNION -- Asset line
3201 SELECT okc.id, okc.orig_system_id1, okc.lse_id
3202 FROM okc_k_lines_b okc
3203 WHERE dnz_chr_id = p_chr_id
3204 AND lse_id = 33 -- Fin. Asset top line
3205 AND okc.orig_system_id1 IS NOT NULL -- only old lines
3206 --Bug# 4959361
3207 AND okc.sts_code <> 'TERMINATED';
3208
3209 CURSOR pth_rbk_hdr_csr (p_chr_id NUMBER,
3210 p_cle_id NUMBER) IS
3211 SELECT *
3212 FROM okl_party_payment_hdr
3213 WHERE dnz_chr_id = p_chr_id
3214 AND cle_id = p_cle_id;
3215
3216 CURSOR pth_orig_hdr_csr (p_chr_id NUMBER,
3217 p_cle_id NUMBER,
3218 p_pth_term okl_party_payment_hdr.passthru_term%TYPE) IS
3219 SELECT id
3220 FROM okl_party_payment_hdr
3221 WHERE dnz_chr_id = p_chr_id
3222 AND cle_id = p_cle_id
3223 AND passthru_term = p_pth_term;
3224
3225 CURSOR pth_vendor_csr (p_chr_id NUMBER,
3226 p_cle_id NUMBER) IS
3227 SELECT object1_id1 vendor_id,
3228 id
3229 FROM okc_k_party_roles_b
3230 WHERE cle_id = p_cle_id
3231 AND rle_code = 'OKL_VENDOR'
3232 AND dnz_chr_id = p_chr_id;
3233
3234 CURSOR orig_vendor_csr (p_vendor_id OKC_K_PARTY_ROLES_B.OBJECT1_id1%TYPE,
3235 p_cle_id NUMBER) IS
3236 SELECT id
3237 FROM okc_k_party_roles_b
3238 WHERE cle_id = p_cle_id
3239 AND object1_id1 = p_vendor_id
3240 AND rle_code = 'OKL_VENDOR';
3241
3242 CURSOR rbk_del_vendor_csr (p_orig_chr_id NUMBER,
3243 p_orig_cle_id NUMBER,
3244 p_rbk_chr_id NUMBER,
3245 p_rbk_cle_id NUMBER) IS
3246 SELECT orig.object1_id1,
3247 orig.id
3248 FROM okc_k_party_roles_b orig
3249 WHERE orig.cle_id = p_orig_cle_id
3250 AND orig.dnz_chr_id = p_orig_chr_id
3251 AND orig.rle_code = 'OKL_VENDOR'
3252 AND NOT EXISTS (
3253 SELECT 'Y'
3254 FROM okc_k_party_roles_b rbk
3255 WHERE rbk.rle_code = 'OKL_VENDOR'
3256 AND rbk.dnz_chr_id = p_rbk_chr_id
3257 AND rbk.cle_id = p_rbk_cle_id
3258 AND orig.object1_id1 = rbk.object1_id1
3259 );
3260
3261 ins NUMBER := 0;
3262 l_c_pphv_tbl okl_party_payments_pvt.pphv_tbl_type;
3263
3264 upd NUMBER := 0;
3265 l_u_pphv_tbl okl_party_payments_pvt.pphv_tbl_type;
3266
3267 x_pphv_tbl okl_party_payments_pvt.pphv_tbl_type;
3268 l_pth_orig_hdr_id NUMBER;
3269 l_pth_rebook_hdr_id NUMBER;
3270
3271 l_orig_pth_tbl okl_party_payments_pvt.passthru_param_tbl_type;
3272 l_rbk_pth_tbl okl_party_payments_pvt.passthru_param_tbl_type;
3273
3274 l_ppydv_rec okl_party_payments_pvt.ppydv_rec_type;
3275 x_ppydv_rec okl_party_payments_pvt.ppydv_rec_type;
3276
3277 l_cplv_rec okl_okc_migration_pvt.cplv_rec_type;
3278 x_cplv_rec okl_okc_migration_pvt.cplv_rec_type;
3279
3280 l_orig_cpl_id NUMBER;
3281
3282 --Bug# 4558486
3283 l_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
3284 x_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
3285
3286 BEGIN
3287 IF (G_DEBUG_ENABLED = 'Y') THEN
3288 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
3289 END IF;
3290 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3291 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3292 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
3293 END IF;
3294
3295 FOR pth_rec IN pth_csr (p_rebook_chr_id)
3296 LOOP
3297 -- Bug# 4350255
3298 l_c_pphv_tbl.DELETE;
3299 l_u_pphv_tbl.DELETE;
3300 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3301 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Process line: '||pth_rec.id||', '||pth_rec.lse_id);
3302 END IF;
3303
3304 FOR pth_rbk_hdr_rec IN pth_rbk_hdr_csr (p_rebook_chr_id,
3305 pth_rec.id)
3306 LOOP
3307
3308 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3309 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'pth_rbk_hdr_rec.passthru_term: '|| pth_rbk_hdr_rec.passthru_term);
3310 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'pth_rbk_hdr_rec.effective_from: '||pth_rbk_hdr_rec.effective_from);
3311 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'pth_rbk_hdr_rec.effective_to: '||pth_rbk_hdr_rec.effective_to);
3312 END IF;
3313
3314 l_pth_rebook_hdr_id := pth_rbk_hdr_rec.id;
3315
3316 OPEN pth_orig_hdr_csr(p_orig_chr_id,
3317 pth_rec.orig_system_id1,
3318 pth_rbk_hdr_rec.passthru_term);
3319 FETCH pth_orig_hdr_csr INTO l_pth_orig_hdr_id;
3320 IF (pth_orig_hdr_csr%NOTFOUND) THEN
3321 -- Create pth header
3322 ins := ins + 1;
3323 l_c_pphv_tbl(ins).dnz_chr_id := p_orig_chr_id;
3324 l_c_pphv_tbl(ins).cle_id := pth_rec.orig_system_id1;
3325 l_c_pphv_tbl(ins).passthru_start_date := pth_rbk_hdr_rec.passthru_start_date;
3326 l_c_pphv_tbl(ins).payout_basis := pth_rbk_hdr_rec.payout_basis;
3327 l_c_pphv_tbl(ins).payout_basis_formula := pth_rbk_hdr_rec.payout_basis_formula;
3328 l_c_pphv_tbl(ins).effective_from := pth_rbk_hdr_rec.effective_from;
3329 l_c_pphv_tbl(ins).effective_to := pth_rbk_hdr_rec.effective_to;
3330 l_c_pphv_tbl(ins).passthru_term := pth_rbk_hdr_rec.passthru_term;
3331 l_c_pphv_tbl(ins).passthru_stream_type_id := pth_rbk_hdr_rec.passthru_stream_type_id;
3332 ELSE
3333 -- Update pth header
3334 upd := upd + 1;
3335 l_u_pphv_tbl(upd).id := l_pth_orig_hdr_id;
3336 l_u_pphv_tbl(upd).passthru_start_date := pth_rbk_hdr_rec.passthru_start_date;
3337 l_u_pphv_tbl(upd).payout_basis := pth_rbk_hdr_rec.payout_basis;
3338 l_u_pphv_tbl(upd).payout_basis_formula := pth_rbk_hdr_rec.payout_basis_formula;
3339 l_u_pphv_tbl(upd).effective_from := pth_rbk_hdr_rec.effective_from;
3340 l_u_pphv_tbl(upd).effective_to := pth_rbk_hdr_rec.effective_to;
3341 l_u_pphv_tbl(upd).passthru_term := pth_rbk_hdr_rec.passthru_term;
3342 l_u_pphv_tbl(upd).passthru_stream_type_id := pth_rbk_hdr_rec.passthru_stream_type_id;
3343 END IF;
3344 CLOSE pth_orig_hdr_csr;
3345
3346 END LOOP; -- pth_hdr_csr
3347
3348 IF (l_c_pphv_tbl.COUNT > 0) THEN
3349 okl_party_payments_pvt.create_party_payment_hdr(
3350 p_api_version => 1.0,
3351 p_init_msg_list => OKL_API.G_FALSE,
3352 x_return_status => x_return_status,
3353 x_msg_count => x_msg_count,
3354 x_msg_data => x_msg_data,
3355 p_pphv_tbl => l_c_pphv_tbl,
3356 x_pphv_tbl => x_pphv_tbl
3357 );
3358 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3359 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'PTH header insert for: '||pth_rec.orig_system_id1||': '||x_return_status);
3360 END IF;
3361 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3362 RAISE pth_failed;
3363 END IF;
3364 END IF;
3365 IF (l_u_pphv_tbl.COUNT > 0) THEN
3366 okl_party_payments_pvt.update_party_payment_hdr(
3367 p_api_version => 1.0,
3368 p_init_msg_list => OKL_API.G_FALSE,
3369 x_return_status => x_return_status,
3370 x_msg_count => x_msg_count,
3371 x_msg_data => x_msg_data,
3372 p_pphv_tbl => l_u_pphv_tbl,
3373 x_pphv_tbl => x_pphv_tbl
3374 );
3375 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3376 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'PTH header update for: '||pth_rec.orig_system_id1||': '||x_return_status);
3377 END IF;
3378 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3379 RAISE pth_failed;
3380 END IF;
3381 END IF;
3382
3383 FOR pth_vendor_rec in pth_vendor_csr(p_rebook_chr_id,
3384 pth_rec.id)
3385 LOOP
3386 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3387 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'>rebook vendor id: '||pth_vendor_rec.vendor_id);
3388 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'>rebook cpl id : '||pth_vendor_rec.id);
3389 END IF;
3390 -- get original vendor and cpl_id for this record
3391 OPEN orig_vendor_csr(pth_vendor_rec.vendor_id,
3392 pth_rec.orig_system_id1);
3393 FETCH orig_vendor_csr INTO l_orig_cpl_id;
3394 IF orig_vendor_csr%NOTFOUND THEN
3395 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3396 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'>> vendor not found.');
3397 END IF;
3398 -- Create party for orig fee
3399 l_cplv_rec.dnz_chr_id := p_orig_chr_id;
3400 l_cplv_rec.cle_id := pth_rec.orig_system_id1;
3401 l_cplv_rec.object1_id1 := pth_vendor_rec.vendor_id;
3402 l_cplv_rec.object1_id2 := '#';
3403 l_cplv_rec.jtot_object1_code := 'OKX_VENDOR';
3404 l_cplv_rec.rle_code := 'OKL_VENDOR';
3405
3406 --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
3407 -- to create records in tables
3408 -- okc_k_party_roles_b and okl_k_party_roles
3409 /*
3410 okl_okc_migration_pvt.create_k_party_role(
3411 p_api_version => 1.0,
3412 p_init_msg_list => OKL_API.G_FALSE,
3413 x_return_status => x_return_status,
3414 x_msg_count => x_msg_count,
3415 x_msg_data => x_msg_data,
3416 p_cplv_rec => l_cplv_rec,
3417 x_cplv_rec => x_cplv_rec);
3418 */
3419
3420 okl_k_party_roles_pvt.create_k_party_role(
3421 p_api_version => 1.0,
3422 p_init_msg_list => OKL_API.G_FALSE,
3423 x_return_status => x_return_status,
3424 x_msg_count => x_msg_count,
3425 x_msg_data => x_msg_data,
3426 p_cplv_rec => l_cplv_rec,
3427 x_cplv_rec => x_cplv_rec,
3428 p_kplv_rec => l_kplv_rec,
3429 x_kplv_rec => x_kplv_rec);
3430
3431 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3432 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'>> Vendor '||pth_vendor_rec.vendor_id||' created: '||x_return_status);
3433 END IF;
3434
3435 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3436 RAISE pth_failed;
3437 END IF;
3438
3439 process_pth_detail(
3440 x_return_status => x_return_status,
3441 x_msg_count => x_msg_count,
3442 x_msg_data => x_msg_data,
3443 p_orig_chr_id => p_orig_chr_id,
3444 p_orig_cle_id => pth_rec.orig_system_id1,
3445 p_orig_cpl_id => x_cplv_rec.id,
3446 p_vendor_id => pth_vendor_rec.vendor_id,
3447 p_rbk_chr_id => p_rebook_chr_id,
3448 p_rbk_cle_id => pth_rec.id,
3449 p_rbk_cpl_id => pth_vendor_rec.id
3450 );
3451
3452 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3453 RAISE pth_failed;
3454 END IF;
3455
3456 ELSE
3457 -- get rebook pth header+detail for this vendor
3458 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3459 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'>> pth detail for above vendor');
3460 END IF;
3461 process_pth_detail(
3462 x_return_status => x_return_status,
3463 x_msg_count => x_msg_count,
3464 x_msg_data => x_msg_data,
3465 p_orig_chr_id => p_orig_chr_id,
3466 p_orig_cle_id => pth_rec.orig_system_id1,
3467 p_orig_cpl_id => l_orig_cpl_id,
3468 p_vendor_id => pth_vendor_rec.vendor_id,
3469 p_rbk_chr_id => p_rebook_chr_id,
3470 p_rbk_cle_id => pth_rec.id,
3471 p_rbk_cpl_id => pth_vendor_rec.id
3472 );
3473
3474 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3475 RAISE pth_failed;
3476 END IF;
3477
3478 END IF; -- orig_vendor_csr
3479 CLOSE orig_vendor_csr;
3480
3481 END LOOP; -- pth_vendor_rec
3482
3483 -- for delated vendors, if any
3484 FOR rbk_del_vendor_rec IN rbk_del_vendor_csr(p_orig_chr_id => p_orig_chr_id,
3485 p_orig_cle_id => pth_rec.orig_system_id1,
3486 p_rbk_chr_id => p_rebook_chr_id,
3487 p_rbk_cle_id => pth_rec.id)
3488 LOOP
3489 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3490 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'>> Vendor to be deleted: '||rbk_del_vendor_rec.object1_id1);
3491 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'>> Vendor to be deleted cpl_id: '||rbk_del_vendor_rec.id);
3492 END IF;
3493 okl_maintain_fee_pvt.delete_passthru_party(
3494 p_api_version => 1.0,
3495 p_init_msg_list => OKL_API.G_FALSE,
3496 x_return_status => x_return_status,
3497 x_msg_count => x_msg_count,
3498 x_msg_data => x_msg_data,
3499 p_cpl_id => rbk_del_vendor_rec.id
3500 );
3501 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3502 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Vendor deleted: '||x_return_status);
3503 END IF;
3504
3505 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3506 RAISE pth_failed;
3507 END IF;
3508
3509 END LOOP; -- rbk_del_vendor_rec
3510
3511 END LOOP; -- pth_csr
3512
3513 EXCEPTION
3514 WHEN pth_failed THEN
3515 x_return_status := OKL_API.G_RET_STS_ERROR;
3516 END sync_passthru_detail;
3517
3518 ------------------------------------------------------------------------------
3519 -- PROCEDURE sync_fee_line
3520 --
3521 -- This procedure synchronizes FEE line(s) between Orig. and Rebooked contract
3522 --
3523 -- Calls:
3524 -- Called By:
3525 ------------------------------------------------------------------------------
3526 PROCEDURE sync_fee_line(
3527 x_return_status OUT NOCOPY VARCHAR2,
3528 x_msg_count OUT NOCOPY NUMBER,
3529 x_msg_data OUT NOCOPY VARCHAR2,
3530 p_rebook_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
3531 p_orig_chr_id IN OKC_K_HEADERS_V.ID%TYPE
3532 ) IS
3533
3534 CURSOR fee_line_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
3535 SELECT line.*
3536 FROM okl_k_Lines_full_v line,
3537 okc_line_styles_v style
3538 WHERE line.sts_code = 'BOOKED'
3539 AND style.lty_code = 'FEE'
3540 AND line.dnz_chr_id = p_chr_id
3541 AND line.lse_id = style.id
3542 AND line.fee_type = 'GENERAL';
3543
3544 CURSOR fee_subline_csr (p_cle_id OKC_K_LINES_V.ID%TYPE) IS
3545 SELECT id
3546 FROM okc_k_lines_v
3547 WHERE cle_id = p_cle_id
3548 AND sts_code = 'BOOKED';
3549
3550 CURSOR rbk_new_fee_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
3551 SELECT line.*
3552 FROM okl_k_Lines_full_v line,
3553 okc_line_styles_v style
3554 WHERE style.lty_code = 'FEE'
3555 AND line.dnz_chr_id = p_chr_id
3556 AND line.lse_id = style.id
3557 AND line.orig_system_id1 IS NULL;
3558
3559 CURSOR orig_fee_strm_csr (p_kle_id OKC_K_LINES_V.ID%TYPE) IS
3560 SELECT id
3561 FROM okl_streams
3562 WHERE kle_id = p_kle_id
3563 AND say_code <> 'HIST';
3564
3565 CURSOR txn_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
3566 SELECT trx_number,
3567 rbr_code,
3568 date_transaction_occurred
3569 FROM okl_trx_contracts
3570 WHERE khr_id = p_chr_id
3571 AND tcn_type = 'TRBK'
3572 AND tsu_code = 'ENTERED'
3573 AND representation_type = 'PRIMARY'; -- MGAAP 7263041
3574
3575 i NUMBER;
3576 l_fee_present VARCHAR2(1);
3577
3578 l_gen_count NUMBER;
3579
3580 l_rbk_fee_tbl klev_tbl_type;
3581 lx_rbk_fee_tbl klev_tbl_type;
3582
3583 l_orig_fee_strm_tbl stmv_tbl_type;
3584 x_orig_fee_strm_tbl stmv_tbl_type;
3585
3586 l_clev_rec clev_rec_type;
3587 l_klev_rec klev_rec_type;
3588 x_clev_rec clev_rec_type;
3589 x_klev_rec klev_rec_type;
3590
3591 l_old_clev_rec clev_rec_type;
3592 l_old_klev_rec klev_rec_type;
3593 x_old_clev_rec clev_rec_type;
3594 x_old_klev_rec klev_rec_type;
3595
3596 l_old_clev_sub_rec clev_rec_type;
3597 l_old_klev_sub_rec klev_rec_type;
3598 x_old_clev_sub_rec clev_rec_type;
3599 x_old_klev_sub_rec klev_rec_type;
3600
3601 l_cplv_rec cplv_rec_type;
3602 x_cplv_rec cplv_rec_type;
3603
3604 l_cle_id OKC_K_LINES_B.ID%TYPE;
3605 l_trx_date okl_trx_contracts.date_transaction_occurred%TYPE;
3606
3607 l_rgpv_rec rgpv_rec_type;
3608 x_rgpv_rec rgpv_rec_type;
3609 l_rulv_rec rulv_rec_type;
3610 x_rulv_rec rulv_rec_type;
3611
3612 x_rulv_freq_rec rulv_rec_type;
3613 x_rulv_exp_rec rulv_rec_type;
3614
3615 l_del_rulv_tbl rulv_tbl_type;
3616 l_orig_rgp_id NUMBER;
3617 l_orig_rule_id NUMBER;
3618
3619 sync_fee_failed EXCEPTION;
3620
3621 -- changed the cursor to also include fee lines whose fee purpose code is null
3622 -- so that the same logic is applied to other fee lines while synchronization.
3623 -- changes introduced as part of Rebook Change Control Enhancement (RBCCE) START
3624 CURSOR c_fee_rbk_csr (cp_chr_id okc_k_headers_b.id%TYPE) IS
3625 SELECT okc.id
3626 ,okc.dnz_chr_id
3627 ,item.id item_id
3628 ,item.object1_id1
3629 ,item.object1_id2
3630 ,okc.start_date
3631 ,okc.end_date
3632 ,okl.amount
3633 ,okl.initial_direct_cost
3634 ,okl.qte_id
3635 ,okl.funding_date
3636 ,okc.orig_system_id1
3637 ,okl.fee_type
3638 --,partyb.id role_id -- change added for Rebook Change Control Enhancement
3639 --,partyb.object1_id1 vendor_party_id -- change added for Rebook Change Control Enhancement
3640 --,partyb.rle_code -- change added for Rebook Change Control Enhancement
3641 --,partyb.jtot_object1_code -- change added for Rebook Change Control Enhancement
3642 --Bug# 4558486
3643 ,okl.attribute_category
3644 ,okl.attribute1
3645 ,okl.attribute2
3646 ,okl.attribute3
3647 ,okl.attribute4
3648 ,okl.attribute5
3649 ,okl.attribute6
3650 ,okl.attribute7
3651 ,okl.attribute8
3652 ,okl.attribute9
3653 ,okl.attribute10
3654 ,okl.attribute11
3655 ,okl.attribute12
3656 ,okl.attribute13
3657 ,okl.attribute14
3658 ,okl.attribute15
3659 FROM okc_k_lines_b okc
3660 ,okl_k_lines okl
3661 ,okc_k_items item
3662 ,okc_line_styles_b style
3663 --,okc_k_party_roles_b partyb -- change added for Rebook Change Control Enhancement
3664 WHERE okc.id = okl.id
3665 AND okc.id = item.cle_id
3666 AND okc.dnz_chr_id = item.dnz_chr_id
3667 AND okl.id = item.cle_id
3668 AND okc.dnz_chr_id = cp_chr_id
3669 AND okc.lse_id = style.id
3670 AND item.jtot_object1_code = 'OKL_STRMTYP'
3671 AND style.lty_code = 'FEE'
3672 AND okc.orig_system_id1 IS NOT NULL
3673 AND (okl.fee_purpose_code = 'SALESTAX' -- Only sales tax related fee line
3674 OR okl.fee_purpose_code IS NULL)
3675 --Bug# 4959361
3676 AND okc.sts_code <> 'TERMINATED'; -- change added for Rebook Change Control Enhancement
3677 --AND partyb.dnz_chr_id (+) = okc.dnz_chr_id -- change added for Rebook Change Control Enhancement
3678 --AND partyb.cle_id (+) = okc.id; -- change added for Rebook Change Control Enhancement
3679
3680 -- get fee top line info and optional supplier info from the original contract
3681 -- cursor added as part of rebook change control enhancement
3682 CURSOR c_fee_orig_csr(cp_chr_id okc_k_headers_b.id%TYPE, cp_cle_id okc_k_lines_b.id%TYPE) IS
3683 SELECT okc.id,
3684 item.id item_id,
3685 item.object1_id1,
3686 item.object1_id2,
3687 okc.start_date,
3688 okc.end_date,
3689 okl.amount,
3690 okl.initial_direct_cost,
3691 okl.qte_id,
3692 okl.funding_date,
3693 okc.orig_system_id1,
3694 --partyb.id role_id,
3695 --partyb.object1_id1 vendor_party_id,
3696 --partyb.rle_code,
3697 --partyb.jtot_object1_code,
3698 okl.fee_type,
3699 --Bug# 4558486
3700 okl.attribute_category,
3701 okl.attribute1,
3702 okl.attribute2,
3703 okl.attribute3,
3704 okl.attribute4,
3705 okl.attribute5,
3706 okl.attribute6,
3707 okl.attribute7,
3708 okl.attribute8,
3709 okl.attribute9,
3710 okl.attribute10,
3711 okl.attribute11,
3712 okl.attribute12,
3713 okl.attribute13,
3714 okl.attribute14,
3715 okl.attribute15
3716 FROM okc_k_lines_b okc,
3717 okl_k_lines okl,
3718 okc_k_items item,
3719 okc_line_styles_b style
3720 --okc_k_party_roles_b partyb
3721 WHERE okc.id = okl.id
3722 AND okc.id = item.cle_id
3723 AND okc.dnz_chr_id = item.dnz_chr_id
3724 AND okl.id = item.cle_id
3725 AND okc.dnz_chr_id = cp_chr_id
3726 AND okc.id = cp_cle_id
3727 AND okc.lse_id = style.id
3728 AND item.jtot_object1_code = 'OKL_STRMTYP'
3729 AND style.lty_code = 'FEE';
3730 --AND partyb.dnz_chr_id (+) = okc.dnz_chr_id
3731 --AND partyb.cle_id (+) = okc.id;
3732
3733 c_fee_orig_rec c_fee_orig_csr%ROWTYPE;
3734 c_fee_rbk_rec c_fee_rbk_csr%ROWTYPE;
3735
3736 -- changes introduced as part of Rebook Change Control Enhancement (RBCCE) END
3737
3738 l_orig_st_fee_rec okl_maintain_fee_pvt.fee_types_rec_type;
3739 x_orig_st_fee_rec okl_maintain_fee_pvt.fee_types_rec_type;
3740
3741 CURSOR rbk_fee_party_csr (p_line_id NUMBER,
3742 p_chr_id NUMBER) IS
3743 SELECT id, object1_id1, object1_id2,name
3744 FROM okc_k_party_roles_b cpl,
3745 okx_vendors_v ven
3746 WHERE cpl.cle_id = p_line_id
3747 AND cpl.dnz_chr_id = p_chr_id
3748 AND cpl.rle_code = 'OKL_VENDOR'
3749 AND ven.id1 = cpl.object1_id1;
3750
3751 CURSOR orig_fee_party_csr (p_line_id NUMBER,
3752 p_chr_id NUMBER) IS
3753 SELECT id, object1_id1
3754 FROM okc_k_party_roles_b
3755 WHERE cle_id = p_line_id
3756 AND dnz_chr_id = p_chr_id
3757 AND rle_code = 'OKL_VENDOR';
3758
3759 CURSOR orig_fee_item_csr (p_line_id NUMBER,
3760 p_chr_id NUMBER) IS
3761 SELECT id
3762 FROM okc_k_items
3763 WHERE cle_id = p_line_id
3764 AND dnz_chr_id = p_chr_id
3765 AND jtot_object1_code = 'OKL_STRMTYP';
3766
3767 l_orig_party_id NUMBER;
3768 l_orig_object1_id1 OKC_K_PARTY_ROLES_V.OBJECT1_ID1%TYPE;
3769 l_orig_item_id NUMBER;
3770 l_orig_fee_top_line_id NUMBER;
3771
3772 --Bug# 4880939
3773 CURSOR rbk_fee_asset_csr (p_top_line_id NUMBER,
3774 p_chr_id NUMBER) IS
3775 SELECT okc_cov_ast.orig_system_id1, okc_cov_ast.id line_id, okc_fin.name, SUBSTR(okc_fin.item_description,1,200) item_description,
3776 okl.capital_amount, okl.amount,
3777 item.id item_id, item.object1_id1, item.object1_id2, item.jtot_object1_code
3778 FROM okc_k_lines_b okc_cov_ast,
3779 okl_k_lines okl,
3780 okc_line_styles_b style,
3781 okc_k_items item,
3782 okc_k_lines_v okc_fin
3783 WHERE okc_cov_ast.cle_id = p_top_line_id
3784 AND okc_cov_ast.dnz_chr_id = p_chr_id
3785 AND okc_cov_ast.id = okl.id
3786 AND okc_cov_ast.id = item.cle_id
3787 AND okc_cov_ast.dnz_chr_id = item.dnz_chr_id
3788 AND item.jtot_object1_code = 'OKX_COVASST'
3789 AND okc_cov_ast.lse_id = style.id
3790 AND style.lty_code = 'LINK_FEE_ASSET'
3791 AND okc_fin.id = TO_NUMBER(item.object1_id1)
3792 AND okc_fin.dnz_chr_id = p_chr_id
3793 --Bug# 4959361
3794 AND okc_cov_ast.sts_code <> 'TERMINATED';
3795
3796 CURSOR orig_fee_asset_csr (p_sub_line_id NUMBER,
3797 p_chr_id NUMBER) IS
3798 SELECT okc.orig_system_id1, okc.id line_id, okc.name, okc.item_description,
3799 okl.capital_amount,
3800 item.id item_id, item.object1_id1, item.object1_id2, item.jtot_object1_code
3801 FROM okc_k_lines_v okc,
3802 okl_k_lines okl,
3803 okc_line_styles_b style,
3804 okc_k_items item
3805 WHERE okc.id = p_sub_line_id
3806 AND okc.dnz_chr_id = p_chr_id
3807 AND okc.id = okl.id
3808 AND okc.id = item.cle_id
3809 AND okc.dnz_chr_id = item.dnz_chr_id
3810 AND item.jtot_object1_code = 'OKX_COVASST'
3811 AND okc.lse_id = style.id
3812 AND style.lty_code = 'LINK_FEE_ASSET';
3813
3814 upd NUMBER := 0;
3815 l_u_line_item_tbl okl_contract_line_item_pvt.line_item_tbl_type;
3816 x_u_line_item_tbl okl_contract_line_item_pvt.line_item_tbl_type;
3817 ins NUMBER := 0;
3818 l_c_line_item_tbl okl_contract_line_item_pvt.line_item_tbl_type;
3819 x_c_line_item_tbl okl_contract_line_item_pvt.line_item_tbl_type;
3820
3821 CURSOR rbk_d_fee_asset_csr (p_orig_chr_id NUMBER,
3822 p_rbk_chr_id NUMBER) IS
3823 select origl.id orig_link_fee_id,
3824 origk.id orig_link_fee_item_id,
3825 origp.id orig_parent_fee_id
3826 from okc_k_lines_b origl,
3827 okc_k_lines_b origp,
3828 okc_k_items_v origk
3829 where origl.dnz_chr_id = p_orig_chr_id
3830 and origl.lse_id = 53 -- LINK_FEE_ASSET
3831 and origl.cle_id = origp.id
3832 and origl.dnz_chr_id = origp.dnz_chr_id
3833 and origp.lse_id = 52 -- FEE
3834 and origp.dnz_chr_id = p_orig_chr_id
3835 and origl.id = origk.cle_id
3836 and origk.jtot_object1_code = 'OKX_COVASST'
3837 and not exists (
3838 select 'Y'
3839 from okc_k_lines_b rbkl
3840 where to_char(origl.id) = rbkl.orig_system_id1
3841 and rbkl.dnz_chr_id = p_rbk_chr_id
3842 );
3843
3844 del NUMBER := 0;
3845 l_d_line_item_tbl okl_contract_line_item_pvt.line_item_tbl_type;
3846
3847 l_orig_freq_rule_id NUMBER;
3848 l_orig_freq_rgp_id NUMBER;
3849 l_orig_freq OKC_RULES_V.OBJECT1_ID1%TYPE;
3850 l_orig_exp_rule_id NUMBER;
3851 l_orig_exp_rgp_id NUMBER;
3852 l_orig_exp_period NUMBER;
3853 l_orig_exp_amount NUMBER;
3854 x_rule_count NUMBER;
3855
3856 l_proc_name VARCHAR2(35) := 'SYNC_FEE_LINES';
3857
3858 -- Bug 4524091
3859 CURSOR rvi_fee_csr (p_rbk_chr_id NUMBER) IS
3860 SELECT okc.id,
3861 okl.amount,
3862 okc.orig_system_id1 orig_fee_id,
3863 --Bug# 4558486
3864 okl.attribute_category,
3865 okl.attribute1,
3866 okl.attribute2,
3867 okl.attribute3,
3868 okl.attribute4,
3869 okl.attribute5,
3870 okl.attribute6,
3871 okl.attribute7,
3872 okl.attribute8,
3873 okl.attribute9,
3874 okl.attribute10,
3875 okl.attribute11,
3876 okl.attribute12,
3877 okl.attribute13,
3878 okl.attribute14,
3879 okl.attribute15
3880 FROM okc_k_lines_b okc,
3881 okl_k_lines okl,
3882 okc_line_styles_b style
3883 WHERE okc.id = okl.id
3884 AND okc.dnz_chr_id = p_rbk_chr_id
3885 AND okc.lse_id = style.id
3886 AND style.lty_code = 'FEE'
3887 AND okl.fee_type = 'ABSORBED' -- Absorbed Fee only
3888 AND okl.fee_purpose_code = 'RVI' -- Only RVI related fee line
3889 AND okc.orig_system_id1 IS NOT NULL
3890 AND okc.cle_id IS NULL; -- Only top line
3891
3892 l_rvi_clev_rec clev_rec_type;
3893 l_rvi_klev_rec klev_rec_type;
3894
3895 --Bug# 4558486
3896 l_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
3897 x_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
3898
3899 --Bug# 4899328
3900 l_cov_ast_tbl klev_tbl_type;
3901 lx_cov_ast_tbl klev_tbl_type;
3902
3903 BEGIN
3904 IF (G_DEBUG_ENABLED = 'Y') THEN
3905 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
3906 END IF;
3907
3908 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3909 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3910 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
3911 END IF;
3912
3913 -- ABANDON Orig FEE line only if Orig contract has FEE_TYPE='GENERAL'
3914
3915 FOR orig_fee_rec IN fee_line_csr(p_orig_chr_id) LOOP
3916 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3917 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Abandon line: '||orig_fee_rec.id);
3918 END IF;
3919 -- Delete from Orig contract
3920 -- l_clev_rec := NULL;
3921 -- l_klev_rec := NULL;
3922
3923 l_clev_rec.id := orig_fee_rec.id;
3924 l_clev_rec.chr_id := p_orig_chr_id;
3925 l_klev_rec.id := orig_fee_rec.id;
3926 l_clev_rec.sts_code := 'ABANDONED';
3927
3928 -- Make Fee top-line ABANDONED
3929 okl_contract_pub.update_contract_line(
3930 p_api_version => 1.0,
3931 p_init_msg_list => OKL_API.G_FALSE,
3932 x_return_status => x_return_status,
3933 x_msg_count => x_msg_count,
3934 x_msg_data => x_msg_data,
3935 p_clev_rec => l_clev_rec,
3936 p_klev_rec => l_klev_rec,
3937 x_clev_rec => x_clev_rec,
3938 x_klev_rec => x_klev_rec
3939 );
3940 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3941 RAISE sync_fee_failed;
3942 END IF;
3943
3944 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3945 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Line deleted');
3946 END IF;
3947
3948 -- ABANDONED FEE sub-lines
3949 FOR fee_subline_rec IN fee_subline_csr(orig_fee_rec.id) LOOP
3950 l_clev_rec.id := fee_subline_rec.id;
3951 l_klev_rec.id := fee_subline_rec.id;
3952
3953 l_clev_rec.sts_code := 'ABANDONED';
3954
3955 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3956 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Sub line delete: '||fee_subline_rec.id);
3957 END IF;
3958 okl_contract_pub.update_contract_line(
3959 p_api_version => 1.0,
3960 p_init_msg_list => OKL_API.G_FALSE,
3961 x_return_status => x_return_status,
3962 x_msg_count => x_msg_count,
3963 x_msg_data => x_msg_data,
3964 p_clev_rec => l_clev_rec,
3965 p_klev_rec => l_klev_rec,
3966 x_clev_rec => x_clev_rec,
3967 x_klev_rec => x_klev_rec
3968 );
3969 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3970 RAISE sync_fee_failed;
3971 END IF;
3972 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3973 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Sub line deleted');
3974 END IF;
3975 END LOOP;
3976
3977 -- HIST related Streams
3978 i := 0;
3979 FOR orig_fee_strm_rec IN orig_fee_strm_csr (orig_fee_rec.id) LOOP
3980 i := i + 1;
3981 l_orig_fee_strm_tbl(i).id := orig_fee_strm_rec.id;
3982 l_orig_fee_strm_tbl(i).say_code := 'HIST';
3983 l_orig_fee_strm_tbl(i).active_yn := 'N';
3984 l_orig_fee_strm_tbl(i).date_history := SYSDATE;
3985 END LOOP;
3986 IF (l_orig_fee_strm_tbl.COUNT <> 0) THEN
3987 okl_streams_pub.update_streams(
3988 p_api_version => 1.0,
3989 p_init_msg_list => OKC_API.G_FALSE,
3990 x_return_status => x_return_status,
3991 x_msg_count => x_msg_count,
3992 x_msg_data => x_msg_data,
3993 p_stmv_tbl => l_orig_fee_strm_tbl,
3994 x_stmv_tbl => x_orig_fee_strm_tbl
3995 );
3996
3997 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3998 RAISE sync_fee_failed;
3999 END IF;
4000 END IF; -- end of l_orig_fee_strm_tbl.COUNT <> 0
4001 END LOOP; -- Orig Fee line ABANDON
4002
4003 l_rbk_fee_tbl.DELETE;
4004 i := 0;
4005 --
4006 -- Check for New FEE line being added during rebook
4007 --
4008 FOR rbk_fee_rec IN rbk_new_fee_csr(p_rebook_chr_id)
4009 LOOP
4010 i := i + 1;
4011 l_rbk_fee_tbl(i).id := rbk_fee_rec.id;
4012
4013 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4014 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Old Fee line: '||rbk_fee_rec.id);
4015 END IF;
4016
4017 END LOOP; -- rbk_fee_csr
4018
4019 IF (i > 0) THEN
4020 okl_copy_asset_pub.copy_all_lines(
4021 p_api_version => 1.0,
4022 p_init_msg_list => OKL_API.G_FALSE,
4023 x_return_status => x_return_status,
4024 x_msg_count => x_msg_count,
4025 x_msg_data => x_msg_data,
4026 p_from_cle_id_tbl => l_rbk_fee_tbl,
4027 p_to_cle_id => NULL,
4028 p_to_chr_id => p_orig_chr_id,
4029 p_to_template_yn => 'N',
4030 p_copy_reference => 'COPY',
4031 p_copy_line_party_yn => 'Y',
4032 p_renew_ref_yn => 'N',
4033 p_trans_type => 'CRB',
4034 x_cle_id_tbl => lx_rbk_fee_tbl
4035 );
4036
4037 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4038 RAISE sync_fee_failed;
4039 END IF;
4040
4041 END IF;
4042
4043 --
4044 -- Bug 4524091
4045 -- Fee line with RVI Purpose
4046 -- Update amount
4047 --
4048 FOR rvi_fee_rec IN rvi_fee_csr(p_rebook_chr_id)
4049 LOOP
4050 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4051 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'RVI Fee Line: '||rvi_fee_rec.id);
4052 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'RVI Fee Amt : '||rvi_fee_rec.amount);
4053 END IF;
4054
4055 l_rvi_clev_rec.id := rvi_fee_rec.orig_fee_id;
4056 l_rvi_klev_rec.id := rvi_fee_rec.orig_fee_id;
4057 l_rvi_klev_rec.amount := rvi_fee_rec.amount;
4058
4059 --Bug# 4558486
4060 l_rvi_klev_rec.attribute_category := rvi_fee_rec.attribute_category;
4061 l_rvi_klev_rec.attribute1 := rvi_fee_rec.attribute1;
4062 l_rvi_klev_rec.attribute2 := rvi_fee_rec.attribute2;
4063 l_rvi_klev_rec.attribute3 := rvi_fee_rec.attribute3;
4064 l_rvi_klev_rec.attribute4 := rvi_fee_rec.attribute4;
4065 l_rvi_klev_rec.attribute5 := rvi_fee_rec.attribute5;
4066 l_rvi_klev_rec.attribute6 := rvi_fee_rec.attribute6;
4067 l_rvi_klev_rec.attribute7 := rvi_fee_rec.attribute7;
4068 l_rvi_klev_rec.attribute8 := rvi_fee_rec.attribute8;
4069 l_rvi_klev_rec.attribute9 := rvi_fee_rec.attribute9;
4070 l_rvi_klev_rec.attribute10 := rvi_fee_rec.attribute10;
4071 l_rvi_klev_rec.attribute11 := rvi_fee_rec.attribute11;
4072 l_rvi_klev_rec.attribute12 := rvi_fee_rec.attribute12;
4073 l_rvi_klev_rec.attribute13 := rvi_fee_rec.attribute13;
4074 l_rvi_klev_rec.attribute14 := rvi_fee_rec.attribute14;
4075 l_rvi_klev_rec.attribute15 := rvi_fee_rec.attribute15;
4076
4077 okl_contract_pub.update_contract_line(
4078 p_api_version => 1.0,
4079 p_init_msg_list => OKC_API.G_FALSE,
4080 x_return_status => x_return_status,
4081 x_msg_count => x_msg_count,
4082 x_msg_data => x_msg_data,
4083 p_clev_rec => l_rvi_clev_rec,
4084 p_klev_rec => l_rvi_klev_rec,
4085 x_clev_rec => x_clev_rec,
4086 x_klev_rec => x_klev_rec
4087 );
4088
4089 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4090 RAISE sync_fee_failed;
4091 END IF;
4092
4093 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4094 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'RVI Fee Amount updated: '||x_return_status);
4095 END IF;
4096
4097 END LOOP; -- rvi_fee_csr
4098 -- Bug 4524091
4099
4100 -- OKL.H Projects changes -- Bug# 4373029
4101 -- Sync old fee lines for any update where purpose=SALESTAX
4102
4103 OPEN c_fee_rbk_csr (cp_chr_id => p_rebook_chr_id);
4104 LOOP
4105 FETCH c_fee_rbk_csr INTO c_fee_rbk_rec;
4106 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4107 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'OKL.H*** ST Fee Line: '|| c_fee_rbk_rec.id);
4108 END IF;
4109 EXIT WHEN c_fee_rbk_csr%NOTFOUND;
4110 OPEN c_fee_orig_csr(cp_chr_id => p_orig_chr_id, cp_cle_id => c_fee_rbk_rec.orig_system_id1);
4111 FETCH c_fee_orig_csr INTO c_fee_orig_rec;
4112
4113 IF(c_fee_orig_csr%NOTFOUND) THEN
4114 CLOSE c_fee_orig_csr;
4115 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4116 ELSE
4117 l_orig_fee_top_line_id := c_fee_rbk_rec.orig_system_id1; -- for future use
4118 -- check if either of the fee, (amount where fee type is not Rollover), idc,
4119 -- (qte_id and fee type is not Rollover), supplier are changed between the contracts only then merge the change
4120 -- onto the fee line that belongs to the original contract
4121 -- fee start date change would not sync up the fee lines for start date, the original date remains
4122
4123 IF(
4124 (c_fee_orig_rec.object1_id1 <> c_fee_rbk_rec.object1_id1) -- fee lov value has changed
4125 -- amount has changed on a fee type that is not Rollover
4126 OR((NVL(c_fee_orig_rec.amount,0) <> NVL(c_fee_rbk_rec.amount,0)) AND c_fee_orig_rec.fee_type <> G_ROLLOVER_FEE)
4127 OR(NVL(c_fee_orig_rec.initial_direct_cost,0) <> NVL(c_fee_rbk_rec.initial_direct_cost,0)) -- idc has changed
4128 -- for non rollover fee quote has changed (is there a quote for other fee types??)
4129 OR((NVL(c_fee_orig_rec.qte_id, OKL_API.G_MISS_NUM) <> NVL(c_fee_rbk_rec.qte_id, OKL_API.G_MISS_NUM)) AND c_fee_orig_rec.fee_type <> G_ROLLOVER_FEE)
4130 -- OR(NVL(c_fee_orig_rec.vendor_party_id, OKL_API.G_MISS_NUM) <> NVL(c_fee_rbk_rec.vendor_party_id, OKL_API.G_MISS_NUM)) -- optional supplier info has changed
4131 -- fee start date changes are not synced up on the original fee line
4132 -- OR(TRUNC(NVL(c_fee_orig_rec.start_date,OKL_API.G_MISS_DATE)) <> TRUNC(NVL(c_fee_rbk_rec.start_date,OKL_API.G_MISS_DATE)))
4133 OR(TRUNC(NVL(c_fee_orig_rec.end_date,OKL_API.G_MISS_DATE)) <> TRUNC(NVL(c_fee_rbk_rec.end_date,OKL_API.G_MISS_DATE)))
4134 --Bug# 4558486
4135 OR(NVL(c_fee_orig_rec.attribute_category, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute_category, OKL_API.G_MISS_CHAR))
4136 OR(NVL(c_fee_orig_rec.attribute1, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute1, OKL_API.G_MISS_CHAR))
4137 OR(NVL(c_fee_orig_rec.attribute2, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute2, OKL_API.G_MISS_CHAR))
4138 OR(NVL(c_fee_orig_rec.attribute3, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute3, OKL_API.G_MISS_CHAR))
4139 OR(NVL(c_fee_orig_rec.attribute4, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute4, OKL_API.G_MISS_CHAR))
4140 OR(NVL(c_fee_orig_rec.attribute5, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute5, OKL_API.G_MISS_CHAR))
4141 OR(NVL(c_fee_orig_rec.attribute6, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute6, OKL_API.G_MISS_CHAR))
4142 OR(NVL(c_fee_orig_rec.attribute7, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute7, OKL_API.G_MISS_CHAR))
4143 OR(NVL(c_fee_orig_rec.attribute8, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute8, OKL_API.G_MISS_CHAR))
4144 OR(NVL(c_fee_orig_rec.attribute9, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute9, OKL_API.G_MISS_CHAR))
4145 OR(NVL(c_fee_orig_rec.attribute10, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute10, OKL_API.G_MISS_CHAR))
4146 OR(NVL(c_fee_orig_rec.attribute11, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute11, OKL_API.G_MISS_CHAR))
4147 OR(NVL(c_fee_orig_rec.attribute12, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute12, OKL_API.G_MISS_CHAR))
4148 OR(NVL(c_fee_orig_rec.attribute13, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute13, OKL_API.G_MISS_CHAR))
4149 OR(NVL(c_fee_orig_rec.attribute14, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute14, OKL_API.G_MISS_CHAR))
4150 OR(NVL(c_fee_orig_rec.attribute15, OKL_API.G_MISS_CHAR) <> NVL(c_fee_rbk_rec.attribute15, OKL_API.G_MISS_CHAR))
4151
4152 )THEN
4153 l_orig_st_fee_rec.line_id := c_fee_rbk_rec.orig_system_id1;
4154 l_orig_st_fee_rec.dnz_chr_id := p_orig_chr_id;
4155 -- item id in okc_k_items remains as of the original contract
4156 l_orig_st_fee_rec.item_id := c_fee_orig_rec.item_id;
4157 l_orig_st_fee_rec.item_id1 := c_fee_rbk_rec.object1_id1;
4158 l_orig_st_fee_rec.item_id2 := c_fee_rbk_rec.object1_id2;
4159 -- l_orig_st_fee_rec.effective_from := c_fee_rbk_rec.start_date;
4160 -- the start date on the fee line is not updateable, the original value remains
4161 -- coded as per Rebook Change Control Enhancement
4162 l_orig_st_fee_rec.effective_from := c_fee_orig_rec.start_date;
4163 l_orig_st_fee_rec.effective_to := c_fee_rbk_rec.end_date;
4164 l_orig_st_fee_rec.amount := c_fee_rbk_rec.amount;
4165 l_orig_st_fee_rec.initial_direct_cost := c_fee_rbk_rec.initial_direct_cost;
4166 l_orig_st_fee_rec.fee_type := c_fee_orig_rec.fee_type;
4167
4168 l_orig_st_fee_rec.party_id := NULL;
4169 l_orig_st_fee_rec.party_id1 := NULL;
4170 l_orig_st_fee_rec.party_id2 := NULL;
4171 --Bug# 4880939
4172 l_orig_st_fee_rec.party_name := NULL;
4173 IF (c_fee_rbk_rec.fee_type <> 'PASSTHROUGH') THEN
4174
4175 FOR orig_fee_party_rec IN
4176 orig_fee_party_csr(l_orig_fee_top_line_id, p_orig_chr_id) LOOP
4177 l_orig_st_fee_rec.party_id := orig_fee_party_rec.id;
4178 END LOOP;
4179
4180 FOR rbk_fee_party_rec IN
4181 rbk_fee_party_csr(c_fee_rbk_rec.id,c_fee_rbk_rec.dnz_chr_id) LOOP
4182 l_orig_st_fee_rec.party_id1 := rbk_fee_party_rec.object1_id1;
4183 l_orig_st_fee_rec.party_id2 := rbk_fee_party_rec.object1_id2;
4184 l_orig_st_fee_rec.party_name := rbk_fee_party_rec.name;
4185 END LOOP;
4186
4187 END IF;
4188
4189 -- just to make sure that we are not syncing up the qte_id for a rollover fee
4190 l_orig_st_fee_rec.qte_id := c_fee_orig_rec.qte_id;
4191
4192 --Bug# 4558486
4193 l_orig_st_fee_rec.attribute_category := c_fee_rbk_rec.attribute_category;
4194 l_orig_st_fee_rec.attribute1 := c_fee_rbk_rec.attribute1;
4195 l_orig_st_fee_rec.attribute2 := c_fee_rbk_rec.attribute2;
4196 l_orig_st_fee_rec.attribute3 := c_fee_rbk_rec.attribute3;
4197 l_orig_st_fee_rec.attribute4 := c_fee_rbk_rec.attribute4;
4198 l_orig_st_fee_rec.attribute5 := c_fee_rbk_rec.attribute5;
4199 l_orig_st_fee_rec.attribute6 := c_fee_rbk_rec.attribute6;
4200 l_orig_st_fee_rec.attribute7 := c_fee_rbk_rec.attribute7;
4201 l_orig_st_fee_rec.attribute7 := c_fee_rbk_rec.attribute8;
4202 l_orig_st_fee_rec.attribute9 := c_fee_rbk_rec.attribute9;
4203 l_orig_st_fee_rec.attribute10 := c_fee_rbk_rec.attribute10;
4204 l_orig_st_fee_rec.attribute11 := c_fee_rbk_rec.attribute11;
4205 l_orig_st_fee_rec.attribute12 := c_fee_rbk_rec.attribute12;
4206 l_orig_st_fee_rec.attribute13 := c_fee_rbk_rec.attribute13;
4207 l_orig_st_fee_rec.attribute14 := c_fee_rbk_rec.attribute14;
4208 l_orig_st_fee_rec.attribute15 := c_fee_rbk_rec.attribute15;
4209
4210 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4211 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_st_fee_rec.line_id: '||l_orig_st_fee_rec.line_id);
4212 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_st_fee_rec.dnz_chr_id: '||l_orig_st_fee_rec.dnz_chr_id);
4213 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_st_fee_rec.item_id: '||l_orig_st_fee_rec.item_id);
4214 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_st_fee_rec.item_id1: '||l_orig_st_fee_rec.item_id1);
4215 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_st_fee_rec.item_id2: '||l_orig_st_fee_rec.item_id2);
4216 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_st_fee_rec.effective_from: '||l_orig_st_fee_rec.effective_from);
4217 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_st_fee_rec.effective_to: '||l_orig_st_fee_rec.effective_to);
4218 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_st_fee_rec.amount: '||l_orig_st_fee_rec.amount);
4219 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_st_fee_rec.initial_direct_cost: '||l_orig_st_fee_rec.initial_direct_cost);
4220 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_st_fee_rec.fee_type: '||l_orig_st_fee_rec.fee_type);
4221 END IF;
4222
4223 -- Update corresponding Orig Fee line
4224 okl_maintain_fee_pvt.update_fee_type(
4225 p_api_version => 1.0,
4226 p_init_msg_list => OKL_API.G_FALSE,
4227 x_return_status => x_return_status,
4228 x_msg_count => x_msg_count,
4229 x_msg_data => x_msg_data,
4230 p_fee_types_rec => l_orig_st_fee_rec,
4231 x_fee_types_rec => x_orig_st_fee_rec
4232 );
4233 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4234 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'OKL.H*** After Update Top line: '||x_return_status);
4235 END IF;
4236
4237 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4238 RAISE sync_fee_failed;
4239 END IF;
4240 END IF; -- end of attribute comparision and calling update_fee_type API
4241
4242 IF (c_fee_rbk_rec.fee_type = 'PASSTHROUGH') THEN
4243 sync_passthru_party(x_return_status => x_return_status);
4244 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4245 RAISE sync_fee_failed;
4246 END IF;
4247 ELSE
4248 -- Sync Fee expense rules for Financed Fee line
4249 -- Also syncing the Misc and Expense Fee lines as part of Contract Rebook Change Control Enhancement
4250 IF (c_fee_rbk_rec.fee_type IN ('FINANCED','MISCELLANEOUS','EXPENSE')) THEN
4251 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4252 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Sync Financed Fee - Expense Rule');
4253 END IF;
4254 -- get original Expense rule LAFREQ
4255 get_rule_info(
4256 x_return_status => x_return_status,
4257 p_rebook_chr_id => p_orig_chr_id,
4258 p_rebook_cle_id => l_orig_fee_top_line_id,
4259 p_rgd_code => 'LAFEXP',
4260 p_rule_code => 'LAFREQ',
4261 x_rulv_rec => x_rulv_freq_rec,
4262 x_rule_count => x_rule_count
4263 );
4264
4265 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
4266 RAISE sync_fee_failed;
4267 END IF;
4268 l_orig_freq_rule_id := x_rulv_freq_rec.id;
4269 l_orig_freq_rgp_id := x_rulv_freq_rec.rgp_id;
4270 l_orig_freq := x_rulv_freq_rec.object1_id1;
4271
4272 -- get rebook Expense rule LAFREQ
4273 get_rule_info(
4274 x_return_status => x_return_status,
4275 p_rebook_chr_id => p_rebook_chr_id,
4276 p_rebook_cle_id => c_fee_rbk_rec.id,
4277 p_rgd_code => 'LAFEXP',
4278 p_rule_code => 'LAFREQ',
4279 x_rulv_rec => x_rulv_freq_rec,
4280 x_rule_count => x_rule_count
4281 );
4282 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
4283 RAISE sync_fee_failed;
4284 END IF;
4285
4286 IF (l_orig_freq <> x_rulv_freq_rec.object1_id1) THEN
4287 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4288 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Update Freq to: '||x_rulv_freq_rec.object1_id1);
4289 END IF;
4290 x_rulv_freq_rec.id := l_orig_freq_rule_id;
4291 x_rulv_freq_rec.rgp_id := l_orig_freq_rgp_id;
4292 x_rulv_freq_rec.dnz_chr_id := p_orig_chr_id;
4293 okl_rule_pub.update_rule(
4294 p_api_version => 1.0,
4295 p_init_msg_list => OKL_API.G_FALSE,
4296 x_return_status => x_return_status,
4297 x_msg_count => x_msg_count,
4298 x_msg_data => x_msg_data,
4299 p_rulv_rec => x_rulv_freq_rec,
4300 x_rulv_rec => x_rulv_rec
4301 );
4302
4303 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4304 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Update LAFREQ : '||x_return_status);
4305 END IF;
4306
4307 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
4308 x_return_status := Okc_Api.G_RET_STS_ERROR;
4309 RAISE sync_fee_failed;
4310 END IF;
4311 END IF;
4312
4313 -- get original Expense rule LAFEXP
4314 get_rule_info(
4315 x_return_status => x_return_status,
4316 p_rebook_chr_id => p_orig_chr_id,
4317 p_rebook_cle_id => l_orig_fee_top_line_id,
4318 p_rgd_code => 'LAFEXP',
4319 p_rule_code => 'LAFEXP',
4320 x_rulv_rec => x_rulv_exp_rec,
4321 x_rule_count => x_rule_count
4322 );
4323
4324 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
4325 RAISE sync_fee_failed;
4326 END IF;
4327 l_orig_exp_rule_id := x_rulv_exp_rec.id;
4328 l_orig_exp_rgp_id := x_rulv_exp_rec.rgp_id;
4329 l_orig_exp_period := x_rulv_exp_rec.rule_information1;
4330 l_orig_exp_amount := x_rulv_exp_rec.rule_information2;
4331
4332 -- get rebook Expense rule LAFEXP
4333 get_rule_info(
4334 x_return_status => x_return_status,
4335 p_rebook_chr_id => p_rebook_chr_id,
4336 p_rebook_cle_id => c_fee_rbk_rec.id,
4337 p_rgd_code => 'LAFEXP',
4338 p_rule_code => 'LAFEXP',
4339 x_rulv_rec => x_rulv_exp_rec,
4340 x_rule_count => x_rule_count
4341 );
4342 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
4343 RAISE sync_fee_failed;
4344 END IF;
4345
4346 IF (l_orig_exp_period <> x_rulv_exp_rec.rule_information1
4347 OR
4348 l_orig_exp_amount <> x_rulv_exp_rec.rule_information2) THEN
4349 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4350 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Update period to: '||x_rulv_exp_rec.rule_information1);
4351 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Update amount to: '||x_rulv_exp_rec.rule_information2);
4352 END IF;
4353 x_rulv_exp_rec.id := l_orig_exp_rule_id;
4354 x_rulv_exp_rec.rgp_id := l_orig_exp_rgp_id;
4355 x_rulv_exp_rec.dnz_chr_id := p_orig_chr_id;
4356 okl_rule_pub.update_rule(
4357 p_api_version => 1.0,
4358 p_init_msg_list => OKL_API.G_FALSE,
4359 x_return_status => x_return_status,
4360 x_msg_count => x_msg_count,
4361 x_msg_data => x_msg_data,
4362 p_rulv_rec => x_rulv_exp_rec,
4363 x_rulv_rec => x_rulv_rec
4364 );
4365 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4366 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Update LAFEXP : '||x_return_status);
4367 END IF;
4368
4369 IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
4370 x_return_status := Okc_Api.G_RET_STS_ERROR;
4371 RAISE sync_fee_failed;
4372 END IF;
4373 END IF;
4374 END IF;
4375 -- Check for party
4376 FOR rbk_fee_party_rec IN rbk_fee_party_csr(c_fee_rbk_rec.id,
4377 c_fee_rbk_rec.dnz_chr_id)
4378 LOOP
4379 l_orig_party_id := NULL;
4380 OPEN orig_fee_party_csr(l_orig_fee_top_line_id, p_orig_chr_id);
4381 FETCH orig_fee_party_csr INTO l_orig_party_id, l_orig_object1_id1;
4382
4383 CLOSE orig_fee_party_csr;
4384
4385 IF (l_orig_party_id IS NOT NULL) THEN
4386 IF (l_orig_object1_id1 <> rbk_fee_party_rec.object1_id1) THEN
4387 -- Update
4388 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4389 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Update Party...');
4390 END IF;
4391 l_cplv_rec.id := l_orig_party_id;
4392 l_cplv_rec.object1_id1 := rbk_fee_party_rec.object1_id1;
4393
4394 --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
4395 -- to update records in tables
4396 -- okc_k_party_roles_b and okl_k_party_roles
4397 /*
4398 okl_okc_migration_pvt.update_k_party_role(
4399 p_api_version => 1.0,
4400 p_init_msg_list => OKL_API.G_FALSE,
4401 x_return_status => x_return_status,
4402 x_msg_count => x_msg_count,
4403 x_msg_data => x_msg_data,
4404 p_cplv_rec => l_cplv_rec,
4405 x_cplv_rec => x_cplv_rec);
4406 */
4407
4408 l_kplv_rec.id := l_cplv_rec.id;
4409 okl_k_party_roles_pvt.update_k_party_role(
4410 p_api_version => 1.0,
4411 p_init_msg_list => OKL_API.G_FALSE,
4412 x_return_status => x_return_status,
4413 x_msg_count => x_msg_count,
4414 x_msg_data => x_msg_data,
4415 p_cplv_rec => l_cplv_rec,
4416 x_cplv_rec => x_cplv_rec,
4417 p_kplv_rec => l_kplv_rec,
4418 x_kplv_rec => x_kplv_rec );
4419
4420 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4421 RAISE sync_fee_failed;
4422 END IF;
4423 END IF;
4424 ELSE -- new party
4425 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4426 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Create Party...');
4427 END IF;
4428 -- Create party for orig fee
4429 l_cplv_rec.dnz_chr_id := p_orig_chr_id;
4430 l_cplv_rec.cle_id := l_orig_fee_top_line_id;
4431 l_cplv_rec.object1_id1 := rbk_fee_party_rec.object1_id1;
4432 l_cplv_rec.object1_id2 := rbk_fee_party_rec.object1_id2;
4433 l_cplv_rec.jtot_object1_code := 'OKX_VENDOR';
4434 l_cplv_rec.rle_code := 'OKL_VENDOR';
4435
4436 --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
4437 -- to create records in tables
4438 -- okc_k_party_roles_b and okl_k_party_roles
4439 /*
4440 okl_okc_migration_pvt.create_k_party_role(
4441 p_api_version => 1.0,
4442 p_init_msg_list => OKL_API.G_FALSE,
4443 x_return_status => x_return_status,
4444 x_msg_count => x_msg_count,
4445 x_msg_data => x_msg_data,
4446 p_cplv_rec => l_cplv_rec,
4447 x_cplv_rec => x_cplv_rec);
4448 */
4449
4450 okl_k_party_roles_pvt.create_k_party_role(
4451 p_api_version => 1.0,
4452 p_init_msg_list => OKL_API.G_FALSE,
4453 x_return_status => x_return_status,
4454 x_msg_count => x_msg_count,
4455 x_msg_data => x_msg_data,
4456 p_cplv_rec => l_cplv_rec,
4457 x_cplv_rec => x_cplv_rec,
4458 p_kplv_rec => l_kplv_rec,
4459 x_kplv_rec => x_kplv_rec);
4460
4461 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4462 RAISE sync_fee_failed;
4463 END IF;
4464 END IF;
4465 END LOOP; -- party
4466 END IF; -- passthru
4467
4468 -- Linked Fee Asset
4469 upd := 0; -- update line count
4470 l_u_line_item_tbl.DELETE;
4471
4472 ins := 0; -- insert line count
4473 l_c_line_item_tbl.DELETE;
4474 --Bug# 4899328
4475 l_cov_ast_tbl.DELETE;
4476
4477 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4478 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Update link asset for: '||c_fee_rbk_rec.id);
4479 END IF;
4480 FOR rbk_fee_asset_rec IN rbk_fee_asset_csr (c_fee_rbk_rec.id,
4481 c_fee_rbk_rec.dnz_chr_id)
4482 LOOP
4483
4484 IF (rbk_fee_asset_rec.orig_system_id1 IS NOT NULL) THEN -- update the line
4485 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4486 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'--->Update Rebook Asset: '||rbk_fee_asset_rec.line_id);
4487 END IF;
4488 FOR orig_fee_asset_rec IN orig_fee_asset_csr(rbk_fee_asset_rec.orig_system_id1,
4489 p_orig_chr_id)
4490 LOOP
4491 -- Update existing line
4492 upd := upd + 1;
4493 l_u_line_item_tbl(upd).parent_cle_id := l_orig_fee_top_line_id;
4494 l_u_line_item_tbl(upd).cle_id := orig_fee_asset_rec.line_id;
4495 l_u_line_item_tbl(upd).chr_id := p_orig_chr_id;
4496 l_u_line_item_tbl(upd).item_id := orig_fee_asset_rec.item_id;
4497 l_u_line_item_tbl(upd).item_id1 := rbk_fee_asset_rec.object1_id1;
4498 l_u_line_item_tbl(upd).item_id2 := rbk_fee_asset_rec.object1_id2;
4499 l_u_line_item_tbl(upd).item_object1_code := rbk_fee_asset_rec.jtot_object1_code;
4500 l_u_line_item_tbl(upd).name := rbk_fee_asset_rec.name;
4501 l_u_line_item_tbl(upd).item_description := rbk_fee_asset_rec.item_description;
4502 l_u_line_item_tbl(upd).capital_amount := NVL(rbk_fee_asset_rec.capital_amount,
4503 rbk_fee_asset_rec.amount) ;
4504
4505 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4506 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Update record: '||upd||': '||l_u_line_item_tbl(upd).name);
4507 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Capital amt: '||l_u_line_item_tbl(upd).capital_amount);
4508 END IF;
4509 END LOOP;
4510 ELSE
4511 -- Create new asset association line
4512 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4513 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'--->Insert Rebook Asset: '||rbk_fee_asset_rec.line_id);
4514 END IF;
4515 ins := ins + 1;
4516 --Bug# 4899328
4517 l_cov_ast_tbl(ins).id := rbk_fee_asset_rec.line_id;
4518
4519 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4520 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Insert record: '||ins||': '||rbk_fee_asset_rec.name);
4521 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Capital amt: '||NVL(rbk_fee_asset_rec.capital_amount,rbk_fee_asset_rec.amount));
4522 END IF;
4523
4524 /*
4525 l_c_line_item_tbl(ins).parent_cle_id := l_orig_fee_top_line_id;
4526 l_c_line_item_tbl(ins).chr_id := p_orig_chr_id;
4527 l_c_line_item_tbl(ins).item_id1 := rbk_fee_asset_rec.object1_id1;
4528 l_c_line_item_tbl(ins).item_id2 := rbk_fee_asset_rec.object1_id2;
4529 l_c_line_item_tbl(ins).item_object1_code := rbk_fee_asset_rec.jtot_object1_code;
4530 l_c_line_item_tbl(ins).name := rbk_fee_asset_rec.name;
4531 l_c_line_item_tbl(ins).item_description := rbk_fee_asset_rec.item_description;
4532 l_c_line_item_tbl(ins).capital_amount := NVL(rbk_fee_asset_rec.capital_amount,
4533 rbk_fee_asset_rec.amount) ;
4534
4535 debug_message('Insert record: '||ins||': '||l_c_line_item_tbl(ins).name);
4536 debug_message('Capital amt: '||l_c_line_item_tbl(ins).capital_amount);
4537 */
4538 --Bug# 4899328
4539
4540 END IF;
4541 END LOOP; -- subline
4542
4543 IF (l_u_line_item_tbl.COUNT > 0) THEN
4544 okl_contract_line_item_pvt.update_contract_line_item(
4545 p_api_version => 1.0,
4546 p_init_msg_list => OKL_API.G_FALSE,
4547 x_return_status => x_return_status,
4548 x_msg_count => x_msg_count,
4549 x_msg_data => x_msg_data,
4550 p_line_item_tbl => l_u_line_item_tbl,
4551 x_line_item_tbl => x_u_line_item_tbl
4552 );
4553 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4554 RAISE sync_fee_failed;
4555 END IF;
4556 END IF;
4557 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4558 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Link Fee asset updated; '||l_u_line_item_tbl.COUNT);
4559 END IF;
4560
4561 --Bug# 4899328
4562 -- Change call from okl_contract_line_item_pvt.create_contract_line_item to
4563 -- okl_copy_asset_pub.copy_all_lines in order to copy Payments associated to
4564 -- new covered asset lines.
4565 IF (l_cov_ast_tbl.COUNT > 0) THEN
4566 okl_copy_asset_pub.copy_all_lines(
4567 p_api_version => 1.0,
4568 p_init_msg_list => OKC_API.G_FALSE,
4569 x_return_status => x_return_status,
4570 x_msg_count => x_msg_count,
4571 x_msg_data => x_msg_data,
4572 P_from_cle_id_tbl => l_cov_ast_tbl,
4573 p_to_chr_id => NULL,
4574 p_to_cle_id => l_orig_fee_top_line_id,
4575 p_to_template_yn => 'N',
4576 p_copy_reference => 'Y',
4577 p_copy_line_party_yn => 'Y',
4578 p_renew_ref_yn => 'N',
4579 p_trans_type => 'CRB',
4580 x_cle_id_tbl => lx_cov_ast_tbl
4581 );
4582 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4583 RAISE sync_fee_failed;
4584 END IF;
4585 END IF;
4586
4587 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4588 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Link Fee asset inserted; '||l_cov_ast_tbl.COUNT);
4589 END IF;
4590
4591
4592 /*
4593 IF (l_c_line_item_tbl.COUNT > 0) THEN
4594 okl_contract_line_item_pvt.create_contract_line_item(
4595 p_api_version => 1.0,
4596 p_init_msg_list => OKL_API.G_FALSE,
4597 x_return_status => x_return_status,
4598 x_msg_count => x_msg_count,
4599 x_msg_data => x_msg_data,
4600 p_line_item_tbl => l_c_line_item_tbl,
4601 x_line_item_tbl => x_c_line_item_tbl
4602 );
4603 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4604 RAISE sync_fee_failed;
4605 END IF;
4606 END IF;
4607 debug_message('Link Fee asset inserted; '||l_c_line_item_tbl.COUNT);
4608 */
4609 --Bug# 4899328
4610
4611 END IF;
4612 CLOSE c_fee_orig_csr;
4613 END LOOP; -- c_fee_rbk_rec
4614 CLOSE c_fee_rbk_csr;
4615
4616 -- OKL.H Projects changes ---
4617 EXCEPTION
4618 WHEN sync_fee_failed THEN
4619 x_return_status := OKL_API.G_RET_STS_ERROR;
4620
4621 when OKL_API.G_EXCEPTION_ERROR then
4622 x_return_status := 'OKC_API.G_RET_STS_ERROR';
4623
4624 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
4625 x_return_status := 'OKC_API.G_RET_STS_UNEXP_ERROR';
4626
4627 END sync_fee_line;
4628
4629 ------------------------------------------------------------------------------
4630 -- PROCEDURE sync_line_values
4631 --
4632 -- This procedure synchronizes Rebook and Original Contract Line Values
4633 -- Sync 1. Adjust Residual Value
4634 -- 2. Adjust Cost
4635 --
4636 -- Calls:
4637 -- Called By:
4638 ------------------------------------------------------------------------------
4639
4640 PROCEDURE sync_line_values(
4641 x_return_status OUT NOCOPY VARCHAR2,
4642 x_msg_count OUT NOCOPY NUMBER,
4643 x_msg_data OUT NOCOPY VARCHAR2,
4644 p_rebook_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
4645 p_orig_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
4646 x_new_klev_tbl OUT NOCOPY klev_tbl_type,
4647 x_new_clev_tbl OUT NOCOPY clev_tbl_type
4648 ) IS
4649
4650 l_proc_name VARCHAR2(35) := 'SYNC_LINE_VALUES';
4651 sync_failed EXCEPTION;
4652
4653 CURSOR rebook_line_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
4654 SELECT *
4655 FROM okl_k_lines_full_v
4656 WHERE dnz_chr_id = p_chr_id
4657 AND orig_system_id1 IS NOT NULL;
4658
4659 CURSOR rebook_new_line_csr(p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
4660 SELECT line.*
4661 FROM okl_k_lines_full_v line,
4662 okc_line_styles_v style
4663 WHERE line.dnz_chr_id = p_chr_id
4664 AND line.lse_id = style.id
4665 AND style.lty_code = 'FREE_FORM1'
4666 AND orig_system_id1 IS NULL;
4667
4668 --Bug# 5207066
4669 CURSOR rebook_new_ib_line_csr(p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
4670 SELECT line.*,
4671 parent_cle.orig_system_id1 parent_orig_system_id1,
4672 parent_cle.start_date parent_orig_start_date
4673 FROM okl_k_lines_full_v line,
4674 okc_line_styles_v style,
4675 okc_k_lines_b parent_cle
4676 WHERE line.dnz_chr_id = p_chr_id
4677 AND line.lse_id = style.id
4678 AND style.lty_code = 'FREE_FORM2'
4679 AND line.orig_system_id1 IS NULL
4680 AND parent_cle.orig_system_id1 IS NOT NULL
4681 AND line.cle_id = parent_cle.id
4682 AND line.dnz_chr_id = parent_cle.dnz_chr_id;
4683
4684 CURSOR del_rgp_csr(p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
4685 SELECT id
4686 FROM okc_rule_groups_v
4687 WHERE dnz_chr_id = p_chr_id
4688 AND rgd_code = 'LALEVL';
4689
4690 CURSOR rule_csr(p_rgp_id NUMBER) IS
4691 SELECT id
4692 FROM okc_rules_v
4693 WHERE rgp_id = p_rgp_id;
4694
4695 CURSOR rebook_new_all_line_csr (p_top_line_id NUMBER) IS
4696 SELECT id,
4697 start_date
4698 FROM okc_k_lines_b
4699 CONNECT BY PRIOR id = cle_id
4700 START WITH id = p_top_line_id;
4701 --Bug# 5362977 start
4702 --Bug# 5207066 - bug start
4703 CURSOR items_csr(p_cle_id NUMBER) IS
4704 SELECT cim.id,
4705 cim.cle_id,
4706 cim.number_of_items,
4707 cim.object1_id1,
4708 cim.object1_id2,
4709 cim.jtot_object1_code,
4710 cle.lse_id
4711 FROM okc_k_items cim,
4712 okc_k_lines_b cle
4713 WHERE cim.cle_id = cle.id
4714 AND cle.id = p_cle_id;
4715 l_items_rec items_csr%ROWTYPE;
4716 l_items_old_rec items_csr%ROWTYPE;
4717
4718 l_cim_rec okl_okc_migration_pvt.cimv_rec_type;
4719 x_cim_rec okl_okc_migration_pvt.cimv_rec_type;
4720 -- bug 5121256 end
4721
4722
4723
4724
4725 CURSOR party_roles_csr(p_cle_id IN NUMBER,
4726 p_chr_id IN NUMBER) IS
4727 SELECT cpl.id,
4728 cpl.object1_id1,
4729 cpl.object1_id2,
4730 cpl.jtot_object1_code,
4731 cpl.rle_code
4732 FROM okc_k_party_roles_b cpl
4733 WHERE cpl.cle_id = p_cle_id
4734 AND cpl.dnz_chr_id = p_chr_id
4735 AND cpl.jtot_object1_code = 'OKX_VENDOR';
4736 l_item_cle_id_old okc_k_items.cle_id%type;
4737 l_item_id_old okc_k_items.id%type;
4738
4739 l_party_roles_new_rec party_roles_csr%ROWTYPE;
4740 l_party_roles_old_rec party_roles_csr%ROWTYPE;
4741
4742 l_cplv_rec cplv_rec_type;
4743 x_cplv_rec cplv_rec_type;
4744 -- bug 5121256 end
4745
4746 l_cplv_temp_rec cplv_rec_type;
4747 l_cim_temp_rec okl_okc_migration_pvt.cimv_rec_type;
4748
4749 x_cpl_id NUMBER;
4750 --Bug# 5362977 end
4751
4752 --Bug# 5207066 end
4753
4754 l_clev_tbl clev_tbl_type;
4755 l_klev_tbl klev_tbl_type;
4756
4757 x_clev_tbl clev_tbl_type;
4758 x_klev_tbl klev_tbl_type;
4759
4760 l_new_klev_tbl klev_tbl_type;
4761 lx_new_klev_tbl klev_tbl_type;
4762 x_cle_id OKC_K_LINES_V.ID%TYPE;
4763 i NUMBER := 0;
4764 j NUMBER := 0;
4765 k NUMBER := 0;
4766 m NUMBER := 0;
4767 l_tran_date DATE;
4768
4769 l_rulv_tbl rulv_tbl_type;
4770 l_r_count NUMBER;
4771
4772 --Bug# 5207066
4773 l_temp_klev_tbl klev_tbl_type;
4774
4775 BEGIN
4776 IF (G_DEBUG_ENABLED = 'Y') THEN
4777 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
4778 END IF;
4779 x_return_status := OKC_API.G_RET_STS_SUCCESS;
4780 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4781 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
4782 END IF;
4783
4784
4785 -- Delete Line level existing SLH, SLL from Original Contract
4786
4787 i := 1;
4788 FOR del_rgp_rec IN del_rgp_csr(p_orig_chr_id)
4789 LOOP
4790 FOR rule_rec IN rule_csr(del_rgp_rec.id)
4791 LOOP
4792 l_rulv_tbl(i).id := rule_rec.id;
4793 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4794 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Rule Deleted: '||l_rulv_tbl(i).id);
4795 END IF;
4796 i := i+ 1;
4797 END LOOP;
4798 END LOOP;
4799
4800 okl_rule_pub.delete_rule(
4801 p_api_version => 1.0,
4802 p_init_msg_list => OKC_API.G_FALSE,
4803 x_return_status => x_return_status,
4804 x_msg_count => x_msg_count,
4805 x_msg_data => x_msg_data,
4806 p_rulv_tbl => l_rulv_tbl
4807 );
4808 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4809 RAISE sync_failed;
4810 END IF;
4811
4812 i := 1;
4813 FOR rebook_line_rec IN rebook_line_csr(p_rebook_chr_id)
4814 LOOP
4815
4816 IF (rebook_line_rec.orig_system_id1 IS NOT NULL) THEN -- Old Line, Update
4817
4818 l_clev_tbl(i).id := rebook_line_rec.orig_system_id1;
4819 l_klev_tbl(i).id := rebook_line_rec.orig_system_id1;
4820 l_klev_tbl(i).residual_percentage := rebook_line_rec.residual_percentage;
4821 l_klev_tbl(i).residual_value := rebook_line_rec.residual_value;
4822 l_klev_tbl(i).residual_grnty_amount := rebook_line_rec.residual_grnty_amount;
4823 l_klev_tbl(i).oec := rebook_line_rec.oec;
4824 l_klev_tbl(i).capital_amount := rebook_line_rec.capital_amount;
4825
4826 -- sjalasut, added for rebook change control enhancement. START
4827 l_klev_tbl(i).tradein_amount := rebook_line_rec.tradein_amount;
4828 -- sjalasut, added for rebook change control enhancement. END
4829
4830 --Bug# 4558486
4831 l_klev_tbl(i).attribute_category := rebook_line_rec.okl_attribute_category;
4832 l_klev_tbl(i).attribute1 := rebook_line_rec.okl_attribute1;
4833 l_klev_tbl(i).attribute2 := rebook_line_rec.okl_attribute2;
4834 l_klev_tbl(i).attribute3 := rebook_line_rec.okl_attribute3;
4835 l_klev_tbl(i).attribute4 := rebook_line_rec.okl_attribute4;
4836 l_klev_tbl(i).attribute5 := rebook_line_rec.okl_attribute5;
4837 l_klev_tbl(i).attribute6 := rebook_line_rec.okl_attribute6;
4838 l_klev_tbl(i).attribute7 := rebook_line_rec.okl_attribute7;
4839 l_klev_tbl(i).attribute8 := rebook_line_rec.okl_attribute8;
4840 l_klev_tbl(i).attribute9 := rebook_line_rec.okl_attribute9;
4841 l_klev_tbl(i).attribute10 := rebook_line_rec.okl_attribute10;
4842 l_klev_tbl(i).attribute11 := rebook_line_rec.okl_attribute11;
4843 l_klev_tbl(i).attribute12 := rebook_line_rec.okl_attribute12;
4844 l_klev_tbl(i).attribute13 := rebook_line_rec.okl_attribute13;
4845 l_klev_tbl(i).attribute14 := rebook_line_rec.okl_attribute14;
4846 l_klev_tbl(i).attribute15 := rebook_line_rec.okl_attribute15;
4847 --Bug# 4558486
4848
4849 l_clev_tbl(i).price_unit := rebook_line_rec.price_unit;
4850
4851 --akrangan Bug# 5362977 start
4852 l_klev_tbl(i).year_built := rebook_line_rec.year_built;
4853 l_clev_tbl(i).item_description := rebook_line_rec.item_description;
4854 --akrangan Bug# 5362977 end
4855 --akrangan Bug# 5362977 start
4856
4857 --Bug# 5207066 -- start
4858
4859
4860 l_items_rec := NULL;
4861 OPEN items_csr(rebook_line_rec.id); -- rebook_line_rec.id
4862 FETCH items_csr INTO l_items_rec;
4863 CLOSE items_csr;
4864
4865 l_items_old_rec := NULL;
4866 OPEN items_csr(l_clev_tbl(i).id); -- original contract
4867 FETCH items_csr INTO l_items_old_rec;
4868 CLOSE items_csr;
4869
4870 l_cim_rec := l_cim_temp_rec;
4871 IF l_items_old_rec.id IS NOT NULL AND
4872 (l_items_old_rec.number_of_items IS NOT NULL OR
4873 l_items_rec.number_of_items IS NOT NULL) THEN
4874
4875 l_cim_rec.id := l_items_old_rec.id;
4876 l_cim_rec.cle_id := l_items_old_rec.cle_id;
4877 l_cim_rec.number_of_items := l_items_rec.number_of_items;
4878
4879 IF l_items_old_rec.lse_id = 34 THEN -- Model Line
4880
4881 -- Sync Inventory Item
4882 l_cim_rec.object1_id1 := l_items_rec.object1_id1;
4883 l_cim_rec.object1_id2 := l_items_rec.object1_id2;
4884 l_cim_rec.jtot_object1_code := l_items_rec.jtot_object1_code;
4885
4886 --Sync Supplier Invoice
4887 l_party_roles_new_rec := NULL;
4888 open party_roles_csr(p_cle_id => rebook_line_rec.id,
4889 p_chr_id => p_rebook_chr_id);
4890 fetch party_roles_csr into l_party_roles_new_rec;
4891 close party_roles_csr;
4892
4893 if l_party_roles_new_rec.id is not null then
4894
4895 l_party_roles_old_rec := NULL;
4896 open party_roles_csr(p_cle_id => l_clev_tbl(i).id,
4897 p_chr_id => p_orig_chr_id);
4898 fetch party_roles_csr into l_party_roles_old_rec;
4899 close party_roles_csr;
4900
4901 if l_party_roles_old_rec.id is null then
4902 -- Supplier Invoice added during rebook
4903
4904
4905 okl_copy_contract_pub.copy_party_roles(
4906 p_api_version => 1.0,
4907 p_init_msg_list => OKL_API.G_FALSE,
4908 x_return_status => x_return_status,
4909 x_msg_count => x_msg_count,
4910 x_msg_data => x_msg_data,
4911 p_cpl_id => l_party_roles_new_rec.id,
4912 p_cle_id => l_clev_tbl(i).id,
4913 p_chr_id => NULL,
4914 p_rle_code => l_party_roles_new_rec.rle_code,
4915 x_cpl_id => x_cpl_id
4916 );
4917 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
4918 okl_debug_pub.logmessage('okl_copy_contract_pub.copy_party_roles sync_failed ');
4919 RAISE sync_failed;
4920 END IF;
4921 elsif (l_party_roles_old_rec.object1_id1 <> l_party_roles_new_rec.object1_id1) then
4922 -- Supplier Invoice updated during rebook
4923
4924
4925
4926 l_cplv_rec := l_cplv_temp_rec;
4927
4928 l_cplv_rec.id := l_party_roles_old_rec.id;
4929 l_cplv_rec.object1_id1 := l_party_roles_new_rec.object1_id1;
4930 l_cplv_rec.object1_id2 := l_party_roles_new_rec.object1_id2;
4931 l_cplv_rec.jtot_object1_code := l_party_roles_new_rec.jtot_object1_code;
4932 l_cplv_rec.rle_code := l_party_roles_new_rec.rle_code;
4933
4934 okl_okc_migration_pvt.update_k_party_role(
4935 p_api_version => 1.0,
4936 p_init_msg_list => OKL_API.G_FALSE,
4937 x_return_status => x_return_status,
4938 x_msg_count => x_msg_count,
4939 x_msg_data => x_msg_data,
4940 p_cplv_rec => l_cplv_rec,
4941 x_cplv_rec => x_cplv_rec);
4942
4943 -- check return status
4944 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
4945 okl_debug_pub.logmessage(' okl_okc_migration_pvt.update_contract_item sync_failed ');
4946 RAISE sync_failed;
4947 END IF;
4948
4949 end if;
4950 end if;
4951 END IF;
4952
4953 okl_okc_migration_pvt.update_contract_item(
4954
4955 p_api_version => 1.0,
4956 p_init_msg_list => okc_api.g_false,
4957 x_return_status =>x_return_status,
4958 x_msg_count =>x_msg_count,
4959 x_msg_data =>x_msg_data,
4960 p_cimv_rec =>l_cim_rec,
4961 x_cimv_rec =>x_cim_rec);
4962
4963
4964 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4965 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4966 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,' okc_cim_pvt.update_row sync_failed= ');
4967 END IF;
4968 RAISE sync_failed;
4969 END IF;
4970 END IF;
4971 --Bug# 5207066 -- End
4972 --akrangan Bug# 5362977 end
4973 --
4974 -- Subsidy changes, removed later 09/26/2003
4975 --
4976 --l_klev_tbl(i).subsidized_oec := rebook_line_rec.subsidized_oec;
4977 --l_klev_tbl(i).subsidized_cap_amount := rebook_line_rec.subsidized_cap_amount;
4978 --
4979 -- End Subsidy change
4980 --
4981
4982 -- dedey
4983 x_new_clev_tbl(i).id := rebook_line_rec.orig_system_id1;
4984 x_new_klev_tbl(i).id := rebook_line_rec.orig_system_id1;
4985 x_new_clev_tbl(i).start_date := rebook_line_rec.start_date;
4986
4987 i := i+ 1;
4988
4989 END IF;
4990 END LOOP;
4991
4992 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4993 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Orig: '||p_orig_chr_id);
4994 END IF;
4995
4996 okl_contract_pub.update_contract_line(
4997 p_api_version => 1.0,
4998 p_init_msg_list => OKC_API.G_FALSE,
4999 x_return_status => x_return_status,
5000 x_msg_count => x_msg_count,
5001 x_msg_data => x_msg_data,
5002 p_clev_tbl => l_clev_tbl,
5003 p_klev_tbl => l_klev_tbl,
5004 x_clev_tbl => x_clev_tbl,
5005 x_klev_tbl => x_klev_tbl
5006 );
5007 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5008 RAISE sync_failed;
5009 END IF;
5010
5011 j := 1;
5012 FOR rebook_new_line_rec IN rebook_new_line_csr(p_rebook_chr_id)
5013 LOOP
5014 l_new_klev_tbl(j).id := rebook_new_line_rec.id;
5015 l_tran_date := rebook_new_line_rec.start_date; --Used later to update line
5016
5017 j := j + 1;
5018 END LOOP;
5019
5020 IF (j > 1) THEN -- New Asset Lines came in
5021 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5022 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'new line id: '||l_new_klev_tbl(1).id);
5023 END IF;
5024 okl_copy_asset_pub.copy_all_lines(
5025 p_api_version => 1.0,
5026 p_init_msg_list => OKL_API.G_FALSE,
5027 x_return_status => x_return_status,
5028 x_msg_count => x_msg_count,
5029 x_msg_data => x_msg_data,
5030 p_from_cle_id_tbl => l_new_klev_tbl,
5031 p_to_cle_id => NULL,
5032 p_to_chr_id => p_orig_chr_id,
5033 p_to_template_yn => 'N',
5034 p_copy_reference => 'COPY',
5035 p_copy_line_party_yn => 'Y',
5036 p_renew_ref_yn => 'N',
5037 p_trans_type => 'CRB',
5038 x_cle_id_tbl => lx_new_klev_tbl
5039 );
5040
5041 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5042 RAISE sync_failed;
5043 END IF;
5044
5045 --
5046 -- Get New Lines id (including sub lines) and
5047 -- populate tables with transaction date as start date
5048 -- and sts_code as BOOKED
5049 --
5050 -- This table of record is used to update new lines later
5051 --
5052 k := 1;
5053 FOR k IN 1..lx_new_klev_tbl.COUNT
5054 LOOP
5055 --m := 1; -- dedey
5056 m := x_new_clev_tbl.LAST + 1;
5057
5058 FOR rebook_new_all_line_rec IN rebook_new_all_line_csr(lx_new_klev_tbl(k).id)
5059 LOOP
5060 --INSERT INTO dd_dummy VALUES ('==> New line id : '||rebook_new_all_line_rec.id);
5061 x_new_clev_tbl(m).id := rebook_new_all_line_rec.id;
5062 x_new_klev_tbl(m).id := rebook_new_all_line_rec.id;
5063 x_new_clev_tbl(m).start_date := l_tran_date;
5064 x_new_clev_tbl(m).sts_code := 'BOOKED';
5065 m := m + 1;
5066 END LOOP;
5067 END LOOP;
5068
5069 END IF;
5070
5071 --Bug# 5207066: start
5072 j := 1;
5073 FOR rebook_new_ib_line_rec IN rebook_new_ib_line_csr(p_rebook_chr_id)
5074 LOOP
5075
5076 l_new_klev_tbl := l_temp_klev_tbl;
5077
5078 l_new_klev_tbl(j).id := rebook_new_ib_line_rec.id;
5079 l_tran_date := rebook_new_ib_line_rec.parent_orig_start_date; --Used later to update line
5080
5081 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5082 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'new line id: '||l_new_klev_tbl(1).id);
5083 END IF;
5084 okl_copy_asset_pub.copy_all_lines(
5085 p_api_version => 1.0,
5086 p_init_msg_list => OKL_API.G_FALSE,
5087 x_return_status => x_return_status,
5088 x_msg_count => x_msg_count,
5089 x_msg_data => x_msg_data,
5090 p_from_cle_id_tbl => l_new_klev_tbl,
5091 p_to_cle_id => rebook_new_ib_line_rec.parent_orig_system_id1,
5092 p_to_chr_id => NULL,
5093 p_to_template_yn => 'N',
5094 p_copy_reference => 'COPY',
5095 p_copy_line_party_yn => 'Y',
5096 p_renew_ref_yn => 'N',
5097 p_trans_type => 'CRB',
5098 x_cle_id_tbl => lx_new_klev_tbl
5099 );
5100
5101 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5102 RAISE sync_failed;
5103 END IF;
5104
5105 --
5106 -- Get New Lines id (including sub lines) and
5107 -- populate tables with transaction date as start date
5108 -- and sts_code as BOOKED
5109 --
5110 -- This table of record is used to update new lines later
5111 --
5112 k := 1;
5113 FOR k IN 1..lx_new_klev_tbl.COUNT
5114 LOOP
5115
5116 m := x_new_clev_tbl.LAST + 1;
5117
5118 FOR rebook_new_all_line_rec IN rebook_new_all_line_csr(lx_new_klev_tbl(k).id)
5119 LOOP
5120 --INSERT INTO dd_dummy VALUES ('==> New line id : '||rebook_new_all_line_rec.id);
5121 x_new_clev_tbl(m).id := rebook_new_all_line_rec.id;
5122 x_new_klev_tbl(m).id := rebook_new_all_line_rec.id;
5123 x_new_clev_tbl(m).start_date := l_tran_date;
5124 x_new_clev_tbl(m).sts_code := 'BOOKED';
5125 m := m + 1;
5126 END LOOP;
5127 END LOOP;
5128 END LOOP;
5129 --Bug# 5207066: end
5130
5131 /*
5132 FOR i IN 1..x_new_clev_tbl.LAST
5133 LOOP
5134 INSERT INTO dd_dummy VALUES (x_new_clev_tbl(i).id||', '||x_new_clev_tbl(i).start_date);
5135 END LOOP;
5136 */
5137
5138 --
5139 -- Sync FEE line
5140 --
5141 sync_fee_line(
5142 x_return_status => x_return_status,
5143 x_msg_count => x_msg_count,
5144 x_msg_data => x_msg_data,
5145 p_rebook_chr_id => p_rebook_chr_id,
5146 p_orig_chr_id => p_orig_chr_id
5147 );
5148
5149 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5150 RAISE sync_failed;
5151 END IF;
5152
5153 EXCEPTION
5154 WHEN sync_failed THEN
5155 x_return_status := OKC_API.G_RET_STS_ERROR;
5156 END sync_line_values;
5157
5158 ------------------------------------------------------------------------------
5159 -- PROCEDURE version_contract
5160 --
5161 -- This procedure versions contract, i.e. making a contract Version History
5162 --
5163 -- Calls:
5164 -- Called By:
5165 ------------------------------------------------------------------------------
5166 PROCEDURE version_contract(
5167 x_return_status OUT NOCOPY VARCHAR2,
5168 x_msg_count OUT NOCOPY NUMBER,
5169 x_msg_data OUT NOCOPY VARCHAR2,
5170 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE
5171 ) IS
5172
5173 l_proc_name VARCHAR2(35) := 'VERSION_CONTRACT';
5174 l_cvmv_rec cvmv_rec_type;
5175 x_cvmv_rec cvmv_rec_type;
5176
5177 BEGIN
5178 IF (G_DEBUG_ENABLED = 'Y') THEN
5179 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5180 END IF;
5181 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5182 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5183 END IF;
5184 x_return_status := OKC_API.G_RET_STS_SUCCESS;
5185
5186 l_cvmv_rec.chr_id := p_chr_id;
5187 okl_version_pub.version_contract(
5188 p_api_version => 1.0,
5189 p_init_msg_list => OKC_API.G_FALSE,
5190 x_return_status => x_return_status,
5191 x_msg_count => x_msg_count,
5192 x_msg_data => x_msg_data,
5193 p_cvmv_rec => l_cvmv_rec,
5194 x_cvmv_rec => x_cvmv_rec --,
5195 --p_commit => OKC_API.G_FALSE
5196 );
5197 RETURN;
5198
5199 END version_contract;
5200
5201 ------------------------------------------------------------------------------
5202 -- PROCEDURE check_and_update_date
5203 --
5204 -- This procedure checks for any term and/or start date modification
5205 -- during rebook process and updates original contract header date accordingly.
5206 -- This process has to be called before synchronization.
5207 --
5208 -- Calls:
5209 -- Called By:
5210 ------------------------------------------------------------------------------
5211 PROCEDURE check_and_update_date(
5212 x_return_status OUT NOCOPY VARCHAR2,
5213 x_msg_count OUT NOCOPY NUMBER,
5214 x_msg_data OUT NOCOPY VARCHAR2,
5215 p_orig_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
5216 p_rebook_chr_id IN OKC_K_HEADERS_V.ID%TYPE
5217 ) IS
5218 CURSOR term_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
5219 SELECT term_duration,
5220 start_date
5221 FROM okl_k_headers_full_v
5222 WHERE id = p_chr_id;
5223
5224 CURSOR date_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
5225 SELECT start_date,
5226 end_date,
5227 term_duration
5228 FROM okl_k_headers_full_v
5229 WHERE id = p_chr_id;
5230
5231 l_proc_name VARCHAR2(35) := 'CHECK_AND_UPDATE_DATE';
5232 l_chrv_rec chrv_rec_type;
5233 x_chrv_rec chrv_rec_type;
5234 l_khrv_rec khrv_rec_type;
5235 x_khrv_rec khrv_rec_type;
5236
5237 l_orig_term OKL_K_HEADERS.TERM_DURATION%TYPE;
5238 l_rebook_term OKL_K_HEADERS.TERM_DURATION%TYPE;
5239
5240 l_orig_start_date OKC_K_HEADERS_B.START_DATE%TYPE;
5241 l_rebook_start_date OKC_K_HEADERS_B.START_DATE%TYPE;
5242
5243 l_new_start_date OKC_K_HEADERS_V.START_DATE%TYPE;
5244 l_new_end_date OKC_K_HEADERS_V.END_DATE%TYPE;
5245 l_new_term OKL_K_HEADERS.TERM_DURATION%TYPE;
5246
5247 check_update_failed EXCEPTION;
5248
5249 BEGIN
5250 IF (G_DEBUG_ENABLED = 'Y') THEN
5251 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5252 END IF;
5253 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5254 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5255 END IF;
5256 x_return_status := OKC_API.G_RET_STS_SUCCESS;
5257
5258 l_orig_term := NULL;
5259 OPEN term_csr(p_orig_chr_id);
5260 FETCH term_csr INTO l_orig_term,
5261 l_orig_start_date;
5262 CLOSE term_csr;
5263
5264 IF l_orig_term IS NULL THEN
5265 RAISE check_update_failed;
5266 END IF;
5267
5268 l_rebook_term := NULL;
5269 OPEN term_csr(p_rebook_chr_id);
5270 FETCH term_csr INTO l_rebook_term,
5271 l_rebook_start_date;
5272 CLOSE term_csr;
5273
5274 IF l_rebook_term IS NULL THEN
5275 RAISE check_update_failed;
5276 END IF;
5277
5278 IF (l_orig_term <> l_rebook_term
5279 OR
5280 l_orig_start_date <> l_rebook_start_date) THEN
5281
5282 OPEN date_csr (p_rebook_chr_id);
5283 FETCH date_csr INTO l_new_start_date,
5284 l_new_end_date,
5285 l_new_term;
5286 CLOSE date_csr;
5287
5288 l_chrv_rec.id := p_orig_chr_id;
5289 l_chrv_rec.start_date := l_new_start_date;
5290 l_chrv_rec.end_date := l_new_end_date;
5291
5292 l_khrv_rec.id := p_orig_chr_id;
5293 l_khrv_rec.term_duration := l_new_term;
5294
5295 -- Update contrat header with new start and end date
5296 okl_contract_pub.update_contract_header(
5297 p_api_version => 1.0,
5298 p_init_msg_list => OKL_API.G_FALSE,
5299 x_return_status => x_return_status,
5300 x_msg_count => x_msg_count,
5301 x_msg_data => x_msg_data,
5302 p_restricted_update => OKL_API.G_FALSE,
5303 p_chrv_rec => l_chrv_rec,
5304 p_khrv_rec => l_khrv_rec,
5305 x_chrv_rec => x_chrv_rec,
5306 x_khrv_rec => x_khrv_rec
5307 );
5308
5309 IF x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR THEN
5310 RAISE check_update_failed;
5311 ELSIF x_return_status = OKC_API.G_RET_STS_ERROR THEN
5312 RAISE check_update_failed;
5313 END IF;
5314
5315 END IF;
5316
5317 EXCEPTION
5318 WHEN check_update_failed THEN
5319 x_return_status := OKL_API.G_RET_STS_ERROR;
5320 END check_and_update_date;
5321
5322 ------------------------------------------------------------------------------
5323 -- PROCEDURE sync_rebook_orig_contract
5324 --
5325 -- This procedure synchronize Rebook and Original Contract. It does following:
5326 -- 1. Synchronize Contract Header for any change
5327 -- 2. Synchronize Contract Lines for any change
5328 -- 3. Synchronize SLH and SLL for both Header and Line level
5329 -- 4. Change Rebook Contract Status to 'ABANDONED'
5330 -- 5. Version Original Contract
5331 -- 6. Synchronize Party role at contract header
5332 --
5333 -- Calls:
5334 -- Called By:
5335 ------------------------------------------------------------------------------
5336 PROCEDURE sync_rebook_orig_contract(
5337 p_api_version IN NUMBER,
5338 p_init_msg_list IN VARCHAR2, -- DEFAULT OKC_API.G_FALSE,
5339 x_return_status OUT NOCOPY VARCHAR2,
5340 x_msg_count OUT NOCOPY NUMBER,
5341 x_msg_data OUT NOCOPY VARCHAR2,
5342 p_rebook_chr_id IN OKC_K_HEADERS_V.ID%TYPE
5343 ) IS
5344 l_api_name VARCHAR2(35) := 'sync_rebook_orig_contract';
5345 l_proc_name VARCHAR2(35) := 'SYNC_REBOOK_ORIG_CONTRACT';
5346
5347 l_orig_chr_id OKC_K_HEADERS_V.ID%TYPE;
5348 l_khrv_rec khrv_rec_type;
5349 l_chrv_rec chrv_rec_type;
5350
5351 x_khrv_rec khrv_rec_type;
5352 x_chrv_rec chrv_rec_type;
5353
5354 l_tcnv_rec tcnv_rec_type;
5355 x_tcnv_rec tcnv_rec_type;
5356
5357 i NUMBER :=0;
5358 l_update_clev_tbl clev_tbl_type;
5359 l_update_klev_tbl klev_tbl_type;
5360 x_update_clev_tbl clev_tbl_type;
5361 x_update_klev_tbl klev_tbl_type;
5362
5363 CURSOR trx_csr(p_chr_id_new OKC_K_HEADERS_V.ID%TYPE) IS
5364 SELECT id
5365 FROM OKL_TRX_CONTRACTS
5366 WHERE khr_id_new = p_chr_id_new
5367 AND representation_type = 'PRIMARY'; -- MGAAP 7263041
5368
5369 BEGIN
5370 IF (G_DEBUG_ENABLED = 'Y') THEN
5371 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5372 END IF;
5373
5374 x_return_status := OKC_API.G_RET_STS_SUCCESS;
5375 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5376 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5377 END IF;
5378 -- call START_ACTIVITY to create savepoint, check compatibility
5379 -- and initialize message list
5380 x_return_status := OKC_API.START_ACTIVITY(
5381 p_api_name => l_api_name,
5382 p_pkg_name => G_PKG_NAME,
5383 p_init_msg_list => p_init_msg_list,
5384 l_api_version => p_api_version,
5385 p_api_version => p_api_version,
5386 p_api_type => G_API_TYPE,
5387 x_return_status => x_return_status);
5388
5389 -- check if activity started successfully
5390 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5391 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5392 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5393 RAISE OKC_API.G_EXCEPTION_ERROR;
5394 END IF;
5395
5396 --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5397
5398 get_orig_chr_id(
5399 x_return_status => x_return_status,
5400 p_chr_id => p_rebook_chr_id,
5401 x_orig_chr_id => l_orig_chr_id
5402 );
5403 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5404 okl_api.set_message(
5405 G_APP_NAME,
5406 G_LLA_NO_ORIG_REFERENCE
5407 );
5408 RAISE OKC_API.G_EXCEPTION_ERROR;
5409 END IF;
5410
5411 --
5412 -- Version the Original Contract
5413 --
5414
5415 version_contract(
5416 x_return_status => x_return_status,
5417 x_msg_count => x_msg_count,
5418 x_msg_data => x_msg_data,
5419 p_chr_id => l_orig_chr_id
5420 );
5421
5422 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5423 RAISE OKC_API.G_EXCEPTION_ERROR;
5424 END IF;
5425
5426 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5427 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Versioning of Contract');
5428 END IF;
5429
5430 -- Start Synchronzing Rebook and Original Contracts
5431
5432 --
5433 -- Fix Bug# 2691056
5434 -- Check for term modification on contract
5435 -- If so, update contract header with new start_date
5436 -- and end_date.
5437 -- This is to fix Line effectivity issue during rebook
5438 --
5439 -- Check for start date change is added along with term
5440 --
5441 check_and_update_date(
5442 x_return_status => x_return_status,
5443 x_msg_count => x_msg_count,
5444 x_msg_data => x_msg_data,
5445 p_orig_chr_id => l_orig_chr_id,
5446 p_rebook_chr_id => p_rebook_chr_id
5447 );
5448
5449 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5450 RAISE OKC_API.G_EXCEPTION_ERROR;
5451 END IF;
5452
5453 --
5454 -- Fix Bug# 3042346
5455 --
5456 sync_party_role(
5457 x_return_status => x_return_status,
5458 x_msg_count => x_msg_count,
5459 x_msg_data => x_msg_data,
5460 p_rebook_chr_id => p_rebook_chr_id,
5461 p_orig_chr_id => l_orig_chr_id
5462 );
5463
5464 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5465 RAISE OKC_API.G_EXCEPTION_ERROR;
5466 END IF;
5467
5468 --
5469 -- 1. Adjust Residual Value
5470 -- 2. Adjust Cost
5471 --
5472 sync_line_values(
5473 x_return_status => x_return_status,
5474 x_msg_count => x_msg_count,
5475 x_msg_data => x_msg_data,
5476 p_rebook_chr_id => p_rebook_chr_id,
5477 p_orig_chr_id => l_orig_chr_id,
5478 x_new_klev_tbl => l_update_klev_tbl,
5479 x_new_clev_tbl => l_update_clev_tbl
5480 );
5481
5482 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5483 RAISE OKC_API.G_EXCEPTION_ERROR;
5484 END IF;
5485
5486 -- 3. Change Due Date
5487 -- 4. Change Start Date
5488 -- 5. Adjust Rent
5489 -- 6. Adjust Cost
5490 -- 7. Extend Term
5491
5492 sync_header_values(
5493 x_return_status => x_return_status,
5494 x_msg_count => x_msg_count,
5495 x_msg_data => x_msg_data,
5496 p_rebook_chr_id => p_rebook_chr_id,
5497 p_orig_chr_id => l_orig_chr_id
5498 );
5499
5500 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5501 RAISE OKC_API.G_EXCEPTION_ERROR;
5502 END IF;
5503
5504 --4542290
5505 OKL_K_RATE_PARAMS_PVT.SYNC_RATE_PARAMS(
5506 p_orig_contract_id => p_rebook_chr_id,
5507 p_new_contract_id => l_orig_chr_id);
5508 --
5509 -- If a new line got created during rebook process
5510 -- update the line with start_date as transaction_date
5511 -- and sts_code as BOOKED
5512 --
5513
5514 IF l_update_clev_tbl.COUNT > 0 THEN
5515
5516 OKL_CONTRACT_PUB.update_contract_line(
5517 p_api_version => p_api_version,
5518 p_init_msg_list => OKC_API.G_FALSE,
5519 x_return_status => x_return_status,
5520 x_msg_count => x_msg_count,
5521 x_msg_data => x_msg_data,
5522 p_clev_tbl => l_update_clev_tbl,
5523 p_klev_tbl => l_update_klev_tbl,
5524 x_clev_tbl => x_update_clev_tbl,
5525 x_klev_tbl => x_update_klev_tbl);
5526
5527 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5528 RAISE OKC_API.G_EXCEPTION_ERROR;
5529 END IF;
5530
5531 END IF;
5532
5533 sync_slh_sll(
5534 x_return_status => x_return_status,
5535 x_msg_count => x_msg_count,
5536 x_msg_data => x_msg_data,
5537 p_for_line => 'N',
5538 p_rebook_chr_id => p_rebook_chr_id,
5539 p_orig_chr_id => l_orig_chr_id
5540 );
5541
5542 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5543 RAISE OKC_API.G_EXCEPTION_ERROR;
5544 END IF;
5545
5546 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5547 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After SYNC_SLH_SLL');
5548 END IF;
5549
5550 /* No subsidy impact 10/03/2003
5551 --
5552 -- Sync Subsidy lines
5553 --
5554 okl_subsidy_process_pvt.rebook_synchronize(
5555 p_api_version => p_api_version,
5556 p_init_msg_list => OKL_API.G_FALSE,
5557 x_return_status => x_return_status,
5558 x_msg_count => x_msg_count,
5559 x_msg_data => x_msg_data,
5560 p_rbk_chr_id => p_rebook_chr_id,
5561 p_orig_chr_id => l_orig_chr_id
5562 );
5563
5564 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5565 raise OKC_API.G_EXCEPTION_ERROR;
5566 END IF;
5567
5568 debug_message('After Sync Subsidy lines');
5569 */
5570
5571 /* Not required, as changes are not allowed during rebook
5572 sync_sales_tax(
5573 x_return_status => x_return_status,
5574 x_msg_count => x_msg_count,
5575 x_msg_data => x_msg_data,
5576 p_rebook_chr_id => p_rebook_chr_id,
5577 p_orig_chr_id => l_orig_chr_id
5578 );
5579
5580 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5581 RAISE OKC_API.G_EXCEPTION_ERROR;
5582 END IF;
5583 */
5584
5585 -- Sync passthru vendor and line parameters
5586 sync_passthru_detail(
5587 x_return_status => x_return_status,
5588 x_msg_count => x_msg_count,
5589 x_msg_data => x_msg_data,
5590 p_rebook_chr_id => p_rebook_chr_id,
5591 p_orig_chr_id => l_orig_chr_id
5592 );
5593
5594 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5595 RAISE OKC_API.G_EXCEPTION_ERROR;
5596 END IF;
5597
5598 --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5599 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5600 x_msg_data => x_msg_data);
5601
5602 EXCEPTION
5603 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5604 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5605 p_api_name => l_api_name,
5606 p_pkg_name => G_PKG_NAME,
5607 p_exc_name => 'OKC_API.G_RET_STS_ERROR',
5608 x_msg_count => x_msg_count,
5609 x_msg_data => x_msg_data,
5610 p_api_type => G_API_TYPE);
5611
5612 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5613 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5614 p_api_name => l_api_name,
5615 p_pkg_name => G_PKG_NAME,
5616 p_exc_name => 'OKC_API.G_RET_STS_UNEXP_ERROR',
5617 x_msg_count => x_msg_count,
5618 x_msg_data => x_msg_data,
5619 p_api_type => G_API_TYPE);
5620
5621 WHEN OTHERS THEN
5622 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5623 p_api_name => l_api_name,
5624 p_pkg_name => G_PKG_NAME,
5625 p_exc_name => 'OTHERS',
5626 x_msg_count => x_msg_count,
5627 x_msg_data => x_msg_data,
5628 p_api_type => G_API_TYPE);
5629
5630 END sync_rebook_orig_contract;
5631
5632 ------------------------------------------------------------------------------
5633 -- PROCEDURE create_txn_contract
5634 --
5635 -- This procedure creates Rebook Contract and Create a Transaction for that
5636 --
5637 -- Calls:
5638 -- Called By:
5639 ------------------------------------------------------------------------------
5640 PROCEDURE create_txn_contract(
5641 p_api_version IN NUMBER,
5642 p_init_msg_list IN VARCHAR2, -- DEFAULT OKC_API.G_FALSE,
5643 x_return_status OUT NOCOPY VARCHAR2,
5644 x_msg_count OUT NOCOPY NUMBER,
5645 x_msg_data OUT NOCOPY VARCHAR2,
5646 p_from_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
5647 p_rebook_reason_code IN VARCHAR2,
5648 p_rebook_description IN VARCHAR2,
5649 p_trx_date IN DATE,
5650 x_tcnv_rec OUT NOCOPY tcnv_rec_type,
5651 x_rebook_chr_id OUT NOCOPY OKC_K_HEADERS_V.ID%TYPE
5652 ) IS
5653
5654 l_api_name VARCHAR2(35) := 'create_txn_contract';
5655 l_proc_name VARCHAR2(35) := 'CREATE_TXN_CONTRACT';
5656 l_api_version CONSTANT NUMBER := 1;
5657
5658 l_tcnv_rec tcnv_rec_type;
5659 l_out_tcnv_rec tcnv_rec_type;
5660
5661 /*
5662 -- mvasudev, 08/23/2004
5663 -- Added PROCEDURE to enable Business Event
5664 */
5665 PROCEDURE raise_business_event(
5666 p_chr_id IN NUMBER
5667 ,p_new_chr_id IN NUMBER
5668 ,x_return_status OUT NOCOPY VARCHAR2
5669 )
5670 IS
5671
5672 l_parameter_list wf_parameter_list_t;
5673 BEGIN
5674
5675 wf_event.AddParameterToList(G_WF_ITM_SRC_CONTRACT_ID,p_chr_id,l_parameter_list);
5676 wf_event.AddParameterToList(G_WF_ITM_REVISION_DATE,fnd_date.date_to_canonical(p_trx_date),l_parameter_list);
5677 wf_event.AddParameterToList(G_WF_ITM_DEST_CONTRACT_ID,p_new_chr_id,l_parameter_list);
5678
5679 OKL_WF_PVT.raise_event (p_api_version => p_api_version,
5680 p_init_msg_list => p_init_msg_list,
5681 x_return_status => x_return_status,
5682 x_msg_count => x_msg_count,
5683 x_msg_data => x_msg_data,
5684 p_event_name => G_WF_EVT_KHR_REBOOK_REQUESTED,
5685 p_parameters => l_parameter_list);
5686
5687
5688
5689 EXCEPTION
5690 WHEN OTHERS THEN
5691 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
5692 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5693 END raise_business_event;
5694
5695
5696 /*
5697 -- mvasudev, 08/23/2004
5698 -- END, PROCEDURE to enable Business Event
5699 */
5700
5701
5702 BEGIN -- main process begins here
5703
5704 x_return_status := OKC_API.G_RET_STS_SUCCESS;
5705 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5706 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5707 END IF;
5708 -- call START_ACTIVITY to create savepoint, check compatibility
5709 -- and initialize message list
5710 x_return_status := OKC_API.START_ACTIVITY(
5711 p_api_name => l_api_name,
5712 p_pkg_name => G_PKG_NAME,
5713 p_init_msg_list => p_init_msg_list,
5714 l_api_version => l_api_version,
5715 p_api_version => p_api_version,
5716 p_api_type => G_API_TYPE,
5717 x_return_status => x_return_status);
5718
5719 -- check if activity started successfully
5720 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5721 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5722 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5723 RAISE OKC_API.G_EXCEPTION_ERROR;
5724 END IF;
5725
5726 --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5727 -- Create Rebook Contract
5728 --
5729 create_rebook_contract(
5730 p_api_version => p_api_version,
5731 p_init_msg_list => p_init_msg_list,
5732 x_return_status => x_return_status,
5733 x_msg_count => x_msg_count,
5734 x_msg_data => x_msg_data,
5735 p_from_chr_id => p_from_chr_id,
5736 x_rebook_chr_id => x_rebook_chr_id,
5737 p_rbk_date => p_trx_date
5738 );
5739
5740 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5741 RAISE OKC_API.G_EXCEPTION_ERROR;
5742 END IF;
5743
5744 -- Create Transaction for the rebook-ed contract
5745 okl_transaction_pvt.create_transaction(
5746 p_api_version => p_api_version,
5747 p_init_msg_list => p_init_msg_list,
5748 x_return_status => x_return_status,
5749 x_msg_count => x_msg_count,
5750 x_msg_data => x_msg_data,
5751 p_chr_id => p_from_chr_id,
5752 p_new_chr_id => x_rebook_chr_id,
5753 p_reason_code => p_rebook_reason_code,
5754 p_description => p_rebook_description,
5755 p_trx_date => p_trx_date,
5756 p_trx_type => 'REBOOK',
5757 x_tcnv_rec => x_tcnv_rec
5758 );
5759
5760 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5761 RAISE OKC_API.G_EXCEPTION_ERROR;
5762 END IF;
5763
5764 /*
5765 -- mvasudev, 08/23/2004
5766 -- Code change to enable Business Event
5767 */
5768 raise_business_event(p_chr_id => p_from_chr_id
5769 ,p_new_chr_id => x_rebook_chr_id
5770 ,x_return_status => x_return_status);
5771 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5772 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5773 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5774 RAISE OKL_API.G_EXCEPTION_ERROR;
5775 END IF;
5776
5777 /*
5778 -- mvasudev, 08/23/2004
5779 -- END, Code change to enable Business Event
5780 */
5781
5782 --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5783 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5784 x_msg_data => x_msg_data);
5785
5786 EXCEPTION
5787 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5788 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5789 p_api_name => l_api_name,
5790 p_pkg_name => G_PKG_NAME,
5791 p_exc_name => 'OKC_API.G_RET_STS_ERROR',
5792 x_msg_count => x_msg_count,
5793 x_msg_data => x_msg_data,
5794 p_api_type => G_API_TYPE);
5795
5796 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5797 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5798 p_api_name => l_api_name,
5799 p_pkg_name => G_PKG_NAME,
5800 p_exc_name => 'OKC_API.G_RET_STS_UNEXP_ERROR',
5801 x_msg_count => x_msg_count,
5802 x_msg_data => x_msg_data,
5803 p_api_type => G_API_TYPE);
5804
5805 WHEN OTHERS THEN
5806 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5807 p_api_name => l_api_name,
5808 p_pkg_name => G_PKG_NAME,
5809 p_exc_name => 'OTHERS',
5810 x_msg_count => x_msg_count,
5811 x_msg_data => x_msg_data,
5812 p_api_type => G_API_TYPE);
5813
5814 END create_txn_contract;
5815
5816 ------------------------------------------------------------------------------
5817 -- PROCEDURE process_securitization_stream
5818 --
5819 -- This procedure process securitization stream after rebook process completes.
5820 -- This process must be called after rebook stream is synchronized
5821 -- back to original contract.
5822 --
5823 -- Calls:
5824 -- Called By: sync_rebook_stream
5825 ------------------------------------------------------------------------------
5826 PROCEDURE process_securitization_stream(
5827 x_return_status OUT NOCOPY VARCHAR2,
5828 x_msg_count OUT NOCOPY NUMBER,
5829 x_msg_data OUT NOCOPY VARCHAR2,
5830 p_orig_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
5831 p_rebook_chr_id IN OKC_K_HEADERS_V.ID%TYPE
5832 ) IS
5833
5834 l_api_name VARCHAR2(35) := 'process_securitization_stream';
5835 l_proc_name VARCHAR2(35) := 'PROCESS_SECURITIZATION_STREAM';
5836 l_api_version CONSTANT NUMBER := 1;
5837
5838 CURSOR txn_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
5839 SELECT date_transaction_occurred
5840 FROM okl_trx_contracts
5841 WHERE khr_id = p_chr_id
5842 AND tcn_type = 'TRBK'
5843 AND tsu_code = 'ENTERED'
5844 AND representation_type = 'PRIMARY'; -- MGAAP 7263041
5845
5846 CURSOR disb_strm_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
5847 SELECT strm.id
5848 FROM okl_streams strm,
5849 okl_strm_type_v TYPE
5850 WHERE TYPE.id = strm.sty_id
5851 AND TYPE.stream_type_subclass = 'INVESTOR_DISBURSEMENT'
5852 AND strm.khr_id = p_chr_id
5853 AND strm.say_code = 'CURR';
5854
5855 CURSOR accu_strm_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
5856 SELECT strm.id
5857 FROM okl_streams strm,
5858 okl_strm_type_v TYPE
5859 WHERE TYPE.id = strm.sty_id
5860 /*
5861 AND TYPE.name IN (
5862 'INVESTOR RENTAL ACCRUAL',
5863 'INVESTOR PRE-TAX INCOME',
5864 'INVESTOR INTEREST INCOME',
5865 'INVESTOR VARIABLE INTEREST'
5866 )
5867 */
5868 AND TYPE.stream_type_purpose IN (
5869 'INVESTOR_RENTAL_ACCRUAL',
5870 'INVESTOR_PRE_TAX_INCOME',
5871 'INVESTOR_INTEREST_INCOME',
5872 'INVESTOR_VARIABLE_INTEREST'
5873 )
5874 AND strm.khr_id = p_chr_id
5875 AND strm.say_code = 'CURR';
5876
5877 i NUMBER := 0;
5878 l_disb_strm_tbl stmv_tbl_type;
5879 x_disb_strm_tbl stmv_tbl_type;
5880
5881 l_accu_strm_tbl stmv_tbl_type;
5882 x_accu_strm_tbl stmv_tbl_type;
5883
5884 l_rebook_date DATE;
5885 l_contract_secu VARCHAR2(1);
5886 l_inv_agmt_chr_id_tbl inv_agmt_chr_id_tbl_type;
5887
5888 secu_failed EXCEPTION;
5889
5890 BEGIN
5891 IF (G_DEBUG_ENABLED = 'Y') THEN
5892 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5893 END IF;
5894
5895 x_return_status := OKC_API.G_RET_STS_SUCCESS;
5896 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5897 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
5898 END IF;
5899
5900 --
5901 -- Check for Securitized Contract
5902 --
5903 FOR txn_rec IN txn_csr (p_orig_chr_id)
5904 LOOP
5905 l_rebook_date := txn_rec.date_transaction_occurred;
5906 END LOOP;
5907
5908 okl_securitization_pvt.check_khr_securitized(
5909 p_api_version => 1.0,
5910 p_init_msg_list => OKC_API.G_FALSE,
5911 x_return_status => x_return_status,
5912 x_msg_count => x_msg_count,
5913 x_msg_data => x_msg_data,
5914 p_khr_id => p_orig_chr_id,
5915 p_effective_date => l_rebook_date,
5916 x_value => l_contract_secu,
5917 x_inv_agmt_chr_id_tbl => l_inv_agmt_chr_id_tbl
5918 );
5919
5920 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5921 RAISE secu_failed;
5922 END IF;
5923
5924 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5925 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Contract Securitized? '||l_contract_secu);
5926 END IF;
5927
5928 IF (l_contract_secu <> OKL_API.G_TRUE) THEN -- Do not proceed, return success
5929 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5930 RETURN;
5931 END IF;
5932
5933 --
5934 -- HISTorize disbursement streams, with subclass = 'INVESTOR_DISBURSEMENT'
5935 --
5936 FOR disb_strm_rec IN disb_strm_csr (p_orig_chr_id)
5937 LOOP
5938 i := disb_strm_csr%ROWCOUNT;
5939 l_disb_strm_tbl(i).id := disb_strm_rec.id;
5940 l_disb_strm_tbl(i).say_code := 'HIST';
5941 l_disb_strm_tbl(i).active_yn := 'N';
5942 l_disb_strm_tbl(i).date_history := SYSDATE;
5943 END LOOP;
5944
5945 IF (l_disb_strm_tbl.COUNT > 0) THEN
5946 okl_streams_pub.update_streams(
5947 p_api_version => 1.0,
5948 p_init_msg_list => OKC_API.G_FALSE,
5949 x_return_status => x_return_status,
5950 x_msg_count => x_msg_count,
5951 x_msg_data => x_msg_data,
5952 p_stmv_tbl => l_disb_strm_tbl,
5953 x_stmv_tbl => x_disb_strm_tbl
5954 );
5955
5956 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5957 RAISE secu_failed;
5958 END IF;
5959 END IF;
5960
5961 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5962 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After disbursment HIST streams');
5963 END IF;
5964 --
5965 -- Create Pool transaction after rebook
5966 --
5967 okl_securitization_pvt.modify_pool_contents(
5968 p_api_version => 1.0,
5969 p_init_msg_list => OKC_API.G_FALSE,
5970 x_return_status => x_return_status,
5971 x_msg_count => x_msg_count,
5972 x_msg_data => x_msg_data,
5973 p_transaction_reason => OKL_SECURITIZATION_PVT.G_TRX_REASON_CONTRACT_REBOOK,
5974 p_khr_id => p_orig_chr_id,
5975 p_transaction_date => l_rebook_date,
5976 p_effective_date => l_rebook_date
5977 );
5978
5979 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5980 RAISE secu_failed;
5981 END IF;
5982 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5983 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Modify pool contents');
5984 END IF;
5985
5986 -- Bug# 4775555: Start
5987 -- Accrual Streams will now be Historized in OKL_ACCRUAL_SEC_PVT.CREATE_STREAMS
5988 -- This API will create the new accrual streams, link the old and new streams
5989 -- and then Historize the old streams
5990 /*
5991 --
5992 -- HISTorize accrual streams
5993 --
5994 FOR accu_strm_rec IN accu_strm_csr (p_orig_chr_id)
5995 LOOP
5996 i := accu_strm_csr%ROWCOUNT;
5997 l_accu_strm_tbl(i).id := accu_strm_rec.id;
5998 l_accu_strm_tbl(i).say_code := 'HIST';
5999 l_accu_strm_tbl(i).active_yn := 'N';
6000 END LOOP;
6001
6002 IF (l_accu_strm_tbl.COUNT > 0) THEN
6003 okl_streams_pub.update_streams(
6004 p_api_version => 1.0,
6005 p_init_msg_list => OKC_API.G_FALSE,
6006 x_return_status => x_return_status,
6007 x_msg_count => x_msg_count,
6008 x_msg_data => x_msg_data,
6009 p_stmv_tbl => l_accu_strm_tbl,
6010 x_stmv_tbl => x_accu_strm_tbl
6011 );
6012
6013 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6014 RAISE secu_failed;
6015 END IF;
6016 END IF;
6017
6018 debug_message('After accrual HIST streams');
6019 */
6020 -- Bug# 4775555: End
6021
6022 --
6023 -- Regenerate disbursement streams
6024 --
6025 okl_stream_generator_pvt.create_disb_streams(
6026 p_api_version => 1.0,
6027 p_init_msg_list => OKC_API.G_FALSE,
6028 x_return_status => x_return_status,
6029 x_msg_count => x_msg_count,
6030 x_msg_data => x_msg_data,
6031 p_contract_id => p_orig_chr_id
6032 );
6033
6034 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6035 RAISE secu_failed;
6036 END IF;
6037 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6038 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After regerating disb. streams');
6039 END IF;
6040
6041 -- Bug# 4775555
6042 --
6043 -- Regenerate Present Value Disbursement streams
6044 --
6045 okl_stream_generator_pvt.create_pv_streams(
6046 p_api_version => 1.0,
6047 p_init_msg_list => OKC_API.G_FALSE,
6048 x_return_status => x_return_status,
6049 x_msg_count => x_msg_count,
6050 x_msg_data => x_msg_data,
6051 p_contract_id => p_orig_chr_id
6052 );
6053
6054 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6055 RAISE secu_failed;
6056 END IF;
6057 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6058 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After regerating Present Value Disbursement streams');
6059 END IF;
6060
6061 --
6062 -- Generate Investor accrual streams
6063 --
6064 OKL_ACCRUAL_SEC_PVT.CREATE_STREAMS(
6065 p_api_version => 1.0,
6066 p_init_msg_list => OKL_API.G_FALSE,
6067 x_return_status => x_return_status,
6068 x_msg_count => x_msg_count,
6069 x_msg_data => x_msg_data,
6070 p_khr_id => p_orig_chr_id
6071 );
6072
6073 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6074 RAISE secu_failed;
6075 END IF;
6076 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6077 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After regerating Investor accrual streams');
6078 END IF;
6079
6080 RETURN;
6081
6082 EXCEPTION
6083 WHEN secu_failed THEN
6084 NULL; -- excception is handled by caller
6085
6086 WHEN OTHERS THEN
6087 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
6088 p_api_name => l_api_name,
6089 p_pkg_name => G_PKG_NAME,
6090 p_exc_name => 'OTHERS',
6091 x_msg_count => x_msg_count,
6092 x_msg_data => x_msg_data,
6093 p_api_type => G_API_TYPE);
6094
6095 END process_securitization_stream;
6096
6097 ------------------------------------------------------------------------------
6098 -- PROCEDURE sync_rebook_stream
6099 --
6100 -- This procedure Synchronizes between Rebooked Contract Stream and Orginal Stream
6101 --
6102 -- Calls:
6103 -- Called By:
6104 ------------------------------------------------------------------------------
6105
6106 PROCEDURE sync_rebook_stream(
6107 p_api_version IN NUMBER,
6108 p_init_msg_list IN VARCHAR2, -- DEFAULT OKC_API.G_FALSE,
6109 x_return_status OUT NOCOPY VARCHAR2,
6110 x_msg_count OUT NOCOPY NUMBER,
6111 x_msg_data OUT NOCOPY VARCHAR2,
6112 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
6113 p_stream_status IN OKL_STREAMS.SAY_CODE%TYPE
6114 ) IS
6115
6116 l_api_name VARCHAR2(35) := 'sync_rebook_stream';
6117 l_proc_name VARCHAR2(35) := 'SYNC_REBOOK_STREAM';
6118 l_api_version CONSTANT NUMBER := 1;
6119
6120 l_orig_chr_id NUMBER;
6121
6122 -- Bug# 4775555: Start
6123 cursor l_rbk_trx_csr(p_chr_id IN NUMBER) is
6124 SELECT ktrx.date_transaction_occurred,ktrx.id,
6125 khr.multi_gaap_yn, pdt.reporting_pdt_id -- MGAAP 7263041
6126 FROM okc_k_headers_b CHR,
6127 okl_trx_contracts ktrx,
6128 okl_k_headers khr,
6129 okl_products pdt
6130 WHERE ktrx.khr_id_new = chr.id
6131 AND ktrx.tsu_code = 'ENTERED'
6132 AND ktrx.rbr_code is NOT NULL
6133 AND ktrx.tcn_type = 'TRBK'
6134 AND CHR.id = p_chr_id
6135 AND CHR.ORIG_SYSTEM_SOURCE_CODE = 'OKL_REBOOK'
6136 -- MGAAP start 7263041
6137 AND ktrx.representation_type = 'PRIMARY'
6138 AND chr.id = khr.id
6139 AND khr.pdt_id = pdt.id;
6140 -- MGAAP end 7263041
6141
6142 l_rbk_trx_rec l_rbk_trx_csr%ROWTYPE;
6143 l_inv_accrual_rec OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type;
6144 l_inv_stream_tbl OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type;
6145 lx_trx_number OKL_TRX_CONTRACTS.trx_number%TYPE := null; -- MGAAP 7263041
6146 -- Bug# 4775555: End
6147
6148 BEGIN
6149 IF (G_DEBUG_ENABLED = 'Y') THEN
6150 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
6151 END IF;
6152
6153 x_return_status := OKC_API.G_RET_STS_SUCCESS;
6154 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6155 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
6156 END IF;
6157 -- call START_ACTIVITY to create savepoint, check compatibility
6158 -- and initialize message list
6159 x_return_status := OKC_API.START_ACTIVITY(
6160 p_api_name => l_api_name,
6161 p_pkg_name => G_PKG_NAME,
6162 p_init_msg_list => p_init_msg_list,
6163 l_api_version => l_api_version,
6164 p_api_version => p_api_version,
6165 p_api_type => G_API_TYPE,
6166 x_return_status => x_return_status);
6167
6168 -- check if activity started successfully
6169 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6170 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6171 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6172 RAISE OKC_API.G_EXCEPTION_ERROR;
6173 END IF;
6174 --**********************************************************
6175
6176 get_orig_chr_id(
6177 x_return_status => x_return_status,
6178 p_chr_id => p_chr_id,
6179 x_orig_chr_id => l_orig_chr_id
6180 );
6181 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6182 okl_api.set_message(
6183 G_APP_NAME,
6184 G_LLA_NO_ORIG_REFERENCE
6185 );
6186 RAISE OKC_API.G_EXCEPTION_ERROR;
6187 END IF;
6188
6189 /*
6190 * Bug# , 03/12/2003
6191 * Code commented as HISTorization of stream
6192 * is done during stream synchronization process later
6193 * at copy_rebook_stream() procedure
6194 */
6195 /*
6196 -- Change status of Original Stream to 'HIST'
6197 change_stream_status(
6198 x_return_status => x_return_status,
6199 x_msg_count => x_msg_count,
6200 x_msg_data => x_msg_data,
6201 p_chr_id => l_orig_chr_id,
6202 p_status => 'HIST',
6203 p_active_yn => 'N'
6204 );
6205
6206 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6207 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6208 END IF;
6209
6210 debug_message('Change Status: '||x_return_status);
6211 */
6212
6213 -- Copy Rebooked Streams under Original Contract
6214 copy_rebook_stream(
6215 x_return_status => x_return_status,
6216 x_msg_count => x_msg_count,
6217 x_msg_data => x_msg_data,
6218 p_orig_chr_id => l_orig_chr_id,
6219 p_rebook_chr_id => p_chr_id
6220 );
6221
6222 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6223 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6224 END IF;
6225
6226 -- Change status of Rebooked Stream to 'HIST'
6227 change_stream_status(
6228 x_return_status => x_return_status,
6229 x_msg_count => x_msg_count,
6230 x_msg_data => x_msg_data,
6231 p_chr_id => p_chr_id,
6232 p_status => 'HIST',
6233 p_active_yn => 'N'
6234 );
6235
6236 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6237 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6238 END IF;
6239
6240 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6241 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Change Status 2: '||x_return_status);
6242 END IF;
6243
6244 --
6245 -- Securitization stream processing
6246 --
6247 process_securitization_stream(
6248 x_return_status => x_return_status,
6249 x_msg_count => x_msg_count,
6250 x_msg_data => x_msg_data,
6251 p_orig_chr_id => l_orig_chr_id,
6252 p_rebook_chr_id => p_chr_id
6253 );
6254
6255 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6256 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6257 END IF;
6258
6259 -- Bug# 4775555: Start
6260 --
6261 -- Create Investor Disbursement Adjustment
6262 --
6263 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6264 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before call create_inv_disb_adjustment');
6265 END IF;
6266 create_inv_disb_adjustment(
6267 p_api_version => p_api_version,
6268 p_init_msg_list => p_init_msg_list,
6269 x_return_status => x_return_status,
6270 x_msg_count => x_msg_count,
6271 x_msg_data => x_msg_data,
6272 p_orig_khr_id => l_orig_chr_id
6273 );
6274 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6275 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After call create_inv_disb_adjustment'||x_return_status);
6276 END IF;
6277
6278 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6279 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6280 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6281 RAISE OKC_API.G_EXCEPTION_ERROR;
6282 END IF;
6283
6284 --get rebook transaction
6285 OPEN l_rbk_trx_csr (p_chr_id => p_chr_id);
6286 FETCH l_rbk_trx_csr INTO l_rbk_trx_rec;
6287 CLOSE l_rbk_trx_csr;
6288
6289 --
6290 -- Create Investor Accrual Adjustment
6291 --
6292 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS; -- MGAAP 7263041
6293 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6294 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before call calc_inv_acc_adjustment');
6295 END IF;
6296 calc_inv_acc_adjustment(
6297 p_api_version => p_api_version,
6298 p_init_msg_list => p_init_msg_list,
6299 x_return_status => x_return_status,
6300 x_msg_count => x_msg_count,
6301 x_msg_data => x_msg_data,
6302 p_orig_khr_id => l_orig_chr_id,
6303 p_trx_id => l_rbk_trx_rec.id,
6304 p_trx_date => sysdate,
6305 x_inv_accrual_rec => l_inv_accrual_rec,
6306 x_inv_stream_tbl => l_inv_stream_tbl
6307 );
6308 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6309 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After call calc_inv_acc_adjustment'||x_return_status);
6310 END IF;
6311
6312 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6313 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6314 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6315 RAISE OKC_API.G_EXCEPTION_ERROR;
6316 END IF;
6317
6318 IF (l_inv_stream_tbl.COUNT > 0) THEN
6319 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6320 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before call okl_generate_accruals_pvt.adjust_accruals');
6321 END IF;
6322 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
6323 p_api_version => p_api_version,
6324 p_init_msg_list => p_init_msg_list,
6325 x_return_status => x_return_status,
6326 x_msg_count => x_msg_count,
6327 x_msg_data => x_msg_data ,
6328 x_trx_number => lx_trx_number,
6329 p_accrual_rec => l_inv_accrual_rec,
6330 p_stream_tbl => l_inv_stream_tbl);
6331 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6332 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After call okl_generate_accruals_pvt.adjust_accruals'||x_return_status);
6333 END IF;
6334
6335 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
6336 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
6337 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
6338 RAISE Okl_Api.G_EXCEPTION_ERROR;
6339 END IF;
6340 END IF;
6341 -- Bug# 4775555: End
6342
6343 -- MGAAP start 7263041
6344
6345 IF (l_rbk_trx_rec.multi_gaap_yn = 'Y') THEN
6346
6347 OKL_STREAMS_SEC_PVT.SET_REPO_STREAMS;
6348
6349 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6350 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before call calc_inv_acc_adjustment for SECONDARY');
6351 END IF;
6352 calc_inv_acc_adjustment(
6353 p_api_version => p_api_version,
6354 p_init_msg_list => p_init_msg_list,
6355 x_return_status => x_return_status,
6356 x_msg_count => x_msg_count,
6357 x_msg_data => x_msg_data,
6358 p_orig_khr_id => l_orig_chr_id,
6359 p_trx_id => l_rbk_trx_rec.id,
6360 p_trx_date => sysdate,
6361 x_inv_accrual_rec => l_inv_accrual_rec,
6362 x_inv_stream_tbl => l_inv_stream_tbl,
6363 p_product_id => l_rbk_trx_rec.reporting_pdt_id
6364 );
6365 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS;
6366 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6367 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After call calc_inv_acc_adjustment'||x_return_status);
6368 END IF;
6369
6370 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6371 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6372 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6373 RAISE OKC_API.G_EXCEPTION_ERROR;
6374 END IF;
6375
6376 IF (l_inv_stream_tbl.COUNT > 0) THEN
6377 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6378 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before call okl_generate_accruals_pvt.adjust_accruals');
6379 END IF;
6380
6381 l_inv_accrual_rec.trx_number := lx_trx_number;
6382
6383 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
6384 p_api_version => p_api_version,
6385 p_init_msg_list => p_init_msg_list,
6386 x_return_status => x_return_status,
6387 x_msg_count => x_msg_count,
6388 x_msg_data => x_msg_data ,
6389 x_trx_number => lx_trx_number,
6390 p_accrual_rec => l_inv_accrual_rec,
6391 p_stream_tbl => l_inv_stream_tbl,
6392 p_representation_type => 'SECONDARY');
6393 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6394 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After call okl_generate_accruals_pvt.adjust_accruals'||x_return_status);
6395 END IF;
6396
6397 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
6398 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
6399 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
6400 RAISE Okl_Api.G_EXCEPTION_ERROR;
6401 END IF;
6402 END IF;
6403
6404 END IF;
6405 -- MGAAP end 7263041
6406
6407 --**********************************************************
6408 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
6409 x_msg_data => x_msg_data);
6410
6411 EXCEPTION
6412 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6413 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
6414 p_api_name => l_api_name,
6415 p_pkg_name => G_PKG_NAME,
6416 p_exc_name => 'OKC_API.G_RET_STS_ERROR',
6417 x_msg_count => x_msg_count,
6418 x_msg_data => x_msg_data,
6419 p_api_type => G_API_TYPE);
6420
6421 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6422 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
6423 p_api_name => l_api_name,
6424 p_pkg_name => G_PKG_NAME,
6425 p_exc_name => 'OKC_API.G_RET_STS_UNEXP_ERROR',
6426 x_msg_count => x_msg_count,
6427 x_msg_data => x_msg_data,
6428 p_api_type => G_API_TYPE);
6429
6430 WHEN OTHERS THEN
6431 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
6432 p_api_name => l_api_name,
6433 p_pkg_name => G_PKG_NAME,
6434 p_exc_name => 'OTHERS',
6435 x_msg_count => x_msg_count,
6436 x_msg_data => x_msg_data,
6437 p_api_type => G_API_TYPE);
6438
6439 END sync_rebook_stream;
6440
6441 ------------------------------------------------------------------------------
6442 -- PROCEDURE create_rebook_contract
6443 --
6444 -- This procedure creates a Rebook Contract from Original Contract provieded as parameter
6445 -- p_from_chr_id and set the status of new contract as 'ENTERED'.
6446 -- This process does not touch/chnage the original contract
6447 --
6448 -- Calls:
6449 -- Called By:
6450 ------------------------------------------------------------------------------
6451
6452 PROCEDURE create_rebook_contract(
6453 p_api_version IN NUMBER,
6454 p_init_msg_list IN VARCHAR2, -- DEFAULT OKC_API.G_FALSE,
6455 x_return_status OUT NOCOPY VARCHAR2,
6456 x_msg_count OUT NOCOPY NUMBER,
6457 x_msg_data OUT NOCOPY VARCHAR2,
6458 p_from_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
6459 x_rebook_chr_id OUT NOCOPY OKC_K_HEADERS_V.ID%TYPE,
6460 p_rbk_date IN DATE DEFAULT NULL
6461 ) IS
6462
6463 l_api_name VARCHAR2(35) := 'create_rebook_contract';
6464 l_proc_name VARCHAR2(35) := 'CREATE_REBOOK_CONTRACT';
6465 l_api_version CONSTANT NUMBER := 1;
6466 x_chr_id OKC_K_HEADERS_V.ID%TYPE;
6467 l_seq_no NUMBER;
6468 l_orig_contract_number OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE;
6469 l_orig_sts_code OKC_K_HEADERS_V.sts_code%TYPE; --| 24-Mar-08 cklee Bug# 6801137 -- Added validation logic |
6470 l_new_contract_number OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE;
6471 l_khrv_rec khrv_rec_type;
6472 x_khrv_rec khrv_rec_type;
6473 l_chrv_rec chrv_rec_type;
6474 x_chrv_rec chrv_rec_type;
6475 x_cle_id OKC_K_LINES_V.ID%TYPE;
6476 l_from_cle_id_tbl okl_kle_pvt.klev_tbl_type;
6477 x_cle_id_tbl okl_kle_pvt.klev_tbl_type;
6478 i NUMBER := 1;
6479
6480 --start:| 24-Mar-08 cklee Bug# 6801137 -- Added validation logic |
6481 /* CURSOR orig_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
6482 SELECT contract_number
6483 FROM okc_k_headers_v
6484 WHERE id = p_chr_id;
6485 */
6486 CURSOR orig_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
6487 SELECT contract_number, sts_code
6488 FROM okc_k_headers_v
6489 WHERE id = p_chr_id;
6490 --end:| 24-Mar-08 cklee Bug# 6801137 -- Added validation logic |
6491
6492 CURSOR top_line_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
6493 SELECT id
6494 FROM okc_k_lines_v
6495 WHERE chr_id = p_chr_id;
6496 --AND lse_id = 33; -- ??? Temporary , Fin Asset Line Only
6497
6498 l_orig_chr_id NUMBER;
6499
6500 BEGIN
6501 IF (G_DEBUG_ENABLED = 'Y') THEN
6502 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
6503 END IF;
6504
6505 x_return_status := OKC_API.G_RET_STS_SUCCESS;
6506 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6507 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
6508 END IF;
6509 -- call START_ACTIVITY to create savepoint, check compatibility
6510 -- and initialize message list
6511 x_return_status := OKC_API.START_ACTIVITY(
6512 p_api_name => l_api_name,
6513 p_pkg_name => G_PKG_NAME,
6514 p_init_msg_list => p_init_msg_list,
6515 l_api_version => l_api_version,
6516 p_api_version => p_api_version,
6517 p_api_type => G_API_TYPE,
6518 x_return_status => x_return_status);
6519
6520 -- check if activity started successfully
6521 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6522 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6523 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6524 RAISE OKC_API.G_EXCEPTION_ERROR;
6525 END IF;
6526 --**********************************************************
6527 -- Get Sequence Number to generate Contract Number
6528 SELECT okl_rbk_seq.NEXTVAL
6529 INTO l_seq_no
6530 FROM DUAL;
6531
6532 -- Get Contract Number from Original Contract
6533 OPEN orig_csr(p_from_chr_id);
6534 FETCH orig_csr INTO l_orig_contract_number, l_orig_sts_code;--:| 24-Mar-08 cklee Bug# 6801137 -- Added validation logic |
6535
6536 IF orig_csr%NOTFOUND THEN
6537 okl_api.set_message(
6538 G_APP_NAME,
6539 G_LLA_CHR_ID
6540 );
6541 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6542 --start:| 24-Mar-08 cklee Bug# 6801137 -- Added validation logic |
6543 ELSE
6544 IF l_orig_sts_code <> 'BOOKED' THEN
6545 okl_api.set_message(
6546 G_APP_NAME,
6547 'OKL_LLA_REV_ONLY_BOOKED'
6548 );
6549 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6550 END IF;
6551 --end:| 24-Mar-08 cklee Bug# 6801137 -- Added validation logic |
6552
6553 END IF;
6554
6555 CLOSE orig_csr;
6556 l_new_contract_number := l_orig_contract_number||'-RB'||l_seq_no;
6557
6558 --
6559 -- Copy Contract to Create Rebook Contract
6560 --
6561 okl_copy_contract_pub.copy_lease_contract_new(
6562 p_api_version => 1.0,
6563 p_init_msg_list => OKC_API.G_FALSE,
6564 x_return_status => x_return_status,
6565 x_msg_count => x_msg_count,
6566 x_msg_data => x_msg_data,
6567 p_chr_id => p_from_chr_id,
6568 p_contract_number => l_new_contract_number,
6569 p_contract_number_modifier => NULL,
6570 p_renew_ref_yn => 'N',
6571 p_trans_type => 'CRB',
6572 x_chr_id => x_chr_id,
6573 p_rbk_date => p_rbk_date
6574 );
6575
6576 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6577 RAISE OKC_API.G_EXCEPTION_ERROR;
6578 END IF;
6579
6580
6581 /*
6582 okl_copy_contract_pub.copy_contract(
6583 p_api_version => 1.0,
6584 p_init_msg_list => OKC_API.G_FALSE,
6585 x_return_status => x_return_status,
6586 x_msg_count => x_msg_count,
6587 x_msg_data => x_msg_data,
6588 p_commit => OKC_API.G_FALSE,
6589 p_chr_id => p_from_chr_id,
6590 p_contract_number => l_new_contract_number,
6591 p_contract_number_modifier => NULL,
6592 p_to_template_yn => 'N',
6593 p_renew_ref_yn => 'N',
6594 p_copy_lines_yn => 'N',
6595 p_override_org => 'N',
6596 x_chr_id => x_chr_id
6597 );
6598
6599 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6600 RAISE OKC_API.G_EXCEPTION_ERROR;
6601 END IF;
6602
6603 debug_message('New Chr ID: '||x_chr_id);
6604
6605 i := 1;
6606 FOR top_line_rec IN top_line_csr(p_from_chr_id)
6607 LOOP
6608 debug_message('Top Line: '||top_line_rec.id);
6609 l_from_cle_id_tbl(i).id := top_line_rec.id;
6610 i := i + 1;
6611 END LOOP;
6612
6613 okl_copy_asset_pub.copy_all_lines(
6614 p_api_version => 1.0,
6615 p_init_msg_list => OKC_API.G_FALSE,
6616 x_return_status => x_return_status,
6617 x_msg_count => x_msg_count,
6618 x_msg_data => x_msg_data,
6619 P_from_cle_id_tbl => l_from_cle_id_tbl,
6620 p_to_chr_id => x_chr_id,
6621 p_to_template_yn => 'N',
6622 p_copy_reference => 'Y',
6623 p_copy_line_party_yn => 'Y',
6624 p_renew_ref_yn => 'N',
6625 p_trans_type => 'CRB',
6626 x_cle_id_tbl => x_cle_id_tbl
6627 );
6628 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6629 RAISE OKC_API.G_EXCEPTION_ERROR;
6630 END IF;
6631
6632 */
6633 --
6634 -- Update Rebook Contract Status to 'NEW'
6635 -- and source to 'OKL_REBOOK'
6636 --
6637 l_khrv_rec.id := x_chr_id;
6638 l_chrv_rec.id := x_chr_id;
6639 l_chrv_rec.sts_code := 'NEW';
6640 l_chrv_rec.orig_system_source_code := 'OKL_REBOOK';
6641
6642 Okl_Okc_Migration_Pvt.update_contract_header(
6643 p_api_version => 1.0,
6644 p_init_msg_list => OKC_API.G_FALSE,
6645 x_return_status => x_return_status,
6646 x_msg_count => x_msg_count,
6647 x_msg_data => x_msg_data,
6648 p_restricted_update => OKC_API.G_FALSE,
6649 p_chrv_rec => l_chrv_rec,
6650 x_chrv_rec => x_chrv_rec
6651 );
6652 /* dedey - 27-AUG-2002
6653
6654 --changed the call as it is over-writing line start date
6655 --with old date
6656
6657 okl_contract_pub.update_contract_header(
6658 p_api_version => 1.0,
6659 p_init_msg_list => p_init_msg_list,
6660 x_return_status => x_return_status,
6661 x_msg_count => x_msg_count,
6662 x_msg_data => x_msg_data,
6663 p_restricted_update => OKC_API.G_FALSE,
6664 p_chrv_rec => l_chrv_rec,
6665 p_khrv_rec => l_khrv_rec,
6666 x_chrv_rec => x_chrv_rec,
6667 x_khrv_rec => x_khrv_rec
6668 );
6669 */
6670
6671 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6672 RAISE OKC_API.G_EXCEPTION_ERROR;
6673 END IF;
6674
6675 x_rebook_chr_id := x_chr_id;
6676
6677 --**********************************************************
6678 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
6679 x_msg_data => x_msg_data);
6680
6681 EXCEPTION
6682 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6683 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
6684 p_api_name => l_api_name,
6685 p_pkg_name => G_PKG_NAME,
6686 p_exc_name => 'OKC_API.G_RET_STS_ERROR',
6687 x_msg_count => x_msg_count,
6688 x_msg_data => x_msg_data,
6689 p_api_type => G_API_TYPE);
6690
6691 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6692 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
6693 p_api_name => l_api_name,
6694 p_pkg_name => G_PKG_NAME,
6695 p_exc_name => 'OKC_API.G_RET_STS_UNEXP_ERROR',
6696 x_msg_count => x_msg_count,
6697 x_msg_data => x_msg_data,
6698 p_api_type => G_API_TYPE);
6699
6700 WHEN OTHERS THEN
6701 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
6702 p_api_name => l_api_name,
6703 p_pkg_name => G_PKG_NAME,
6704 p_exc_name => 'OTHERS',
6705 x_msg_count => x_msg_count,
6706 x_msg_data => x_msg_data,
6707 p_api_type => G_API_TYPE);
6708
6709 END create_rebook_contract;
6710
6711 --Bug# 4212626: start
6712 ------------------------------------------------------------------------------
6713 -- PROCEDURE link_streams
6714 --
6715 -- This procedure links the WORK Streams created during Rebook
6716 -- to the corresponding matching CURR Streams in the original contract and
6717 -- also updates the WORK streams with Source Transaction Id.
6718 --
6719 -- Calls:
6720 -- Called By:
6721 ------------------------------------------------------------------------------
6722 PROCEDURE link_streams(
6723 p_api_version IN NUMBER,
6724 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6725 x_return_status OUT NOCOPY VARCHAR2,
6726 x_msg_count OUT NOCOPY NUMBER,
6727 x_msg_data OUT NOCOPY VARCHAR2,
6728 p_khr_id IN NUMBER
6729 ) IS
6730
6731 l_api_name VARCHAR2(35) := 'link_streams';
6732 l_proc_name VARCHAR2(35) := 'LINK_STREAMS';
6733 l_api_version CONSTANT NUMBER := 1;
6734
6735 CURSOR chk_rbk_csr(p_chr_id IN NUMBER) is
6736 SELECT '!',chr.orig_system_id1, ktrx.id
6737 FROM okc_k_headers_b chr,
6738 okl_trx_contracts ktrx
6739 WHERE ktrx.khr_id_new = chr.id
6740 AND ktrx.tsu_code = 'ENTERED'
6741 AND ktrx.rbr_code is NOT NULL
6742 AND ktrx.tcn_type = 'TRBK'
6743 AND chr.id = p_chr_id
6744 AND chr.orig_system_source_code = 'OKL_REBOOK'
6745 AND ktrx.representation_type = 'PRIMARY'; -- MGAAP 7263041
6746
6747 CURSOR chk_mass_rbk_csr (p_chr_id IN NUMBER) IS
6748 SELECT '!', ktrx.id
6749 FROM okc_k_headers_b chr,
6750 okl_trx_contracts ktrx
6751 WHERE chr.id = p_chr_id
6752 AND ktrx.khr_id = chr.id
6753 AND ktrx.tsu_code = 'ENTERED'
6754 AND ktrx.rbr_code IS NOT NULL
6755 AND ktrx.tcn_type = 'TRBK'
6756 AND ktrx.representation_type = 'PRIMARY' -- MGAAP 7263041
6757 AND EXISTS (SELECT '1'
6758 FROM okl_rbk_selected_contract rbk_khr
6759 WHERE rbk_khr.khr_id = chr.id
6760 AND rbk_khr.status <> 'PROCESSED');
6761
6762 CURSOR curr_streams_csr(p_khr_id IN NUMBER) IS
6763 SELECT new_stm.id new_stm_id,
6764 new_stm.kle_id
6765 FROM okl_streams new_stm
6766 WHERE new_stm.khr_id = p_khr_id
6767 AND new_stm.say_code = 'WORK';
6768
6769 CURSOR ol_rbk_kle_hist_strms_csr(p_new_stm_id IN NUMBER,
6770 p_rbk_khr_id IN NUMBER,
6771 p_orig_khr_id IN NUMBER) IS
6772 SELECT orig_stm.id orig_stm_id
6773 FROM okl_streams new_stm,
6774 okc_k_lines_b cle,
6775 okl_streams orig_stm
6776 WHERE new_stm.id = p_new_stm_id
6777 AND cle.id = new_stm.kle_id
6778 AND cle.dnz_chr_id = p_rbk_khr_id
6779 AND orig_stm.khr_id = p_orig_khr_id
6780 AND orig_stm.kle_id = cle.orig_system_id1
6781 AND orig_stm.sty_id = new_stm.sty_id
6782 AND NVL(orig_stm.purpose_code,'ORIG') = NVL(new_stm.purpose_code,'ORIG')
6783 AND orig_stm.say_code = 'CURR';
6784
6785 CURSOR ol_rbk_khr_hist_strms_csr(p_new_stm_id IN NUMBER,
6786 p_orig_khr_id IN NUMBER) IS
6787 SELECT orig_stm.id orig_stm_id
6788 FROM okl_streams new_stm,
6789 okl_streams orig_stm
6790 WHERE new_stm.id = p_new_stm_id
6791 AND orig_stm.khr_id = p_orig_khr_id
6792 AND orig_stm.kle_id IS NULL
6793 AND orig_stm.sty_id = new_stm.sty_id
6794 AND NVL(orig_stm.purpose_code,'ORIG') = NVL(new_stm.purpose_code,'ORIG')
6795 AND orig_stm.say_code = 'CURR';
6796
6797 l_orig_stm_id OKL_STREAMS.ID%TYPE;
6798
6799 CURSOR mass_rbk_hist_strms_csr(p_new_stm_id IN NUMBER,
6800 p_khr_id IN NUMBER) IS
6801 SELECT orig_stm.id orig_stm_id
6802 FROM okl_streams new_stm,
6803 okl_streams orig_stm
6804 WHERE new_stm.id = p_new_stm_id
6805 AND orig_stm.khr_id = new_stm.khr_id
6806 AND NVL(orig_stm.kle_id,-1) = NVL(new_stm.kle_id,-1)
6807 AND orig_stm.sty_id = new_stm.sty_id
6808 AND NVL(orig_stm.purpose_code,'ORIG') = NVL(new_stm.purpose_code,'ORIG')
6809 AND orig_stm.say_code = 'CURR';
6810
6811 mass_rbk_hist_strms_rec mass_rbk_hist_strms_csr%ROWTYPE;
6812
6813 l_rbk_khr VARCHAR2(1);
6814 l_mass_rbk_khr VARCHAR2(1);
6815 l_orig_khr_id NUMBER;
6816 l_mass_rbk_trx_id NUMBER;
6817 l_online_rbk_trx_id NUMBER;
6818
6819 l_new_strm_tbl stmv_tbl_type;
6820 x_new_strm_tbl stmv_tbl_type;
6821
6822 l_new_strm_count NUMBER := 0;
6823
6824 --Bug# 6344223
6825 --Cursor to check whether split asset transaction is in progress for the contract
6826 CURSOR check_split_trx_csr IS
6827 SELECT tas.id
6828 FROM OKL_TXL_ASSETS_B txl, OKL_TRX_ASSETS tas
6829 WHERE txl.tal_type= 'ALI'
6830 AND txl.dnz_khr_id = p_khr_id
6831 AND txl.tas_id = tas.id
6832 AND tas.tas_type = 'ALI'
6833 AND tas.tsu_code = 'ENTERED';
6834
6835 l_split_trans_id OKL_TRX_ASSETS.ID%TYPE;
6836 --end Bug# 6344223
6837
6838 BEGIN
6839 IF (G_DEBUG_ENABLED = 'Y') THEN
6840 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
6841 END IF;
6842
6843 x_return_status := OKL_API.G_RET_STS_SUCCESS;
6844 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6845 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
6846 END IF;
6847 -- call START_ACTIVITY to create savepoint, check compatibility
6848 -- and initialize message list
6849 x_return_status := OKL_API.START_ACTIVITY(
6850 p_api_name => l_api_name,
6851 p_pkg_name => G_PKG_NAME,
6852 p_init_msg_list => p_init_msg_list,
6853 l_api_version => l_api_version,
6854 p_api_version => p_api_version,
6855 p_api_type => G_API_TYPE,
6856 x_return_status => x_return_status);
6857
6858 -- check if activity started successfully
6859 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
6860 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6861 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
6862 raise OKL_API.G_EXCEPTION_ERROR;
6863 END IF;
6864
6865 --Bug# 6344223
6866 OPEN check_split_trx_csr;
6867 FETCH check_split_trx_csr INTO l_split_trans_id;
6868 CLOSE check_split_trx_csr;
6869 --end Bug# 6344223
6870
6871 --check for mass rebook contract
6872 l_mass_rbk_khr := '?';
6873 l_mass_rbk_trx_id := null;
6874 OPEN chk_mass_rbk_csr (p_chr_id => p_khr_id);
6875 FETCH chk_mass_rbk_csr INTO l_mass_rbk_khr, l_mass_rbk_trx_id;
6876 CLOSE chk_mass_rbk_csr;
6877 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6878 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_mass_rbk_khr: '||l_mass_rbk_khr);
6879 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_mass_rbk_trx_id: '||l_mass_rbk_trx_id);
6880 END IF;
6881
6882 --check for rebook contract
6883 l_rbk_khr := '?';
6884 l_orig_khr_id := null;
6885 l_online_rbk_trx_id := null;
6886 OPEN chk_rbk_csr (p_chr_id => p_khr_id);
6887 FETCH chk_rbk_csr INTO l_rbk_khr,l_orig_khr_id,l_online_rbk_trx_id;
6888 CLOSE chk_rbk_csr;
6889 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6890 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rbk_khr: '||l_rbk_khr);
6891 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_khr_id: '||l_orig_khr_id);
6892 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_online_rbk_trx_id: '||l_online_rbk_trx_id);
6893 END IF;
6894
6895 --Added condition l_split_trans_id IS NOT NULL for Bug# 6344223
6896 IF ((l_split_trans_id IS NOT NULL) OR l_mass_rbk_khr = '!' OR l_rbk_khr = '!') THEN
6897
6898 l_new_strm_tbl.DELETE;
6899 l_new_strm_count := 0;
6900
6901 FOR curr_streams_rec IN curr_streams_csr(p_khr_id => p_khr_id)
6902 LOOP
6903
6904 l_new_strm_count := l_new_strm_count + 1;
6905 l_new_strm_tbl(l_new_strm_count).id := curr_streams_rec.new_stm_id;
6906
6907 --Added condition l_split_trans_id IS NOT NULL for Bug# 6344223
6908 IF (l_mass_rbk_khr = '!' OR (l_split_trans_id IS NOT NULL)) THEN
6909 -- Process for Mass Rebook and Split Asset
6910
6911 --Bug# 6344223
6912 IF (l_mass_rbk_khr = '!') THEN
6913 l_new_strm_tbl(l_new_strm_count).trx_id := l_mass_rbk_trx_id;
6914 ELSIF (l_split_trans_id IS NOT NULL) THEN
6915 l_new_strm_tbl(l_new_strm_count).trx_id := l_split_trans_id;
6916 END IF;
6917
6918 mass_rbk_hist_strms_rec.orig_stm_id := NULL;
6919 OPEN mass_rbk_hist_strms_csr(p_new_stm_id => curr_streams_rec.new_stm_id,
6920 p_khr_id => p_khr_id);
6921 FETCH mass_rbk_hist_strms_csr INTO mass_rbk_hist_strms_rec;
6922 CLOSE mass_rbk_hist_strms_csr;
6923
6924 IF mass_rbk_hist_strms_rec.orig_stm_id IS NOT NULL THEN
6925 l_new_strm_tbl(l_new_strm_count).link_hist_stream_id := mass_rbk_hist_strms_rec.orig_stm_id;
6926 END IF;
6927
6928 ELSIF l_rbk_khr = '!' THEN
6929 -- Process for Online Rebook
6930
6931 l_new_strm_tbl(l_new_strm_count).trx_id := l_online_rbk_trx_id;
6932
6933 l_orig_stm_id := NULL;
6934 IF (curr_streams_rec.kle_id IS NULL) THEN
6935 -- Contract Header level stream
6936 OPEN ol_rbk_khr_hist_strms_csr(p_new_stm_id => curr_streams_rec.new_stm_id,
6937 p_orig_khr_id => l_orig_khr_id);
6938 FETCH ol_rbk_khr_hist_strms_csr INTO l_orig_stm_id;
6939 CLOSE ol_rbk_khr_hist_strms_csr;
6940
6941 ELSE
6942 -- Contract Line level stream
6943 OPEN ol_rbk_kle_hist_strms_csr(p_new_stm_id => curr_streams_rec.new_stm_id,
6944 p_rbk_khr_id => p_khr_id,
6945 p_orig_khr_id => l_orig_khr_id);
6946 FETCH ol_rbk_kle_hist_strms_csr INTO l_orig_stm_id;
6947 CLOSE ol_rbk_kle_hist_strms_csr;
6948 END IF;
6949
6950 IF l_orig_stm_id IS NOT NULL THEN
6951 l_new_strm_tbl(l_new_strm_count).link_hist_stream_id := l_orig_stm_id;
6952 END IF;
6953
6954 END IF;
6955
6956 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6957 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'New Stream ID: '||l_new_strm_tbl(l_new_strm_count).id);
6958 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Orig Stream ID: '||l_new_strm_tbl(l_new_strm_count).link_hist_stream_id);
6959 END IF;
6960
6961 END LOOP;
6962
6963 IF (l_new_strm_tbl.COUNT > 0) THEN
6964
6965 -- Call Streams api to update Link_Hist_Stream_Id and Trx_Id
6966 okl_streams_pub.update_streams(
6967 p_api_version => 1.0,
6968 p_init_msg_list => OKL_API.G_FALSE,
6969 x_return_status => x_return_status,
6970 x_msg_count => x_msg_count,
6971 x_msg_data => x_msg_data,
6972 p_stmv_tbl => l_new_strm_tbl,
6973 x_stmv_tbl => x_new_strm_tbl
6974 );
6975
6976 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6977 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Update of New Strms - Trx ID and Hist ID '||x_return_status);
6978 END IF;
6979
6980 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
6981 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6982 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
6983 raise OKL_API.G_EXCEPTION_ERROR;
6984 END IF;
6985 END IF;
6986 END IF;
6987
6988 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
6989 x_msg_data => x_msg_data);
6990
6991 EXCEPTION
6992 when OKL_API.G_EXCEPTION_ERROR then
6993 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6994 p_api_name => l_api_name,
6995 p_pkg_name => G_PKG_NAME,
6996 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
6997 x_msg_count => x_msg_count,
6998 x_msg_data => x_msg_data,
6999 p_api_type => G_API_TYPE);
7000
7001 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
7002 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7003 p_api_name => l_api_name,
7004 p_pkg_name => G_PKG_NAME,
7005 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
7006 x_msg_count => x_msg_count,
7007 x_msg_data => x_msg_data,
7008 p_api_type => G_API_TYPE);
7009
7010 when OTHERS then
7011 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7012 p_api_name => l_api_name,
7013 p_pkg_name => G_PKG_NAME,
7014 p_exc_name => 'OTHERS',
7015 x_msg_count => x_msg_count,
7016 x_msg_data => x_msg_data,
7017 p_api_type => G_API_TYPE);
7018
7019 END link_streams;
7020
7021 --Bug# 4884423
7022 ------------------------------------------------------------------------------
7023 -- PROCEDURE create_pth_disb_adjustment
7024 --
7025 -- This procedure calculates the passthrough disbursement adjustment
7026 -- where there is a difference between amount actually disbursed and amount
7027 -- that should have been disbursed and calls the Disbursement api to create the
7028 -- disbursement transaction. The current streams taken into account for
7029 -- calculating disbursement adjustment are then marked as Disbursment adjusted
7030 -- in order to stop duplicate disbursement.
7031 --
7032 -- Calls:
7033 -- Called By:
7034 ------------------------------------------------------------------------------
7035 PROCEDURE create_pth_disb_adjustment(
7036 p_api_version IN NUMBER,
7037 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
7038 x_return_status OUT NOCOPY VARCHAR2,
7039 x_msg_count OUT NOCOPY NUMBER,
7040 x_msg_data OUT NOCOPY VARCHAR2,
7041 p_rbk_khr_id IN NUMBER,
7042 p_orig_khr_id IN NUMBER,
7043 p_trx_id IN NUMBER,
7044 p_trx_date IN DATE
7045 ) IS
7046
7047 l_api_name VARCHAR2(35) := 'create_pth_disb_adjustment';
7048 l_proc_name VARCHAR2(35) := 'CREATE_PTH_DISB_ADJUSTMENT';
7049 l_api_version CONSTANT NUMBER := 1;
7050
7051 CURSOR curr_billable_streams_csr(p_khr_id IN NUMBER) IS
7052 SELECT new_stm.id new_stm_id,
7053 orig_stm.id orig_stm_id,
7054 orig_stm.sty_id,
7055 orig_stm.kle_id
7056 FROM okl_streams new_stm,
7057 okl_strm_type_b sty,
7058 okl_streams orig_stm,
7059 okl_party_payment_hdr pph
7060 WHERE new_stm.khr_id = p_khr_id
7061 AND new_stm.say_code = 'CURR'
7062 AND new_stm.sty_id = sty.id
7063 AND sty.billable_yn = 'Y'
7064 AND orig_stm.id = new_stm.link_hist_stream_id
7065 AND pph.dnz_chr_id = new_stm.khr_id
7066 AND pph.cle_id = new_stm.kle_id
7067 AND pph.payout_basis = 'DUE_DATE'
7068 AND pph.passthru_term = 'BASE';
7069
7070 CURSOR max_disb_date_csr(p_stm_id IN NUMBER) IS
7071 SELECT MAX(sel.stream_element_date) stream_element_date
7072 FROM okl_strm_elements sel
7073 WHERE sel.stm_id = p_stm_id
7074 AND sel.date_disbursed IS NOT NULL;
7075
7076 CURSOR actual_amount_disb_csr(p_stm_id IN NUMBER) IS
7077 SELECT NVL(SUM(sel.amount),0) amount
7078 FROM okl_strm_elements sel
7079 WHERE sel.stm_id = p_stm_id
7080 AND sel.date_disbursed IS NOT NULL;
7081
7082 CURSOR amount_to_be_disb_csr(p_stm_id IN NUMBER,
7083 p_max_disb_date IN DATE) IS
7084 SELECT sel.id sel_id,
7085 NVL(sel.amount,0) amount
7086 FROM okl_strm_elements sel
7087 WHERE sel.stm_id = p_stm_id
7088 AND sel.stream_element_date <= p_max_disb_date;
7089
7090 -- Cursor to fetch Streams deleted during rebook
7091 CURSOR del_billable_streams_csr(p_orig_khr_id IN NUMBER,
7092 p_rbk_khr_id IN NUMBER) IS
7093 SELECT orig_stm.id orig_stm_id,
7094 orig_stm.sty_id,
7095 orig_stm.kle_id,
7096 cle.lse_id
7097 FROM okl_streams orig_stm,
7098 okl_strm_type_b sty,
7099 okc_k_lines_b cle,
7100 okl_party_payment_hdr pph
7101 WHERE orig_stm.khr_id = p_orig_khr_id
7102 AND orig_stm.say_code = 'CURR'
7103 AND orig_stm.sty_id = sty.id
7104 AND orig_stm.sgn_code NOT IN ('INTC','LATE_CALC') -- Bug6472228
7105 AND sty.billable_yn = 'Y'
7106 AND cle.id = orig_stm.kle_id
7107 AND cle.dnz_chr_id = orig_stm.khr_id
7108 AND pph.dnz_chr_id = orig_stm.khr_id
7109 AND pph.cle_id = orig_stm.kle_id
7110 AND pph.payout_basis = 'DUE_DATE'
7111 AND pph.passthru_term = 'BASE'
7112 AND NOT EXISTS (SELECT 1
7113 FROM okl_streams new_stm
7114 WHERE new_stm.khr_id = p_rbk_khr_id
7115 AND new_stm.say_code = 'CURR'
7116 AND new_stm.link_hist_stream_id = orig_stm.id);
7117
7118 l_max_disb_date DATE;
7119 l_actual_amount_disbursed NUMBER;
7120 l_amount_to_be_disbursed NUMBER;
7121 l_disb_adjustment NUMBER;
7122
7123 l_selv_tbl selv_tbl_type;
7124 x_selv_tbl selv_tbl_type;
7125
7126 l_selv_count NUMBER;
7127 i NUMBER;
7128 l_rebook_adj_tbl OKL_REBOOK_CM_PVT.rebook_adj_tbl_type;
7129
7130 -- sjalasut, added variable that supports out parameter
7131 lx_disb_rec OKL_BPD_TERMINATION_ADJ_PVT.disb_rec_type;
7132
7133 BEGIN
7134 IF (G_DEBUG_ENABLED = 'Y') THEN
7135 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
7136 END IF;
7137
7138 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7139 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7140 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
7141 END IF;
7142 -- call START_ACTIVITY to create savepoint, check compatibility
7143 -- and initialize message list
7144 x_return_status := OKL_API.START_ACTIVITY(
7145 p_api_name => l_api_name,
7146 p_pkg_name => G_PKG_NAME,
7147 p_init_msg_list => p_init_msg_list,
7148 l_api_version => l_api_version,
7149 p_api_version => p_api_version,
7150 p_api_type => G_API_TYPE,
7151 x_return_status => x_return_status);
7152
7153 -- check if activity started successfully
7154 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7155 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7156 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
7157 raise OKL_API.G_EXCEPTION_ERROR;
7158 END IF;
7159
7160 -- For On-line and Mass rebook, calculate disbursement adjustment
7161 -- for all Current Billable Streams for which disbursement was done
7162 -- in the Original contract
7163
7164 i := 0;
7165 l_rebook_adj_tbl.DELETE;
7166 FOR curr_billable_streams_rec in curr_billable_streams_csr(p_khr_id => p_rbk_khr_id)
7167 LOOP
7168
7169 l_max_disb_date := NULL;
7170 OPEN max_disb_date_csr(p_stm_id => curr_billable_streams_rec.orig_stm_id);
7171 FETCH max_disb_date_csr INTO l_max_disb_date;
7172 CLOSE max_disb_date_csr;
7173
7174 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7175 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'New Stream Id: '||curr_billable_streams_rec.new_stm_id);
7176 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Orig Stream Id: '||curr_billable_streams_rec.orig_stm_id);
7177 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Max Disbursed Date: '||l_max_disb_date);
7178 END IF;
7179
7180 IF l_max_disb_date IS NOT NULL THEN
7181
7182 l_actual_amount_disbursed := 0;
7183 OPEN actual_amount_disb_csr(p_stm_id => curr_billable_streams_rec.orig_stm_id);
7184 FETCH actual_amount_disb_csr INTO l_actual_amount_disbursed;
7185 CLOSE actual_amount_disb_csr;
7186
7187 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7188 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Actual Amount Disbursed: '||l_actual_amount_disbursed);
7189 END IF;
7190
7191 l_amount_to_be_disbursed := 0;
7192 l_selv_count := 0;
7193 l_selv_tbl.DELETE;
7194
7195 FOR amount_to_be_disb_rec IN
7196 amount_to_be_disb_csr(p_stm_id => curr_billable_streams_rec.new_stm_id,
7197 p_max_disb_date => l_max_disb_date)
7198 LOOP
7199
7200 -- Call Streams api to update date_disbursed
7201 l_selv_count := l_selv_count + 1;
7202 l_amount_to_be_disbursed := l_amount_to_be_disbursed + amount_to_be_disb_rec.amount;
7203
7204 l_selv_tbl(l_selv_count).id := amount_to_be_disb_rec.sel_id;
7205 l_selv_tbl(l_selv_count).date_disbursed := trunc(SYSDATE);
7206
7207 END LOOP;
7208
7209 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7210 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Amount to be Disbursed: '||l_amount_to_be_disbursed);
7211 END IF;
7212
7213 l_disb_adjustment := l_amount_to_be_disbursed - l_actual_amount_disbursed;
7214
7215 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7216 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Disbursement Adjustment: '||l_disb_adjustment);
7217 END IF;
7218
7219 IF l_disb_adjustment <> 0 THEN
7220 i := i + 1;
7221 l_rebook_adj_tbl(i).khr_id := p_orig_khr_id;
7222 l_rebook_adj_tbl(i).kle_id := curr_billable_streams_rec.kle_id;
7223 l_rebook_adj_tbl(i).sty_id := curr_billable_streams_rec.sty_id;
7224 l_rebook_adj_tbl(i).adjusted_amount := l_disb_adjustment;
7225 l_rebook_adj_tbl(i).date_invoiced := p_trx_date;
7226
7227 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7228 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Disbursement Adjustment Record');
7229 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'i '||i);
7230 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).khr_id: '||l_rebook_adj_tbl(i).khr_id);
7231 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).kle_id: '||l_rebook_adj_tbl(i).kle_id);
7232 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).sty_id: '||l_rebook_adj_tbl(i).sty_id);
7233 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).adjusted_amount: '||l_rebook_adj_tbl(i).adjusted_amount);
7234 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).date_invoiced: '||l_rebook_adj_tbl(i).date_invoiced);
7235 END IF;
7236
7237 END IF;
7238
7239 IF (l_selv_tbl.COUNT > 0) THEN
7240 okl_streams_pub.update_stream_elements(
7241 p_api_version => 1.0,
7242 p_init_msg_list => OKL_API.G_FALSE,
7243 x_return_status => x_return_status,
7244 x_msg_count => x_msg_count,
7245 x_msg_data => x_msg_data,
7246 p_selv_tbl => l_selv_tbl,
7247 x_selv_tbl => x_selv_tbl
7248 );
7249
7250 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7251 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Update of Stream Elements - Date Disbursed '||x_return_status);
7252 END IF;
7253
7254 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7255 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7256 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
7257 raise OKL_API.G_EXCEPTION_ERROR;
7258 END IF;
7259 END IF;
7260
7261 END IF;
7262 END LOOP;
7263
7264 -- For On-line rebook, calculate billing adjustment
7265 -- for Streams deleted during Rebook
7266 -- Insurance Streams are ignored by this process, so no
7267 -- adjustment will be calculated for Insurance Streams here
7268 IF (p_rbk_khr_id <> p_orig_khr_id) THEN -- Online rebook
7269
7270 FOR del_billable_streams_rec IN
7271 del_billable_streams_csr(p_orig_khr_id => p_orig_khr_id,
7272 p_rbk_khr_id => p_rbk_khr_id)
7273 LOOP
7274 -- Do not process Insurance Streams
7275 IF (NVL(del_billable_streams_rec.lse_id,-1) <> G_INSURANCE_LSE_ID) THEN
7276
7277 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7278 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Deleted Orig Stream Id: '||del_billable_streams_rec.orig_stm_id);
7279 END IF;
7280
7281 l_actual_amount_disbursed := 0;
7282 OPEN actual_amount_disb_csr(p_stm_id => del_billable_streams_rec.orig_stm_id);
7283 FETCH actual_amount_disb_csr INTO l_actual_amount_disbursed;
7284 CLOSE actual_amount_disb_csr;
7285
7286 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7287 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Actual Amount Disbursed: '||l_actual_amount_disbursed);
7288 END IF;
7289
7290 l_disb_adjustment := -1 * l_actual_amount_disbursed;
7291
7292 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7293 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Disbursement Adjustment: '||l_disb_adjustment);
7294 END IF;
7295
7296 IF l_actual_amount_disbursed <> 0 THEN
7297 i := i + 1;
7298 l_rebook_adj_tbl(i).khr_id := p_orig_khr_id;
7299 l_rebook_adj_tbl(i).kle_id := del_billable_streams_rec.kle_id;
7300 l_rebook_adj_tbl(i).sty_id := del_billable_streams_rec.sty_id;
7301 l_rebook_adj_tbl(i).adjusted_amount := l_disb_adjustment;
7302 l_rebook_adj_tbl(i).date_invoiced := p_trx_date;
7303
7304 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7305 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Disbursement Adjustment Record');
7306 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'i '||i);
7307 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).khr_id: '||l_rebook_adj_tbl(i).khr_id);
7308 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).kle_id: '||l_rebook_adj_tbl(i).kle_id);
7309 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).sty_id: '||l_rebook_adj_tbl(i).sty_id);
7310 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).adjusted_amount: '||l_rebook_adj_tbl(i).adjusted_amount);
7311 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).date_invoiced: '||l_rebook_adj_tbl(i).date_invoiced);
7312 END IF;
7313
7314 END IF;
7315 END IF;
7316 END LOOP;
7317
7318 END IF;
7319
7320 IF (l_rebook_adj_tbl.COUNT > 0) THEN
7321
7322 -- sjalasut, added code for Contract Rebook Enhancement. START
7323 OKL_BPD_TERMINATION_ADJ_PVT.create_rbk_passthru_adj
7324 (p_api_version => p_api_version
7325 ,p_init_msg_list => p_init_msg_list
7326 ,p_rebook_adj_tbl => l_rebook_adj_tbl
7327 ,x_disb_rec => lx_disb_rec
7328 ,x_return_status => x_return_status
7329 ,x_msg_count => x_msg_count
7330 ,x_msg_data => x_msg_data);
7331
7332 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7333 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After calling OKL_BPD_TERMINATION_ADJ_PVT.create_rbk_passthru_adj '||x_return_status);
7334 END IF;
7335
7336 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7337 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7338 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
7339 RAISE OKL_API.G_EXCEPTION_ERROR;
7340 END IF;
7341 -- sjalasut, added code for Contract Rebook Enhancement. END
7342
7343 END IF;
7344
7345 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
7346 x_msg_data => x_msg_data);
7347
7348 EXCEPTION
7349 when OKL_API.G_EXCEPTION_ERROR then
7350 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7351 p_api_name => l_api_name,
7352 p_pkg_name => G_PKG_NAME,
7353 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
7354 x_msg_count => x_msg_count,
7355 x_msg_data => x_msg_data,
7356 p_api_type => G_API_TYPE);
7357
7358 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
7359 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7360 p_api_name => l_api_name,
7361 p_pkg_name => G_PKG_NAME,
7362 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
7363 x_msg_count => x_msg_count,
7364 x_msg_data => x_msg_data,
7365 p_api_type => G_API_TYPE);
7366
7367 when OTHERS then
7368 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7369 p_api_name => l_api_name,
7370 p_pkg_name => G_PKG_NAME,
7371 p_exc_name => 'OTHERS',
7372 x_msg_count => x_msg_count,
7373 x_msg_data => x_msg_data,
7374 p_api_type => G_API_TYPE);
7375
7376 END create_pth_disb_adjustment;
7377 --Bug# 4884423
7378
7379 ------------------------------------------------------------------------------
7380 -- PROCEDURE create_billing_adjustment
7381 --
7382 -- This procedure calculates the billing adjustment for all billable streams
7383 -- where there is a difference between amount actually billed and amount
7384 -- that should have been billed and calls the Billing api to create the
7385 -- billing transaction. The current streams taken into account for
7386 -- calculating billing adjustment are then marked as Billing adjusted in order
7387 -- to stop duplicate billing.
7388 --
7389 -- Calls:
7390 -- Called By:
7391 ------------------------------------------------------------------------------
7392 PROCEDURE create_billing_adjustment(
7393 p_api_version IN NUMBER,
7394 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
7395 x_return_status OUT NOCOPY VARCHAR2,
7396 x_msg_count OUT NOCOPY NUMBER,
7397 x_msg_data OUT NOCOPY VARCHAR2,
7398 p_rbk_khr_id IN NUMBER,
7399 p_orig_khr_id IN NUMBER,
7400 p_trx_id IN NUMBER,
7401 p_trx_date IN DATE
7402 ) IS
7403
7404 l_api_name VARCHAR2(35) := 'create_billing_adjustment';
7405 l_proc_name VARCHAR2(35) := 'CREATE_BILLING_ADJUSTMENT';
7406 l_api_version CONSTANT NUMBER := 1;
7407
7408 CURSOR curr_billable_streams_csr(p_khr_id IN NUMBER) IS
7409 SELECT new_stm.id new_stm_id,
7410 orig_stm.id orig_stm_id,
7411 orig_stm.sty_id,
7412 orig_stm.kle_id
7413 FROM okl_streams new_stm,
7414 okl_strm_type_b sty,
7415 okl_streams orig_stm
7416 WHERE new_stm.khr_id = p_khr_id
7417 AND new_stm.say_code = 'CURR'
7418 AND new_stm.sty_id = sty.id
7419 AND sty.billable_yn = 'Y'
7420 AND orig_stm.id = new_stm.link_hist_stream_id;
7421
7422 CURSOR max_bill_date_csr(p_stm_id IN NUMBER) IS
7423 SELECT MAX(sel.stream_element_date) stream_element_date
7424 FROM okl_strm_elements sel
7425 WHERE sel.stm_id = p_stm_id
7426 AND sel.date_billed IS NOT NULL;
7427
7428 CURSOR actual_amount_billed_csr(p_stm_id IN NUMBER) IS
7429 SELECT NVL(SUM(sel.amount),0) amount
7430 FROM okl_strm_elements sel
7431 WHERE sel.stm_id = p_stm_id
7432 AND sel.date_billed IS NOT NULL;
7433
7434 CURSOR amount_to_be_billed_csr(p_stm_id IN NUMBER,
7435 p_max_bill_date IN DATE) IS
7436 SELECT sel.id sel_id,
7437 NVL(sel.amount,0) amount
7438 FROM okl_strm_elements sel
7439 WHERE sel.stm_id = p_stm_id
7440 AND sel.stream_element_date <= p_max_bill_date;
7441
7442 -- Cursor to fetch Streams deleted during rebook
7443 CURSOR del_billable_streams_csr(p_orig_khr_id IN NUMBER,
7444 p_rbk_khr_id IN NUMBER) IS
7445 SELECT orig_stm.id orig_stm_id,
7446 orig_stm.sty_id,
7447 orig_stm.kle_id,
7448 cle.lse_id
7449 FROM okl_streams orig_stm,
7450 okl_strm_type_b sty,
7451 okc_k_lines_b cle
7452 WHERE orig_stm.khr_id = p_orig_khr_id
7453 AND orig_stm.say_code = 'CURR'
7454 AND orig_stm.sty_id = sty.id
7455 AND orig_stm.sgn_code NOT IN ('INTC','LATE_CALC') -- Bug 6472228
7456 -- gboomina Bug 6129455 - Start
7457 AND sty.STREAM_TYPE_PURPOSE <>'ACTUAL_PROPERTY_TAX'
7458 -- gboomina Bug 6129455 - End
7459 AND sty.billable_yn = 'Y'
7460 AND cle.id(+) = orig_stm.kle_id
7461 AND cle.dnz_chr_id(+) = orig_stm.khr_id
7462 AND NOT EXISTS (SELECT 1
7463 FROM okl_streams new_stm
7464 WHERE new_stm.khr_id = p_rbk_khr_id
7465 AND new_stm.say_code = 'CURR'
7466 AND new_stm.link_hist_stream_id = orig_stm.id);
7467
7468 l_max_bill_date DATE;
7469 l_actual_amount_billed NUMBER;
7470 l_amount_to_be_billed NUMBER;
7471 l_billing_adjustment NUMBER;
7472
7473 l_selv_tbl selv_tbl_type;
7474 x_selv_tbl selv_tbl_type;
7475
7476 l_selv_count NUMBER;
7477 i NUMBER;
7478 l_rebook_adj_tbl OKL_REBOOK_CM_PVT.rebook_adj_tbl_type;
7479
7480 -- sjalasut, added variable that supports out parameter
7481 lx_disb_rec OKL_BPD_TERMINATION_ADJ_PVT.disb_rec_type;
7482
7483 BEGIN
7484 IF (G_DEBUG_ENABLED = 'Y') THEN
7485 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
7486 END IF;
7487
7488 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7489 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7490 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
7491 END IF;
7492 -- call START_ACTIVITY to create savepoint, check compatibility
7493 -- and initialize message list
7494 x_return_status := OKL_API.START_ACTIVITY(
7495 p_api_name => l_api_name,
7496 p_pkg_name => G_PKG_NAME,
7497 p_init_msg_list => p_init_msg_list,
7498 l_api_version => l_api_version,
7499 p_api_version => p_api_version,
7500 p_api_type => G_API_TYPE,
7501 x_return_status => x_return_status);
7502
7503 -- check if activity started successfully
7504 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7505 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7506 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
7507 raise OKL_API.G_EXCEPTION_ERROR;
7508 END IF;
7509
7510 -- For On-line and Mass rebook, calculate billing adjustment
7511 -- for all Current Billable Streams for which billing was done
7512 -- in the Original contract
7513
7514 i := 0;
7515 l_rebook_adj_tbl.DELETE;
7516 FOR curr_billable_streams_rec in curr_billable_streams_csr(p_khr_id => p_rbk_khr_id)
7517 LOOP
7518
7519 l_max_bill_date := NULL;
7520 OPEN max_bill_date_csr(p_stm_id => curr_billable_streams_rec.orig_stm_id);
7521 FETCH max_bill_date_csr INTO l_max_bill_date;
7522 CLOSE max_bill_date_csr;
7523
7524 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7525 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'New Stream Id: '||curr_billable_streams_rec.new_stm_id);
7526 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Orig Stream Id: '||curr_billable_streams_rec.orig_stm_id);
7527 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Max Bill Date: '||l_max_bill_date);
7528 END IF;
7529
7530 IF l_max_bill_date IS NOT NULL THEN
7531
7532 l_actual_amount_billed := 0;
7533 OPEN actual_amount_billed_csr(p_stm_id => curr_billable_streams_rec.orig_stm_id);
7534 FETCH actual_amount_billed_csr INTO l_actual_amount_billed;
7535 CLOSE actual_amount_billed_csr;
7536
7537 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7538 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Actual Amount Billed: '||l_actual_amount_billed);
7539 END IF;
7540
7541 l_amount_to_be_billed := 0;
7542 l_selv_count := 0;
7543 l_selv_tbl.DELETE;
7544
7545 FOR amount_to_be_billed_rec IN
7546 amount_to_be_billed_csr(p_stm_id => curr_billable_streams_rec.new_stm_id,
7547 p_max_bill_date => l_max_bill_date)
7548 LOOP
7549
7550 -- Call Streams api to update date_billed, bill_adj_flag
7551 l_selv_count := l_selv_count + 1;
7552 l_amount_to_be_billed := l_amount_to_be_billed + amount_to_be_billed_rec.amount;
7553
7554 l_selv_tbl(l_selv_count).id := amount_to_be_billed_rec.sel_id;
7555 l_selv_tbl(l_selv_count).date_billed := SYSDATE;
7556 l_selv_tbl(l_selv_count).bill_adj_flag := 'Y';
7557
7558 END LOOP;
7559
7560 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7561 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Amount to be Billed: '||l_amount_to_be_billed);
7562 END IF;
7563
7564 l_billing_adjustment := l_amount_to_be_billed - l_actual_amount_billed;
7565
7566 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7567 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Billing Adjustment: '||l_billing_adjustment);
7568 END IF;
7569
7570 IF l_billing_adjustment <> 0 THEN
7571 i := i + 1;
7572 l_rebook_adj_tbl(i).khr_id := p_orig_khr_id;
7573 l_rebook_adj_tbl(i).kle_id := curr_billable_streams_rec.kle_id;
7574 l_rebook_adj_tbl(i).sty_id := curr_billable_streams_rec.sty_id;
7575 l_rebook_adj_tbl(i).adjusted_amount := l_billing_adjustment;
7576 l_rebook_adj_tbl(i).date_invoiced := p_trx_date;
7577
7578 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7579 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Billing Adjustment Record');
7580 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'i '||i);
7581 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).khr_id: '||l_rebook_adj_tbl(i).khr_id);
7582 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).kle_id: '||l_rebook_adj_tbl(i).kle_id);
7583 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).sty_id: '||l_rebook_adj_tbl(i).sty_id);
7584 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).adjusted_amount: '||l_rebook_adj_tbl(i).adjusted_amount);
7585 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).date_invoiced: '||l_rebook_adj_tbl(i).date_invoiced);
7586 END IF;
7587
7588 END IF;
7589
7590 IF (l_selv_tbl.COUNT > 0) THEN
7591 okl_streams_pub.update_stream_elements(
7592 p_api_version => 1.0,
7593 p_init_msg_list => OKL_API.G_FALSE,
7594 x_return_status => x_return_status,
7595 x_msg_count => x_msg_count,
7596 x_msg_data => x_msg_data,
7597 p_selv_tbl => l_selv_tbl,
7598 x_selv_tbl => x_selv_tbl
7599 );
7600
7601 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7602 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Update of Stream Elements - Date Billed and Bill Adj Flag '||x_return_status);
7603 END IF;
7604
7605 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7606 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7607 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
7608 raise OKL_API.G_EXCEPTION_ERROR;
7609 END IF;
7610 END IF;
7611
7612 END IF;
7613 END LOOP;
7614
7615 -- For On-line rebook, calculate billing adjustment
7616 -- for Streams deleted during Rebook
7617 -- Insurance Streams are ignored by this process, so no
7618 -- adjustment will be calculated for Insurance Streams here
7619 IF (p_rbk_khr_id <> p_orig_khr_id) THEN -- Online rebook
7620
7621 FOR del_billable_streams_rec IN
7622 del_billable_streams_csr(p_orig_khr_id => p_orig_khr_id,
7623 p_rbk_khr_id => p_rbk_khr_id)
7624 LOOP
7625 -- Do not process Insurance Streams
7626 IF (NVL(del_billable_streams_rec.lse_id,-1) <> G_INSURANCE_LSE_ID) THEN
7627
7628 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7629 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Deleted Orig Stream Id: '||del_billable_streams_rec.orig_stm_id);
7630 END IF;
7631
7632 l_actual_amount_billed := 0;
7633 OPEN actual_amount_billed_csr(p_stm_id => del_billable_streams_rec.orig_stm_id);
7634 FETCH actual_amount_billed_csr INTO l_actual_amount_billed;
7635 CLOSE actual_amount_billed_csr;
7636
7637 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7638 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Actual Amount Billed: '||l_actual_amount_billed);
7639 END IF;
7640
7641 l_billing_adjustment := -1 * l_actual_amount_billed;
7642
7643 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7644 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Billing Adjustment: '||l_billing_adjustment);
7645 END IF;
7646
7647 IF l_actual_amount_billed <> 0 THEN
7648 i := i + 1;
7649 l_rebook_adj_tbl(i).khr_id := p_orig_khr_id;
7650 l_rebook_adj_tbl(i).kle_id := del_billable_streams_rec.kle_id;
7651 l_rebook_adj_tbl(i).sty_id := del_billable_streams_rec.sty_id;
7652 l_rebook_adj_tbl(i).adjusted_amount := l_billing_adjustment;
7653 l_rebook_adj_tbl(i).date_invoiced := p_trx_date;
7654
7655 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7656 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Billing Adjustment Record');
7657 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'i '||i);
7658 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).khr_id: '||l_rebook_adj_tbl(i).khr_id);
7659 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).kle_id: '||l_rebook_adj_tbl(i).kle_id);
7660 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).sty_id: '||l_rebook_adj_tbl(i).sty_id);
7661 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).adjusted_amount: '||l_rebook_adj_tbl(i).adjusted_amount);
7662 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rebook_adj_tbl(i).date_invoiced: '||l_rebook_adj_tbl(i).date_invoiced);
7663 END IF;
7664
7665 END IF;
7666 END IF;
7667 END LOOP;
7668
7669 END IF;
7670
7671 IF (l_rebook_adj_tbl.COUNT > 0) THEN
7672 OKL_REBOOK_CM_PVT.Rebook_Bill_adjustments
7673 (p_api_version => p_api_version
7674 ,p_init_msg_list => p_init_msg_list
7675 ,x_return_status => x_return_status
7676 ,x_msg_count => x_msg_count
7677 ,x_msg_data => x_msg_data
7678 ,p_commit => OKL_API.G_FALSE
7679 ,p_rebook_adj_tbl => l_rebook_adj_tbl
7680 );
7681
7682 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7683 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After calling OKL_REBOOK_CM_PVT.Rebook_Bill_adjustments '||x_return_status);
7684 END IF;
7685
7686 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7687 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7688 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
7689 raise OKL_API.G_EXCEPTION_ERROR;
7690 END IF;
7691
7692 --Bug# 4884423
7693 --Added new procedure for passthrough adjustments
7694 /*
7695 -- sjalasut, added code for Contract Rebook Enhancement. START
7696 OKL_BPD_TERMINATION_ADJ_PVT.create_rbk_passthru_adj(p_api_version => p_api_version
7697 ,p_init_msg_list => p_init_msg_list
7698 ,p_rebook_adj_tbl => l_rebook_adj_tbl
7699 ,x_disb_rec => lx_disb_rec
7700 ,x_return_status => x_return_status
7701 ,x_msg_count => x_msg_count
7702 ,x_msg_data => x_msg_data
7703 );
7704 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7705 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7706 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
7707 RAISE OKL_API.G_EXCEPTION_ERROR;
7708 END IF;
7709 -- sjalasut, added code for Contract Rebook Enhancement. END
7710 */
7711
7712 END IF;
7713
7714 --Bug# 4884423
7715 OKL_CONTRACT_REBOOK_PVT.create_pth_disb_adjustment
7716 (p_api_version => p_api_version,
7717 p_init_msg_list => p_init_msg_list,
7718 x_return_status => x_return_status,
7719 x_msg_count => x_msg_count,
7720 x_msg_data => x_msg_data,
7721 p_rbk_khr_id => p_rbk_khr_id,
7722 p_orig_khr_id => p_orig_khr_id,
7723 p_trx_id => p_trx_id,
7724 p_trx_date => p_trx_date
7725 );
7726
7727 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7728 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7729 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
7730 RAISE OKL_API.G_EXCEPTION_ERROR;
7731 END IF;
7732
7733 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
7734 x_msg_data => x_msg_data);
7735
7736 EXCEPTION
7737 when OKL_API.G_EXCEPTION_ERROR then
7738 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7739 p_api_name => l_api_name,
7740 p_pkg_name => G_PKG_NAME,
7741 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
7742 x_msg_count => x_msg_count,
7743 x_msg_data => x_msg_data,
7744 p_api_type => G_API_TYPE);
7745
7746 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
7747 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7748 p_api_name => l_api_name,
7749 p_pkg_name => G_PKG_NAME,
7750 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
7751 x_msg_count => x_msg_count,
7752 x_msg_data => x_msg_data,
7753 p_api_type => G_API_TYPE);
7754
7755 when OTHERS then
7756 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7757 p_api_name => l_api_name,
7758 p_pkg_name => G_PKG_NAME,
7759 p_exc_name => 'OTHERS',
7760 x_msg_count => x_msg_count,
7761 x_msg_data => x_msg_data,
7762 p_api_type => G_API_TYPE);
7763
7764 END create_billing_adjustment;
7765
7766
7767 -- dedey, Bug#4264314
7768 /*
7769
7770 ------------------------------------------------------------------------------
7771 -- PROCEDURE create_accrual_adjustment
7772 --
7773 -- This procedure calculates the accrual adjustment for all accrual streams
7774 -- where there is a difference between amount actually accrued and amount
7775 -- that should have been accrued and calls the Accrual api to make the
7776 -- accrual adjustment. The current streams taken into account for
7777 -- calculating accrual adjustment are then marked as Accrual adjusted in order
7778 -- to stop duplicate accrual.
7779 --
7780 -- Calls:
7781 -- Called By:
7782 ------------------------------------------------------------------------------
7783 PROCEDURE create_accrual_adjustment(
7784 p_api_version IN NUMBER,
7785 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
7786 x_return_status OUT NOCOPY VARCHAR2,
7787 x_msg_count OUT NOCOPY NUMBER,
7788 x_msg_data OUT NOCOPY VARCHAR2,
7789 p_rbk_khr_id IN NUMBER,
7790 p_orig_khr_id IN NUMBER,
7791 p_trx_id IN NUMBER,
7792 p_trx_date IN DATE
7793 ) IS
7794
7795 l_api_name VARCHAR2(35) := 'create_accrual_adjustment';
7796 l_proc_name VARCHAR2(35) := 'CREATE_ACCRUAL_ADJUSTMENT';
7797 l_api_version CONSTANT NUMBER := 1;
7798
7799 CURSOR curr_accrual_streams_csr(p_khr_id IN NUMBER) IS
7800 SELECT new_stm.id new_stm_id,
7801 orig_stm.id orig_stm_id,
7802 orig_stm.sty_id,
7803 orig_stm.kle_id,
7804 styt.name
7805 FROM okl_streams new_stm,
7806 okl_prod_strm_types psty,
7807 okl_k_headers khr,
7808 okl_streams orig_stm,
7809 okl_strm_type_tl styt
7810 WHERE khr.id = p_khr_id
7811 AND psty.pdt_id = khr.pdt_id
7812 AND psty.accrual_yn = 'Y'
7813 AND psty.sty_id = new_stm.sty_id
7814 AND new_stm.khr_id = khr.id
7815 AND new_stm.say_code = 'CURR'
7816 AND orig_stm.id = new_stm.link_hist_stream_id
7817 AND styt.id = orig_stm.sty_id
7818 AND styt.language = USERENV('LANG');
7819
7820 CURSOR max_accrual_date_csr(p_stm_id IN NUMBER) IS
7821 SELECT MAX(sel.stream_element_date) stream_element_date
7822 FROM okl_strm_elements sel
7823 WHERE sel.stm_id = p_stm_id
7824 AND sel.accrued_yn IS NOT NULL;
7825
7826 CURSOR actual_amount_accrued_csr(p_stm_id IN NUMBER) IS
7827 SELECT NVL(SUM(sel.amount),0) amount
7828 FROM okl_strm_elements sel
7829 WHERE sel.stm_id = p_stm_id
7830 AND sel.accrued_yn IS NOT NULL;
7831
7832 CURSOR amount_to_be_accrued_csr(p_stm_id IN NUMBER,
7833 p_max_accrual_date IN DATE) IS
7834 SELECT sel.id sel_id,
7835 NVL(sel.amount,0) amount
7836 FROM okl_strm_elements sel
7837 WHERE sel.stm_id = p_stm_id
7838 AND sel.stream_element_date <= p_max_accrual_date;
7839
7840 -- Cursor to fetch Streams deleted during rebook
7841 CURSOR del_accrual_streams_csr(p_orig_khr_id IN NUMBER,
7842 p_rbk_khr_id IN NUMBER) IS
7843 SELECT orig_stm.id orig_stm_id,
7844 orig_stm.sty_id,
7845 orig_stm.kle_id,
7846 styt.name,
7847 cle.lse_id
7848 FROM okl_streams orig_stm,
7849 okl_prod_strm_types psty,
7850 okl_k_headers khr,
7851 okc_k_lines_b cle,
7852 okl_strm_type_tl styt
7853 WHERE khr.id = p_orig_khr_id
7854 AND psty.pdt_id = khr.pdt_id
7855 AND psty.accrual_yn = 'Y'
7856 AND psty.sty_id = orig_stm.sty_id
7857 AND orig_stm.khr_id = khr.id
7858 AND orig_stm.say_code = 'CURR'
7859 AND cle.id(+) = orig_stm.kle_id
7860 AND cle.dnz_chr_id(+) = orig_stm.khr_id
7861 AND NOT EXISTS (SELECT 1
7862 FROM okl_streams new_stm
7863 WHERE new_stm.khr_id = p_rbk_khr_id
7864 AND new_stm.say_code = 'CURR'
7865 AND new_stm.link_hist_stream_id = orig_stm.id)
7866 AND styt.id = orig_stm.sty_id
7867 AND styt.language = USERENV('LANG');
7868
7869 l_max_accrual_date DATE;
7870 l_actual_amount_accrued NUMBER;
7871 l_amount_to_be_accrued NUMBER;
7872 l_accrual_adjustment NUMBER;
7873
7874 l_selv_tbl selv_tbl_type;
7875 x_selv_tbl selv_tbl_type;
7876
7877 l_selv_count NUMBER;
7878
7879 i NUMBER;
7880 lx_trx_number OKL_TRX_CONTRACTS.trx_number%TYPE;
7881 l_accrual_rec OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type;
7882 l_stream_tbl OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type;
7883 l_gl_date DATE;
7884
7885 BEGIN
7886
7887 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7888 debug_message(l_proc_name);
7889 -- call START_ACTIVITY to create savepoint, check compatibility
7890 -- and initialize message list
7891 x_return_status := OKL_API.START_ACTIVITY(
7892 p_api_name => l_api_name,
7893 p_pkg_name => G_PKG_NAME,
7894 p_init_msg_list => p_init_msg_list,
7895 l_api_version => l_api_version,
7896 p_api_version => p_api_version,
7897 p_api_type => G_API_TYPE,
7898 x_return_status => x_return_status);
7899
7900 -- check if activity started successfully
7901 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7902 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7903 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
7904 raise OKL_API.G_EXCEPTION_ERROR;
7905 END IF;
7906
7907 -- For On-line and Mass rebook, calculate accrual adjustment
7908 -- for all Current Accrual Streams for which Accruals were generated
7909 -- in the Original contract
7910
7911 i := 0;
7912 l_stream_tbl.DELETE;
7913 FOR curr_accrual_streams_rec in curr_accrual_streams_csr(p_khr_id => p_rbk_khr_id)
7914 LOOP
7915
7916 l_max_accrual_date := NULL;
7917 OPEN max_accrual_date_csr(p_stm_id => curr_accrual_streams_rec.orig_stm_id);
7918 FETCH max_accrual_date_csr INTO l_max_accrual_date;
7919 CLOSE max_accrual_date_csr;
7920
7921 debug_message('New Stream Id: '||curr_accrual_streams_rec.new_stm_id);
7922 debug_message('Orig Stream Id: '||curr_accrual_streams_rec.orig_stm_id);
7923 debug_message('Max Accrual Date: '||l_max_accrual_date);
7924
7925 IF l_max_accrual_date IS NOT NULL THEN
7926
7927 l_actual_amount_accrued := 0;
7928 OPEN actual_amount_accrued_csr(p_stm_id => curr_accrual_streams_rec.orig_stm_id);
7929 FETCH actual_amount_accrued_csr INTO l_actual_amount_accrued;
7930 CLOSE actual_amount_accrued_csr;
7931
7932 debug_message('Actual Amount Accrued: '||l_actual_amount_accrued);
7933
7934 l_amount_to_be_accrued := 0;
7935 l_selv_count := 0;
7936 l_selv_tbl.DELETE;
7937
7938 FOR amount_to_be_accrued_rec IN
7939 amount_to_be_accrued_csr(p_stm_id => curr_accrual_streams_rec.new_stm_id,
7940 p_max_accrual_date => l_max_accrual_date)
7941 LOOP
7942
7943 -- Call Streams api to update accrued_yn, accrual_adj_flag
7944 l_selv_count := l_selv_count + 1;
7945 l_amount_to_be_accrued := l_amount_to_be_accrued + amount_to_be_accrued_rec.amount;
7946
7947 l_selv_tbl(l_selv_count).id := amount_to_be_accrued_rec.sel_id;
7948 l_selv_tbl(l_selv_count).accrued_yn := 'Y';
7949 l_selv_tbl(l_selv_count).accrual_adj_flag := 'Y';
7950
7951 END LOOP;
7952
7953 debug_message('Amount to be Accrued: '||l_amount_to_be_accrued);
7954
7955 l_accrual_adjustment := l_amount_to_be_accrued - l_actual_amount_accrued;
7956
7957 debug_message('Accrual Adjustment: '||l_accrual_adjustment);
7958
7959 IF l_accrual_adjustment <> 0 THEN
7960 i := i + 1;
7961 l_stream_tbl(i).stream_type_id := curr_accrual_streams_rec.sty_id;
7962 l_stream_tbl(i).stream_type_name := curr_accrual_streams_rec.name;
7963 l_stream_tbl(i).stream_amount := l_accrual_adjustment;
7964 l_stream_tbl(i).kle_id := curr_accrual_streams_rec.kle_id;
7965
7966 debug_message('Accrual Adjustment Record');
7967 debug_message('i '||i);
7968 debug_message('l_stream_tbl(i).stream_type_id: '||l_stream_tbl(i).stream_type_id);
7969 debug_message('l_stream_tbl(i).stream_type_name: '||l_stream_tbl(i).stream_type_name);
7970 debug_message('l_stream_tbl(i).stream_amount: '||l_stream_tbl(i).stream_amount);
7971 debug_message('l_stream_tbl(i).kle_id: '||l_stream_tbl(i).kle_id);
7972 END IF;
7973
7974 IF (l_selv_tbl.COUNT > 0) THEN
7975 okl_streams_pub.update_stream_elements(
7976 p_api_version => 1.0,
7977 p_init_msg_list => OKL_API.G_FALSE,
7978 x_return_status => x_return_status,
7979 x_msg_count => x_msg_count,
7980 x_msg_data => x_msg_data,
7981 p_selv_tbl => l_selv_tbl,
7982 x_selv_tbl => x_selv_tbl
7983 );
7984
7985 debug_message('After Update of Stream Elements - Accrued Yn and Accrual Adj Flag '||x_return_status);
7986
7987 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7988 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7989 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
7990 raise OKL_API.G_EXCEPTION_ERROR;
7991 END IF;
7992 END IF;
7993
7994 END IF;
7995 END LOOP;
7996
7997 -- For On-line rebook, calculate accrual adjustment
7998 -- for Streams deleted during Rebook
7999 -- Insurance Streams are ignored by this process, so no
8000 -- adjustment will be calculated for Insurance Streams here
8001 IF (p_rbk_khr_id <> p_orig_khr_id) THEN -- Online rebook
8002
8003 FOR del_accrual_streams_rec IN
8004 del_accrual_streams_csr(p_orig_khr_id => p_orig_khr_id,
8005 p_rbk_khr_id => p_rbk_khr_id)
8006 LOOP
8007
8008 -- Do not process Insurance Streams
8009 IF (NVL(del_accrual_streams_rec.lse_id,-1) <> G_INSURANCE_LSE_ID) THEN
8010
8011 debug_message('Deleted Orig Stream Id: '||del_accrual_streams_rec.orig_stm_id);
8012
8013 l_actual_amount_accrued := 0;
8014 OPEN actual_amount_accrued_csr(p_stm_id => del_accrual_streams_rec.orig_stm_id);
8015 FETCH actual_amount_accrued_csr INTO l_actual_amount_accrued;
8016 CLOSE actual_amount_accrued_csr;
8017
8018 debug_message('Actual Amount Accrued: '||l_actual_amount_accrued);
8019
8020 l_accrual_adjustment := -1 * l_actual_amount_accrued;
8021
8022 debug_message('Accrual Adjustment: '||l_accrual_adjustment);
8023
8024 IF l_actual_amount_accrued <> 0 THEN
8025 i := i + 1;
8026 l_stream_tbl(i).stream_type_id := del_accrual_streams_rec.sty_id;
8027 l_stream_tbl(i).stream_type_name := del_accrual_streams_rec.name;
8028 l_stream_tbl(i).stream_amount := l_accrual_adjustment;
8029 l_stream_tbl(i).kle_id := del_accrual_streams_rec.kle_id;
8030
8031 debug_message('Accrual Adjustment Record');
8032 debug_message('i '||i);
8033 debug_message('l_stream_tbl(i).stream_type_id: '||l_stream_tbl(i).stream_type_id);
8034 debug_message('l_stream_tbl(i).stream_type_name: '||l_stream_tbl(i).stream_type_name);
8035 debug_message('l_stream_tbl(i).stream_amount: '||l_stream_tbl(i).stream_amount);
8036 debug_message('l_stream_tbl(i).kle_id: '||l_stream_tbl(i).kle_id);
8037 END IF;
8038 END IF;
8039 END LOOP;
8040
8041 END IF;
8042
8043 IF (l_stream_tbl.COUNT > 0) THEN
8044
8045 l_gl_date := OKL_ACCOUNTING_UTIL.get_valid_gl_date(p_gl_date => p_trx_date);
8046
8047 l_accrual_rec.contract_id := p_orig_khr_id;
8048 l_accrual_rec.accrual_date := l_gl_date;
8049 l_accrual_rec.description := 'Rebook Adjustment';
8050 l_accrual_rec.source_trx_id := p_trx_id;
8051 l_accrual_rec.source_trx_type := 'TCN';
8052
8053 debug_message('Accrual Adjustment Header Record');
8054 debug_message('l_accrual_rec.contract_id: '||l_accrual_rec.contract_id);
8055 debug_message('l_accrual_rec.accrual_date: '||l_accrual_rec.accrual_date);
8056 debug_message('l_accrual_rec.description: '||l_accrual_rec.description);
8057 debug_message('l_accrual_rec.source_trx_id: '||l_accrual_rec.source_trx_id);
8058 debug_message('l_accrual_rec.source_trx_type: '||l_accrual_rec.source_trx_type);
8059
8060 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
8061 p_api_version => p_api_version,
8062 p_init_msg_list => p_init_msg_list,
8063 x_return_status => x_return_status,
8064 x_msg_count => x_msg_count,
8065 x_msg_data => x_msg_data ,
8066 x_trx_number => lx_trx_number,
8067 p_accrual_rec => l_accrual_rec,
8068 p_stream_tbl => l_stream_tbl);
8069
8070 debug_message('After calling OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS '||x_return_status);
8071
8072 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8073 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8074 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
8075 raise OKL_API.G_EXCEPTION_ERROR;
8076 END IF;
8077 END IF;
8078
8079 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
8080 x_msg_data => x_msg_data);
8081
8082 EXCEPTION
8083 when OKL_API.G_EXCEPTION_ERROR then
8084 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8085 p_api_name => l_api_name,
8086 p_pkg_name => G_PKG_NAME,
8087 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
8088 x_msg_count => x_msg_count,
8089 x_msg_data => x_msg_data,
8090 p_api_type => G_API_TYPE);
8091
8092 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
8093 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8094 p_api_name => l_api_name,
8095 p_pkg_name => G_PKG_NAME,
8096 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
8097 x_msg_count => x_msg_count,
8098 x_msg_data => x_msg_data,
8099 p_api_type => G_API_TYPE);
8100
8101 when OTHERS then
8102 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8103 p_api_name => l_api_name,
8104 p_pkg_name => G_PKG_NAME,
8105 p_exc_name => 'OTHERS',
8106 x_msg_count => x_msg_count,
8107 x_msg_data => x_msg_data,
8108 p_api_type => G_API_TYPE);
8109
8110 END create_accrual_adjustment;
8111 --Bug# 4212626: end
8112 */
8113
8114 ------------------------------------------------------------------------------
8115 -- PROCEDURE calc_accrual_adjustment
8116 --
8117 -- This procedure calculates the accrual adjustment for all accrual streams
8118 -- where there is a difference between amount actually accrued and amount
8119 -- that should have been accrued and calls the Accrual api to make the
8120 -- accrual adjustment. The current streams taken into account for
8121 -- calculating accrual adjustment are then marked as Accrual adjusted in order
8122 -- to stop duplicate accrual.
8123 --
8124 -- Calls:
8125 -- Called By:
8126 -- Added new input parameters p_trx_tbl_code and p_trx_type for Bug# 6344223
8127 ------------------------------------------------------------------------------
8128 PROCEDURE calc_accrual_adjustment(
8129 p_api_version IN NUMBER,
8130 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
8131 x_return_status OUT NOCOPY VARCHAR2,
8132 x_msg_count OUT NOCOPY NUMBER,
8133 x_msg_data OUT NOCOPY VARCHAR2,
8134 p_rbk_khr_id IN NUMBER,
8135 p_orig_khr_id IN NUMBER,
8136 p_trx_id IN NUMBER,
8137 p_trx_date IN DATE,
8138 x_accrual_rec OUT NOCOPY OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type,
8139 x_stream_tbl OUT NOCOPY OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type,
8140 p_trx_tbl_code IN VARCHAR2 DEFAULT 'TCN',
8141 p_trx_type IN VARCHAR2 DEFAULT 'CRB'
8142 ) IS
8143
8144 l_api_name VARCHAR2(35) := 'calc_accrual_adjustment';
8145 l_proc_name VARCHAR2(35) := 'calc_accrual_adjustment';
8146 l_api_version CONSTANT NUMBER := 1;
8147
8148 CURSOR curr_accrual_streams_csr(p_khr_id IN NUMBER,
8149 p_reporting_pdt_id IN NUMBER) IS -- MGAAP
8150 SELECT new_stm.id new_stm_id,
8151 orig_stm.id orig_stm_id,
8152 orig_stm.sty_id,
8153 orig_stm.kle_id,
8154 sty.name
8155 --FROM okl_streams new_stm,
8156 FROM okl_streams_rep_v new_stm, -- MGAAP 7263041
8157 okl_prod_strm_types psty,
8158 okl_k_headers khr,
8159 --okl_streams orig_stm,
8160 okl_streams_rep_v orig_stm, -- MGAAP 7263041
8161 okl_strm_type_v sty
8162 WHERE khr.id = p_khr_id
8163 --AND psty.pdt_id = khr.pdt_id
8164 AND psty.pdt_id = DECODE(OKL_STREAMS_SEC_PVT.GET_STREAMS_POLICY,
8165 'PRIMARY', khr.pdt_id, p_reporting_pdt_id) -- MGAAP 7263041
8166 AND psty.accrual_yn = 'Y'
8167 AND psty.sty_id = new_stm.sty_id
8168 AND new_stm.khr_id = khr.id
8169 AND new_stm.say_code = 'CURR'
8170 AND orig_stm.id = new_stm.link_hist_stream_id
8171 AND sty.id = orig_stm.sty_id
8172 -- Bug# 4775555: Exclude Investor accrual streams
8173 AND sty.stream_type_purpose NOT IN
8174 ('INVESTOR_RENTAL_ACCRUAL',
8175 'INVESTOR_PRETAX_INCOME',
8176 'INVESTOR_INTEREST_INCOME',
8177 'INVESTOR_VARIABLE_INTEREST');
8178
8179 CURSOR max_accrual_date_csr(p_stm_id IN NUMBER) IS
8180 SELECT MAX(sel.stream_element_date) stream_element_date
8181 FROM okl_strm_elements sel
8182 WHERE sel.stm_id = p_stm_id
8183 AND sel.accrued_yn IS NOT NULL;
8184
8185 CURSOR actual_amount_accrued_csr(p_stm_id IN NUMBER) IS
8186 SELECT NVL(SUM(sel.amount),0) amount
8187 FROM okl_strm_elements sel
8188 WHERE sel.stm_id = p_stm_id
8189 AND sel.accrued_yn IS NOT NULL;
8190
8191 CURSOR amount_to_be_accrued_csr(p_stm_id IN NUMBER,
8192 p_max_accrual_date IN DATE) IS
8193 SELECT sel.id sel_id,
8194 NVL(sel.amount,0) amount
8195 FROM okl_strm_elements sel
8196 WHERE sel.stm_id = p_stm_id
8197 AND sel.stream_element_date <= p_max_accrual_date;
8198
8199 -- Cursor to fetch Streams deleted during rebook
8200 CURSOR del_accrual_streams_csr(p_orig_khr_id IN NUMBER,
8201 p_rbk_khr_id IN NUMBER,
8202 p_reporting_pdt_id IN NUMBER) IS -- MGAAP
8203 SELECT orig_stm.id orig_stm_id,
8204 orig_stm.sty_id,
8205 orig_stm.kle_id,
8206 sty.name,
8207 cle.lse_id
8208 --FROM okl_streams orig_stm,
8209 FROM okl_streams_rep_v orig_stm, -- MGAAP 7263041
8210 okl_prod_strm_types psty,
8211 okl_k_headers khr,
8212 okc_k_lines_b cle,
8213 okl_strm_type_v sty
8214 WHERE khr.id = p_orig_khr_id
8215 --AND psty.pdt_id = khr.pdt_id
8216 AND psty.pdt_id = DECODE(OKL_STREAMS_SEC_PVT.GET_STREAMS_POLICY,
8217 'PRIMARY', khr.pdt_id, p_reporting_pdt_id) -- MGAAP 7263041
8218 AND psty.accrual_yn = 'Y'
8219 AND psty.sty_id = orig_stm.sty_id
8220 AND orig_stm.khr_id = khr.id
8221 AND orig_stm.say_code = 'CURR'
8222 AND orig_stm.sgn_code NOT IN ('INTC','LATE_CALC') -- Bug6472228
8223 AND cle.id(+) = orig_stm.kle_id
8224 AND cle.dnz_chr_id(+) = orig_stm.khr_id
8225 AND NOT EXISTS (SELECT 1
8226 --FROM okl_streams new_stm
8227 FROM okl_streams_rep_v new_stm -- MGAAP 7263041
8228 WHERE new_stm.khr_id = p_rbk_khr_id
8229 AND new_stm.say_code = 'CURR'
8230 AND new_stm.link_hist_stream_id = orig_stm.id)
8231 AND sty.id = orig_stm.sty_id
8232 -- Bug# 4775555: Exclude Investor accrual streams
8233 AND sty.stream_type_purpose NOT IN
8234 ('INVESTOR_RENTAL_ACCRUAL',
8235 'INVESTOR_PRETAX_INCOME',
8236 'INVESTOR_INTEREST_INCOME',
8237 'INVESTOR_VARIABLE_INTEREST');
8238
8239 l_max_accrual_date DATE;
8240 l_actual_amount_accrued NUMBER;
8241 l_amount_to_be_accrued NUMBER;
8242 l_accrual_adjustment NUMBER;
8243
8244 l_selv_tbl selv_tbl_type;
8245 x_selv_tbl selv_tbl_type;
8246
8247 l_selv_count NUMBER;
8248
8249 i NUMBER;
8250 --lx_trx_number OKL_TRX_CONTRACTS.trx_number%TYPE;
8251 l_accrual_rec OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type;
8252 l_stream_tbl OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type;
8253 l_gl_date DATE;
8254
8255 -- MGAAP start 7263041
8256 CURSOR c_get_reporting_pdt_id(p_chr_id IN NUMBER) IS
8257 SELECT b.reporting_pdt_id, a.multi_gaap_yn
8258 FROM okl_k_headers a,
8259 okl_products b
8260 WHERE a.ID = p_chr_id
8261 AND a.PDT_ID = b.ID;
8262
8263 l_reporting_pdt_id OKL_PRODUCTS.reporting_pdt_id%TYPE := null;
8264 l_multi_gaap_yn OKL_K_HEADERS.MULTI_GAAP_YN%TYPE;
8265 l_current_mgaap_context VARCHAR2(10);
8266 -- MGAAP end 7263041
8267
8268 BEGIN
8269 IF (G_DEBUG_ENABLED = 'Y') THEN
8270 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
8271 END IF;
8272
8273 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8274 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8275 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
8276 END IF;
8277 -- call START_ACTIVITY to create savepoint, check compatibility
8278 -- and initialize message list
8279 x_return_status := OKL_API.START_ACTIVITY(
8280 p_api_name => l_api_name,
8281 p_pkg_name => G_PKG_NAME,
8282 p_init_msg_list => p_init_msg_list,
8283 l_api_version => l_api_version,
8284 p_api_version => p_api_version,
8285 p_api_type => G_API_TYPE,
8286 x_return_status => x_return_status);
8287
8288 -- check if activity started successfully
8289 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8290 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8291 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8292 RAISE OKL_API.G_EXCEPTION_ERROR;
8293 END IF;
8294
8295 -- For On-line and Mass rebook, calculate accrual adjustment
8296 -- for all Current Accrual Streams for which Accruals were generated
8297 -- in the Original contract
8298
8299 -- MGAAP start 7263041
8300 l_current_mgaap_context := OKL_STREAMS_SEC_PVT.GET_STREAMS_POLICY;
8301 IF (l_current_mgaap_context = 'REPORT') THEN
8302 OPEN c_get_reporting_pdt_id(p_rbk_khr_id);
8303 FETCH c_get_reporting_pdt_id INTO l_reporting_pdt_id, l_multi_gaap_yn;
8304 CLOSE c_get_reporting_pdt_id;
8305 END IF;
8306 -- MGAAP end 7263041
8307
8308 i := 0;
8309 l_stream_tbl.DELETE;
8310 FOR curr_accrual_streams_rec IN curr_accrual_streams_csr(p_khr_id => p_rbk_khr_id, p_reporting_pdt_id => l_reporting_pdt_id)
8311 LOOP
8312
8313 l_max_accrual_date := NULL;
8314 OPEN max_accrual_date_csr(p_stm_id => curr_accrual_streams_rec.orig_stm_id);
8315 FETCH max_accrual_date_csr INTO l_max_accrual_date;
8316 CLOSE max_accrual_date_csr;
8317
8318 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8319 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'New Stream Id: '||curr_accrual_streams_rec.new_stm_id);
8320 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Orig Stream Id: '||curr_accrual_streams_rec.orig_stm_id);
8321 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Max Accrual Date: '||l_max_accrual_date);
8322 END IF;
8323
8324 IF l_max_accrual_date IS NOT NULL THEN
8325
8326 l_actual_amount_accrued := 0;
8327 OPEN actual_amount_accrued_csr(p_stm_id => curr_accrual_streams_rec.orig_stm_id);
8328 FETCH actual_amount_accrued_csr INTO l_actual_amount_accrued;
8329 CLOSE actual_amount_accrued_csr;
8330
8331 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8332 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Actual Amount Accrued: '||l_actual_amount_accrued);
8333 END IF;
8334
8335 l_amount_to_be_accrued := 0;
8336 l_selv_count := 0;
8337 l_selv_tbl.DELETE;
8338
8339 FOR amount_to_be_accrued_rec IN
8340 amount_to_be_accrued_csr(p_stm_id => curr_accrual_streams_rec.new_stm_id,
8341 p_max_accrual_date => l_max_accrual_date)
8342 LOOP
8343
8344 -- Call Streams api to update accrued_yn, accrual_adj_flag
8345 l_selv_count := l_selv_count + 1;
8346 l_amount_to_be_accrued := l_amount_to_be_accrued + amount_to_be_accrued_rec.amount;
8347
8348 l_selv_tbl(l_selv_count).id := amount_to_be_accrued_rec.sel_id;
8349 l_selv_tbl(l_selv_count).accrued_yn := 'Y';
8350 l_selv_tbl(l_selv_count).accrual_adj_flag := 'Y';
8351
8352 END LOOP;
8353
8354 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8355 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Amount to be Accrued: '||l_amount_to_be_accrued);
8356 END IF;
8357
8358 l_accrual_adjustment := l_amount_to_be_accrued - l_actual_amount_accrued;
8359
8360 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8361 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Accrual Adjustment: '||l_accrual_adjustment);
8362 END IF;
8363
8364 IF l_accrual_adjustment <> 0 THEN
8365 i := i + 1;
8366 l_stream_tbl(i).stream_type_id := curr_accrual_streams_rec.sty_id;
8367 l_stream_tbl(i).stream_type_name := curr_accrual_streams_rec.name;
8368 l_stream_tbl(i).stream_amount := l_accrual_adjustment;
8369 l_stream_tbl(i).kle_id := curr_accrual_streams_rec.kle_id;
8370
8371 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8372 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Accrual Adjustment Record');
8373 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'i '||i);
8374 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_stream_tbl(i).stream_type_id: '||l_stream_tbl(i).stream_type_id);
8375 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_stream_tbl(i).stream_type_name: '||l_stream_tbl(i).stream_type_name);
8376 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_stream_tbl(i).stream_amount: '||l_stream_tbl(i).stream_amount);
8377 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_stream_tbl(i).kle_id: '||l_stream_tbl(i).kle_id);
8378 END IF;
8379 END IF;
8380
8381 IF (l_selv_tbl.COUNT > 0) THEN
8382 okl_streams_pub.update_stream_elements(
8383 p_api_version => 1.0,
8384 p_init_msg_list => OKL_API.G_FALSE,
8385 x_return_status => x_return_status,
8386 x_msg_count => x_msg_count,
8387 x_msg_data => x_msg_data,
8388 p_selv_tbl => l_selv_tbl,
8389 x_selv_tbl => x_selv_tbl
8390 );
8391
8392 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8393 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Update of Stream Elements - Accrued Yn and Accrual Adj Flag '||x_return_status);
8394 END IF;
8395
8396 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8397 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8398 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8399 RAISE OKL_API.G_EXCEPTION_ERROR;
8400 END IF;
8401 END IF;
8402
8403 END IF;
8404 END LOOP;
8405
8406 -- For On-line rebook, calculate accrual adjustment
8407 -- for Streams deleted during Rebook
8408 -- Insurance Streams are ignored by this process, so no
8409 -- adjustment will be calculated for Insurance Streams here
8410 IF (p_rbk_khr_id <> p_orig_khr_id) THEN -- Online rebook
8411
8412 FOR del_accrual_streams_rec IN
8413 del_accrual_streams_csr(p_orig_khr_id => p_orig_khr_id,
8414 p_rbk_khr_id => p_rbk_khr_id,
8415 p_reporting_pdt_id => l_reporting_pdt_id)
8416 LOOP
8417
8418 -- Do not process Insurance Streams
8419 IF (NVL(del_accrual_streams_rec.lse_id,-1) <> G_INSURANCE_LSE_ID) THEN
8420
8421 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8422 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Deleted Orig Stream Id: '||del_accrual_streams_rec.orig_stm_id);
8423 END IF;
8424
8425 l_actual_amount_accrued := 0;
8426 OPEN actual_amount_accrued_csr(p_stm_id => del_accrual_streams_rec.orig_stm_id);
8427 FETCH actual_amount_accrued_csr INTO l_actual_amount_accrued;
8428 CLOSE actual_amount_accrued_csr;
8429
8430 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8431 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Actual Amount Accrued: '||l_actual_amount_accrued);
8432 END IF;
8433
8434 l_accrual_adjustment := -1 * l_actual_amount_accrued;
8435
8436 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8437 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Accrual Adjustment: '||l_accrual_adjustment);
8438 END IF;
8439
8440 IF l_actual_amount_accrued <> 0 THEN
8441 i := i + 1;
8442 l_stream_tbl(i).stream_type_id := del_accrual_streams_rec.sty_id;
8443 l_stream_tbl(i).stream_type_name := del_accrual_streams_rec.name;
8444 l_stream_tbl(i).stream_amount := l_accrual_adjustment;
8445 l_stream_tbl(i).kle_id := del_accrual_streams_rec.kle_id;
8446
8447 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8448 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Accrual Adjustment Record');
8449 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'i '||i);
8450 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_stream_tbl(i).stream_type_id: '||l_stream_tbl(i).stream_type_id);
8451 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_stream_tbl(i).stream_type_name: '||l_stream_tbl(i).stream_type_name);
8452 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_stream_tbl(i).stream_amount: '||l_stream_tbl(i).stream_amount);
8453 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_stream_tbl(i).kle_id: '||l_stream_tbl(i).kle_id);
8454 END IF;
8455 END IF;
8456 END IF;
8457 END LOOP;
8458
8459 END IF;
8460
8461 IF (l_stream_tbl.COUNT > 0) THEN
8462
8463 l_gl_date := OKL_ACCOUNTING_UTIL.get_valid_gl_date(p_gl_date => p_trx_date);
8464
8465 l_accrual_rec.contract_id := p_orig_khr_id;
8466 l_accrual_rec.accrual_date := l_gl_date;
8467 l_accrual_rec.source_trx_id := p_trx_id;
8468
8469 --Bug# 6344223
8470 l_accrual_rec.source_trx_type := p_trx_tbl_code;
8471 IF p_trx_type = 'CRB' THEN
8472 l_accrual_rec.description := 'Rebook Adjustment';
8473 ELSIF p_trx_type = 'ALI' THEN
8474 l_accrual_rec.description := 'Split Asset Adjustment';
8475 END IF;
8476 --end Bug# 6344223
8477
8478 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8479 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Accrual Adjustment Header Record');
8480 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_accrual_rec.contract_id: '||l_accrual_rec.contract_id);
8481 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_accrual_rec.accrual_date: '||l_accrual_rec.accrual_date);
8482 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_accrual_rec.description: '||l_accrual_rec.description);
8483 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_accrual_rec.source_trx_id: '||l_accrual_rec.source_trx_id);
8484 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_accrual_rec.source_trx_type: '||l_accrual_rec.source_trx_type);
8485 END IF;
8486
8487
8488 x_stream_tbl := l_stream_tbl;
8489 x_accrual_rec := l_accrual_rec;
8490 END IF;
8491
8492 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
8493 x_msg_data => x_msg_data);
8494
8495 EXCEPTION
8496 WHEN OKL_API.G_EXCEPTION_ERROR THEN
8497 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8498 p_api_name => l_api_name,
8499 p_pkg_name => G_PKG_NAME,
8500 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
8501 x_msg_count => x_msg_count,
8502 x_msg_data => x_msg_data,
8503 p_api_type => G_API_TYPE);
8504
8505 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8506 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8507 p_api_name => l_api_name,
8508 p_pkg_name => G_PKG_NAME,
8509 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
8510 x_msg_count => x_msg_count,
8511 x_msg_data => x_msg_data,
8512 p_api_type => G_API_TYPE);
8513
8514 WHEN OTHERS THEN
8515 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8516 p_api_name => l_api_name,
8517 p_pkg_name => G_PKG_NAME,
8518 p_exc_name => 'OTHERS',
8519 x_msg_count => x_msg_count,
8520 x_msg_data => x_msg_data,
8521 p_api_type => G_API_TYPE);
8522 END calc_accrual_adjustment;
8523
8524 -- dedey, Bug#4264314
8525
8526 -- Bug# 4775555: Start
8527 ------------------------------------------------------------------------------
8528 -- PROCEDURE create_inv_disb_adjustment
8529 --
8530 -- This procedure calculates the disbursement adjustment for all disbursement streams
8531 -- where there is a difference between amount actually disbursed and amount
8532 -- that should have been disbursed and creates an Inverstor Disbursement Adjustment
8533 -- Stream for the adjustment amount. The current streams taken into account for
8534 -- calculating disbursement adjustment are then marked as Disbursement adjusted in order
8535 -- to stop duplicate disbursement.
8536 --
8537 -- Calls:
8538 -- Called By:
8539 ------------------------------------------------------------------------------
8540 PROCEDURE create_inv_disb_adjustment(
8541 p_api_version IN NUMBER,
8542 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
8543 x_return_status OUT NOCOPY VARCHAR2,
8544 x_msg_count OUT NOCOPY NUMBER,
8545 x_msg_data OUT NOCOPY VARCHAR2,
8546 p_orig_khr_id IN NUMBER
8547 ) IS
8548
8549 l_api_name VARCHAR2(35) := 'create_inv_disb_adjustment';
8550 l_proc_name VARCHAR2(35) := 'CREATE_INV_DISB_ADJUSTMENT';
8551 l_api_version CONSTANT NUMBER := 1;
8552
8553 CURSOR chr_assets_csr(p_khr_id IN NUMBER) IS
8554 SELECT id cle_id
8555 FROM okc_k_lines_b cle
8556 WHERE cle.chr_id = p_khr_id
8557 AND cle.dnz_chr_id = p_khr_id
8558 AND cle.lse_id = 33;
8559
8560 CURSOR curr_sec_strms_csr(p_khr_id IN NUMBER,
8561 p_kle_id IN NUMBER) IS
8562 SELECT pol.khr_id agreement_id,
8563 new_stm.khr_id khr_id,
8564 new_stm.kle_id kle_id,
8565 new_stm.sty_id sty_id,
8566 new_stm.id new_stm_id,
8567 orig_stm.id orig_stm_id
8568 FROM okl_pools pol,
8569 okl_pool_contents pcn,
8570 okl_strm_type_b sty,
8571 okl_streams new_stm,
8572 okl_streams orig_stm
8573 WHERE pcn.sty_id = sty.id
8574 AND pcn.pol_id = pol.id
8575 AND new_stm.kle_id = pcn.kle_id
8576 AND new_stm.khr_id = pcn.khr_id
8577 AND new_stm.sty_id = pcn.sty_id
8578 AND new_stm.say_code = 'CURR'
8579 AND new_stm.active_yn = 'Y'
8580 AND pol.status_code = 'ACTIVE'
8581 AND pcn.status_code = 'ACTIVE'
8582 AND new_stm.khr_id = p_khr_id
8583 AND new_stm.kle_id = p_kle_id
8584 AND sty.billable_yn = 'Y'
8585 AND orig_stm.id = new_stm.link_hist_stream_id;
8586
8587 CURSOR actual_amount_disb_csr(p_stm_id IN NUMBER) IS
8588 SELECT NVL(SUM(inv_sel.amount),0) amount
8589 FROM okl_strm_elements inv_sel,
8590 okl_strm_elements sel
8591 WHERE sel.stm_id = p_stm_id
8592 AND sel.date_billed IS NOT NULL
8593 AND inv_sel.sel_id = sel.id;
8594
8595 CURSOR amount_to_be_disb_csr(p_stm_id IN NUMBER) IS
8596 SELECT inv_sel.id sel_id,
8597 NVL(inv_sel.amount,0) amount
8598 FROM okl_strm_elements inv_sel,
8599 okl_strm_elements sel
8600 WHERE sel.stm_id = p_stm_id
8601 AND sel.date_billed IS NOT NULL
8602 AND inv_sel.sel_id = sel.id;
8603
8604 l_actual_amount_disb NUMBER;
8605 l_amount_to_be_disb NUMBER;
8606 l_disb_adjustment NUMBER;
8607
8608 TYPE disb_adj_rec_type IS RECORD (
8609 kle_id NUMBER := NULL,
8610 disb_adj_amt NUMBER := NULL);
8611
8612 TYPE disb_adj_tbl_type IS TABLE OF disb_adj_rec_type
8613 INDEX BY BINARY_INTEGER;
8614
8615 l_disb_adj_tbl disb_adj_tbl_type;
8616
8617 l_stmv_rec_init Okl_Streams_pub.stmv_rec_type;
8618
8619 l_stmv_rec_new_disb Okl_Streams_pub.stmv_rec_type;
8620 l_selv_tbl_new_disb Okl_Streams_pub.selv_tbl_type;
8621 lx_stmv_rec_new_disb Okl_Streams_pub.stmv_rec_type;
8622 lx_selv_tbl_new_disb Okl_Streams_pub.selv_tbl_type;
8623
8624 l_stmv_rec_old_disb Okl_Streams_pub.stmv_rec_type;
8625 lx_stmv_rec_old_disb Okl_Streams_pub.stmv_rec_type;
8626
8627 l_selv_tbl selv_tbl_type;
8628 x_selv_tbl selv_tbl_type;
8629
8630 l_selv_count NUMBER;
8631 i NUMBER;
8632
8633 CURSOR l_trx_num_csr IS
8634 SELECT OKL_SIF_SEQ.NEXTVAL
8635 FROM dual;
8636
8637 l_transaction_number NUMBER;
8638
8639 CURSOR old_disb_adj_stm_csr(p_chr_id NUMBER,
8640 p_kle_id NUMBER)
8641 IS
8642 SELECT stm.id stm_id
8643 FROM okl_streams stm,
8644 okl_strm_type_b sty
8645 WHERE stm.khr_id = p_chr_id
8646 AND stm.kle_id = p_kle_id
8647 AND stm.sty_id = sty.id
8648 AND stm.say_code = 'CURR'
8649 AND stm.active_yn = 'Y'
8650 AND sty.stream_type_purpose = 'INVESTOR_DISB_ADJUSTMENT';
8651
8652 l_old_disb_adj_stm_rec old_disb_adj_stm_csr%ROWTYPE;
8653
8654 CURSOR undisb_adj_amt_csr(p_stm_id NUMBER)
8655 IS
8656 SELECT NVL(SUM(sel.AMOUNT),0) amount
8657 FROM okl_strm_elements sel
8658 WHERE sel.stm_id = p_stm_id
8659 AND sel.date_billed IS NULL;
8660
8661 l_undisb_adj_amt_rec undisb_adj_amt_csr%ROWTYPE;
8662
8663 CURSOR chk_old_adj_disb_csr(p_stm_id NUMBER)
8664 IS
8665 SELECT 'Y'
8666 FROM okl_strm_elements sel
8667 WHERE sel.stm_id = p_stm_id
8668 AND sel.date_billed IS NULL;
8669
8670 l_undisb_adj_exists VARCHAR2(30);
8671
8672 l_disb_adj_sty_id OKL_STRM_TYPE_B.id%TYPE;
8673 l_inv_agreement_id OKC_K_HEADERS_B.id%TYPE;
8674
8675 BEGIN
8676 IF (G_DEBUG_ENABLED = 'Y') THEN
8677 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
8678 END IF;
8679
8680 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8681 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8682 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
8683 END IF;
8684 -- call START_ACTIVITY to create savepoint, check compatibility
8685 -- and initialize message list
8686 x_return_status := OKL_API.START_ACTIVITY(
8687 p_api_name => l_api_name,
8688 p_pkg_name => G_PKG_NAME,
8689 p_init_msg_list => p_init_msg_list,
8690 l_api_version => l_api_version,
8691 p_api_version => p_api_version,
8692 p_api_type => G_API_TYPE,
8693 x_return_status => x_return_status);
8694
8695 -- check if activity started successfully
8696 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8697 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8698 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
8699 raise OKL_API.G_EXCEPTION_ERROR;
8700 END IF;
8701
8702 -- For On-line and Mass rebook, calculate disbursement adjustment
8703 -- for all Current Billable Securitized Streams for which billing was done
8704 -- in the Original contract
8705
8706 i := 0;
8707 l_disb_adj_tbl.DELETE;
8708 FOR chr_assets_rec IN chr_assets_csr(p_khr_id => p_orig_khr_id)
8709 LOOP
8710
8711 i := i+1;
8712 FOR curr_sec_strms_rec in curr_sec_strms_csr(p_khr_id => p_orig_khr_id,
8713 p_kle_id => chr_assets_rec.cle_id)
8714 LOOP
8715
8716 l_inv_agreement_id := curr_sec_strms_rec.agreement_id;
8717 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8718 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'New Stream Id: '||curr_sec_strms_rec.new_stm_id);
8719 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Orig Stream Id: '||curr_sec_strms_rec.orig_stm_id);
8720 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Kle Id: '||curr_sec_strms_rec.kle_id);
8721 END IF;
8722
8723 l_actual_amount_disb:= 0;
8724 OPEN actual_amount_disb_csr(p_stm_id => curr_sec_strms_rec.orig_stm_id);
8725 FETCH actual_amount_disb_csr INTO l_actual_amount_disb;
8726 CLOSE actual_amount_disb_csr;
8727
8728 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8729 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Actual Amount Disbursed: '||l_actual_amount_disb);
8730 END IF;
8731
8732 l_amount_to_be_disb := 0;
8733 l_selv_count := 0;
8734 l_selv_tbl.DELETE;
8735
8736 FOR amount_to_be_disb_rec IN
8737 amount_to_be_disb_csr(p_stm_id => curr_sec_strms_rec.new_stm_id)
8738 LOOP
8739
8740 -- Call Streams api to update date_billed, bill_adj_flag
8741 l_selv_count := l_selv_count + 1;
8742 l_amount_to_be_disb := l_amount_to_be_disb + amount_to_be_disb_rec.amount;
8743 l_selv_tbl(l_selv_count).id := amount_to_be_disb_rec.sel_id;
8744 l_selv_tbl(l_selv_count).date_billed := SYSDATE;
8745 l_selv_tbl(l_selv_count).bill_adj_flag := 'Y';
8746 END LOOP;
8747
8748 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8749 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Amount to be Disbursed: '||l_amount_to_be_disb);
8750 END IF;
8751
8752 l_disb_adjustment := l_amount_to_be_disb - l_actual_amount_disb;
8753
8754 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8755 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Disbursement Adjustment: '||l_disb_adjustment);
8756 END IF;
8757
8758 l_disb_adj_tbl(i).kle_id := curr_sec_strms_rec.kle_id;
8759 l_disb_adj_tbl(i).disb_adj_amt := NVL(l_disb_adj_tbl(i).disb_adj_amt,0) + l_disb_adjustment;
8760
8761 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8762 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'i: '||i);
8763 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_disb_adj_tbl(i).kle_id: '||l_disb_adj_tbl(i).kle_id);
8764 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_disb_adj_tbl(i).disb_adj_amt: '||l_disb_adj_tbl(i).disb_adj_amt);
8765 END IF;
8766
8767 IF (l_selv_tbl.COUNT > 0) THEN
8768 okl_streams_pub.update_stream_elements(
8769 p_api_version => p_api_version,
8770 p_init_msg_list => p_init_msg_list,
8771 x_return_status => x_return_status,
8772 x_msg_count => x_msg_count,
8773 x_msg_data => x_msg_data,
8774 p_selv_tbl => l_selv_tbl,
8775 x_selv_tbl => x_selv_tbl
8776 );
8777
8778 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8779 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Update of Stream Elements - Date Billed and Bill Adj Flag '||x_return_status);
8780 END IF;
8781
8782 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8783 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8784 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
8785 raise OKL_API.G_EXCEPTION_ERROR;
8786 END IF;
8787 END IF;
8788 END LOOP;
8789 END LOOP;
8790
8791 IF (l_disb_adj_tbl.COUNT > 0) THEN
8792
8793 OKL_STREAMS_UTIL.get_primary_stream_type(
8794 p_khr_id => l_inv_agreement_id,
8795 p_primary_sty_purpose => 'INVESTOR_DISB_ADJUSTMENT',
8796 x_return_status => x_return_status,
8797 x_primary_sty_id => l_disb_adj_sty_id
8798 );
8799
8800 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8801 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8802 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
8803 raise OKL_API.G_EXCEPTION_ERROR;
8804 END IF;
8805
8806 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8807 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Disb Adjustment Stream Type Id: '||l_disb_adj_sty_id);
8808 END IF;
8809
8810 --Bug# 6788253
8811 i := l_disb_adj_tbl.FIRST;
8812 LOOP
8813
8814 l_stmv_rec_old_disb := l_stmv_rec_init;
8815 l_stmv_rec_new_disb := l_stmv_rec_init;
8816 l_selv_tbl_new_disb.DELETE;
8817
8818 -- Fetch Existing Disbursement Adjustment Stream
8819 l_old_disb_adj_stm_rec.stm_id := NULL;
8820 OPEN old_disb_adj_stm_csr(p_chr_id => p_orig_khr_id,
8821 p_kle_id => l_disb_adj_tbl(i).kle_id);
8822 FETCH old_disb_adj_stm_csr INTO l_old_disb_adj_stm_rec;
8823 CLOSE old_disb_adj_stm_csr;
8824
8825 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8826 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Old Disb Adjustment Stream Id: '||l_old_disb_adj_stm_rec.stm_id);
8827 END IF;
8828
8829 -- If New Disbursement Adjustment <> 0
8830 IF (NVL(l_disb_adj_tbl(i).disb_adj_amt,0) <> 0) THEN
8831
8832 -- Fetch Existing Undisbursed Adjustment Amount
8833 l_undisb_adj_amt_rec.amount := 0;
8834 IF l_old_disb_adj_stm_rec.stm_id IS NOT NULL THEN
8835 OPEN undisb_adj_amt_csr(p_stm_id => l_old_disb_adj_stm_rec.stm_id);
8836 FETCH undisb_adj_amt_csr INTO l_undisb_adj_amt_rec;
8837 CLOSE undisb_adj_amt_csr;
8838 END IF;
8839
8840 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8841 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Old Disb Adjustment Amount: '||l_undisb_adj_amt_rec.amount);
8842 END IF;
8843
8844 -- Historize existing Disbursement Adjustment stream
8845 IF l_old_disb_adj_stm_rec.stm_id IS NOT NULL THEN
8846
8847 l_stmv_rec_old_disb.id := l_old_disb_adj_stm_rec.stm_id;
8848 l_stmv_rec_old_disb.say_code := 'HIST';
8849 l_stmv_rec_old_disb.active_yn := 'N';
8850 l_stmv_rec_old_disb.date_history := SYSDATE;
8851
8852 Okl_Streams_Pub.update_streams(
8853 p_api_version => p_api_version,
8854 p_init_msg_list => p_init_msg_list,
8855 x_return_status => x_return_status,
8856 x_msg_count => x_msg_count,
8857 x_msg_data => x_msg_data,
8858 p_stmv_rec => l_stmv_rec_old_disb,
8859 x_stmv_rec => lx_stmv_rec_old_disb);
8860
8861 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8862 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Historizing Existing Investor Disbursement Adjustment Stream');
8863 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After calling OKL_STREAMS_PUB.update_streams'||x_return_status);
8864 END IF;
8865
8866 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8867 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8868 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
8869 raise OKL_API.G_EXCEPTION_ERROR;
8870 END IF;
8871 END IF;
8872
8873 l_stmv_rec_new_disb.khr_id := p_orig_khr_id;
8874 l_stmv_rec_new_disb.kle_id := l_disb_adj_tbl(i).kle_id;
8875 l_stmv_rec_new_disb.say_code := 'CURR';
8876 l_stmv_rec_new_disb.active_yn := 'Y';
8877 l_stmv_rec_new_disb.date_current := sysdate;
8878
8879 -- to get the transaction number of the contract
8880 OPEN l_trx_num_csr;
8881 FETCH l_trx_num_csr INTO l_transaction_number;
8882 CLOSE l_trx_num_csr;
8883
8884 l_stmv_rec_new_disb.transaction_number := l_transaction_number;
8885 l_stmv_rec_new_disb.sgn_code := 'MANL';
8886 l_stmv_rec_new_disb.sty_id := l_disb_adj_sty_id;
8887 l_stmv_rec_new_disb.source_id := l_inv_agreement_id;
8888 l_stmv_rec_new_disb.source_table := 'OKL_K_HEADERS';
8889
8890 l_selv_tbl_new_disb(1).amount := l_disb_adj_tbl(i).disb_adj_amt + l_undisb_adj_amt_rec.amount;
8891 l_selv_tbl_new_disb(1).accrued_yn := 'Y';
8892 l_selv_tbl_new_disb(1).stream_element_date := sysdate;
8893 l_selv_tbl_new_disb(1).se_line_number := 1;
8894
8895 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8896 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Total Disb Adjustment Amount: '||l_selv_tbl_new_disb(1).amount);
8897 END IF;
8898
8899 IF l_selv_tbl_new_disb(1).amount <> 0 THEN
8900 Okl_Streams_Pub.create_streams(
8901 p_api_version => p_api_version,
8902 p_init_msg_list => p_init_msg_list,
8903 x_return_status => x_return_status,
8904 x_msg_count => x_msg_count,
8905 x_msg_data => x_msg_data,
8906 p_stmv_rec => l_stmv_rec_new_disb,
8907 p_selv_tbl => l_selv_tbl_new_disb,
8908 x_stmv_rec => lx_stmv_rec_new_disb,
8909 x_selv_tbl => lx_selv_tbl_new_disb);
8910
8911 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8912 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Creating New Investor Disbursement Adjustment Stream');
8913 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After calling OKL_STREAMS_PUB.create_streams'||x_return_status);
8914 END IF;
8915
8916 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8917 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8918 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
8919 raise OKL_API.G_EXCEPTION_ERROR;
8920 END IF;
8921 END IF;
8922
8923 -- New Disbursement Adjustment = 0
8924 ELSE
8925
8926 l_undisb_adj_exists := 'N';
8927 OPEN chk_old_adj_disb_csr(p_stm_id => l_old_disb_adj_stm_rec.stm_id);
8928 FETCH chk_old_adj_disb_csr INTO l_undisb_adj_exists;
8929 CLOSE chk_old_adj_disb_csr;
8930
8931 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8932 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Undisbursed Disb Adjustment Exists: '||l_undisb_adj_exists);
8933 END IF;
8934
8935 -- Historize existing Disbursement Adjustment stream
8936 -- if it has been disbursed
8937 IF (l_old_disb_adj_stm_rec.stm_id IS NOT NULL AND l_undisb_adj_exists = 'N') THEN
8938
8939 l_stmv_rec_old_disb.id := l_old_disb_adj_stm_rec.stm_id;
8940 l_stmv_rec_old_disb.say_code := 'HIST';
8941 l_stmv_rec_old_disb.active_yn := 'N';
8942 l_stmv_rec_old_disb.date_history := SYSDATE;
8943
8944 Okl_Streams_Pub.update_streams(
8945 p_api_version => p_api_version,
8946 p_init_msg_list => p_init_msg_list,
8947 x_return_status => x_return_status,
8948 x_msg_count => x_msg_count,
8949 x_msg_data => x_msg_data,
8950 p_stmv_rec => l_stmv_rec_old_disb,
8951 x_stmv_rec => lx_stmv_rec_old_disb);
8952
8953 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8954 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Historizing Existing Investor Disbursement Adjustment Stream');
8955 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After calling OKL_STREAMS_PUB.update_streams'||x_return_status);
8956 END IF;
8957
8958 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8959 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8960 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
8961 raise OKL_API.G_EXCEPTION_ERROR;
8962 END IF;
8963 END IF;
8964 END IF;
8965
8966 --Bug# 6788253
8967 EXIT WHEN i = l_disb_adj_tbl.LAST;
8968 i := l_disb_adj_tbl.NEXT(i);
8969 END LOOP;
8970
8971 END IF;
8972
8973 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
8974 x_msg_data => x_msg_data);
8975
8976 EXCEPTION
8977 when OKL_API.G_EXCEPTION_ERROR then
8978 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8979 p_api_name => l_api_name,
8980 p_pkg_name => G_PKG_NAME,
8981 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
8982 x_msg_count => x_msg_count,
8983 x_msg_data => x_msg_data,
8984 p_api_type => G_API_TYPE);
8985
8986 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
8987 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8988 p_api_name => l_api_name,
8989 p_pkg_name => G_PKG_NAME,
8990 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
8991 x_msg_count => x_msg_count,
8992 x_msg_data => x_msg_data,
8993 p_api_type => G_API_TYPE);
8994
8995 when OTHERS then
8996 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8997 p_api_name => l_api_name,
8998 p_pkg_name => G_PKG_NAME,
8999 p_exc_name => 'OTHERS',
9000 x_msg_count => x_msg_count,
9001 x_msg_data => x_msg_data,
9002 p_api_type => G_API_TYPE);
9003
9004 END create_inv_disb_adjustment;
9005
9006 ------------------------------------------------------------------------------
9007 -- PROCEDURE link_inv_accrual_streams
9008 --
9009 -- This procedure links the Inversotr Accrual WORK Streams created during Rebook
9010 -- to the corresponding matching CURR Streams in the original contract and
9011 -- also updates the WORK streams with Source Transaction Id.
9012 --
9013 -- Calls:
9014 -- Called By:
9015 ------------------------------------------------------------------------------
9016 PROCEDURE link_inv_accrual_streams(
9017 p_api_version IN NUMBER,
9018 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
9019 x_return_status OUT NOCOPY VARCHAR2,
9020 x_msg_count OUT NOCOPY NUMBER,
9021 x_msg_data OUT NOCOPY VARCHAR2,
9022 p_khr_id IN NUMBER
9023 ) IS
9024
9025 l_api_name VARCHAR2(35) := 'link_inv_accrual_streams';
9026 l_proc_name VARCHAR2(35) := 'LINK_INV_ACCRUAL_STREAMS';
9027 l_api_version CONSTANT NUMBER := 1;
9028
9029 CURSOR chk_rbk_csr(p_chr_id IN NUMBER) is
9030 SELECT '!', ktrx.id
9031 FROM okc_k_headers_b chr,
9032 okl_trx_contracts ktrx,
9033 okc_k_headers_b cpy_chr
9034 WHERE ktrx.khr_id = chr.id
9035 AND ktrx.khr_id_new = cpy_chr.id
9036 AND ktrx.tsu_code = 'ENTERED'
9037 AND ktrx.rbr_code is NOT NULL
9038 AND ktrx.tcn_type = 'TRBK'
9039 AND chr.id = p_chr_id
9040 AND cpy_chr.orig_system_id1 = chr.id
9041 AND cpy_chr.orig_system_source_code = 'OKL_REBOOK'
9042 AND ktrx.representation_type = 'PRIMARY'; -- MGAAP 7263041
9043
9044 CURSOR chk_mass_rbk_csr (p_chr_id IN NUMBER) IS
9045 SELECT '!', ktrx.id
9046 FROM okc_k_headers_b chr,
9047 okl_trx_contracts ktrx
9048 WHERE chr.id = p_chr_id
9049 AND ktrx.khr_id = chr.id
9050 AND ktrx.tsu_code = 'ENTERED'
9051 AND ktrx.rbr_code IS NOT NULL
9052 AND ktrx.tcn_type = 'TRBK'
9053 AND ktrx.representation_type = 'PRIMARY' -- MGAAP 7263041
9054 AND EXISTS (SELECT '1'
9055 FROM okl_rbk_selected_contract rbk_khr
9056 WHERE rbk_khr.khr_id = chr.id
9057 AND rbk_khr.status <> 'PROCESSED');
9058
9059 CURSOR curr_streams_csr(p_khr_id IN NUMBER) IS
9060 SELECT new_stm.id new_stm_id,
9061 new_stm.kle_id
9062 FROM okl_streams new_stm,
9063 okl_strm_type_b sty
9064 WHERE new_stm.khr_id = p_khr_id
9065 AND new_stm.say_code = 'WORK'
9066 AND new_stm.sty_id = sty.id
9067 AND sty.stream_type_purpose IN
9068 ('INVESTOR_RENTAL_ACCRUAL',
9069 'INVESTOR_PRETAX_INCOME',
9070 'INVESTOR_INTEREST_INCOME',
9071 'INVESTOR_VARIABLE_INTEREST');
9072
9073 CURSOR hist_strms_csr(p_new_stm_id IN NUMBER,
9074 p_khr_id IN NUMBER) IS
9075 SELECT orig_stm.id orig_stm_id
9076 FROM okl_streams new_stm,
9077 okl_streams orig_stm
9078 WHERE new_stm.id = p_new_stm_id
9079 AND orig_stm.khr_id = new_stm.khr_id
9080 AND NVL(orig_stm.kle_id,-1) = NVL(new_stm.kle_id,-1)
9081 AND orig_stm.sty_id = new_stm.sty_id
9082 AND NVL(orig_stm.purpose_code,'ORIG') = NVL(new_stm.purpose_code,'ORIG')
9083 AND orig_stm.say_code = 'CURR';
9084
9085 hist_strms_rec hist_strms_csr%ROWTYPE;
9086
9087 l_rbk_khr VARCHAR2(1);
9088 l_mass_rbk_khr VARCHAR2(1);
9089 l_mass_rbk_trx_id NUMBER;
9090 l_online_rbk_trx_id NUMBER;
9091
9092 l_new_strm_tbl stmv_tbl_type;
9093 x_new_strm_tbl stmv_tbl_type;
9094
9095 l_new_strm_count NUMBER := 0;
9096
9097 --Bug# 6344223
9098 --Cursor to check whether split asset transaction is in progress for the contract
9099 CURSOR check_split_trx_csr IS
9100 SELECT tas.id
9101 FROM OKL_TXL_ASSETS_B txl, OKL_TRX_ASSETS tas
9102 WHERE txl.tal_type= 'ALI'
9103 AND txl.dnz_khr_id = p_khr_id
9104 AND txl.tas_id = tas.id
9105 AND tas.tas_type = 'ALI'
9106 AND tas.tsu_code = 'ENTERED';
9107
9108 l_split_trans_id OKL_TRX_ASSETS.ID%TYPE;
9109 --end Bug# 6344223
9110
9111 BEGIN
9112 IF (G_DEBUG_ENABLED = 'Y') THEN
9113 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
9114 END IF;
9115
9116 x_return_status := OKL_API.G_RET_STS_SUCCESS;
9117 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9118 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
9119 END IF;
9120 -- call START_ACTIVITY to create savepoint, check compatibility
9121 -- and initialize message list
9122 x_return_status := OKL_API.START_ACTIVITY(
9123 p_api_name => l_api_name,
9124 p_pkg_name => G_PKG_NAME,
9125 p_init_msg_list => p_init_msg_list,
9126 l_api_version => l_api_version,
9127 p_api_version => p_api_version,
9128 p_api_type => G_API_TYPE,
9129 x_return_status => x_return_status);
9130
9131 -- check if activity started successfully
9132 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
9133 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9134 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
9135 raise OKL_API.G_EXCEPTION_ERROR;
9136 END IF;
9137
9138 --Bug# 6344223
9139 OPEN check_split_trx_csr;
9140 FETCH check_split_trx_csr INTO l_split_trans_id;
9141 CLOSE check_split_trx_csr;
9142 --end Bug# 6344223
9143
9144 --check for mass rebook contract
9145 l_mass_rbk_khr := '?';
9146 l_mass_rbk_trx_id := null;
9147 OPEN chk_mass_rbk_csr (p_chr_id => p_khr_id);
9148 FETCH chk_mass_rbk_csr INTO l_mass_rbk_khr,l_mass_rbk_trx_id;
9149 CLOSE chk_mass_rbk_csr;
9150 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9151 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_mass_rbk_khr: '||l_mass_rbk_khr);
9152 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_mass_rbk_trx_id: '||l_mass_rbk_trx_id);
9153 END IF;
9154
9155 --check for rebook contract
9156 l_rbk_khr := '?';
9157 l_online_rbk_trx_id := null;
9158 OPEN chk_rbk_csr (p_chr_id => p_khr_id);
9159 FETCH chk_rbk_csr INTO l_rbk_khr,l_online_rbk_trx_id;
9160 CLOSE chk_rbk_csr;
9161 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9162 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_rbk_khr: '||l_rbk_khr);
9163 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_online_rbk_trx_id: '||l_online_rbk_trx_id);
9164 END IF;
9165
9166 --Added condition l_split_trans_id IS NOT NULL for Bug# 6344223
9167 IF ((l_split_trans_id IS NOT NULL) OR l_mass_rbk_khr = '!' OR l_rbk_khr = '!') THEN
9168
9169 l_new_strm_tbl.DELETE;
9170 l_new_strm_count := 0;
9171
9172 FOR curr_streams_rec IN curr_streams_csr(p_khr_id => p_khr_id)
9173 LOOP
9174
9175 l_new_strm_count := l_new_strm_count + 1;
9176 l_new_strm_tbl(l_new_strm_count).id := curr_streams_rec.new_stm_id;
9177
9178 IF l_mass_rbk_khr = '!' THEN
9179 l_new_strm_tbl(l_new_strm_count).trx_id := l_mass_rbk_trx_id;
9180 --Bug# 6344223
9181 ELSIF l_split_trans_id IS NOT NULL THEN
9182 l_new_strm_tbl(l_new_strm_count).trx_id := l_split_trans_id;
9183 ELSIF l_rbk_khr = '!' THEN
9184 l_new_strm_tbl(l_new_strm_count).trx_id := l_online_rbk_trx_id;
9185 END IF;
9186
9187 hist_strms_rec.orig_stm_id := NULL;
9188 OPEN hist_strms_csr(p_new_stm_id => curr_streams_rec.new_stm_id,
9189 p_khr_id => p_khr_id);
9190 FETCH hist_strms_csr INTO hist_strms_rec;
9191 CLOSE hist_strms_csr;
9192
9193 IF hist_strms_rec.orig_stm_id IS NOT NULL THEN
9194 l_new_strm_tbl(l_new_strm_count).link_hist_stream_id := hist_strms_rec.orig_stm_id;
9195 END IF;
9196
9197 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9198 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'New Stream ID: '||l_new_strm_tbl(l_new_strm_count).id);
9199 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Orig Stream ID: '||l_new_strm_tbl(l_new_strm_count).link_hist_stream_id);
9200 END IF;
9201
9202 END LOOP;
9203
9204 IF (l_new_strm_tbl.COUNT > 0) THEN
9205
9206 -- Call Streams api to update Link_Hist_Stream_Id and Trx_Id
9207 okl_streams_pub.update_streams(
9208 p_api_version => 1.0,
9209 p_init_msg_list => OKL_API.G_FALSE,
9210 x_return_status => x_return_status,
9211 x_msg_count => x_msg_count,
9212 x_msg_data => x_msg_data,
9213 p_stmv_tbl => l_new_strm_tbl,
9214 x_stmv_tbl => x_new_strm_tbl
9215 );
9216
9217 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9218 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Update of New Strms - Trx ID and Hist ID '||x_return_status);
9219 END IF;
9220
9221 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
9222 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9223 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
9224 raise OKL_API.G_EXCEPTION_ERROR;
9225 END IF;
9226 END IF;
9227 END IF;
9228
9229 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
9230 x_msg_data => x_msg_data);
9231
9232 EXCEPTION
9233 when OKL_API.G_EXCEPTION_ERROR then
9234 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9235 p_api_name => l_api_name,
9236 p_pkg_name => G_PKG_NAME,
9237 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
9238 x_msg_count => x_msg_count,
9239 x_msg_data => x_msg_data,
9240 p_api_type => G_API_TYPE);
9241
9242 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
9243 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9244 p_api_name => l_api_name,
9245 p_pkg_name => G_PKG_NAME,
9246 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
9247 x_msg_count => x_msg_count,
9248 x_msg_data => x_msg_data,
9249 p_api_type => G_API_TYPE);
9250
9251 when OTHERS then
9252 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9253 p_api_name => l_api_name,
9254 p_pkg_name => G_PKG_NAME,
9255 p_exc_name => 'OTHERS',
9256 x_msg_count => x_msg_count,
9257 x_msg_data => x_msg_data,
9258 p_api_type => G_API_TYPE);
9259
9260 END link_inv_accrual_streams;
9261
9262 ------------------------------------------------------------------------------
9263 -- PROCEDURE calc_inv_acc_adjustment
9264 --
9265 -- This procedure calculates the accrual adjustment for Investor accrual streams
9266 -- where there is a difference between amount actually accrued and amount
9267 -- that should have been accrued and calls the Accrual api to make the
9268 -- accrual adjustment. The current streams taken into account for
9269 -- calculating accrual adjustment are then marked as Accrual adjusted in order
9270 -- to stop duplicate accrual.
9271 --
9272 -- Calls:
9273 -- Called By:
9274 -- Added new input parameters p_trx_tbl_code and p_trx_type for Bug# 6344223
9275 ------------------------------------------------------------------------------
9276 PROCEDURE calc_inv_acc_adjustment(
9277 p_api_version IN NUMBER,
9278 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
9279 x_return_status OUT NOCOPY VARCHAR2,
9280 x_msg_count OUT NOCOPY NUMBER,
9281 x_msg_data OUT NOCOPY VARCHAR2,
9282 p_orig_khr_id IN NUMBER,
9283 p_trx_id IN NUMBER,
9284 p_trx_date IN DATE,
9285 x_inv_accrual_rec OUT NOCOPY OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type,
9286 x_inv_stream_tbl OUT NOCOPY OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type,
9287 p_trx_tbl_code IN VARCHAR2 DEFAULT 'TCN',
9288 p_trx_type IN VARCHAR2 DEFAULT 'CRB',
9289 p_product_id IN NUMBER DEFAULT NULL -- MGAAP
9290 ) IS
9291
9292 l_api_name VARCHAR2(35) := 'calc_inv_acc_adjustment';
9293 l_proc_name VARCHAR2(35) := 'CALC_INV_ACC_ADJUSTMENT';
9294 l_api_version CONSTANT NUMBER := 1;
9295
9296 CURSOR curr_accrual_streams_csr(p_khr_id IN NUMBER) IS
9297 SELECT new_stm.id new_stm_id,
9298 orig_stm.id orig_stm_id,
9299 orig_stm.sty_id,
9300 orig_stm.kle_id,
9301 sty.name
9302 --FROM okl_streams new_stm,
9303 FROM okl_streams_rep_v new_stm, -- MGAAP 7263041
9304 okl_prod_strm_types psty,
9305 okl_k_headers khr,
9306 --okl_streams orig_stm,
9307 okl_streams_rep_v orig_stm, -- MGAAP 7263041
9308 okl_strm_type_v sty
9309 WHERE khr.id = p_khr_id
9310 --AND psty.pdt_id = khr.pdt_id
9311 AND psty.pdt_id = NVL(p_product_id, khr.pdt_id) -- MGAAP 7263041
9312 AND psty.accrual_yn = 'Y'
9313 AND psty.sty_id = new_stm.sty_id
9314 AND new_stm.khr_id = khr.id
9315 AND new_stm.say_code = 'CURR'
9316 AND orig_stm.id = new_stm.link_hist_stream_id
9317 AND sty.id = orig_stm.sty_id
9318 AND sty.stream_type_purpose IN
9319 ('INVESTOR_RENTAL_ACCRUAL',
9320 'INVESTOR_PRETAX_INCOME',
9321 'INVESTOR_INTEREST_INCOME',
9322 'INVESTOR_VARIABLE_INTEREST');
9323
9324 CURSOR max_accrual_date_csr(p_stm_id IN NUMBER) IS
9325 SELECT MAX(sel.stream_element_date) stream_element_date
9326 FROM okl_strm_elements sel
9327 WHERE sel.stm_id = p_stm_id
9328 AND sel.accrued_yn IS NOT NULL;
9329
9330 CURSOR actual_amount_accrued_csr(p_stm_id IN NUMBER) IS
9331 SELECT NVL(SUM(sel.amount),0) amount
9332 FROM okl_strm_elements sel
9333 WHERE sel.stm_id = p_stm_id
9334 AND sel.accrued_yn IS NOT NULL;
9335
9336 CURSOR amount_to_be_accrued_csr(p_stm_id IN NUMBER,
9337 p_max_accrual_date IN DATE) IS
9338 SELECT sel.id sel_id,
9339 NVL(sel.amount,0) amount
9340 FROM okl_strm_elements sel
9341 WHERE sel.stm_id = p_stm_id
9342 AND sel.stream_element_date <= p_max_accrual_date;
9343
9344 l_max_accrual_date DATE;
9345 l_actual_amount_accrued NUMBER;
9346 l_amount_to_be_accrued NUMBER;
9347 l_accrual_adjustment NUMBER;
9348
9349 l_selv_tbl selv_tbl_type;
9350 x_selv_tbl selv_tbl_type;
9351
9352 l_selv_count NUMBER;
9353
9354 i NUMBER;
9355
9356 l_accrual_rec OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type;
9357 l_stream_tbl OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type;
9358 l_gl_date DATE;
9359
9360 BEGIN
9361 IF (G_DEBUG_ENABLED = 'Y') THEN
9362 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
9363 END IF;
9364
9365 x_return_status := OKL_API.G_RET_STS_SUCCESS;
9366 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9367 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_proc_name);
9368 END IF;
9369 -- call START_ACTIVITY to create savepoint, check compatibility
9370 -- and initialize message list
9371 x_return_status := OKL_API.START_ACTIVITY(
9372 p_api_name => l_api_name,
9373 p_pkg_name => G_PKG_NAME,
9374 p_init_msg_list => p_init_msg_list,
9375 l_api_version => l_api_version,
9376 p_api_version => p_api_version,
9377 p_api_type => G_API_TYPE,
9378 x_return_status => x_return_status);
9379
9380 -- check if activity started successfully
9381 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9382 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9383 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9384 RAISE OKL_API.G_EXCEPTION_ERROR;
9385 END IF;
9386
9387 -- For On-line and Mass rebook, calculate accrual adjustment
9388 -- for all Current Accrual Streams for which Accruals were generated
9389 -- in the Original contract
9390
9391 i := 0;
9392 l_stream_tbl.DELETE;
9393 FOR curr_accrual_streams_rec IN curr_accrual_streams_csr(p_khr_id => p_orig_khr_id)
9394 LOOP
9395
9396 l_max_accrual_date := NULL;
9397 OPEN max_accrual_date_csr(p_stm_id => curr_accrual_streams_rec.orig_stm_id);
9398 FETCH max_accrual_date_csr INTO l_max_accrual_date;
9399 CLOSE max_accrual_date_csr;
9400
9401 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9402 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'New Stream Id: '||curr_accrual_streams_rec.new_stm_id);
9403 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Orig Stream Id: '||curr_accrual_streams_rec.orig_stm_id);
9404 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Max Accrual Date: '||l_max_accrual_date);
9405 END IF;
9406
9407 IF l_max_accrual_date IS NOT NULL THEN
9408
9409 l_actual_amount_accrued := 0;
9410 OPEN actual_amount_accrued_csr(p_stm_id => curr_accrual_streams_rec.orig_stm_id);
9411 FETCH actual_amount_accrued_csr INTO l_actual_amount_accrued;
9412 CLOSE actual_amount_accrued_csr;
9413
9414 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9415 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Actual Amount Accrued: '||l_actual_amount_accrued);
9416 END IF;
9417
9418 l_amount_to_be_accrued := 0;
9419 l_selv_count := 0;
9420 l_selv_tbl.DELETE;
9421
9422 FOR amount_to_be_accrued_rec IN
9423 amount_to_be_accrued_csr(p_stm_id => curr_accrual_streams_rec.new_stm_id,
9424 p_max_accrual_date => l_max_accrual_date)
9425 LOOP
9426
9427 -- Call Streams api to update accrued_yn, accrual_adj_flag
9428 l_selv_count := l_selv_count + 1;
9429 l_amount_to_be_accrued := l_amount_to_be_accrued + amount_to_be_accrued_rec.amount;
9430
9431 l_selv_tbl(l_selv_count).id := amount_to_be_accrued_rec.sel_id;
9432 l_selv_tbl(l_selv_count).accrued_yn := 'Y';
9433 l_selv_tbl(l_selv_count).accrual_adj_flag := 'Y';
9434
9435 END LOOP;
9436
9437 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9438 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Amount to be Accrued: '||l_amount_to_be_accrued);
9439 END IF;
9440
9441 l_accrual_adjustment := l_amount_to_be_accrued - l_actual_amount_accrued;
9442
9443 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9444 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Accrual Adjustment: '||l_accrual_adjustment);
9445 END IF;
9446
9447 IF l_accrual_adjustment <> 0 THEN
9448 i := i + 1;
9449 l_stream_tbl(i).stream_type_id := curr_accrual_streams_rec.sty_id;
9450 l_stream_tbl(i).stream_type_name := curr_accrual_streams_rec.name;
9451 l_stream_tbl(i).stream_amount := l_accrual_adjustment;
9452 l_stream_tbl(i).kle_id := curr_accrual_streams_rec.kle_id;
9453
9454 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9455 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Accrual Adjustment Record');
9456 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'i '||i);
9457 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_stream_tbl(i).stream_type_id: '||l_stream_tbl(i).stream_type_id);
9458 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_stream_tbl(i).stream_type_name: '||l_stream_tbl(i).stream_type_name);
9459 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_stream_tbl(i).stream_amount: '||l_stream_tbl(i).stream_amount);
9460 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_stream_tbl(i).kle_id: '||l_stream_tbl(i).kle_id);
9461 END IF;
9462 END IF;
9463
9464 IF (l_selv_tbl.COUNT > 0) THEN
9465 okl_streams_pub.update_stream_elements(
9466 p_api_version => 1.0,
9467 p_init_msg_list => OKL_API.G_FALSE,
9468 x_return_status => x_return_status,
9469 x_msg_count => x_msg_count,
9470 x_msg_data => x_msg_data,
9471 p_selv_tbl => l_selv_tbl,
9472 x_selv_tbl => x_selv_tbl
9473 );
9474
9475 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9476 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After Update of Stream Elements - Accrued Yn and Accrual Adj Flag '||x_return_status);
9477 END IF;
9478
9479 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9480 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9481 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9482 RAISE OKL_API.G_EXCEPTION_ERROR;
9483 END IF;
9484 END IF;
9485
9486 END IF;
9487 END LOOP;
9488
9489 IF (l_stream_tbl.COUNT > 0) THEN
9490
9491 l_gl_date := OKL_ACCOUNTING_UTIL.get_valid_gl_date(p_gl_date => p_trx_date);
9492
9493 l_accrual_rec.contract_id := p_orig_khr_id;
9494 l_accrual_rec.accrual_date := l_gl_date;
9495 l_accrual_rec.source_trx_id := p_trx_id;
9496
9497 --Bug# 6344223
9498 l_accrual_rec.source_trx_type := p_trx_tbl_code;
9499 IF p_trx_type = 'CRB' THEN
9500 l_accrual_rec.description := 'Rebook Adjustment';
9501 ELSIF p_trx_type = 'ALI' THEN
9502 l_accrual_rec.description := 'Split Asset Adjustment';
9503 END IF;
9504 --end Bug# 6344223
9505
9506 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9507 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Accrual Adjustment Header Record');
9508 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_accrual_rec.contract_id: '||l_accrual_rec.contract_id);
9509 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_accrual_rec.accrual_date: '||l_accrual_rec.accrual_date);
9510 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_accrual_rec.description: '||l_accrual_rec.description);
9511 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_accrual_rec.source_trx_id: '||l_accrual_rec.source_trx_id);
9512 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_accrual_rec.source_trx_type: '||l_accrual_rec.source_trx_type);
9513 END IF;
9514
9515
9516 x_inv_stream_tbl := l_stream_tbl;
9517 x_inv_accrual_rec := l_accrual_rec;
9518 END IF;
9519
9520 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
9521 x_msg_data => x_msg_data);
9522
9523 EXCEPTION
9524 WHEN OKL_API.G_EXCEPTION_ERROR THEN
9525 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9526 p_api_name => l_api_name,
9527 p_pkg_name => G_PKG_NAME,
9528 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
9529 x_msg_count => x_msg_count,
9530 x_msg_data => x_msg_data,
9531 p_api_type => G_API_TYPE);
9532
9533 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
9534 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9535 p_api_name => l_api_name,
9536 p_pkg_name => G_PKG_NAME,
9537 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
9538 x_msg_count => x_msg_count,
9539 x_msg_data => x_msg_data,
9540 p_api_type => G_API_TYPE);
9541
9542 WHEN OTHERS THEN
9543 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9544 p_api_name => l_api_name,
9545 p_pkg_name => G_PKG_NAME,
9546 p_exc_name => 'OTHERS',
9547 x_msg_count => x_msg_count,
9548 x_msg_data => x_msg_data,
9549 p_api_type => G_API_TYPE);
9550 END calc_inv_acc_adjustment;
9551 -- Bug# 4775555: End
9552
9553 END OKL_CONTRACT_REBOOK_PVT;