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