[Home] [Help]
PACKAGE BODY: APPS.OKL_CONTRACT_PVT
Source
1 PACKAGE BODY OKL_CONTRACT_PVT AS
2 /* $Header: OKLCKHRB.pls 120.45.12010000.7 2009/01/16 20:03:51 apaul ship $ */
3
4 G_MODULE VARCHAR2(255) := 'okl.stream.esg.okl_esg_transport_pvt';
5 G_DEBUG_ENABLED CONSTANT VARCHAR2(10) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
6 G_IS_DEBUG_STATEMENT_ON BOOLEAN;
7 -- GLOBAL VARIABLES
8 G_NO_PARENT_RECORD CONSTANT VARCHAR2(200) := 'OKL_NO_PARENT_RECORD';
9 G_UNEXPECTED_ERROR CONSTANT VARCHAR2(200) := 'OKL_CONTRACTS_UNEXPECTED_ERROR';
10 --avsingh added for k line deletion checks
11 G_OKL_BOOKED_STS_CODE CONSTANT VARCHAR2(30) := 'BOOKED';
12 G_OKL_CANCELLED_STS_CODE CONSTANT VARCHAR2(30) := 'ABANDONED';
13
14
15
16 G_PARENT_TABLE_TOKEN CONSTANT VARCHAR2(200) := OKL_API.G_PARENT_TABLE_TOKEN;
17 G_CHILD_TABLE_TOKEN CONSTANT VARCHAR2(200) := OKL_API.G_CHILD_TABLE_TOKEN;
18 G_SQLERRM_TOKEN CONSTANT VARCHAR2(200) := 'SQLerrm';
19 G_SQLCODE_TOKEN CONSTANT VARCHAR2(200) := 'SQLcode';
20 G_REQUIRED_VALUE CONSTANT VARCHAR2(200) := OKL_API.G_REQUIRED_VALUE;
21 G_INVALID_VALUE CONSTANT VARCHAR2(200) := OKL_API.G_INVALID_VALUE;
22 G_COL_NAME_TOKEN CONSTANT VARCHAR2(200) := OKL_API.G_COL_NAME_TOKEN;
23 G_TABLE_TOKEN CONSTANT VARCHAR2(200) := OKL_API.G_CHILD_TABLE_TOKEN;
24 --------------------------------------------------------------------------------
25 --GLOBAL Message constants added for okl line delete checks
26 --------------------------------------------------------------------------------
27 G_BOOKED_KLE_DELETE CONSTANT VARCHAR2(200) := 'OKL_LLA_BOOKED_KLE_DELETE';
28 G_PAST_BOOKED_KLE_DELETE CONSTANT VARCHAR2(200) := 'OKL_LLA_P_BOOKED_KLE_DELETE';
29 G_FUNDED_KLE_DELETE CONSTANT VARCHAR2(200) := 'OKL_LLA_FUNDED_KLE_DELETE';
30 --------------------------------------------------------------------------------
31 --Global Message Constants for Term Reduction
32 --------------------------------------------------------------------------------
33 G_TERM_REDUCTION_NOT_ALLOWED CONSTANT VARCHAR2(200) := 'OKL_LLA_TERM_REDUCTION';
34 G_PRODUCT_EFFECTIVITY CONSTANT VARCHAR2(200) := 'OKL_LLA_PDT_EFFECTIVITY';
35 --Bug # 2691056
36 G_RBK_NEW_START_DATE CONSTANT VARCHAR2(200) := 'OKL_LLA_RBK_START_DATE';
37 G_RBK_DATE_LESS CONSTANT VARCHAR2(200) := 'OKL_LLA_REBOOK_DATE_LESS';
38 G_EFFECTIVE_FROM_TOKEN CONSTANT VARCHAR2(200) := 'EFFECTIVE_FROM';
39 G_REBOOK_DATE_TOKEN CONSTANT VARCHAR2(200) := 'REBOOK_DATE';
40 --------------------------------------------------------------------------------
41 --Global Message Constant for Template creation not allowed
42 --------------------------------------------------------------------------------
43 G_TEMPLATE_CREATE_NOT_ALLOWED CONSTANT VARCHAR2(200) := 'OKL_LLA_TEMPLATE_CREATE';
44 --------------------------------------------------------------------------------
45 --Global Message constants for 11.5.9 - Multi currency Validation
46 --------------------------------------------------------------------------------
47 G_CONV_RATE_NOT_FOUND CONSTANT VARCHAR2(200) := 'OKL_LLA_CONV_RATE_NOT_FOUND';
48 G_FROM_CURRENCY_TOKEN CONSTANT VARCHAR2(200) := 'FROM_CURRENCY';
49 G_TO_CURRENCY_TOKEN CONSTANT VARCHAR2(200) := 'TO_CURRENCY';
50 G_CONV_TYPE_TOKEN CONSTANT VARCHAR2(200) := 'CONVERSION_TYPE';
51 G_CONV_DATE_TOKEN CONSTANT VARCHAR2(200) := 'CONVERSION_DATE';
52 G_REBOOK_CURRENCY_MODFN CONSTANT VARCHAR2(200) := 'OKL_LLA_REBOOK_CURR_MODFN';
53 G_REBOOK_PRODUCT_MODFN CONSTANT VARCHAR2(200) := 'OKL_LLA_REBOOK_PROD_MODFN';
54 --------------------------------------------------------------------------------
55 --Global Message constants for 11.5.9 - Product Validation
56 --------------------------------------------------------------------------------
57 G_PROD_PARAMS_NOT_FOUND CONSTANT VARCHAR2(200) := 'OKL_LLA_PDT_PARAM_NOT_FOUND';
58 G_PROD_MISSING_PARAM CONSTANT VARCHAR2(200) := 'OKL_LLA_MISSING_PDT_PARAM';
59 G_PROD_NAME_TOKEN CONSTANT VARCHAR2(200) := 'PRODUCT_NAME';
60 G_PROD_PARAM_TOKEN CONSTANT VARCHAR2(200) := 'PARAMETER_NAME';
61 G_PROD_SUBCALSS_MISMATCH CONSTANT VARCHAR2(200) := 'OKL_LLA_PDT_SUBCLASS_MISMATCH';
62 G_PROD_SUBCALSS_TOKEN CONSTANT VARCHAR2(200) := 'PRODUCT_SUBCLASS';
63 G_CONTRACT_SUBCLASS_TOKEN CONSTANT VARCHAR2(200) := 'CONTRACT_SUBCLASS';
64
65 G_DELETE_CONT_ERROR CONSTANT VARCHAR2(30) := 'OKL_LLA_DELETE_CONT_ERROR';
66 G_DELETE_CONT_RBK_ERROR CONSTANT VARCHAR2(30) := 'OKL_LLA_DELETE_CONT_RBK_ERROR';
67 G_DELETE_CONT_FUND_ERROR CONSTANT VARCHAR2(30) := 'OKL_LLA_DELETE_CONT_FUND_ERROR';
68 G_DELETE_CONT_RCPT_ERROR CONSTANT VARCHAR2(30) := 'OKL_LLA_DELETE_CONT_RCPT_ERROR';
69
70 G_EXCEPTION_HALT_VALIDATION exception;
71
72 NO_CONTRACT_FOUND exception;
73
74 G_NO_UPDATE_ALLOWED_EXCEPTION exception;
75 G_NO_UPDATE_ALLOWED CONSTANT VARCHAR2(200) := 'OKL_NO_UPDATE_ALLOWED';
76 G_EXCEPTION_HALT_PROCESS exception;
77
78 G_API_TYPE CONSTANT VARCHAR2(4) := '_PVT';
79
80 /*
81 -- vthiruva, 08/19/2004
82 -- Added Constants to enable Business Event
83 */
84 G_WF_EVT_CR_LMT_CREATED CONSTANT VARCHAR2(50) := 'oracle.apps.okl.la.credit_limit.created';
85 G_WF_EVT_CR_LMT_UPDATED CONSTANT VARCHAR2(50) := 'oracle.apps.okl.la.credit_limit.updated';
86 G_WF_EVT_CR_LMT_REMOVED CONSTANT VARCHAR2(50) := 'oracle.apps.okl.la.credit_limit.remove';
87 G_WF_EVT_ASSET_CREATED CONSTANT VARCHAR2(50) := 'oracle.apps.okl.la.lease_contract.asset_created';
88 G_WF_EVT_ASSET_UPDATED CONSTANT VARCHAR2(50) := 'oracle.apps.okl.la.lease_contract.asset_updated';
89 G_WF_EVT_ASSET_REMOVED CONSTANT VARCHAR2(50) := 'oracle.apps.okl.la.lease_contract.remove_asset';
90 G_WF_EVT_SERVICE_CREATED CONSTANT VARCHAR2(60) := 'oracle.apps.okl.la.lease_contract.service_fee_created';
91 G_WF_EVT_SERVICE_UPDATED CONSTANT VARCHAR2(60) := 'oracle.apps.okl.la.lease_contract.service_fee_updated';
92 G_WF_ITM_CR_LINE_ID CONSTANT VARCHAR2(30) := 'CREDIT_LINE_ID';
93 G_WF_ITM_CR_LMT_ID CONSTANT VARCHAR2(30) := 'CREDIT_LIMIT_ID';
94 G_WF_ITM_CONTRACT_ID CONSTANT VARCHAR2(30) := 'CONTRACT_ID';
95 G_WF_ITM_ASSET_ID CONSTANT VARCHAR2(30) := 'ASSET_ID';
96 G_WF_ITM_SRV_LINE_ID CONSTANT VARCHAR2(30) := 'SERVICE_LINE_ID';
97 G_WF_ITM_SERVICE_KHR_ID CONSTANT VARCHAR2(30) := 'SERVICE_CONTRACT_ID';
98 G_WF_ITM_SERVICE_CLE_ID CONSTANT VARCHAR2(30) := 'SERVICE_CONTRACT_LINE_ID';
99 G_WF_ITM_CONTRACT_PROCESS CONSTANT VARCHAR2(30) := 'CONTRACT_PROCESS';
100 --create_fee and update_fee events are raised from here rather than okl_maintain_fee_pvt
101 --as contract import process and split contract do not call okl_maintain_fee_pvt,
102 --but directly call okl_contract_pvt
103 G_WF_EVT_FEE_CREATED CONSTANT VARCHAR2(50) := 'oracle.apps.okl.la.lease_contract.fee_created';
104 G_WF_EVT_FEE_UPDATED CONSTANT VARCHAR2(50) := 'oracle.apps.okl.la.lease_contract.fee_updated';
105 G_WF_ITM_FEE_LINE_ID CONSTANT VARCHAR2(30) := 'FEE_LINE_ID';
106
107 /*
108 -- vthiruva, 08/19/2004
109 -- START, Added PROCEDURE to enable Business Event
110 */
111 -- Start of comments
112 --
113 -- Procedure Name : raise_business_event
114 -- Description : local_procedure, raises business event by making a call to
115 -- okl_wf_pvt.raise_event
116 -- Business Rules :
117 -- Parameters :
118 -- Version : 1.0
119 -- End of comments
120 --
121 PROCEDURE raise_business_event(
122 p_api_version IN NUMBER,
123 p_init_msg_list IN VARCHAR2,
124 x_return_status OUT NOCOPY VARCHAR2,
125 x_msg_count OUT NOCOPY NUMBER,
126 x_msg_data OUT NOCOPY VARCHAR2,
127 p_event_name IN wf_events.name%TYPE,
128 p_parameter_list IN wf_parameter_list_t) IS
129
130 l_chr_id okc_k_headers_b.id%TYPE;
131 l_contract_process VARCHAR2(30);
132 l_parameter_list WF_PARAMETER_LIST_T := p_parameter_list;
133
134 BEGIN
135 -- check to see if the the contract_id is not null, this is required since
136 -- credit limit events do not necessarily pass a contract
137 l_chr_id := wf_event.GetValueForParameter(G_WF_ITM_CONTRACT_ID,p_parameter_list);
138 IF(l_chr_id IS NOT NULL)THEN
139 -- if there exists a contract in context, then derive the contract process status
140 l_contract_process := okl_lla_util_pvt.get_contract_process(l_chr_id);
141 IF(l_contract_process IS NOT NULL)THEN
142 -- add the contract process status to the parameter list only the value is not null
143 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_PROCESS,l_contract_process,l_parameter_list);
144 END IF;
145 END IF;
146 OKL_WF_PVT.raise_event (p_api_version => p_api_version,
147 p_init_msg_list => p_init_msg_list,
148 x_return_status => x_return_status,
149 x_msg_count => x_msg_count,
150 x_msg_data => x_msg_data,
151 p_event_name => p_event_name,
152 p_parameters => l_parameter_list);
153
154 EXCEPTION
155 WHEN OTHERS THEN
156 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
157 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
158 END raise_business_event;
159
160 /*
161 -- vthiruva, 08/19/2004
162 -- END, PROCEDURE to enable Business Event
163 */
164
165 --Bug#2937980
166 -- Start of comments
167 --
168 -- Procedure Name : Inactivate_streams
169 -- Description : local_procedures inactivates line level streams for logically
170 -- deleted lines
171 -- Business Rules :
172 -- Parameters :
173 -- Version : 1.0
174 -- End of comments
175 -- Start of comments
176 --
177 Procedure Inactivate_Streams
178 ( p_api_version IN NUMBER,
179 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
180 x_return_status OUT NOCOPY VARCHAR2,
181 x_msg_count OUT NOCOPY NUMBER,
182 x_msg_data OUT NOCOPY VARCHAR2,
183 p_cle_id IN NUMBER) is
184
185 --Cursor to fetch active streams against line
186 Cursor strms_csr (cleId IN Number) is
187 Select str.id strm_id,
188 str.kle_id,
189 str.sty_id,
190 str.sgn_code
191 from OKL_STREAMS str
192 where str.say_code = 'CURR'
193 and str.kle_id = cleId;
194
195 l_strms_rec strms_csr%ROWTYPE;
196 l_return_status VARCHAR2(1);
197 i NUMBER;
198 l_stmv_tbl okl_streams_pub.stmv_tbl_type;
199 x_stmv_tbl okl_streams_pub.stmv_tbl_type;
200 l_stream_update_err EXCEPTION;
201
202 Begin
203 -----
204 x_return_status := OKL_API.G_RET_STS_SUCCESS;
205 i := 0;
206 Open strms_csr(cleId => p_cle_id);
207 Loop
208 Fetch strms_csr into l_strms_rec;
209 Exit when strms_csr%NOTFOUND;
210 i := i+1;
211 l_stmv_tbl(i).id := l_strms_rec.STRM_ID;
212 l_stmv_tbl(i).say_code := 'HIST';
213 l_stmv_tbl(i).active_yn := 'N';
214 l_stmv_tbl(i).date_history := sysdate;
215 End Loop;
216 Close strms_csr;
217 If (l_stmv_tbl.COUNT > 0) then
218 Okl_Streams_pub.update_streams(
219 p_api_version => p_api_version,
220 p_init_msg_list => p_init_msg_list,
221 x_return_status => x_return_status,
222 x_msg_count => x_msg_count,
223 x_msg_data => x_msg_data,
224 p_stmv_tbl => l_stmv_tbl,
225 x_stmv_tbl => x_stmv_tbl);
226 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS Then
227 raise l_stream_update_err;
228 END IF;
229 l_stmv_tbl.delete;
230 End If;
231 EXCEPTION
232 When l_stream_update_err then
233 If (l_stmv_tbl.COUNT > 0) then
234 l_stmv_tbl.delete;
235 End If;
236 When OTHERS then
237 If (l_stmv_tbl.COUNT > 0) then
238 l_stmv_tbl.delete;
239 End If;
240 If strms_csr%ISOPEN then
241 close strms_csr;
242 End If;
243 End Inactivate_Streams;
244 --Bug#2937980 end
245
246 -- Procedure Name : kle_delete_allowed
247 -- Description : local procvalidates if it is OK to delete the okl contract line
248 -- Business Rules :
249 -- Parameters :
250 -- Version : 1.0
251 -- End of comments
252
253 PROCEDURE kle_delete_allowed(p_cle_id IN NUMBER,
254 x_deletion_type OUT NOCOPY VARCHAR2,
255 x_return_status OUT NOCOPY VARCHAR2) IS
256
257
258 --Cursor to check if the contract is booked
259 Cursor Chr_sts_crs(p_cle_id IN Number) IS
260 SELECT chr.sts_code
261 FROM okc_k_headers_b chr,
262 okc_k_lines_b cle
263 WHERE chr.ID = cle.dnz_chr_id
264 AND cle.ID = p_cle_id;
265
266 l_sts_code OKC_K_HEADERS_B.STS_CODE%TYPE;
267
268 --Cursor to check if the contract was ever booked
269 Cursor Ever_Booked_crs(p_cle_id IN Number) is
270 SELECT 'Y'
271 FROM okc_k_headers_bh chrh,
272 okc_k_headers_b chr,
273 okc_k_lines_b cle
274 WHERE chrh.contract_number = chr.contract_number
275 AND chr.ID = cle.dnz_chr_id
276 AND chrh.sts_code = G_OKL_BOOKED_STS_CODE
277 AND cle.ID = p_cle_id
278 AND rownum < 2;
279
280 l_chr_ever_booked Varchar2(1) default 'N';
281
282 --Cursor to check whether funding exists
283 Cursor Funding_Exists_crs(p_cle_id IN NUMBER) is
284 SELECT 'Y'
285 FROM OKL_TXL_AP_INV_LNS_B fln
286 WHERE fln.kle_id = p_cle_id
287 And rownum < 2;
288
289 l_funding_exists Varchar2(1) default 'N';
290
291 --Cursor to check whether streams exist
292 Cursor streams_exist_crs(p_cle_id IN NUMBER) is
293 SELECT 'Y'
294 FROM OKL_STREAMS str
295 WHERE str.kle_id = p_cle_id
296 And rownum < 2;
297
298 l_streams_exists Varchar2(1) default 'N';
299 l_deletion_type Varchar2(1) default 'P'; --P : physical delete
300 --L : logical delete
301 --N : Not allowed
302
303 --------------
304 --Bug# 4091789
305 --------------
306 --cursor to check that line is financila asset line and
307 --contract is a rebook copy contract
308 Cursor l_rbk_asst_csr(p_cle_id IN NUMBER) is
309 Select 'Y' rbk_asst_flag,
310 clet.NAME
311 from okc_k_lines_tl clet,
312 okc_k_lines_b cleb,
313 okc_line_styles_b lseb,
314 okc_k_headers_b chrb
315 where chrb.id = cleb.dnz_chr_id
316 and chrb.scs_code = 'LEASE'
317 and chrb.orig_system_source_code = 'OKL_REBOOK'
318 and clet.id = cleb.id
319 and clet.language = userenv('LANG')
320 and lseb.id = cleb.lse_id
321 and lseb.lty_code = 'FREE_FORM1'
322 and cleb.id = p_cle_id
323 and cleb.orig_system_id1 is not NULL
324 and exists (select '1'
325 from okc_k_headers_b orig_chrb,
326 okc_k_lines_b orig_cleb
327 where orig_chrb.id = chrb.orig_system_id1
328 and orig_cleb.id = cleb.orig_system_id1
329 --Bug# 4375800 :
330 and orig_cleb.sts_code <> 'ABANDONED'
331 and orig_cleb.dnz_chr_id = orig_chrb.id);
332
333 l_rbk_asst_rec l_rbk_asst_csr%ROWTYPE;
334 -------------
335 --Bug# 4091789 End
336 -------------
337
338 Begin
339 x_return_status := OKL_API.G_RET_STS_SUCCESS;
340
341 --check if contract is booked
342 Open Chr_sts_crs(p_cle_id => p_cle_id);
343 Fetch Chr_sts_crs into l_sts_code;
344 Close Chr_sts_crs;
345 If l_sts_code = G_OKL_BOOKED_STS_CODE Then
346 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
347 p_msg_name => G_BOOKED_KLE_DELETE);
348 x_return_status := OKL_API.G_RET_STS_ERROR;
349 l_deletion_type := 'N';
350 Raise G_EXCEPTION_HALT_VALIDATION;
351 End If;
352
353 --check if contract was ever booked
354 l_chr_ever_booked := 'N';
355 Open Ever_Booked_crs(p_cle_id => p_cle_id);
356 Fetch Ever_Booked_crs into l_chr_ever_booked;
357 If Ever_Booked_crs%NOTFOUND Then
358 Null;
359 End If;
360 Close Ever_Booked_crs;
361
362 If l_chr_ever_booked = 'Y' Then
363 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
364 p_msg_name => G_PAST_BOOKED_KLE_DELETE);
365 x_return_status := OKL_API.G_RET_STS_ERROR;
366 l_deletion_type := 'N';
367 Raise G_EXCEPTION_HALT_VALIDATION;
368 End If;
369
370 --check whether funding exists
371 l_funding_exists := 'N';
372 Open Funding_Exists_crs(p_cle_id => p_cle_id);
373 Fetch Funding_Exists_crs into l_funding_exists;
374 If Funding_Exists_crs%NOTFOUND Then
375 Null;
376 End If;
377 Close Funding_Exists_crs;
378
379 If l_funding_exists = 'Y' Then
380 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
381 p_msg_name => G_FUNDED_KLE_DELETE);
382 x_return_status := OKL_API.G_RET_STS_ERROR;
383 l_deletion_type := 'N';
384 Raise G_EXCEPTION_HALT_VALIDATION;
385 End If;
386
387 -------------
388 --Bug# 4091789
389 -------------
390 --check if user is trying to delete a financial asset line on a lease rebook copy
391 l_rbk_asst_rec := Null;
392 for l_rbk_asst_rec in l_rbk_asst_csr(p_cle_id => p_cle_id)
393 loop
394 If NVL(l_rbk_asst_rec.rbk_asst_flag,'N') = 'Y' then
395 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
396 p_msg_name => 'OKL_LA_REBOOK_LINE_DELETE',
397 p_token1 => 'ASSET_NUMBER',
398 p_token1_value => l_rbk_asst_rec.name);
399 x_return_status := OKL_API.G_RET_STS_ERROR;
400 l_deletion_type := 'N';
401 Raise G_EXCEPTION_HALT_VALIDATION;
402 End If;
403 End Loop;
404 -------------
405 --Bug# 4091789 End
406 -------------
407
408
409 --check if streams exist for the line
410 l_streams_exists := 'N';
411 Open streams_exist_crs(p_cle_id => p_cle_id);
412 Fetch streams_exist_crs into l_streams_exists;
413 If streams_exist_crs%NOTFOUND Then
414 Null;
415 End If;
416 Close streams_exist_crs;
417
418 If l_streams_exists = 'Y' Then
419 l_deletion_type := 'L';
420 End If;
421 x_deletion_type := l_deletion_type;
422
423 Exception
424
425 when G_EXCEPTION_HALT_VALIDATION then
426 -- no processing necessary; validation can continue with the next column
427 x_deletion_type := l_deletion_type;
428 when OTHERS then
429 -- store SQL error message on message stack for caller
430 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
431 p_msg_name => G_UNEXPECTED_ERROR,
432 p_token1 => g_sqlcode_token,
433 p_token1_value => sqlcode,
434 p_token2 => g_sqlerrm_token,
435 p_token2_value => sqlerrm);
436
437 -- notify caller of an error
438 If Chr_sts_crs%ISOPEN Then
439 Close Chr_sts_crs;
440 End If;
441 If Ever_Booked_crs%ISOPEN Then
442 Close Ever_Booked_crs;
443 End If;
444 If Funding_Exists_crs%ISOPEN Then
445 Close Funding_Exists_crs;
446 End If;
447 If streams_exist_crs%ISOPEN Then
448 Close streams_exist_crs;
449 End If;
450 x_deletion_type := 'N';
451 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
452 END kle_delete_allowed;
453
454 -- Start of comments
455 --
456 -- Procedure Name : term_modfn
457 -- Description : local proc checks if term modfn allowed on a lease chr hdr
458 -- and cascades term modification to lines
459 -- Business Rules :
460 -- Parameters :
461 -- Version : 1.0
462 -- End of comments
463
464 Procedure term_modfn( p_api_version IN NUMBER,
465 p_init_msg_list IN VARCHAR2,
466 x_return_status OUT NOCOPY VARCHAR2,
467 x_msg_count OUT NOCOPY NUMBER,
468 x_msg_data OUT NOCOPY VARCHAR2,
469 p_chr_id IN NUMBER,
470 p_new_start_date IN Date,
471 p_new_end_date IN Date,
472 p_new_term IN Number,
473 x_modfn_mode OUT NOCOPY VARCHAR2) IS
474
475 --Cursor to check if it is lease contract chr
476 Cursor chk_lease_csr(p_chr_id IN NUMBER) is
477 SELECT chr.sts_code,
478 chr.scs_code,
479 khr.term_duration,
480 chr.start_date,
481 chr.end_date
482 From okl_k_headers khr,
483 okc_k_headers_b chr
484 Where khr.id = chr.id
485 And chr.id = p_chr_id;
486
487 l_sts_code okc_k_headers_b.sts_code%TYPE;
488 l_scs_code okc_k_headers_b.scs_code%TYPE;
489 l_term_duration okl_k_headers.term_duration%TYPE;
490 l_start_date okc_k_headers_b.start_date%TYPE;
491 l_end_date okc_k_headers_b.end_date%TYPE;
492
493
494 --Cursor to check if the contract was ever booked
495 Cursor Ever_Booked_csr(p_chr_id IN Number) is
496 SELECT 'Y'
497 FROM okc_k_headers_bh chrh,
498 okc_k_headers_b chr
499 WHERE chrh.contract_number = chr.contract_number
500 AND chr.ID = p_chr_id
501 AND chrh.sts_code = G_OKL_BOOKED_STS_CODE
502 AND rownum < 2;
503
504 l_ever_booked Varchar2(1) default 'N';
505
506 --Cursor to check if the contract is a rebook copy
507 Cursor Rbk_Cpy_Csr(p_chr_id IN Number) is
508 Select 'Y'
509 From okc_k_headers_b chr
510 where chr.orig_system_source_code = 'OKL_REBOOK'
511 and chr.id = p_chr_id;
512
513 l_rbk_cpy Varchar2(1) default 'N';
514
515 l_modfn_mode Varchar2(1); --'R' restrict reduction in term
516 --'N' Normal
517 --'L' Copy start and end dates on to lines
518 --'P' Violates product effictivity dates
519
520 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
521 lx_clev_rec okl_okc_migration_pvt.clev_rec_type;
522
523 --Cursor to find out the product from_date and to_date
524 Cursor pdt_dts_csr(p_chr_id IN NUMBER) IS
525 Select pdt.from_date,
526 pdt.to_date
527 From okl_products pdt,
528 okl_k_headers khr
529 where pdt.id = khr.pdt_id
530 and khr.id = p_chr_id;
531
532 l_pdt_to_date okl_products.to_date%TYPE;
533 l_pdt_from_date okl_products.from_date%TYPE;
534
535 l_new_start_date date;
536 l_new_end_date date;
537
538 --Bug# 2691029 : Cursor to find out Rebook date
539 Cursor rbk_date_csr (rbk_chr_id IN NUMBER) is
540 SELECT DATE_TRANSACTION_OCCURRED
541 FROM okl_trx_contracts ktrx
542 WHERE ktrx.KHR_ID_NEW = rbk_chr_id
543 AND ktrx.tsu_code = 'ENTERED'
544 --AND ktrx.rbr_code IS NOT NULL
545 AND ktrx.tcn_type = 'TRBK'
546 --rkuttiya added for 12.1.1 Multi GAAP Project
547 AND ktrx.representation_type = 'PRIMARY';
548 --
549
550 l_rbk_date okl_trx_contracts.DATE_TRANSACTION_OCCURRED%TYPE;
551
552 --Bug# 2691029: Cursor to find out the original start date of contract being rebooked
553 Cursor orig_date_csr(rbk_chr_id IN NUMBER) is
554 Select orig.start_date,
555 orig.end_date,
556 orig_k.term_duration
557 from okl_k_headers orig_k,
558 okc_k_headers_b orig,
559 okc_k_headers_b rbk
560 where orig_k.id = orig.id
561 and orig.id = rbk.orig_system_id1
562 and rbk.id = rbk_chr_id;
563
564 l_orig_start_date okc_k_headers_b.start_date%TYPE;
565 l_orig_end_date okc_k_headers_b.end_date%TYPE;
566 l_orig_term_duration okl_k_headers.term_duration%TYPE;
567
568
569 Begin
570
571 x_return_status := OKL_API.G_RET_STS_SUCCESS;
572 l_modfn_mode := 'N';
573 l_new_start_date := p_new_start_date;
574 l_new_end_date := p_new_end_date;
575
576 Open chk_lease_csr(p_chr_id => p_chr_id);
577 Fetch chk_lease_csr Into l_sts_code,
578 l_scs_code,
579 l_term_duration,
580 l_start_date,
581 l_end_date;
582 If chk_lease_csr%NOTFOUND Then
583 Raise G_EXCEPTION_HALT_VALIDATION;
584 End If;
585 Close chk_lease_csr;
586
587 If l_new_start_date is null or l_new_start_date = OKL_API.G_MISS_DATE Then
588 l_new_start_date := l_start_date;
589 End If;
590
591 If l_new_end_date is null or l_new_end_date = OKL_API.G_MISS_DATE Then
592 l_new_end_date := l_end_date;
593 End If;
594
595
596 If l_scs_code = 'LEASE' Then
597 --Bug#2691029 if there is no change in dates then there is no term modification
598 If l_new_start_date = l_start_date and
599 l_new_end_date = l_end_date Then
600 l_modfn_mode := 'N';
601 Else
602 l_modfn_mode := 'L';
603 --if contract booked do not allow term changes--(this will be taken care of by the UI as
604 -- user get to see view only pages only)
605
606 --if contract is a Rebook Copy OR Contract is ever booked
607 --do not allow reduction in term (allow change in start date only)
608
609 l_ever_booked := 'N';
610 Open Ever_Booked_csr(p_chr_id => p_chr_id);
611 Fetch Ever_Booked_csr into l_ever_booked;
612 If Ever_Booked_csr%NOTFOUND Then
613 Null;
614 End If;
615 Close Ever_Booked_csr;
616
617 If l_ever_booked = 'Y' Then
618 l_modfn_mode := 'R';
619 End If;
620
621 l_rbk_cpy := 'N';
622 --if lines exist for contract change start_end dates on lines
623 Open Rbk_Cpy_Csr(p_chr_id => p_chr_id);
624 Fetch Rbk_Cpy_Csr into l_rbk_cpy;
625 If Rbk_Cpy_Csr%NOTFOUND Then
626 Null;
627 End If;
628 Close Rbk_Cpy_Csr;
629
630 If l_rbk_cpy = 'Y' Then
631 l_modfn_mode := 'R';
632 End If;
633
634 --if not restricted then check if the change will satisfy pdt start end dates
635 If l_modfn_mode <> 'R' Then
636 Open pdt_dts_csr(p_chr_id => p_chr_id);
637 Fetch pdt_dts_csr into l_pdt_from_date,
638 l_pdt_to_date;
639 If pdt_dts_csr%NOTFOUND Then
640 Null;
641 End If;
642 Close pdt_dts_csr;
643 If trunc(l_new_start_date) not between trunc(nvl(l_pdt_from_date,l_new_start_date))
644 and trunc(nvl(l_pdt_to_date,l_new_start_date)) Then
645 l_modfn_mode := 'P';
646 End If;
647 End If;
648 End If;
649 Elsif l_scs_code = 'QUOTE' then
650
651 l_modfn_mode := 'L';
652 Open pdt_dts_csr(p_chr_id => p_chr_id);
653 Fetch pdt_dts_csr into l_pdt_from_date,
654 l_pdt_to_date;
655 If pdt_dts_csr%NOTFOUND Then
656 Null;
657 End If;
658 Close pdt_dts_csr;
659 If trunc(l_new_start_date) not between trunc(nvl(l_pdt_from_date,l_new_start_date))
660 and trunc(nvl(l_pdt_to_date,l_new_start_date)) Then
661 l_modfn_mode := 'P';
662 End If;
663
664 Else
665 --do nothing
666 l_modfn_mode := 'N';
667 End If;
668
669
670 If (l_modfn_mode = 'R') Then
671 --bug# 2821383: For rebook copy contracts end data should be from original contract
672 If l_rbk_cpy <> 'Y' then
673 If trunc(l_new_end_date) < trunc(l_end_date)
674 or (p_new_term < l_term_duration) Then
675 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
676 p_msg_name => G_TERM_REDUCTION_NOT_ALLOWED
677 );
678 x_return_status := OKL_API.G_RET_STS_ERROR;
679 Raise G_EXCEPTION_HALT_VALIDATION;
680 End If;
681 End If; --bug # 2821383
682
683 --Bug # 2691029
684 If l_rbk_cpy = 'Y' Then
685 --start date compare should be with the start_date of the original contract
686 Open orig_date_csr(rbk_chr_id => p_chr_id);
687 Fetch orig_date_csr into l_orig_start_date,
688 l_orig_end_date,
689 l_orig_term_duration;
690 If orig_date_csr%NOTFOUND then
691 null; --should never hit this
692 end if;
693 Close orig_date_csr;
694
695 If trunc(l_new_start_date) < trunc(l_orig_start_date) Then
696 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
697 p_msg_name => G_RBK_NEW_START_DATE,
698 p_token1 => g_effective_from_token,
699 p_token1_value => to_char(l_orig_start_date,'DD-MON-YYYY')
700 );
701 x_return_status := OKL_API.G_RET_STS_ERROR;
702 Raise G_EXCEPTION_HALT_VALIDATION;
703 End If;
704 --Bug#2821383 :check on term reduction for rbook copy contract should be with original end date
705 If trunc(l_new_end_date) < trunc(l_orig_end_date)
706 or (p_new_term < l_orig_term_duration) Then
707 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
708 p_msg_name => G_TERM_REDUCTION_NOT_ALLOWED
709 );
710 x_return_status := OKL_API.G_RET_STS_ERROR;
711 Raise G_EXCEPTION_HALT_VALIDATION;
712 End If; --Bug# 2821383 End
713 End If;
714
715 --Bug # 2691029
716 If l_rbk_cpy = 'Y' Then
717 Open rbk_date_csr(p_chr_id);
718 Fetch rbk_date_csr into l_rbk_date;
719 If rbk_date_csr%NOTFOUND Then
720 null;
721 --rebook date will always e there though
722 end if;
723 Close rbk_date_csr;
724
725 If l_rbk_date < l_new_start_date then
726 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
727 p_msg_name => G_RBK_DATE_LESS, --new message needed
728 p_token1 => g_rebook_date_token,
729 p_token1_value => to_char(l_rbk_date,'DD-MON-YYYY')
730 );
731 x_return_status := OKL_API.G_RET_STS_ERROR;
732 Raise G_EXCEPTION_HALT_VALIDATION;
733 End If;
734 End If;
735
736 ElsIF (l_modfn_mode = 'P') Then
737 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
738 p_msg_name => G_PRODUCT_EFFECTIVITY
739 );
740 x_return_status := OKL_API.G_RET_STS_ERROR;
741 Raise G_EXCEPTION_HALT_VALIDATION;
742 End If;
743
744 x_modfn_mode := l_modfn_mode;
745
746 Exception
747 when G_EXCEPTION_HALT_VALIDATION then
748 -- no processing necessary; validation can continue with the next column
749 x_modfn_mode := l_modfn_mode;
750
751 when OTHERS then
752 -- store SQL error message on message stack for caller
753 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
754 p_msg_name => G_UNEXPECTED_ERROR,
755 p_token1 => g_sqlcode_token,
756 p_token1_value => sqlcode,
757 p_token2 => g_sqlerrm_token,
758 p_token2_value => sqlerrm);
759
760 -- notify caller of an error
761
762 If Ever_Booked_csr%ISOPEN Then
763 Close Ever_Booked_csr;
764 End If;
765
766 If Rbk_Cpy_Csr%ISOPEN Then
767 Close Rbk_Cpy_Csr;
768 End If;
769
770 IF pdt_dts_csr%ISOPEN Then
771 Close pdt_dts_csr;
772 End If;
773
774 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
775 x_modfn_mode := 'N';
776 END term_modfn;
777
778 -- Start of comments
779 --
780 -- Procedure Name : template_create_allowed
781 -- Description : local proc validates if it is OK to create contract as template
782 -- Business Rules : If profile option OKL_ALLOW_K_TEMPLATE_CREATE is 'Y' then
783 -- the user is allowed to create contract templates else if it
784 -- is 'N' the user is not allowed to create contract templates
785 -- Parameters :
786 -- Version : 1.0
787 -- End of comments
788
789 PROCEDURE template_create_allowed(p_chr_id IN NUMBER,
790 p_template_yn IN VARCHAR2,
791 x_return_status OUT NOCOPY VARCHAR2) IS
792
793 Cursor chk_template_csr (p_chr_id IN NUMBER) is
794 Select nvl(template_yn,'N')
795 From okc_k_headers_b
796 Where id = p_chr_id;
797
798 l_template_yn okc_k_headers_b.template_yn%TYPE;
799
800 BEGIN
801 x_return_status := OKL_API.G_RET_STS_SUCCESS;
802 --check if contract template creation is allowed
803 IF p_chr_id is not null Then --it is an update
804 --get old value of template y/N flag
805 Open chk_template_csr(p_chr_id => p_chr_id);
806 Fetch chk_template_csr into l_template_yn;
807 If chk_template_csr%NOTFOUND Then
808 l_template_yn := 'N';
809 End If;
810 Close chk_template_csr;
811 Elsif p_chr_id is null Then
812 l_template_yn := 'N';
813 End If;
814
815 --If p_template_yn is null OR p_template_yn = OKL_API.G_MISS_CHAR Then
816 -- l_template_yn := p_template_yn;
817 --End If;
818
819 IF p_template_yn is Null OR p_template_yn = OKL_API.G_MISS_CHAR Then
820 Null;
821 Else
822 IF p_template_yn <> l_template_yn then
823 IF FND_PROFILE.VALUE('OKL_ALLOW_K_TEMPLATE_CREATE') = 'Y' Then
824 Null;
825 ElsIf FND_PROFILE.VALUE('OKL_ALLOW_K_TEMPLATE_CREATE') = 'N' Then
826 x_return_status := OKL_API.G_RET_STS_ERROR;
827 End If;
828 End If;
829 END IF;
830
831 EXCEPTION
832 when OTHERS then
833 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
834 END template_create_allowed;
835
836 -- Start of comments
837 -- Bug # 2522268
838 -- Procedure Name : Asset_Logical_Delete
839 -- Description : Generates Asset Number for logically deleted asset ('ABANDONED')
840 -- and updates the original number with deleted asset number
841 -- so that the original asset number could be re-used
842 -- Business Rules :
843 -- Parameters :
844 -- Version : 1.0
845 -- End of comments
846 PROCEDURE Asset_Logical_Delete( p_api_version IN NUMBER,
847 p_init_msg_list IN VARCHAR2,
848 x_return_status OUT NOCOPY VARCHAR2,
849 x_msg_count OUT NOCOPY NUMBER,
850 x_msg_data OUT NOCOPY VARCHAR2,
851 p_cle_id IN NUMBER,
852 p_asset_number IN VARCHAR2) IS
853
854 --cursor to get new asset number
855 Cursor c_asset_no IS
856 select 'DUMMY'||TO_CHAR(OKL_FAN_SEQ.NEXTVAL)
857 FROM dual;
858
859 l_asset_no OKX_ASSETS_V.ASSET_NUMBER%TYPE;
860
861 --Cursors to find if asset number exists
862 CURSOR c_txl_asset_number(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
863 SELECT 'Y'
864 FROM DUAL
865 WHERE EXISTS (SELECT '1'
866 FROM OKL_TXL_ASSETS_V
867 WHERE asset_number = p_asset_number);
868
869 CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
870 --start modified abhsaxen for performance SQLID 20562304
871 select 'Y'
872 from okc_k_lines_b kleb,
873 okc_k_lines_tl kle,
874 okc_line_styles_b lse
875 where kle.name = p_asset_number
876 and kle.id = kleb.id
877 and kle.language = USERENV('LANG')
878 and kleb.lse_id = lse.id
879 and lse.lty_code = 'FREE_FORM1';
880 --start modified abhsaxen for performance SQLID 20562304
881
882 CURSOR c_okx_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
883 SELECT 'Y'
884 FROM DUAL
885 WHERE EXISTS (SELECT '1'
886 FROM OKX_ASSETS_V
887 WHERE asset_number = p_asset_number);
888
889 CURSOR c_txd_assets_v (p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
890 SELECT 'Y'
891 FROM DUAL
892 WHERE EXISTS (SELECT '1'
893 FROM OKL_TXD_ASSETS_V
894 WHERE asset_number = p_asset_number);
895
896
897 l_asset_exists Varchar2(1) default 'N';
898
899 --cursor to check if line is financial asset top line
900 CURSOR l_is_finasst (p_line_id OKC_K_LINES_B.ID%TYPE) IS
901 Select 'Y'
902 From Dual
903 Where exists (select '1'
904 from okc_k_lines_b cle,
905 okc_line_styles_b lse
906 where cle.lse_id = lse.id
907 and lse.lty_code = 'FREE_FORM1'
908 and cle.id = p_line_id);
909
910 l_fin_asst Varchar2(1) default 'N';
911 l_cle_id Number;
912
913 l_clev_rec OKL_OKC_MIGRATION_PVT.clev_rec_type;
914 lx_clev_rec OKL_OKC_MIGRATION_PVT.clev_rec_type;
915
916 --Cursor to check asset number on txl
917 CURSOR l_txlv_csr (p_finasst_id IN NUMBER, P_Asstno IN VARCHAR2) is
918 Select txlv.id,
919 txlv.asset_number
920 From OKL_TXL_ASSETS_V txlv,
921 OKC_K_LINES_B cle,
922 OKC_LINE_STYLES_B lse
923 Where txlv.kle_id = cle.id
924 And cle.lse_id = lse.id
925 And lse.lty_code = 'FIXED_ASSET'
926 And cle.cle_id = p_finasst_id
927 And txlv.asset_number = p_asstNo;
928
929 l_txl_id OKL_TXL_ASSETS_V.ID%TYPE;
930 l_txl_asset_number OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE;
931
932 --Cursor to check asset number on txd
933 CURSOR l_txdv_csr (p_finasst_id IN NUMBER, p_asstno IN VARCHAR2) is
934 Select txdv.id,
935 txdv.asset_number
936 From OKL_TXD_ASSETS_V txdv,
937 OKL_TXL_ASSETS_V txlv,
938 OKC_K_LINES_B cle,
939 OKC_LINE_STYLES_B lse
940 Where txdv.tal_id = txlv.id
941 And txlv.kle_id = cle.id
942 And cle.lse_id = lse.id
943 And lse.lty_code = 'FIXED_ASSET'
944 And cle.cle_id = p_finasst_id
945 And txdv.asset_number = p_asstno;
946
947 l_txd_id OKL_TXD_ASSETS_V.ID%TYPE;
948 l_txd_asset_number OKL_TXD_ASSETS_V.ASSET_NUMBER%TYPE;
949
950 l_tlpv_rec OKL_TXL_ASSETS_PUB.tlpv_rec_type;
951 lx_tlpv_rec OKL_TXL_ASSETS_PUB.tlpv_rec_type;
952 l_adpv_rec OKL_TXD_ASSETS_PUB.adpv_rec_type;
953 lx_adpv_rec OKL_TXD_ASSETS_PUB.adpv_rec_type;
954
955
956 Begin
957 x_return_status := OKL_API.G_RET_STS_SUCCESS;
958 l_cle_id := p_cle_id;
959 --dbms_output.put_line('outside Asset_Logical_Delete:'||to_char(l_cle_id));
960 l_fin_asst := 'N';
961 --find out if p_cle_id is financial asset line
962 Open l_is_finasst(l_cle_id);
963 Fetch l_is_finasst into l_fin_asst;
964 If l_is_finasst%NOTFOUND Then
965 Null;
966 End If;
967 Close l_is_finasst;
968
969 If l_fin_asst = 'Y' Then
970 --dbms_output.put_line('inside Asset_Logical_Delete:'||to_char(l_cle_id));
971 --get deleted asset number
972 l_asset_no := null;
973 Open c_asset_no;
974 Loop
975 Fetch c_asset_no into l_asset_no;
976 --chk if asset already exists
977 l_asset_exists := 'N';
978 open c_txl_asset_number(l_asset_no);
979 Fetch c_txl_asset_number into l_asset_exists;
980 If c_txl_asset_number%NOTFOUND Then
981 open c_okx_asset_lines_v(l_asset_no);
982 Fetch c_okx_asset_lines_v into l_asset_exists;
983 If c_okx_asset_lines_v%NOTFOUND Then
984 open c_okx_assets_v(l_asset_no);
985 Fetch c_okx_assets_v into l_asset_exists;
986 If c_okx_assets_v%NOTFOUND Then
987 open c_txd_assets_v(l_asset_no);
988 Fetch c_txd_assets_v into l_Asset_exists;
989 If c_txd_assets_v%NOTFOUND Then
990 null;
991 End If;
992 Close c_txd_assets_v;
993 End If;
994 Close c_okx_assets_v;
995 End If;
996 Close c_okx_asset_lines_v;
997 End If;
998 Close c_txl_asset_number;
999 If l_asset_exists = 'N' Then
1000 Exit;
1001 End If;
1002 End Loop;
1003
1004 --dbms_output.put_line(l_asset_no);
1005 --update asset number on top line
1006 l_clev_rec.id := l_cle_id;
1007 l_clev_rec.name := l_asset_no;
1008 okl_okc_migration_pvt.update_contract_line(
1009 p_api_version => p_api_version,
1010 p_init_msg_list => p_init_msg_list,
1011 x_return_status => x_return_status,
1012 x_msg_count => x_msg_count,
1013 x_msg_data => x_msg_data,
1014 p_restricted_update => OKC_API.G_FALSE,
1015 p_clev_rec => l_clev_rec,
1016 x_clev_rec => lx_clev_rec);
1017
1018 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
1019 RAISE G_EXCEPTION_HALT_PROCESS;
1020 End If;
1021
1022 --update asset number on txl
1023 OPEN l_txlv_csr(l_cle_id, p_asset_number);
1024 Loop
1025 Fetch l_txlv_csr into l_txl_id, l_txl_asset_number;
1026 Exit When l_txlv_csr%NOTFOUND;
1027 IF l_txl_asset_number is not null then
1028 l_tlpv_rec.id := l_txl_id;
1029 l_tlpv_rec.asset_number := l_asset_no;
1030 okl_txl_assets_pub.update_txl_asset_Def(
1031 p_api_version => p_api_version,
1032 p_init_msg_list => p_init_msg_list,
1033 x_return_status => x_return_status,
1034 x_msg_count => x_msg_count,
1035 x_msg_data => x_msg_data,
1036 p_tlpv_rec => l_tlpv_rec,
1037 x_tlpv_rec => lx_tlpv_rec);
1038 --dbms_output.put_line('after updating txl assets for asset number');
1039 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
1040 RAISE G_EXCEPTION_HALT_PROCESS;
1041 End If;
1042 End IF;
1043 End Loop;
1044 CLOSE l_txlv_csr;
1045
1046 --update asset number on txd
1047 OPEN l_txdv_csr(l_cle_id,p_asset_number);
1048 LOOP
1049 Fetch l_txdv_csr into l_txd_id, l_txd_asset_number;
1050 Exit When l_txdv_csr%NOTFOUND;
1051 IF l_txd_asset_number is not null then
1052 l_adpv_rec.id := l_txd_id;
1053 l_adpv_rec.asset_number := l_asset_no;
1054
1055 okl_txd_assets_pub.update_txd_asset_Def(
1056 p_api_version => p_api_version,
1057 p_init_msg_list => p_init_msg_list,
1058 x_return_status => x_return_status,
1059 x_msg_count => x_msg_count,
1060 x_msg_data => x_msg_data,
1061 p_adpv_rec => l_adpv_rec,
1062 x_adpv_rec => lx_adpv_rec);
1063
1064 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
1065 RAISE G_EXCEPTION_HALT_PROCESS;
1066 End If;
1067
1068 End IF;
1069 End Loop;
1070 CLOSE l_txlv_csr;
1071 END IF;
1072 EXCEPTION
1073 WHEN G_EXCEPTION_HALT_PROCESS Then
1074 --just return back the return status with message stack;
1075 Null;
1076 If l_txdv_csr%ISOPEN Then
1077 CLOSE l_txdv_csr;
1078 End If;
1079 If l_txlv_csr%ISOPEN Then
1080 CLOSE l_txlv_csr;
1081 End If;
1082 If l_is_finasst%ISOPEN Then
1083 CLOSE l_is_finasst;
1084 End If;
1085 If c_txd_assets_v%ISOPEN Then
1086 CLOSE c_txd_assets_v;
1087 End If;
1088 If c_okx_assets_v%ISOPEN Then
1089 CLOSE c_okx_assets_v;
1090 End If;
1091 If c_okx_asset_lines_v%ISOPEN Then
1092 CLOSE c_okx_asset_lines_v;
1093 End If;
1094 If c_txl_asset_number%ISOPEN Then
1095 CLOSE c_txl_asset_number;
1096 End If;
1097 If c_asset_no%ISOPEN Then
1098 CLOSE c_asset_no;
1099 End If;
1100 WHEN OTHERS Then
1101 If l_txdv_csr%ISOPEN Then
1102 CLOSE l_txdv_csr;
1103 End If;
1104 If l_txlv_csr%ISOPEN Then
1105 CLOSE l_txlv_csr;
1106 End If;
1107 If l_is_finasst%ISOPEN Then
1108 CLOSE l_is_finasst;
1109 End If;
1110 If c_txd_assets_v%ISOPEN Then
1111 CLOSE c_txd_assets_v;
1112 End If;
1113 If c_okx_assets_v%ISOPEN Then
1114 CLOSE c_okx_assets_v;
1115 End If;
1116 If c_okx_asset_lines_v%ISOPEN Then
1117 CLOSE c_okx_asset_lines_v;
1118 End If;
1119 If c_txl_asset_number%ISOPEN Then
1120 CLOSE c_txl_asset_number;
1121 End If;
1122 If c_asset_no%ISOPEN Then
1123 CLOSE c_asset_no;
1124 End If;
1125 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1126 END Asset_logical_Delete;
1127 --Bug # 2522268 End
1128
1129 -- Start of comments
1130 -- Bug # 2522268 End
1131 -- Procedure Name : Linked_Asset_Delete
1132 -- Description : Local Procedure to delete linked_assets
1133 -- Business Rules :
1134 -- Parameters :
1135 -- Version : 1.0
1136 -- End of comments
1137 Procedure Linked_Asset_Delete( p_api_version IN NUMBER,
1138 p_init_msg_list IN VARCHAR2,
1139 x_return_status OUT NOCOPY VARCHAR2,
1140 x_msg_count OUT NOCOPY NUMBER,
1141 x_msg_data OUT NOCOPY VARCHAR2,
1142 p_cle_id IN NUMBER,
1143 p_deletion_type IN VARCHAR2) IS
1144
1145 --cursor to check if line is financial asset top line
1146 CURSOR l_is_finasst (p_line_id OKC_K_LINES_B.ID%TYPE) IS
1147 Select 'Y'
1148 From Dual
1149 Where exists (select '1'
1150 from okc_k_lines_b cle,
1151 okc_line_styles_b lse
1152 where cle.lse_id = lse.id
1153 and lse.lty_code = 'FREE_FORM1'
1154 and cle.id = p_line_id);
1155
1156 l_fin_asst Varchar2(1) default 'N';
1157 l_cle_id Number;
1158
1159 --cursor to check if financial asset appears as linked asset
1160 CURSOR l_lnk_ast_csr (p_line_id OKC_K_LINES_B.ID%TYPE) IS
1161 Select lnk.id
1162 From okc_k_lines_b lnk,
1163 okc_line_styles_b lnk_lse,
1164 okc_statuses_b sts,
1165 okc_k_items cim
1166 Where lnk.id = cim.cle_id
1167 and lnk.dnz_chr_id = cim.dnz_chr_id
1168 and lnk.lse_id = lnk_lse.id
1169 and lnk_lse.lty_code in ('LINK_FEE_ASSET','LINK_SERV_ASSET','LINK_USAGE_ASSET')
1170 and sts.code = lnk.sts_code
1171 and sts.ste_code not in ('EXPIRED','TERMINATED','CANCELLED')
1172 and cim.jtot_object1_code = 'OKX_COVASST'
1173 and cim.object1_id1 = to_char(p_line_id)
1174 and cim.object1_id2 = '#';
1175
1176 l_lnk_cle_id OKC_K_LINES_B.ID%TYPE;
1177 l_clev_rec OKL_OKC_MIGRATION_PVT.clev_rec_type;
1178 l_clev_rec_out OKL_OKC_MIGRATION_PVT.clev_rec_type;
1179 l_deletion_type Varchar2(1);
1180
1181 Begin
1182 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1183 l_cle_id := p_cle_id;
1184 l_deletion_type := p_deletion_type;
1185 --dbms_output.put_line('outside Link_asset_Delete:'||to_char(l_cle_id));
1186 l_fin_asst := 'N';
1187 --find out if p_cle_id is financial asset line
1188 Open l_is_finasst(l_cle_id);
1189 Fetch l_is_finasst into l_fin_asst;
1190 If l_is_finasst%NOTFOUND Then
1191 Null;
1192 End If;
1193 Close l_is_finasst;
1194
1195 If l_fin_asst = 'Y' Then
1196 --dbms_output.put_line('deletion type '||l_deletion_type);
1197 OPEN l_lnk_ast_csr(p_line_id => l_cle_id);
1198 LOOP
1199 FETCH l_lnk_ast_csr into l_lnk_cle_id;
1200 EXIT When l_lnk_ast_csr%NOTFOUND;
1201 If l_deletion_type = 'L' Then
1202 --do logical deletion of linked asset line
1203 l_clev_rec.id := l_lnk_cle_id;
1204 l_clev_rec.sts_code := G_OKL_CANCELLED_STS_CODE;
1205
1206 okl_okc_migration_pvt.update_contract_line
1207 (p_api_version => p_api_version,
1208 p_init_msg_list => p_init_msg_list,
1209 x_return_status => x_return_status,
1210 x_msg_count => x_msg_count,
1211 x_msg_data => x_msg_data,
1212 p_clev_rec => l_clev_rec,
1213 x_clev_rec => l_clev_rec_out
1214 );
1215 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
1216 RAISE G_EXCEPTION_HALT_PROCESS;
1217 End If;
1218
1219 ElsIf l_deletion_type = 'P' Then
1220 --do physical deletions
1221 --dbms_output.put_line('Inside Link_asset_Delete:'||to_char(l_lnk_cle_id));
1222 OKL_CONTRACT_PVT.delete_contract_line
1223 (p_api_version => p_api_version,
1224 p_init_msg_list => p_init_msg_list,
1225 x_return_status => x_return_status,
1226 x_msg_count => x_msg_count,
1227 x_msg_data => x_msg_data,
1228 p_line_id => l_lnk_cle_id
1229 );
1230
1231 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
1232 RAISE G_EXCEPTION_HALT_PROCESS;
1233 End If;
1234 End If;
1235 END LOOP;
1236 CLOSE l_lnk_ast_csr;
1237 END If;
1238
1239 EXCEPTION
1240 WHEN G_EXCEPTION_HALT_PROCESS Then
1241 --just return back the return status with message stack;
1242 Null;
1243 If l_is_finasst%ISOPEN Then
1244 CLOSE l_is_finasst;
1245 End If;
1246 If l_lnk_ast_csr%ISOPEN Then
1247 CLOSE l_lnk_ast_csr;
1248 End If;
1249 WHEN OTHERS Then
1250 If l_is_finasst%ISOPEN Then
1251 CLOSE l_is_finasst;
1252 End If;
1253 If l_lnk_ast_csr%ISOPEN Then
1254 CLOSE l_lnk_ast_csr;
1255 End If;
1256 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1257 END Linked_Asset_Delete;
1258 --------------------------------------------------------------------------------
1259 --Start of comments
1260 -- Bug#2727161 : 11.5.9 Enhancment
1261 -- Procedure : Is_Rebook_Copy (Local)
1262 -- Description : Return 'Y' if contract is a rebook copy contract, 'N' if it
1263 -- is not
1264 --Notes :
1265 --Prameters : IN
1266 -- p_chr_id - contract id
1267 -- Return - 'Y' if rebook copy
1268 -- 'N' if not rebook copy
1269 --end of comments
1270 --------------------------------------------------------------------------------
1271 FUNCTION Is_Rebook_Copy (p_chr_id IN NUMBER) return varchar2 IS
1272 --Cursor to check if the contract is a rebook copy
1273 Cursor Rbk_Cpy_Csr(p_chr_id IN Number) is
1274 Select 'Y'
1275 From okc_k_headers_b chr
1276 where chr.orig_system_source_code = 'OKL_REBOOK'
1277 and chr.id = p_chr_id;
1278
1279 l_rbk_cpy Varchar2(1) default 'N';
1280 Begin
1281 l_rbk_cpy := 'N';
1282 Open Rbk_Cpy_Csr(p_chr_id => p_chr_id);
1283 Fetch Rbk_Cpy_Csr into l_rbk_cpy;
1284 If Rbk_Cpy_Csr%NOTFOUND Then
1285 Null;
1286 End If;
1287 Close Rbk_Cpy_Csr;
1288 Return (l_rbk_cpy);
1289 End Is_Rebook_Copy;
1290 --Bug# : 3143522 - Subsidies . Extra enhancement if line start/end dates are not
1291 --passed they should be initialized
1292 --------------------------------------------------------------------------------
1293 -- Start of comments
1294 --
1295 -- Procedure Name : get_line_dates
1296 -- Description : defaults line dates for fee and service line and
1297 -- sub-lines on a lease contract if no dates are
1298 -- passed.
1299 -- Business Rules :
1300 -- Parameters :
1301 -- Version : 1.0
1302 -- End of comments
1303 --------------------------------------------------------------------------------
1304 Procedure get_line_dates(p_clev_rec IN okl_okc_migration_pvt.clev_rec_type,
1305 x_return_status OUT NOCOPY Varchar2,
1306 x_clev_rec OUT NOCOPY okl_okc_migration_pvt.clev_rec_type) is
1307
1308 l_return_status Varchar2(1) default OKL_API.G_RET_STS_SUCCESS;
1309 --cursor to get contract header dates
1310 cursor l_chr_csr (p_chr_id in number) is
1311 select chrb.start_date,
1312 chrb.end_date,
1313 chrb.scs_code,
1314 chrb.currency_code,
1315 chrb.sts_code
1316 from okc_k_headers_b chrb
1317 where chrb.id = p_chr_id;
1318
1319 l_chr_start_date date;
1320 l_chr_end_date date;
1321 l_scs_code okc_k_headers_b.scs_code%TYPE;
1322 l_chr_curr_code okc_k_headers_b.currency_code%TYPE;
1323 l_chr_sts_code okc_k_headers_b.sts_code%TYPE;
1324
1325 --cursor to get parent line dates
1326 cursor l_cle_csr (p_cle_id in number) is
1327 select cleb.start_date,
1328 cleb.end_date,
1329 cleb.currency_code,
1330 cleb.sts_code
1331 from okc_k_lines_b cleb
1332 where cleb.id = p_cle_id;
1333 l_cle_start_date date;
1334 l_cle_end_date date;
1335 l_cle_curr_code okc_k_lines_b.currency_code%TYPE;
1336 l_cle_sts_code okc_k_lines_b.sts_code%TYPE;
1337
1338 --cursor to get line style
1339 cursor l_lse_csr (p_lse_id in number ) is
1340 select lseb.lty_code,
1341 lseb.lse_type
1342 from okc_line_styles_b lseb
1343 where lseb.id = p_lse_id;
1344
1345 l_lty_code okc_line_styles_b.lty_code%TYPE;
1346 l_lse_type okc_line_styles_b.lse_type%TYPE;
1347
1348 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
1349
1350 l_rbk_cpy varchar2(1) default 'N';
1351
1352 --Cursor to find out Rebook date
1353 Cursor rbk_date_csr (rbk_chr_id IN NUMBER) is
1354 SELECT DATE_TRANSACTION_OCCURRED
1355 FROM okl_trx_contracts ktrx
1356 WHERE ktrx.KHR_ID_NEW = rbk_chr_id
1357 AND ktrx.tsu_code = 'ENTERED'
1358 AND ktrx.tcn_type = 'TRBK'
1359 --rkuttiya added for 12.1.1 Multi GAAP
1360 AND ktrx.representation_type = 'PRIMARY';
1361 --
1362
1363 l_rbk_date okl_trx_contracts.DATE_TRANSACTION_OCCURRED%TYPE default Null;
1364 begin
1365 l_return_status := OKL_API.G_RET_STS_SUCCESS;
1366 l_clev_rec := p_clev_rec;
1367
1368 open l_chr_csr(p_chr_id => l_clev_rec.dnz_chr_id);
1369 fetch l_chr_csr into l_chr_start_date,
1370 l_chr_end_date,
1371 l_scs_code,
1372 l_chr_curr_code,
1373 l_chr_sts_code;
1374 close l_chr_csr;
1375
1376 --get rebook date if it is a rebook copy contract
1377 l_rbk_cpy := 'N';
1378 If l_scs_code = 'LEASE' then
1379 l_rbk_cpy := Is_rebook_Copy(p_chr_id => l_clev_rec.dnz_chr_id);
1380 End If;
1381
1382 If l_rbk_cpy = 'Y' Then
1383 Open rbk_date_csr(l_clev_rec.dnz_chr_id);
1384 Fetch rbk_date_csr into l_rbk_date;
1385 If rbk_date_csr%NOTFOUND Then
1386 null;
1387 --rebook date will always e there though
1388 end if;
1389 Close rbk_date_csr;
1390 End If;
1391 --end of get rebook date if it is a rebook copy contract
1392
1393 If l_scs_code in ('LEASE','QUOTE') then
1394 open l_lse_csr(p_lse_id => l_clev_rec.lse_id);
1395 fetch l_lse_csr into l_lty_code,
1396 l_lse_type;
1397 close l_lse_csr;
1398 --If l_lty_code in ('SOLD_SERVICE','FEE','USAGE','LINK_FEE_ASSET','LINK_SERV_ASSET','LINK_USAGE_ASSET') then
1399 if l_lse_type = 'TLS' then
1400
1401 If nvl(l_clev_rec.start_date,OKL_API.G_MISS_DATE) = OKL_API.G_MISS_DATE then
1402 If nvl(l_rbk_cpy,'N') = 'Y' AND nvl(l_rbk_date,OKL_API.G_MISS_DATE) <> OKL_API.G_MISS_DATE then
1403 l_clev_rec.start_date := l_rbk_date;
1404 Else
1405 l_clev_rec.start_date := l_chr_start_date;
1406 End If;
1407 End If;
1408 If nvl(l_clev_rec.end_date,OKL_API.G_MISS_DATE) = OKL_API.G_MISS_DATE then
1409 l_clev_rec.end_date := l_chr_end_date;
1410 End If;
1411 If nvl(l_clev_rec.currency_code,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
1412 l_clev_rec.currency_code := l_chr_curr_code;
1413 End If;
1414 If nvl(l_clev_rec.sts_code,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
1415 l_clev_rec.sts_code := l_chr_sts_code;
1416 End If;
1417
1418 elsif l_lse_type = 'SLS' then
1419 open l_cle_csr (p_cle_id => l_clev_rec.cle_id);
1420 fetch l_cle_csr into l_cle_start_date,
1421 l_cle_end_date,
1422 l_cle_curr_code,
1423 l_cle_sts_code;
1424 close l_cle_csr;
1425 If nvl(l_clev_rec.start_date,OKL_API.G_MISS_DATE) = OKL_API.G_MISS_DATE then
1426 l_clev_rec.start_date := l_cle_start_date;
1427 End If;
1428 If nvl(l_clev_rec.end_date,OKL_API.G_MISS_DATE) = OKL_API.G_MISS_DATE then
1429 l_clev_rec.end_date := l_cle_end_date;
1430 End If;
1431 If nvl(l_clev_rec.currency_code,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
1432 l_clev_rec.currency_code := l_cle_curr_code;
1433 End If;
1434 If nvl(l_clev_rec.sts_code,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
1435 l_clev_rec.sts_code := l_cle_sts_code;
1436 End If;
1437
1438 end if;
1439 --end if;
1440 end if;
1441 x_clev_rec := l_clev_rec;
1442 x_return_status := l_return_status;
1443 exception
1444 when others then
1445 if l_chr_csr%ISOPEN then
1446 close l_chr_csr;
1447 end if;
1448 if l_cle_csr%ISOPEN then
1449 close l_cle_csr;
1450 end if;
1451 if l_lse_csr%ISOPEN then
1452 close l_lse_csr;
1453 end if;
1454 if rbk_date_csr%ISOPEN then
1455 close rbk_date_csr;
1456 end if;
1457 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1458 end get_line_dates;
1459 --End Bug# 3143522 - Subsidies - extra enhancement to auto-populate line dates
1460 --------------------------------------------------------------------------------
1461 --Bug# 3124577 : Procedure Create_OKC_CURRENCY_RULE is removed for
1462 -- OKC 11.5.10 Rule Migration
1463 -- as there is no need to create the CVN rule . Currency columns
1464 -- been promoted to OKC_K_HEADERS_B
1465 /*--Bug# 3124577 : 11.5.10 Rule Migration -------------------------------------*/
1466 --------------------------------------------------------------------------------
1467 --Bug # : Multi-Currency Enhancement
1468 --
1469 -- PROCEDURE validate_currency (local)
1470 -- Decription: This procedure validates currency_code during insert and update operation
1471 -- Logic:
1472 -- 1. If transaction currency is NULL, take functional currency and
1473 -- make rate, date and type as NULL
1474 -- 2. If transaction currency is NOT NULL and
1475 -- transaction currency <> functional currency and
1476 -- type <> 'User' then
1477 -- get conversion rate from GL and change rate column with new rate
1478 -- 3. If transaction currency is NOT NULL and
1479 -- transaction currency <> functional currency and
1480 -- type = 'User' then
1481 -- take all values as it is
1482 -- 4. If transaction currency = functional currency
1483 -- make rate, date and type as NULL
1484 -- 5. If Contract currency <> Functional currency then ceate OKC
1485 -- currency conversion rule
1486 --
1487 ------------------------------------------------------------------------------
1488 PROCEDURE validate_currency(p_api_version IN NUMBER,
1489 p_init_msg_list IN VARCHAR2,
1490 x_msg_count OUT NOCOPY NUMBER,
1491 x_msg_data OUT NOCOPY VARCHAR2,
1492 x_return_status OUT NOCOPY VARCHAR2,
1493 p_chrv_rec IN okl_okc_migration_pvt.chrv_rec_type,
1494 p_khrv_rec IN khrv_rec_type,
1495 x_chrv_rec OUT NOCOPY okl_okc_migration_pvt.chrv_rec_type,
1496 x_khrv_rec OUT NOCOPY khrv_rec_type
1497 ) IS
1498
1499 l_chrv_rec okl_okc_migration_pvt.chrv_rec_type;
1500 l_khrv_rec khrv_rec_type;
1501 l_func_currency GL_CURRENCIES.CURRENCY_CODE%TYPE;
1502 currency_validation_failed EXCEPTION;
1503
1504 --Bug# : 11.5.9 Rebooks - currency can not be modified
1505 -- cursor to get currency of the original contract
1506 Cursor ger_orig_curr_csr(p_rbk_chr_id IN NUMBER) is
1507 Select khr.currency_code,
1508 khr.currency_conversion_type,
1509 khr.currency_conversion_date,
1510 khr.currency_conversion_rate
1511 from okl_k_headers_full_v khr,
1512 okc_k_headers_b rbk_chr
1513 where khr.id = rbk_chr.orig_system_id1
1514 and rbk_chr.id = p_rbk_chr_id;
1515
1516 l_orig_curr_code okl_k_headers_full_v.currency_code%TYPE;
1517 l_orig_curr_conv_type okl_k_headers_full_v.currency_conversion_type%TYPE;
1518 l_orig_curr_conv_date okl_k_headers_full_v.currency_conversion_date%TYPE;
1519 l_orig_curr_conv_rate okl_k_headers_full_v.currency_conversion_rate%TYPE;
1520 --Bug# : 11.5.9 Rebooks - currency can not be modified
1521
1522
1523 l_rbk_cpy Varchar2(1) default 'N';
1524
1525 BEGIN
1526 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1527 l_chrv_rec := p_chrv_rec;
1528 l_khrv_rec := p_khrv_rec;
1529
1530 --Check if contract is rebook copy
1531 --if it is and currency code and conv type is being modified raise error
1532 l_rbk_cpy := Is_Rebook_Copy(p_chr_id => p_chrv_rec.id);
1533 If l_rbk_cpy = 'Y' Then
1534 Open ger_orig_curr_csr(p_rbk_chr_id => l_chrv_rec.id);
1535 Fetch ger_orig_curr_csr into l_orig_curr_code,
1536 l_orig_curr_conv_type,
1537 l_orig_curr_conv_date,
1538 l_orig_curr_conv_rate;
1539 If ger_orig_curr_csr%NOTFOUND then
1540 null;
1541 Else
1542 If l_chrv_rec.currency_code <> l_orig_curr_code OR
1543 l_khrv_rec.currency_conversion_type <> l_orig_curr_conv_type OR
1544 l_khrv_rec.currency_conversion_rate <> l_orig_curr_conv_rate Then
1545 OKL_API.Set_Message(p_app_name => G_APP_NAME,
1546 p_msg_name => G_REBOOK_CURRENCY_MODFN);
1547 x_return_status := OKL_API.G_RET_STS_ERROR;
1548 raise currency_validation_failed;
1549 Else
1550 --do not allow change in currency conversion date
1551 l_khrv_rec.currency_conversion_date := l_orig_curr_conv_date;
1552 End If;
1553 End If;
1554 End If;
1555
1556 l_func_currency := okl_accounting_util.get_func_curr_code();
1557
1558 --dbms_output.put_line('Func Curr: '||l_func_currency);
1559 --dbms_output.put_line('Trans Curr Code: '|| p_chrv_rec.currency_code);
1560 --dbms_output.put_line('Trans Curr Rate: '|| p_khrv_rec.currency_conversion_rate);
1561 --dbms_output.put_line('Trans Curr Date: '|| p_khrv_rec.currency_conversion_date);
1562 --dbms_output.put_line('Trans Curr Type: '|| p_khrv_rec.currency_conversion_type);
1563
1564 IF (l_chrv_rec.currency_code IS NULL
1565 OR
1566 l_chrv_rec.currency_code = OKL_API.G_MISS_CHAR) THEN -- take functional currency
1567 l_chrv_rec.currency_code := l_func_currency;
1568 l_khrv_rec.currency_conversion_type := NULL;
1569 l_khrv_rec.currency_conversion_rate := NULL;
1570 l_khrv_rec.currency_conversion_date := NULL;
1571 ELSE
1572 IF (l_chrv_rec.currency_code = l_func_currency) THEN -- both are same
1573 l_khrv_rec.currency_conversion_type := NULL;
1574 l_khrv_rec.currency_conversion_rate := NULL;
1575 l_khrv_rec.currency_conversion_date := NULL;
1576 ELSE -- transactional and functional currency are different
1577
1578 -- Conversion type, date and rate mandetory
1579 IF (l_khrv_rec.currency_conversion_type IS NULL
1580 OR
1581 l_khrv_rec.currency_conversion_type = OKC_API.G_MISS_CHAR) THEN
1582 OKC_API.set_message(
1583 p_app_name => G_APP_NAME,
1584 p_msg_name => G_REQUIRED_VALUE,
1585 p_token1 => G_COL_NAME_TOKEN,
1586 p_token1_value => 'Currency Conversion Type');
1587 x_return_status := OKC_API.G_RET_STS_ERROR;
1588 RAISE currency_validation_failed;
1589 END IF;
1590
1591
1592 IF (l_khrv_rec.currency_conversion_date IS NULL
1593 OR
1594 l_khrv_rec.currency_conversion_date = OKC_API.G_MISS_DATE) THEN
1595 If nvl(l_rbk_cpy,'N') <> 'Y' Then
1596 l_khrv_rec.currency_conversion_date := p_chrv_rec.start_date;
1597 End if;
1598 End IF;
1599
1600 --For Lease contract entry currency conversion date is always equal to
1601 --contract start date - PMs So
1602
1603 If l_chrv_rec.scs_code = 'LEASE' and nvl(l_rbk_cpy,'N') <> 'Y' then
1604 l_khrv_rec.currency_conversion_date := p_chrv_rec.start_date;
1605 End If;
1606
1607
1608 IF (l_khrv_rec.currency_conversion_date IS NULL
1609 OR
1610 l_khrv_rec.currency_conversion_date = OKC_API.G_MISS_DATE) THEN
1611 OKC_API.set_message(
1612 p_app_name => G_APP_NAME,
1613 p_msg_name => G_REQUIRED_VALUE,
1614 p_token1 => G_COL_NAME_TOKEN,
1615 p_token1_value => 'Currency Conversion Date');
1616 x_return_status := OKC_API.G_RET_STS_ERROR;
1617 RAISE currency_validation_failed;
1618 END IF;
1619
1620 IF (upper(l_khrv_rec.currency_conversion_type) = 'USER') THEN
1621
1622 IF (l_khrv_rec.currency_conversion_rate IS NULL
1623 OR
1624 l_khrv_rec.currency_conversion_rate = OKC_API.G_MISS_NUM) THEN
1625 OKC_API.set_message(
1626 p_app_name => G_APP_NAME,
1627 p_msg_name => G_REQUIRED_VALUE,
1628 p_token1 => G_COL_NAME_TOKEN,
1629 p_token1_value => 'Currency Conversion Rate');
1630 x_return_status := OKC_API.G_RET_STS_ERROR;
1631 RAISE currency_validation_failed;
1632 END IF;
1633
1634
1635 ELSE -- conversion_type <> 'User'
1636
1637 l_khrv_rec.currency_conversion_rate := okl_accounting_util.get_curr_con_rate(
1638 p_from_curr_code => l_chrv_rec.currency_code,
1639 p_to_curr_code => l_func_currency,
1640 p_con_date => l_khrv_rec.currency_conversion_date,
1641 p_con_type => l_khrv_rec.currency_conversion_type
1642 );
1643 --since accounting util is returning -1 for all the rates not found
1644 --Bug# 2763523 : if rate not found api returnes -1 or -2 or any other negative value
1645 --If (l_khrv_rec.currency_conversion_rate = 0 ) OR (l_khrv_rec.currency_conversion_rate = -1)Then
1646 If (l_khrv_rec.currency_conversion_rate <= 0 ) Then
1647 OKC_API.set_message(
1648 p_app_name => G_APP_NAME,
1649 p_msg_name => G_CONV_RATE_NOT_FOUND,
1650 p_token1 => G_FROM_CURRENCY_TOKEN,
1651 p_token1_value => l_chrv_rec.currency_code,
1652 p_token2 => G_TO_CURRENCY_TOKEN,
1653 p_token2_value => l_func_currency,
1654 p_token3 => G_CONV_TYPE_TOKEN,
1655 p_token3_value => l_khrv_rec.currency_conversion_type,
1656 p_token4 => G_CONV_DATE_TOKEN,
1657 p_token4_value => to_char(l_khrv_rec.currency_conversion_date,'DD-MON-YYYY'));
1658 x_return_status := OKC_API.G_RET_STS_ERROR;
1659 RAISE currency_validation_failed;
1660 End If;
1661
1662
1663 END IF; -- conversion_type
1664
1665 /*---Bug# 3124577 : 11.5.10 Rule Migration
1666 ----OKC currency rule will no longer be created.Removed call to create OKC Currency CVN rule---*/
1667
1668 END IF; -- currency_code check
1669 END IF; -- currency_code NULL
1670
1671 --Bug# 3124577 :11.5.10 Rule migration : OKC rule will not have to be created
1672 l_chrv_rec.conversion_type := l_khrv_rec.currency_conversion_type;
1673 l_chrv_rec.conversion_rate := l_khrv_rec.currency_conversion_rate;
1674 l_chrv_rec.conversion_rate_date := l_khrv_rec.currency_conversion_date;
1675 --Bug# 3124577 :11.5.10 Rule Migration : OKC rule will not have to be created
1676
1677 x_chrv_rec := l_chrv_rec;
1678 x_khrv_rec := l_khrv_rec;
1679
1680 EXCEPTION
1681 WHEN currency_validation_failed THEN
1682 RETURN;
1683 WHEN others THEN
1684 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1685 END validate_currency;
1686 --Bug# : 11.5.9 Enhancement Multi-Currency Changes
1687 ---------------------------------------------------------------------------------
1688 -- Start of comments
1689 -- Bug # : 11.5.9 Enhancement Validate product and default Tax Owner
1690 -- and Book Classification from product
1691 -- Procedure Name : Validate_Product(Local)
1692 -- Description : 1. Will validate whether selected product belongs to the
1693 -- correct subclass
1694 -- 2. Will default tax owner and book class from product
1695 -- Business Rules :
1696 -- Parameters :
1697 -- Version : 1.0
1698 -- End of comments
1699 ---------------------------------------------------------------------------------
1700 Procedure Validate_Product(p_api_version IN NUMBER,
1701 p_init_msg_list IN VARCHAR2,
1702 x_return_status OUT NOCOPY VARCHAR2,
1703 x_msg_count OUT NOCOPY NUMBER,
1704 x_msg_data OUT NOCOPY VARCHAR2,
1705 p_chrv_rec IN okl_okc_migration_pvt.chrv_rec_type,
1706 p_pdt_id IN NUMBER,
1707 x_deal_type OUT NOCOPY VARCHAR2,
1708 x_tax_owner OUT NOCOPY VARCHAR2,
1709 --bug# 3180583
1710 x_multigaap_yn OUT NOCOPY VARCHAR2) is
1711
1712 l_pdt_id Number;
1713 l_pdt_date date;
1714 l_scs_code okc_k_headers_b.scs_code%TYPE;
1715 l_pdtv_rec okl_setupproducts_pub.pdtv_rec_type;
1716 l_pdt_parameter_rec okl_setupproducts_pub.pdt_parameters_rec_type;
1717 l_no_data_found Boolean;
1718 l_error_condition exception;
1719
1720 --cursor to get tax owner rule group
1721 Cursor town_rgp_exists_csr (pchrid Number) is
1722 select id
1723 From okc_rule_groups_b rgp
1724 Where rgp.chr_id = pchrid
1725 and rgp.dnz_chr_id = pchrid
1726 and rgp.rgd_code = 'LATOWN';
1727
1728 l_town_rgp_id Number default Null;
1729
1730 --cursor to get tax owner rule
1731 Cursor town_rul_csr (pchrid number, prgpid number) is
1732 Select rule_information1 tax_owner,
1733 id
1734 From okc_rules_b rul
1735 where rul.rgp_id = prgpid
1736 and rul.dnz_chr_id = pchrid
1737 and rul.rule_information_category = 'LATOWN'
1738 and nvl(rul.STD_TEMPLATE_YN,'N') = 'N';
1739
1740 l_town_rul okc_rules_b.rule_information1%TYPE;
1741 l_town_rul_id okc_rules_b.id%TYPE;
1742
1743 l_latown_rgpv_rec OKL_RULE_PUB.rgpv_rec_type;
1744 lx_latown_rgpv_rec OKL_RULE_PUB.rgpv_rec_type;
1745
1746 l_latown_rulv_rec OKL_RULE_PUB.rulv_rec_type;
1747 lx_latown_rulv_rec OKL_RULE_PUB.rulv_rec_type;
1748
1749 --cursor to get product name for exception conditions
1750 Cursor get_pdtname_csr (pdtid in Number) is
1751 Select name
1752 From OKL_PRODUCTS_V
1753 Where id = pdtid;
1754
1755 l_pdt_name OKL_PRODUCTS_V.NAME%TYPE default null;
1756
1757 --Bug#2727161 : 11.5.9 Rebooks - product can not be modified
1758 -- cursor to get product of the original contract
1759 Cursor ger_orig_pdt_csr(p_rbk_chr_id IN NUMBER) is
1760 Select khr.pdt_id
1761 from okl_k_headers khr,
1762 okc_k_headers_b rbk_chr
1763 where khr.id = rbk_chr.orig_system_id1
1764 and rbk_chr.id = p_rbk_chr_id;
1765
1766 l_orig_pdt_id okl_k_headers.pdt_id%TYPE;
1767 --Bug#2727161 : 11.5.9 product - currency can not be modified
1768
1769 l_rbk_cpy Varchar2(1) default 'N';
1770
1771
1772 --Bug# 3548044 : cursor to fetch the existing pdt_id for this contract
1773 --Bug# 3631094 :
1774 Cursor l_curr_pdt_csr (p_chr_id in number) is
1775 select khr.pdt_id,
1776 chrb.scs_code,
1777 chrb.orig_system_source_code
1778 from okl_k_headers khr,
1779 okc_k_headers_b chrb
1780 where khr.id = chrb.id
1781 and chrb.id = p_chr_id;
1782
1783 l_curr_pdt_rec l_curr_pdt_csr%ROWTYPE;
1784
1785 --Bug# 3631094
1786 Cursor l_release_asset_yn_csr (p_chr_id in number) is
1787 select nvl(rulb.rule_information1,'N') release_Asset_yn
1788 from okc_rules_b rulb,
1789 okc_rule_groups_b rgpb
1790 where rulb.rule_information_category = 'LARLES'
1791 and rulb.rgp_id = rgpb.id
1792 and rulb.dnz_chr_id = rgpb.dnz_chr_id
1793 and rgpb.rgd_code = 'LARLES'
1794 and rgpb.chr_id = p_chr_id
1795 and rgpb.dnz_chr_id = p_chr_id;
1796
1797 l_release_asset_yn okc_rules_b.rule_information1%TYPE;
1798 --Bug# 3631094
1799
1800 --cursor to get multi-gaap reporting book transaction
1801 cursor l_txd_csr (p_book_type_code in varchar2,
1802 p_chr_id in number) is
1803 select txdb.id
1804 from okl_txd_assets_b txdb,
1805 okl_txl_assets_b txlb,
1806 okc_k_lines_b cleb,
1807 okc_line_styles_b lseb
1808 where txdb.tax_book = p_book_type_code
1809 and txdb.tal_id = txlb.id
1810 and txlb.kle_id = cleb.id
1811 and cleb.lse_id = lseb.id
1812 and lseb.lty_code = 'FIXED_ASSET'
1813 and cleb.dnz_chr_id = p_chr_id;
1814
1815 l_txd_rec l_txd_csr%ROWTYPE;
1816
1817 l_adpv_tbl OKL_TXD_ASSETS_PUB.adpv_tbl_type;
1818
1819 i number;
1820 l_curr_pdtv_rec okl_setupproducts_pub.pdtv_rec_type;
1821 l_curr_pdt_parameter_rec okl_setupproducts_pub.pdt_parameters_rec_type;
1822 l_rep_book_type okl_txd_assets_b.tax_book%TYPE;
1823 --Bug# 3621663
1824 l_Multi_GAAP_YN varchar2(1);
1825 l_rep_pdtv_rec okl_setupproducts_pub.pdtv_rec_type;
1826 l_rep_pdt_parameter_rec okl_setupproducts_pub.pdt_parameters_rec_type;
1827 --Bug# 3548044
1828
1829 Begin
1830 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1831 l_pdt_id := p_pdt_id;
1832 l_pdt_date := p_chrv_rec.start_date;
1833 l_scs_code := p_chrv_rec.scs_code;
1834 l_pdtv_rec.id := l_pdt_id;
1835 l_no_data_found := TRUE;
1836
1837 --Check if contract is rebook copy
1838 --if it is and product is being modified raise error
1839 l_rbk_cpy := Is_Rebook_Copy(p_chr_id => p_chrv_rec.id);
1840 If l_rbk_cpy = 'Y' Then
1841 Open ger_orig_pdt_csr(p_rbk_chr_id => p_chrv_rec.id);
1842 Fetch ger_orig_pdt_csr into l_orig_pdt_id;
1843 If ger_orig_pdt_csr%NOTFOUND then
1844 null;
1845 Else
1846 If l_orig_pdt_id <> l_pdt_id Then
1847 OKL_API.Set_Message(p_app_name => G_APP_NAME,
1848 p_msg_name => G_REBOOK_PRODUCT_MODFN);
1849 x_return_status := OKL_API.G_RET_STS_ERROR;
1850 raise l_error_condition;
1851 End If;
1852 End If;
1853 End If;
1854
1855 Okl_SetupProducts_Pub.GetPdt_Parameters (p_api_version => p_api_version,
1856 p_init_msg_list => p_init_msg_list,
1857 x_return_status => x_return_status,
1858 x_msg_count => x_msg_count,
1859 x_msg_data => x_msg_data,
1860 x_no_data_found => l_no_data_found,
1861 p_pdtv_rec => l_pdtv_rec,
1862 p_product_date => l_pdt_date,
1863 p_pdt_parameter_rec => l_pdt_parameter_rec);
1864
1865 --product param fetch returns errors
1866 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
1867 Open get_pdtname_csr(p_pdt_id);
1868 Fetch get_pdtname_csr into l_pdt_name;
1869 If get_pdtname_csr%notfound then
1870 null;
1871 end if;
1872 close get_pdtname_csr;
1873
1874 OKC_API.set_message(
1875 p_app_name => G_APP_NAME,
1876 p_msg_name => G_PROD_PARAMS_NOT_FOUND,
1877 p_token1 => G_PROD_NAME_TOKEN ,
1878 p_token1_value => l_pdt_name);
1879 x_return_status := OKL_API.G_RET_STS_ERROR;
1880 raise l_error_condition;
1881 End If;
1882
1883 --product subcalss is null
1884 If l_pdt_parameter_rec.product_subclass is Null or
1885 l_pdt_parameter_rec.product_subclass = OKL_API.G_MISS_CHAR Then
1886 --message for missing product subclass
1887 Open get_pdtname_csr(p_pdt_id);
1888 Fetch get_pdtname_csr into l_pdt_name;
1889 If get_pdtname_csr%notfound then
1890 null;
1891 end if;
1892
1893 OKC_API.set_message(
1894 p_app_name => G_APP_NAME,
1895 p_msg_name => G_PROD_MISSING_PARAM,
1896 p_token1 => G_PROD_PARAM_TOKEN,
1897 p_token1_value => 'Product Subclass',
1898 p_token2 => G_PROD_NAME_TOKEN,
1899 p_token2_value => l_pdt_name);
1900 x_return_status := OKL_API.G_RET_STS_ERROR;
1901 RAISE l_error_condition;
1902 End If;
1903
1904 --product tax owner is null
1905 If l_pdt_parameter_rec.tax_owner is Null or
1906 l_pdt_parameter_rec.tax_owner = OKL_API.G_MISS_CHAR Then
1907 If l_scs_code in ('LEASE','QUOTE') then
1908 --message for missing product tax owner
1909 Open get_pdtname_csr(p_pdt_id);
1910 Fetch get_pdtname_csr into l_pdt_name;
1911 If get_pdtname_csr%notfound then
1912 null;
1913 end if;
1914 OKC_API.set_message(
1915 p_app_name => G_APP_NAME,
1916 p_msg_name => G_PROD_MISSING_PARAM,
1917 p_token1 => G_PROD_PARAM_TOKEN,
1918 p_token1_value => 'Tax Owner',
1919 p_token2 => G_PROD_NAME_TOKEN,
1920 p_token2_value => l_pdt_name);
1921 x_return_status := OKL_API.G_RET_STS_ERROR;
1922 RAISE l_error_condition;
1923 -- tax owner may not be a mandatory quality
1924 End If;
1925 End If;
1926
1927 --product deal type is null
1928 If l_pdt_parameter_rec.deal_type is Null or
1929 l_pdt_parameter_rec.deal_type = OKL_API.G_MISS_CHAR Then
1930 If l_scs_code in ('LEASE','QUOTE') then
1931 --message for missing product tax owner
1932 Open get_pdtname_csr(p_pdt_id);
1933 Fetch get_pdtname_csr into l_pdt_name;
1934 If get_pdtname_csr%notfound then
1935 null;
1936 end if;
1937 OKC_API.set_message(
1938 p_app_name => G_APP_NAME,
1939 p_msg_name => G_PROD_MISSING_PARAM,
1940 p_token1 => G_PROD_PARAM_TOKEN,
1941 p_token1_value => 'Book Classification',
1942 p_token2 => G_PROD_NAME_TOKEN,
1943 p_token2_value => l_pdt_name);
1944 x_return_status := OKL_API.G_RET_STS_ERROR;
1945 RAISE l_error_condition;
1946 -- tax owner may not be a mandatory quality
1947 End If;
1948 null; -- deal type may not be a mandatory pdt quality
1949 End If;
1950
1951 --check if product subclass matches contract subclass
1952 If l_scs_code in ('LEASE', 'PROGRAM', 'MASTER_LEASE','QUOTE','LOAN') and
1953 l_pdt_parameter_rec.product_subclass <> 'LEASE' then
1954 --Product and contract subclassess do not match
1955 Open get_pdtname_csr(p_pdt_id);
1956 Fetch get_pdtname_csr into l_pdt_name;
1957 If get_pdtname_csr%notfound then
1958 null;
1959 end if;
1960 OKC_API.set_message(p_app_name => G_APP_NAME,
1961 p_msg_name => G_PROD_SUBCALSS_MISMATCH,
1962 p_token1 => G_CONTRACT_SUBCLASS_TOKEN,
1963 p_token1_value => l_scs_code,
1964 p_token2 => G_PROD_SUBCALSS_TOKEN,
1965 p_token2_value => l_pdt_parameter_rec.product_subclass);
1966 x_return_status := OKL_API.G_RET_STS_ERROR;
1967 RAISE l_error_condition;
1968 ElsIf l_scs_code in ('INVESTOR') and
1969 l_pdt_parameter_rec.product_subclass <> 'INVESTOR' then
1970 --Product and contract subclassess do not match
1971 Open get_pdtname_csr(p_pdt_id);
1972 Fetch get_pdtname_csr into l_pdt_name;
1973 If get_pdtname_csr%notfound then
1974 null;
1975 end if;
1976 OKC_API.set_message(p_app_name => G_APP_NAME,
1977 p_msg_name => G_PROD_SUBCALSS_MISMATCH,
1978 p_token1 => G_CONTRACT_SUBCLASS_TOKEN,
1979 p_token1_value => l_scs_code,
1980 p_token2 => G_PROD_SUBCALSS_TOKEN,
1981 p_token2_value => l_pdt_parameter_rec.product_subclass);
1982 x_return_status := OKL_API.G_RET_STS_ERROR;
1983 RAISE l_error_condition;
1984 End If;
1985
1986 If l_scs_code in ('LEASE','QUOTE') Then
1987
1988 l_town_rgp_id := Null;
1989
1990 Open town_rgp_exists_csr(pchrid => p_chrv_rec.id);
1991 Fetch town_rgp_exists_csr into l_town_rgp_id;
1992 If town_rgp_exists_csr%NOTFOUND Then
1993 null;
1994 end if;
1995 Close town_rgp_exists_csr;
1996
1997 If l_town_rgp_id is null Then
1998 --tax owner record does not exist
1999 --create tax owner
2000 l_latown_rgpv_rec.rgd_code := 'LATOWN';
2001 l_latown_rgpv_rec.dnz_chr_id := p_chrv_rec.id;
2002 l_latown_rgpv_rec.chr_id := p_chrv_rec.id;
2003 l_latown_rgpv_rec.rgp_type := 'KRG';
2004
2005 OKL_RULE_PUB.create_rule_group(
2006 p_api_version => p_api_version,
2007 p_init_msg_list => p_init_msg_list,
2008 x_return_status => x_return_status,
2009 x_msg_count => x_msg_count,
2010 x_msg_data => x_msg_data,
2011 p_rgpv_rec => l_latown_rgpv_rec,
2012 x_rgpv_rec => lx_latown_rgpv_rec);
2013
2014 If (x_return_status <> OKL_API.G_RET_STS_SUCCESS) Then
2015 raise l_error_condition;
2016 End If;
2017
2018 l_town_rgp_id := lx_latown_rgpv_rec.id;
2019 End if;
2020
2021 l_town_rul := null;
2022 l_town_rul_id := null;
2023 Open town_rul_csr (pchrid => p_chrv_rec.id, prgpid => l_town_rgp_id );
2024 Fetch town_rul_csr into l_town_rul,l_town_rul_id;
2025 If town_rul_csr%NOTFOUND Then
2026 Null;
2027 End If;
2028 Close town_rul_csr;
2029
2030 If l_town_rul_id is null then
2031 -- create rule
2032 l_latown_rulv_rec.rgp_id := l_town_rgp_id;
2033 l_latown_rulv_rec.rule_information_category := 'LATOWN';
2034 l_latown_rulv_rec.dnz_chr_id := p_chrv_rec.id;
2035 l_latown_rulv_rec.rule_information1 := l_pdt_parameter_rec.tax_owner;
2036 l_latown_rulv_rec.WARN_YN := 'N';
2037 l_latown_rulv_rec.STD_TEMPLATE_YN := 'N';
2038
2039 OKL_RULE_PUB.create_rule(
2040 p_api_version => p_api_version,
2041 p_init_msg_list => p_init_msg_list,
2042 x_return_status => x_return_status,
2043 x_msg_count => x_msg_count,
2044 x_msg_data => x_msg_data,
2045 p_rulv_rec => l_latown_rulv_rec,
2046 x_rulv_rec => lx_latown_rulv_rec);
2047
2048 If (x_return_status <> OKL_API.G_RET_STS_SUCCESS) Then
2049 raise l_error_condition;
2050 End If;
2051
2052
2053 Elsif l_town_rul_id is not null then
2054
2055 --update existing rule if values are different
2056 If l_town_rul <> l_pdt_parameter_rec.tax_owner Then
2057 l_latown_rulv_rec.id := l_town_rul_id;
2058 l_latown_rulv_rec.rule_information1 := l_pdt_parameter_rec.tax_owner;
2059
2060 OKL_RULE_PUB.update_rule(
2061 p_api_version => p_api_version,
2062 p_init_msg_list => p_init_msg_list,
2063 x_return_status => x_return_status,
2064 x_msg_count => x_msg_count,
2065 x_msg_data => x_msg_data,
2066 p_rulv_rec => l_latown_rulv_rec,
2067 x_rulv_rec => lx_latown_rulv_rec);
2068
2069 If (x_return_status <> OKL_API.G_RET_STS_SUCCESS) Then
2070 raise l_error_condition;
2071 End If;
2072 End If;
2073
2074 End If;
2075
2076 End If;
2077
2078 ---------------------------------------------------------------------
2079 --Bug# 3631094 : Do not prompt for deletion of rporting asset books
2080 -- if rebook, release contract or release asset
2081 ---------------------------------------------------------------------
2082 --fetch currenct pdt_id
2083 open l_curr_pdt_csr (p_chr_id => p_chrv_rec.id);
2084 fetch l_curr_pdt_csr into l_curr_pdt_rec;
2085 If l_curr_pdt_csr%NOTFOUND then
2086 null;
2087 End If;
2088 close l_curr_pdt_csr;
2089
2090 If nvl(l_curr_pdt_rec.pdt_id, okl_api.g_miss_num) <> okl_api.g_miss_num AND
2091 l_curr_pdt_rec.pdt_id <> l_pdt_id AND
2092 l_curr_pdt_rec.scs_code = 'LEASE' AND
2093 nvl(l_curr_pdt_rec.orig_system_source_code,okl_api.g_miss_char) not in ('OKL_REBOOK','OKL_RELEASE') then
2094 l_release_asset_yn := 'N';
2095 Open l_release_asset_yn_csr(p_chr_id => p_chrv_rec.id);
2096 Fetch l_release_asset_yn_csr into l_release_Asset_yn;
2097 If l_release_asset_yn_csr%NOTFOUND then
2098 null;
2099 End If;
2100 Close l_release_asset_yn_csr;
2101 If l_release_asset_yn = 'N' then
2102 -----------------
2103 --Bug# 3548044 : If multi-gaap prod changed to no multi-gaap
2104 --multi gaap reporting book trx needs to be deleted
2105 ----------------
2106 --Bug# 3621663 :
2107 l_Multi_GAAP_YN := 'N';
2108 If l_rbk_cpy = 'N' then
2109 --decide whether the reporting product needs multigaap asset book
2110 If nvl(l_pdt_parameter_rec.reporting_pdt_id,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
2111 l_rep_pdtv_rec.id := l_pdt_parameter_rec.reporting_pdt_id;
2112 --okl_debug_pub.logmessage('AKP:0.l_rep_pdtv_rec.id = ' || l_rep_pdtv_rec.id);
2113 l_pdt_date := p_chrv_rec.start_date;
2114 --okl_debug_pub.logmessage('AKP:0.l_pdt_date = ' || l_pdt_date);
2115
2116 Okl_SetupProducts_Pub.GetPdt_Parameters (p_api_version => p_api_version,
2117 p_init_msg_list => p_init_msg_list,
2118 x_return_status => x_return_status,
2119 x_msg_count => x_msg_count,
2120 x_msg_data => x_msg_data,
2121 x_no_data_found => l_no_data_found,
2122 p_pdtv_rec => l_rep_pdtv_rec,
2123 p_product_date => l_pdt_date,
2124 p_pdt_parameter_rec => l_rep_pdt_parameter_rec);
2125
2126 If x_return_status = OKL_API.G_RET_STS_SUCCESS then
2127
2128 -- 7610725
2129 /*If nvl(l_pdt_parameter_rec.deal_type,OKL_API.G_MISS_CHAR) = 'LEASEOP' and
2130 nvl(l_rep_pdt_parameter_rec.deal_type,OKL_API.G_MISS_CHAR) = 'LEASEOP' and
2131 nvl(l_pdt_parameter_rec.tax_owner,OKL_API.G_MISS_CHAR) = 'LESSOR' Then
2132 l_Multi_GAAP_YN := 'Y';
2133 End If;
2134
2135 If nvl(l_pdt_parameter_rec.deal_type,OKL_API.G_MISS_CHAR) in ('LEASEDF','LEASEST') and
2136 nvl(l_rep_pdt_parameter_rec.deal_type,OKL_API.G_MISS_CHAR) = 'LEASEOP' and
2137 nvl(l_pdt_parameter_rec.tax_owner,OKL_API.G_MISS_CHAR) = 'LESSOR' Then
2138 l_Multi_GAAP_YN := 'Y';
2139 End If;
2140
2141 If nvl(l_pdt_parameter_rec.deal_type,OKL_API.G_MISS_CHAR) in ('LEASEDF','LEASEST') and
2142 nvl(l_rep_pdt_parameter_rec.deal_type,OKL_API.G_MISS_CHAR) = 'LEASEOP' and
2143 nvl(l_pdt_parameter_rec.tax_owner,OKL_API.G_MISS_CHAR) = 'LESSEE' Then
2144 l_Multi_GAAP_YN := 'Y';
2145 End If;
2146
2147 If nvl(l_pdt_parameter_rec.deal_type,OKL_API.G_MISS_CHAR) = 'LOAN' and
2148 nvl(l_rep_pdt_parameter_rec.deal_type,OKL_API.G_MISS_CHAR) = 'LEASEOP' and
2149 nvl(l_pdt_parameter_rec.tax_owner,OKL_API.G_MISS_CHAR) = 'LESSEE' Then
2150 l_Multi_GAAP_YN := 'Y';
2151 End If; */
2152
2153 -- 7610725
2154 --okl_debug_pub.logmessage('AKP:1.l_rep_pdt_parameter_rec.id = ' || l_rep_pdt_parameter_rec.id);
2155 --okl_debug_pub.logmessage('AKP:2.l_rep_pdt_parameter_rec.deal_type = ' || l_rep_pdt_parameter_rec.deal_type);
2156 If (nvl(l_rep_pdt_parameter_rec.deal_type,OKL_API.G_MISS_CHAR)
2157 <> OKL_API.G_MISS_CHAR )
2158 Then
2159 l_Multi_GAAP_YN := 'Y';
2160 End If;
2161
2162
2163 End If;
2164 End If;
2165 End If;
2166 --Bug# 3621663
2167
2168 --okl_debug_pub.logmessage('AKP:3.l_pdt_parameter_rec.reporting_pdt_id =' || l_pdt_parameter_rec.reporting_pdt_id);
2169 --okl_debug_pub.logmessage('AKP:4.l_Multi_GAAP_YN= ' || l_Multi_GAAP_YN);
2170 If (nvl(l_pdt_parameter_rec.reporting_pdt_id,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM)
2171 OR
2172 (nvl(l_pdt_parameter_rec.reporting_pdt_id,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM
2173 and l_Multi_GAAP_YN = 'N') Then
2174 If l_rbk_cpy = 'N' then
2175 l_curr_pdtv_rec.id := l_curr_pdt_rec.pdt_id;
2176 l_pdt_date := p_chrv_rec.start_date;
2177 Okl_SetupProducts_Pub.GetPdt_Parameters (p_api_version => p_api_version,
2178 p_init_msg_list => p_init_msg_list,
2179 x_return_status => x_return_status,
2180 x_msg_count => x_msg_count,
2181 x_msg_data => x_msg_data,
2182 x_no_data_found => l_no_data_found,
2183 p_pdtv_rec => l_curr_pdtv_rec,
2184 p_product_date => l_pdt_date,
2185 p_pdt_parameter_rec => l_curr_pdt_parameter_rec);
2186
2187 If x_return_status = OKL_API.G_RET_STS_SUCCESS then
2188 --okl_debug_pub.logmessage('AKP:5.l_curr_pdt_parameter_rec.id = ' || l_curr_pdt_parameter_rec.id);
2189 If nvl(l_curr_pdt_parameter_rec.reporting_pdt_id,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
2190 l_rep_book_type := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
2191 i := 0;
2192 open l_txd_csr (p_book_type_code => l_rep_book_type,
2193 p_chr_id => p_chrv_rec.id);
2194 Loop
2195 fetch l_txd_csr into l_txd_rec;
2196 exit when l_txd_csr%NOTFOUND;
2197 i := i+1;
2198 l_adpv_tbl(i).id := l_txd_rec.id;
2199 end Loop;
2200 close l_txd_csr;
2201
2202 If l_adpv_tbl.COUNT <> 0 then
2203 --Bug# 3631094
2204 OKL_API.set_message(p_app_name => G_APP_NAME,
2205 p_msg_name => 'OKL_LA_MULTIGAAP_ASSET_BOOK');
2206 x_return_status := OKL_API.G_RET_STS_ERROR;
2207 raise l_error_condition;
2208 End If;
2209
2210 End If; -- current reporting product is not null
2211 End If; --product parameters fetch api returns success
2212 End If; -- is not a rebook copy
2213 End If; -- new multi gaap product is null
2214 End If; -- not a contract with release assets
2215 End If; -- is 'LEASE', change in product is there, not rbook or contract release copy, current pdt not null
2216 ------------------
2217 --Bug# 3548044 : End
2218 ------------------
2219
2220
2221 x_deal_type := l_pdt_parameter_rec.deal_type;
2222 x_tax_owner := l_pdt_parameter_rec.tax_owner;
2223
2224 -----------------
2225 --Bug# 3180583
2226 -----------------
2227 If nvl(l_pdt_parameter_rec.reporting_pdt_id,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM then
2228 x_multigaap_yn := 'N';
2229 Elsif nvl(l_pdt_parameter_rec.reporting_pdt_id,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
2230 x_multigaap_yn := 'Y';
2231 End If;
2232 -----------------
2233 --Bug# 3180583
2234 -----------------
2235
2236
2237 EXCEPTION
2238 When l_error_condition Then
2239 Return;
2240
2241 When Others Then
2242 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2243 End validate_product;
2244 --------------------------------------------------------------------------------
2245 -- Start of comments
2246 --
2247 -- Bug# : 11.5.9 Enhancement Product change (Bug# 2730633)
2248 -- Function Name : Is_Orig_Pdt_Old
2249 -- Scope : Local
2250 -- Description : For Copied contracts if the original contract has old (11.5.8)
2251 -- product, product validations should not be done. If they are
2252 -- done copy from old contracts will not be possible.
2253 -- This function verifies if product against original contract
2254 -- is old(11.5.8) or not.
2255 -- This will be called at the time of insert(create_contract_header)
2256 -- If original/old contract product is old then 11.5.9 product validations
2257 -- will not be done.
2258 -- Business Rules :
2259 -- Parameters : IN - p_orig_chr_id - original contract id
2260 -- - p_pdt_id - pdt_id on new contract being created
2261 -- Returns Varchar2 = 'Y' or 'N'
2262 -- Version : 1.0
2263 -- End of comments
2264 --------------------------------------------------------------------------------
2265 Function Is_Orig_Pdt_Old(p_orig_chr_id IN NUMBER,
2266 p_pdt_id IN NUMBER
2267 ) return Varchar2 is
2268 --cursor to get pdt of original contract
2269 Cursor get_pdt_csr(orig_chr_id in number) is
2270 Select khr.pdt_id,
2271 khr.start_date
2272 from okl_k_headers_full_v khr
2273 where id = orig_chr_id;
2274
2275 l_pdt_id okl_k_headers_full_v.pdt_id%TYPE;
2276 l_Start_date date;
2277 l_is_orig_pdt_old Varchar2(1) default 'N';
2278 l_no_data_found Boolean;
2279 l_pdtv_rec Okl_SetupProducts_Pub.pdtv_rec_type;
2280 l_pdt_parameter_rec Okl_setupproducts_pub.pdt_parameters_rec_type;
2281 l_exception_halt_process Exception;
2282
2283 l_return_status Varchar2(1) default OKL_API.G_RET_STS_SUCCESS;
2284 l_msg_count Number;
2285 l_msg_data Varchar2(3000);
2286
2287 begin
2288 l_return_status := OKL_API.G_RET_STS_SUCCESS;
2289 l_is_orig_pdt_old := 'N';
2290
2291 Open get_pdt_csr (orig_chr_id => p_orig_chr_id);
2292 Fetch get_pdt_csr into l_pdt_id, l_start_date;
2293 If get_pdt_csr%NOTFOUND Then
2294 Null;
2295 End If;
2296 Close get_pdt_csr;
2297
2298 If (l_pdt_id = p_pdt_id) Then
2299 l_pdtv_rec.id := l_pdt_id;
2300 l_no_data_found := TRUE;
2301 Okl_SetupProducts_Pub.GetPdt_Parameters (p_api_version => 1.0,
2302 p_init_msg_list => OKL_API.G_FALSE,
2303 x_return_status => l_return_status,
2304 x_msg_count => l_msg_count,
2305 x_msg_data => l_msg_data,
2306 x_no_data_found => l_no_data_found,
2307 p_pdtv_rec => l_pdtv_rec,
2308 p_product_date => l_start_date,
2309 p_pdt_parameter_rec => l_pdt_parameter_rec);
2310
2311 --product param do not exist
2312 If l_return_status <> OKL_API.G_RET_STS_SUCCESS Then
2313 l_is_orig_pdt_old := 'Y';
2314 Raise l_exception_halt_process;
2315 End If;
2316
2317 --product subcalss is null
2318 If l_pdt_parameter_rec.product_subclass is Null or
2319 l_pdt_parameter_rec.product_subclass = OKL_API.G_MISS_CHAR Then
2320 l_is_orig_pdt_old := 'Y';
2321 Raise l_exception_halt_process;
2322 End If;
2323
2324 --product tax owner is null
2325 If l_pdt_parameter_rec.tax_owner is Null or
2326 l_pdt_parameter_rec.tax_owner = OKL_API.G_MISS_CHAR Then
2327 l_is_orig_pdt_old := 'Y';
2328 Raise l_exception_halt_process;
2329 End If;
2330
2331 --product deal type is null
2332 If l_pdt_parameter_rec.deal_type is Null or
2333 l_pdt_parameter_rec.deal_type = OKL_API.G_MISS_CHAR Then
2334 l_is_orig_pdt_old := 'Y';
2335 Raise l_exception_halt_process;
2336 End If;
2337 End If;
2338 Return(l_is_orig_pdt_old);
2339 Exception
2340 When l_exception_halt_process Then
2341 return (l_is_orig_pdt_old);
2342 When others then
2343 return (l_is_orig_pdt_old);
2344
2345 End Is_Orig_Pdt_Old;
2346 --------------------------------------------------------------------------------
2347 -- Start of comments
2348 --
2349 -- Procedure Name : create_contract_header
2350 -- Description : creates contract header for shadowed contract
2351 -- Bug# : 11.5.9 Enhancement Multi-Currency Changes
2352 -- Product Vaqlidations
2353 -- Rebook contract can not change currency code
2354 -- Business Rules :
2355 -- Parameters :
2356 -- Version : 1.0
2357 -- End of comments
2358 --------------------------------------------------------------------------------
2359 PROCEDURE create_contract_header(
2360 p_api_version IN NUMBER,
2361 p_init_msg_list IN VARCHAR2,
2362 x_return_status OUT NOCOPY VARCHAR2,
2363 x_msg_count OUT NOCOPY NUMBER,
2364 x_msg_data OUT NOCOPY VARCHAR2,
2365 p_chrv_rec IN okl_okc_migration_pvt.chrv_rec_type,
2366 p_khrv_rec IN khrv_rec_type,
2367 x_chrv_rec OUT NOCOPY okl_okc_migration_pvt.chrv_rec_type,
2368 x_khrv_rec OUT NOCOPY khrv_rec_type) IS
2369
2370 subtype rulv_tbl_type is OKL_RULE_PUB.rulv_tbl_type;
2371
2372 l_chrv_rec okl_okc_migration_pvt.chrv_rec_type;
2373 l_khrv_rec khrv_rec_type;
2374
2375 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_CONTRACT_HEADER';
2376 l_api_version CONSTANT NUMBER := 1.0;
2377 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2378 --Bug # : 11.5.9 Enhancement - Multi Currency changes
2379
2380 l_curr_chrv_rec okl_okc_migration_pvt.chrv_rec_type;
2381 l_curr_khrv_rec khrv_rec_type;
2382
2383 --Bug # : 11.5.9 Enhancement - Defaulting from product definition
2384 l_pdt_deal_type varchar2(150);
2385 l_pdt_tax_owner varchar2(150);
2386
2387 l_bypass_pdt_validation varchar2(1) default 'N';
2388 --Bug# 3180583
2389 l_multigaap_yn varchar2(1) default NULL;
2390
2391 --Bug# 3486065
2392 cursor profile_option_csr(p_profile_option_name in varchar2) is
2393 select user_profile_option_name
2394 from fnd_profile_options_vl
2395 where profile_option_name = p_profile_option_name;
2396
2397 l_authoring_org_profile_name fnd_profile_options_vl.user_profile_option_name%type;
2398 l_inventory_org_profile_name fnd_profile_options_vl.user_profile_option_name%type;
2399 l_authoring_org_profile_value fnd_profile_option_values.profile_option_value%type;
2400 l_inventory_org_profile_value fnd_profile_option_values.profile_option_value%type;
2401
2402 l_deal_type OKL_K_HEADERS.deal_type%TYPE;
2403 l_interest_calculation_basis VARCHAR2(30);
2404 l_revenue_recognition_method VARCHAR2(30);
2405 l_pdt_parameter_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
2406 x_rulv_tbl rulv_tbl_type;
2407
2408 BEGIN
2409
2410 -- call START_ACTIVITY to create savepoint, check compatibility
2411 -- and initialize message list
2412
2413
2414 l_return_status := OKL_API.START_ACTIVITY(
2415 p_api_name => l_api_name,
2416 p_pkg_name => g_pkg_name,
2417 p_init_msg_list => p_init_msg_list,
2418 l_api_version => l_api_version,
2419 p_api_version => p_api_version,
2420 p_api_type => g_api_type,
2421 x_return_status => x_return_status);
2422
2423 -- check if activity started successfully
2424 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
2425 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2426 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
2427 raise OKL_API.G_EXCEPTION_ERROR;
2428 End If;
2429
2430 l_khrv_rec := p_khrv_rec;
2431 l_chrv_rec := p_chrv_rec;
2432
2433 --Bug# 3783278
2434 --Remove leading and trailing spaces in contract number
2435 If l_chrv_rec.contract_number is not null Then
2436 l_chrv_rec.contract_number := LTRIM(RTRIM(l_chrv_rec.contract_number));
2437 End If;
2438
2439 --
2440 -- set okc context before API call
2441 -- msamoyle: check whether we need to call this method here or in PUB or in processing
2442 --dbms_output.put_line('Set org context');
2443
2444 --Bug# 3486065
2445 l_authoring_org_profile_value := mo_global.get_current_org_id();
2446 If NVL(l_authoring_org_profile_value,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR Then
2447 open profile_option_csr(p_profile_option_name => 'ORG_ID');
2448 fetch profile_option_csr into l_authoring_org_profile_name;
2449 close profile_option_csr;
2450
2451 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
2452 p_msg_name => 'OKL_NO_SYSTEM_PROFILE',
2453 p_token1 => 'OKL_SYS_PROFILE_NAME',
2454 p_token1_value => l_authoring_org_profile_name);
2455 raise OKL_API.G_EXCEPTION_ERROR;
2456 End If;
2457
2458 l_inventory_org_profile_value := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_ITEM_INV_ORG_ID);
2459
2460 -- removed by dcshanmu to fix bug 5378114
2461
2462 If NVL(l_inventory_org_profile_value,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR Then
2463 /*open profile_option_csr(p_profile_option_name => 'OKL_K_ITEMS_INVENTORY_ORG');
2464 fetch profile_option_csr into l_inventory_org_profile_name;
2465 close profile_option_csr;*/
2466
2467 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
2468 p_msg_name => 'OKL_NO_INVENTORY_ORG');
2469 raise OKL_API.G_EXCEPTION_ERROR;
2470 End If;
2471
2472 OKL_CONTEXT.SET_OKC_ORG_CONTEXT(l_chrv_rec.authoring_org_id,l_chrv_rec.inv_organization_id);
2473
2474 ----------------------------------------------------------------------------
2475 --call to check if template modification is allowed
2476 ----------------------------------------------------------------------------
2477 template_create_allowed(p_chr_id => null,
2478 p_template_yn => l_chrv_rec.template_yn,
2479 x_return_status => x_return_status);
2480
2481 If (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
2482 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2483 Elsif (x_return_status = OKL_API.G_RET_STS_ERROR) then
2484 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
2485 p_msg_name => G_TEMPLATE_CREATE_NOT_ALLOWED);
2486 raise OKL_API.G_EXCEPTION_ERROR;
2487 End If;
2488
2489 ----------------------------------------------------------------------------
2490 --Bug# : 11.5.9 Enhancement Multi Currency
2491 ----------------------------------------------------------------------------
2492 validate_currency(p_api_version => p_api_version,
2493 p_init_msg_list => p_init_msg_list,
2494 x_msg_count => x_msg_count,
2495 x_msg_data => x_msg_data,
2496 x_return_status => x_return_status,
2497 p_chrv_rec => l_chrv_rec,
2498 p_khrv_rec => l_khrv_rec,
2499 x_chrv_rec => l_curr_chrv_rec,
2500 x_khrv_rec => l_curr_khrv_rec);
2501
2502 If (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
2503 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2504 Elsif (x_return_status = OKL_API.G_RET_STS_ERROR) then
2505 raise OKL_API.G_EXCEPTION_ERROR;
2506 End If;
2507 l_chrv_rec := l_curr_chrv_rec;
2508 l_khrv_rec := l_curr_khrv_rec;
2509 ----------------------------------------------------------------------------
2510 --Bug# : 11.5.9 Enhancement Multi Currency
2511 ----------------------------------------------------------------------------
2512 --Added by dpsingh
2513 IF (l_khrv_rec.legal_entity_id IS NOT NULL AND l_khrv_rec.legal_entity_id <> Okl_Api.G_MISS_NUM) THEN
2514 OKL_LA_VALIDATION_UTIL_PVT.VALIDATE_LEGAL_ENTITY(x_return_status => x_return_status,
2515 p_chrv_rec => l_chrv_rec,
2516 p_mode => 'CR');
2517 ELSE
2518 IF l_chrv_rec.scs_code IN ('LEASE','LOAN','INVESTOR', 'MASTER_LEASE','PROGRAM') THEN
2519 OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'legal_entity_id');
2520 RAISE OKL_API.G_EXCEPTION_ERROR;
2521 END IF;
2522 END IF;
2523
2524 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2525 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2526 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2527 RAISE OKL_API.G_EXCEPTION_ERROR;
2528 END IF;
2529 --Added by dpsingh end
2530
2531 --dbms_output.put_line('Create contract header');
2532 --
2533 -- call procedure in complex API
2534 --
2535 --OKC_CONTRACT_PUB.create_contract_header(
2536
2537 okl_okc_migration_pvt.create_contract_header(
2538 p_api_version => p_api_version,
2539 p_init_msg_list => p_init_msg_list,
2540 x_return_status => x_return_status,
2541 x_msg_count => x_msg_count,
2542 x_msg_data => x_msg_data,
2543 p_chrv_rec => l_chrv_rec,
2544 x_chrv_rec => x_chrv_rec);
2545
2546
2547 -- check return status
2548 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
2549 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2550 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
2551 raise OKL_API.G_EXCEPTION_ERROR;
2552 End If;
2553
2554
2555 /*Bug# 3124577 : Commented for 11.5.10 Rule Migration-------------------------------------------
2556 --Removed call to creation of OKC CVN Rule
2557 ----------------------------------------------------------------------------
2558 --Bug# : 11.5.9 Enhancement Multi Currency, Create CURRENCY Rule
2559 ----------------------------------------------------------------------------
2560 -----------------------------------------------------------Bug# 3124577 11.5.10: Rule Migration*/
2561 ----------------------------------------------------------------------------
2562 --Bug# : 11.5.9 Product validations
2563 ----------------------------------------------------------------------------
2564 If p_khrv_rec.pdt_id is null OR p_khrv_rec.pdt_id = OKL_API.G_MISS_NUM Then
2565 Null;
2566 Else
2567
2568 --Begin (Bug# 2730633)
2569 --Fix for not to validate for copied contracts being copied from contracts
2570 --which have 11.5.8 products against them
2571 l_bypass_pdt_validation := 'N';
2572 If nvl(x_chrv_rec.orig_system_source_code,OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR AND
2573 nvl(x_chrv_rec.orig_system_id1,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM Then
2574 l_bypass_pdt_validation := Is_Orig_Pdt_old(p_orig_chr_id => x_chrv_rec.orig_system_id1,
2575 p_pdt_id => p_khrv_rec.pdt_id);
2576 End If;
2577 --Fix for not to validate for copied contracts being copied from contracts
2578 --which have 11.5.8 products against them
2579 --End (Bug# 2730633)
2580
2581 If l_bypass_pdt_validation = 'N' Then
2582 Validate_Product(p_api_version => p_api_version,
2583 p_init_msg_list => p_init_msg_list,
2584 x_return_status => x_return_status,
2585 x_msg_count => x_msg_count,
2586 x_msg_data => x_msg_data,
2587 p_chrv_rec => x_chrv_rec,
2588 p_pdt_id => p_khrv_rec.pdt_id,
2589 x_deal_type => l_pdt_deal_type,
2590 x_tax_owner => l_pdt_tax_owner,
2591 --Bug# 3180583
2592 x_multigaap_yn => l_multigaap_yn);
2593
2594 -- check return status
2595 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
2596 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2597 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
2598 raise OKL_API.G_EXCEPTION_ERROR;
2599 End If;
2600
2601 If l_chrv_rec.scs_code in ('LEASE','QUOTE') Then
2602 --Bug#2809358
2603 --If l_khrv_rec.deal_type <> l_pdt_deal_type Then
2604 If nvl(l_khrv_rec.deal_type,'DEALTYPE') <> l_pdt_deal_type Then
2605 --If l_pdt_deal_type is not null OR
2606 If l_pdt_deal_type is not null AND
2607 l_pdt_deal_type <> OKL_API.G_MISS_CHAR Then
2608 l_khrv_rec.deal_type := l_pdt_deal_type;
2609 End If;
2610 End If;
2611
2612 --Bug# 3379294 : check if deal type is still Null then raise error for lease and quote
2613 If nvl(l_khrv_rec.deal_type,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
2614 OKL_API.Set_Message(p_app_name => G_APP_NAME,
2615 p_msg_name => 'OKL_NULL_DEAL_TYPE');
2616 x_return_status := OKL_API.G_RET_STS_ERROR;
2617 raise OKL_API.G_EXCEPTION_ERROR;
2618 End If;
2619 --Bug# 3379294: End
2620
2621 End If;
2622 End If;
2623 End If;
2624 ----------------------------------------------------------------------------
2625 --Bug# : 11.5.9 Product validations
2626 ----------------------------------------------------------------------------
2627
2628 --Bug# 2819869: Generate accrual and assignable hould be 'Y' by default
2629 If x_chrv_rec.scs_code = 'LEASE' Then
2630 If l_khrv_rec.generate_accrual_yn is NULL OR
2631 l_khrv_rec.generate_accrual_yn = OKL_API.G_MISS_CHAR then
2632 l_khrv_rec.generate_accrual_yn := 'Y';
2633 End IF;
2634 If l_khrv_rec.GENERATE_ACCRUAL_OVERRIDE_YN is NULL OR
2635 l_khrv_rec.GENERATE_ACCRUAL_OVERRIDE_YN = OKL_API.G_MISS_CHAR then
2636 l_khrv_rec.GENERATE_ACCRUAL_OVERRIDE_YN := 'N';
2637 End IF;
2638 If l_khrv_rec.assignable_yn is NULL OR
2639 l_khrv_rec.assignable_yn = OKL_API.G_MISS_CHAR then
2640 l_khrv_rec.assignable_yn := 'Y';
2641 End IF;
2642 End If;
2643 --End Bug# 2819869 : Generate accrual and assignable should be 'Y' by default
2644
2645 -- get id from OKC record
2646 l_khrv_rec.ID := x_chrv_rec.ID;
2647
2648 --dbms_output.put_line('Create shadow');
2649
2650 -- call procedure in complex API
2651 OKL_KHR_PVT.Insert_Row(
2652 p_api_version => p_api_version,
2653 p_init_msg_list => p_init_msg_list,
2654 x_return_status => x_return_status,
2655 x_msg_count => x_msg_count,
2656 x_msg_data => x_msg_data,
2657 p_khrv_rec => l_khrv_rec,
2658 x_khrv_rec => x_khrv_rec);
2659
2660 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
2661 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2662 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
2663 raise OKL_API.G_EXCEPTION_ERROR;
2664 End If;
2665
2666 --dbms_output.put_line('I am through');
2667
2668 -- 4542290. Create zero interest schedules for LOAN (FLOAT, CATCHUP/CLEANUP)
2669 -- And LOAN-REVOLVING (FLOAT).
2670
2671 OKL_K_RATE_PARAMS_PVT.get_product(
2672 p_api_version => p_api_version,
2673 p_init_msg_list => p_init_msg_list,
2674 x_return_status => x_return_status,
2675 x_msg_count => x_msg_count,
2676 x_msg_data => x_msg_data,
2677 p_khr_id => l_khrv_rec.ID,
2678 x_pdt_parameter_rec => l_pdt_parameter_rec);
2679
2680 l_interest_calculation_basis :=l_pdt_parameter_rec.interest_calculation_basis;
2681 l_revenue_recognition_method :=l_pdt_parameter_rec.revenue_recognition_method;
2682 l_deal_type := l_pdt_parameter_rec.deal_type;
2683
2684 --Bug 4742650 (Not to be created for LOAN CATCHUP/CLEANUP)
2685 IF (l_deal_type = 'LOAN' AND
2686 --l_interest_calculation_basis IN ('FLOAT', 'CATCHUP/CLEANUP')) OR
2687 l_interest_calculation_basis = 'FLOAT') OR
2688 (l_deal_type = 'LOAN-REVOLVING' AND
2689 l_interest_calculation_basis = 'FLOAT') THEN
2690 OKL_LA_PAYMENTS_PVT.VARIABLE_INTEREST_SCHEDULE (
2691 p_api_version => p_api_version,
2692 p_init_msg_list => p_init_msg_list,
2693 x_return_status => x_return_status,
2694 x_msg_count => x_msg_count,
2695 x_msg_data => x_msg_data,
2696 p_chr_id => l_khrv_rec.ID,
2697 x_rulv_tbl => x_rulv_tbl
2698 );
2699
2700 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
2701 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2702 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
2703 raise OKL_API.G_EXCEPTION_ERROR;
2704 End If;
2705
2706 END IF;
2707
2708 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
2709 x_msg_data => x_msg_data);
2710 EXCEPTION
2711 when OKL_API.G_EXCEPTION_ERROR then
2712 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2713 p_api_name => l_api_name,
2714 p_pkg_name => g_pkg_name,
2715 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
2716 x_msg_count => x_msg_count,
2717 x_msg_data => x_msg_data,
2718 p_api_type => g_api_type);
2719
2720 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
2721 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2722 p_api_name => l_api_name,
2723 p_pkg_name => g_pkg_name,
2724 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2725 x_msg_count => x_msg_count,
2726 x_msg_data => x_msg_data,
2727 p_api_type => g_api_type);
2728
2729 when OTHERS then
2730 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2731 p_api_name => l_api_name,
2732 p_pkg_name => g_pkg_name,
2733 p_exc_name => 'OTHERS',
2734 x_msg_count => x_msg_count,
2735 x_msg_data => x_msg_data,
2736 p_api_type => g_api_type);
2737 END create_contract_header;
2738
2739
2740 -- Start of comments
2741 --
2742 -- Procedure Name : create_contract_header
2743 -- Description : creates contract header for shadowed contract
2744 -- Business Rules :
2745 -- Parameters :
2746 -- Version : 1.0
2747 -- End of comments
2748 PROCEDURE create_contract_header(
2749 p_api_version IN NUMBER,
2750 p_init_msg_list IN VARCHAR2,
2751 x_return_status OUT NOCOPY VARCHAR2,
2752 x_msg_count OUT NOCOPY NUMBER,
2753 x_msg_data OUT NOCOPY VARCHAR2,
2754 p_chrv_tbl IN okl_okc_migration_pvt.chrv_tbl_type,
2755 p_khrv_tbl IN khrv_tbl_type,
2756 x_chrv_tbl OUT NOCOPY okl_okc_migration_pvt.chrv_tbl_type,
2757 x_khrv_tbl OUT NOCOPY khrv_tbl_type) IS
2758
2759 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_CONTRACT_HEADER';
2760 l_api_version CONSTANT NUMBER := 1.0;
2761 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2762 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2763 i NUMBER;
2764 l_khrv_tbl khrv_tbl_type := p_khrv_tbl;
2765 BEGIN
2766 -- call START_ACTIVITY to create savepoint, check compatibility
2767 -- and initialize message list
2768 l_return_status := OKL_API.START_ACTIVITY(
2769 p_api_name => l_api_name,
2770 p_pkg_name => g_pkg_name,
2771 p_init_msg_list => p_init_msg_list,
2772 l_api_version => l_api_version,
2773 p_api_version => p_api_version,
2774 p_api_type => g_api_type,
2775 x_return_status => x_return_status);
2776
2777 -- check if activity started successfully
2778 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
2779 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2780 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
2781 raise OKL_API.G_EXCEPTION_ERROR;
2782
2783 End If;
2784
2785 If (p_chrv_tbl.COUNT > 0) Then
2786 i := p_chrv_tbl.FIRST;
2787 LOOP
2788 -- call procedure in complex API for a record
2789 create_contract_header(
2790 p_api_version => p_api_version,
2791 p_init_msg_list => p_init_msg_list,
2792 x_return_status => x_return_status,
2793 x_msg_count => x_msg_count,
2794 x_msg_data => x_msg_data,
2795 p_chrv_rec => p_chrv_tbl(i),
2796 p_khrv_rec => l_khrv_tbl(i),
2797 x_chrv_rec => x_chrv_tbl(i),
2798 x_khrv_rec => x_khrv_tbl(i));
2799
2800 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
2801 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
2802 l_overall_status := x_return_status;
2803 End If;
2804 End If;
2805
2806 EXIT WHEN (i = p_chrv_tbl.LAST);
2807 i := p_chrv_tbl.NEXT(i);
2808 END LOOP;
2809
2810 -- return overall status
2811 x_return_status := l_overall_status;
2812 End If;
2813
2814 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
2815 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2816 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
2817 raise OKL_API.G_EXCEPTION_ERROR;
2818 End If;
2819
2820 OKL_API.END_ACTIVITY( x_msg_count => x_msg_count,
2821 x_msg_data => x_msg_data);
2822 EXCEPTION
2823 when OKL_API.G_EXCEPTION_ERROR then
2824 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2825 p_api_name => l_api_name,
2826 p_pkg_name => g_pkg_name,
2827 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
2828 x_msg_count => x_msg_count,
2829 x_msg_data => x_msg_data,
2830 p_api_type => g_api_type);
2831
2832 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
2833 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2834 p_api_name => l_api_name,
2835 p_pkg_name => g_pkg_name,
2836 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2837 x_msg_count => x_msg_count,
2838 x_msg_data => x_msg_data,
2839 p_api_type => g_api_type);
2840
2841 when OTHERS then
2842 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2843 p_api_name => l_api_name,
2844 p_pkg_name => g_pkg_name,
2845 p_exc_name => 'OTHERS',
2846 x_msg_count => x_msg_count,
2847 x_msg_data => x_msg_data,
2848 p_api_type => g_api_type);
2849
2850 END create_contract_header;
2851
2852
2853 --------------------------------------------------------------------------------
2854 -- Start of comments
2855 -- Procedure Name : update_contract_header
2856 -- Description : updates contract header for shadowed contract
2857 --Bug# : 11.5.9 Enhancement Multi-Currency Changes
2858 -- Product Vaqlidations
2859 -- Rebook contract can not change currency code
2860 -- Business Rules :
2861 -- Parameters :
2862 -- Version : 1.0
2863 -- End of comments
2864 ---------------------------------------------------------------------------------
2865 PROCEDURE update_contract_header(
2866 p_api_version IN NUMBER,
2867 p_init_msg_list IN VARCHAR2,
2868 x_return_status OUT NOCOPY VARCHAR2,
2869 x_msg_count OUT NOCOPY NUMBER,
2870 x_msg_data OUT NOCOPY VARCHAR2,
2871 p_restricted_update IN VARCHAR2,
2872 p_chrv_rec IN okl_okc_migration_pvt.chrv_rec_type,
2873 p_khrv_rec IN khrv_rec_type,
2874 p_edit_mode IN VARCHAR2,
2875 x_chrv_rec OUT NOCOPY okl_okc_migration_pvt.chrv_rec_type,
2876 x_khrv_rec OUT NOCOPY khrv_rec_type) IS
2877
2878
2879 subtype rulv_tbl_type is OKL_RULE_PUB.rulv_tbl_type;
2880 l_chrv_rec okl_okc_migration_pvt.chrv_rec_type;
2881 l_khrv_rec khrv_rec_type;
2882
2883 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_CONTRACT_HEADER';
2884 l_api_version CONSTANT NUMBER := 1.0;
2885 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2886
2887 cursor l_khrv_csr(l_id IN NUMBER) is
2888 select 'x'
2889 from OKL_K_HEADERS_V
2890 where id = l_id;
2891 l_dummy_var VARCHAR2(1) := '?';
2892
2893 l_modfn_mode Varchar2(1);
2894
2895 --Bug #2821383 : added order by as order of line dates being updated is important
2896 --Cursor to get top lines is lease chr has lines to change effectivity
2897 --bug 4412923: Removed the status 'CANCELLED' from the cursor
2898 Cursor top_cle_csr (p_chr_id IN NUMBER) is
2899 SELECT cle.id
2900 From okc_k_lines_b cle,
2901 okc_statuses_b sts
2902 where cle.dnz_chr_id = cle.chr_id
2903 and cle.chr_id = p_chr_id
2904 and sts.code = cle.sts_code
2905 And sts.ste_code not in ('HOLD','EXPIRED','TERMINATED');
2906
2907 l_top_cle_id OKC_K_LINES_B.ID%TYPE;
2908
2909 --Cursor to check if lease chr has lines to change effectivity
2910 --bug 4412923: Removed the status 'CANCELLED' from the cursor
2911 Cursor cle_csr(p_cle_id IN NUMBER) is
2912 SELECT cle.id,
2913 cle.start_date,
2914 cle.end_date,
2915 cle.orig_system_id1,
2916 --Bug#
2917 cle.lse_id
2918 From okc_k_lines_b cle
2919 connect by prior cle.id = cle.cle_id
2920 start with cle.id = p_cle_id
2921 and exists (select 1
2922 from okc_statuses_b sts
2923 where sts.code = cle.sts_code
2924 and sts.ste_code not in ('HOLD','EXPIRED','TERMINATED'));
2925
2926 l_cle_id OKC_K_LINES_B.ID%TYPE;
2927 l_cle_start_date OKC_K_LINES_B.START_DATE%TYPE;
2928 l_cle_end_date OKC_K_LINES_B.END_DATE%TYPE;
2929 l_parent_cle_id OKC_K_LINES_B.orig_system_id1%TYPE;
2930 --Bug#
2931 l_lse_id OKC_K_LINES_B.lse_id%TYPE;
2932
2933
2934 l_clev_rec OKL_OKC_MIGRATION_PVT.clev_rec_type;
2935 lx_clev_rec OKL_OKC_MIGRATION_PVT.clev_rec_type;
2936
2937 -------------------------------------------------------------------------
2938 --Bug# : 11.5.9 Multi-currency/product validation enhancements
2939 -------------------------------------------------------------------------
2940 --cursor to fetch current chr/khr columns from the database
2941 Cursor get_orig_chr_csr(chrid in number) is
2942 SELECT chr.currency_code,
2943 chr.start_date,
2944 chr.end_date,
2945 chr.scs_code,
2946 chr.orig_system_source_code,
2947 chr.orig_system_id1,
2948 chr.authoring_org_id --MOAC
2949 FROM okc_k_headers_b chr
2950 WHERE chr.id = chrid;
2951
2952 l_orig_chr_rec get_orig_chr_csr%ROWTYPE;
2953
2954 --separate cursor fr khr as sometimes khr record may not exist
2955 -- for update
2956 Cursor get_orig_khr_csr(chrid in number) is
2957 SELECT khr.currency_conversion_type,
2958 khr.currency_conversion_rate,
2959 khr.currency_conversion_date,
2960 khr.term_duration,
2961 khr.pdt_id,
2962 --bug# 3180583
2963 khr.multi_gaap_yn
2964 FROM okl_k_headers khr
2965 WHERE khr.id = chrid;
2966
2967 l_orig_khr_rec get_orig_khr_csr%ROWTYPE;
2968
2969 -- Bug 7610725 start
2970 CURSOR curr_pdt_csr(p_pdt_id in number) IS
2971 SELECT DEAL_TYPE, REPORTING_PDT_ID
2972 FROM OKL_PRODUCT_PARAMETERS_V
2973 WHERE ID = p_pdt_id;
2974
2975 l_curr_pdt_rec curr_pdt_csr%ROWTYPE;
2976 l_delete_flag VARCHAR(1) := 'N';
2977
2978 l_rep_book_type okl_txd_assets_b.tax_book%TYPE;
2979 cursor l_txd_csr (p_book_type_code in varchar2,
2980 p_chr_id in number) is
2981 select txdb.id
2982 from okl_txd_assets_b txdb,
2983 okl_txl_assets_b txlb,
2984 okc_k_lines_b cleb,
2985 okc_line_styles_b lseb
2986 where txdb.tax_book = p_book_type_code
2987 and txdb.tal_id = txlb.id
2988 and txlb.kle_id = cleb.id
2989 and cleb.lse_id = lseb.id
2990 and lseb.lty_code = 'FIXED_ASSET'
2991 and cleb.dnz_chr_id = p_chr_id;
2992
2993 l_txd_rec l_txd_csr%ROWTYPE;
2994 l_adpv_tbl OKL_TXD_ASSETS_PUB.adpv_tbl_type;
2995 i number;
2996 -- Bug 7610725 end
2997
2998
2999 l_curr_chrv_rec okl_okc_migration_pvt.chrv_rec_type;
3000 l_curr_khrv_rec khrv_rec_type;
3001
3002 l_pdt_deal_type varchar2(150);
3003 l_pdt_tax_owner varchar2(150);
3004
3005 l_bypass_pdt_validation varchar2(1) default 'N';
3006 -------------------------------------------------------------------------
3007 --Bug# : 11.5.9 Multi-currency/product validation enhancements
3008 -------------------------------------------------------------------------
3009 --Bug# 2821383
3010 l_rbk_cpy Varchar2(1) default 'N';
3011
3012 --Cursor to get dates from orignal lines in case of a rebook contract
3013 Cursor parent_cle_csr (p_cle_id IN Number) is
3014 SELECT
3015 cle.start_date,
3016 cle.end_date
3017 From okc_k_lines_b cle
3018 Where cle.id = p_cle_id;
3019
3020 l_parent_cle_start_date OKC_K_HEADERS_B.start_date%TYPE;
3021 l_parent_cle_end_date OKC_K_HEADERS_B.end_date%TYPE;
3022
3023 --Bug# 3143522 : Subsidies
3024 --cursor to get lty code
3025 cursor l_ltycd_csr (p_lse_id in number) is
3026 select lseb.lty_code
3027 from okc_line_styles_b lseb
3028 where lseb.id = p_lse_id;
3029
3030 l_lty_code okc_line_styles_b.lty_code%TYPE default null;
3031
3032 --cursor to get maximum subsidy term
3033 cursor l_sub_csr (p_cle_id in number) is
3034 select subb.maximum_term
3035 from okl_subsidies_b subb,
3036 okl_k_lines kle
3037 where subsidy_id = kle.subsidy_id
3038 and kle.id = p_cle_id;
3039
3040 l_max_subsidy_term okl_subsidies_b.maximum_term%TYPE;
3041 --Bug# 3143522 : subsidies
3042
3043 --Bug# 3180583
3044 l_multigaap_yn varchar2(1) default Null;
3045
3046 -- Bug 4722839
3047 l_deal_type OKL_K_HEADERS.deal_type%TYPE;
3048 l_interest_calculation_basis VARCHAR2(30);
3049 l_revenue_recognition_method VARCHAR2(30);
3050 l_pdt_parameter_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
3051 x_rulv_tbl rulv_tbl_type;
3052
3053 --Added by dpsingh for LE Uptake
3054 CURSOR get_con_line_ids_csr(p_chr_id1 NUMBER) IS
3055 SELECT DISTINCT TAS_ID
3056 FROM OKL_TXL_ASSETS_B
3057 WHERE KLE_ID IN
3058 (SELECT OKC.ID
3059 FROM OKC_K_LINES_B OKC,
3060 OKC_LINE_STYLES_B OKC_ST
3061 WHERE OKC_ST.LTY_CODE ='FREE_FORM1'
3062 AND OKC.LSE_ID=OKC_ST.ID
3063 AND OKC.CHR_ID =OKC.DNZ_CHR_ID
3064 AND OKC.CHR_ID =p_chr_id1);
3065
3066 l_tasv_rec okl_tas_pvt.tasv_rec_type;
3067 x_tasv_rec okl_tas_pvt.tasv_rec_type;
3068 l_legal_entity_id NUMBER;
3069 l_upd_trx_assets NUMBER(1);
3070
3071 BEGIN
3072
3073 -- call START_ACTIVITY to create savepoint, check compatibility
3074 -- and initialize message list
3075 l_return_status := OKL_API.START_ACTIVITY(
3076 p_api_name => l_api_name,
3077 p_pkg_name => g_pkg_name,
3078 p_init_msg_list => p_init_msg_list,
3079 l_api_version => l_api_version,
3080 p_api_version => p_api_version,
3081 p_api_type => g_api_type,
3082 x_return_status => x_return_status);
3083
3084 -- check if activity started successfully
3085 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3086 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3087 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
3088 raise OKL_API.G_EXCEPTION_ERROR;
3089 End If;
3090
3091 l_khrv_rec := p_khrv_rec;
3092 l_chrv_rec := p_chrv_rec;
3093
3094 --Bug# 3783278
3095 --Remove leading and trailing spaces in contract number
3096 If l_chrv_rec.contract_number is not null Then
3097 l_chrv_rec.contract_number := LTRIM(RTRIM(l_chrv_rec.contract_number));
3098 End If;
3099
3100
3101 --term modfn
3102
3103 OPEN get_orig_chr_csr(l_chrv_rec.id);
3104 FETCH get_orig_chr_csr into l_orig_chr_rec;
3105 IF get_orig_chr_csr%NOTFOUND Then
3106 Null; --will not happen as we are updating the current record so it has to be there
3107 END IF;
3108 CLOSE get_orig_chr_csr;
3109
3110 --dkagrawa moved down the following code and passed l_orig_chr_rec.authoring_org_id for MOAC
3111
3112 -- set okc context before API call
3113 -- msamoyle: check whether we need to call this method here or in PUB or in processing
3114 OKL_CONTEXT.SET_OKC_ORG_CONTEXT(l_orig_chr_rec.authoring_org_id,l_chrv_rec.inv_organization_id);
3115
3116 OPEN get_orig_khr_csr(l_chrv_rec.id);
3117 FETCH get_orig_khr_csr into l_orig_khr_rec;
3118 IF get_orig_khr_csr%NOTFOUND Then
3119 Null; --will not happen as we are updating the current record so it has to be there
3120 END IF;
3121 CLOSE get_orig_khr_csr;
3122
3123 -- Bug 7610725 start
3124 l_delete_flag := 'N';
3125 IF (l_khrv_rec.pdt_id IS NOT NULL AND
3126 l_khrv_rec.pdt_id <> OKL_API.G_MISS_NUM) THEN
3127 IF (NVL(l_orig_khr_rec.multi_gaap_yn,'N') = 'Y') THEN
3128 OPEN curr_pdt_csr(l_khrv_rec.pdt_id);
3129 FETCH curr_pdt_csr INTO l_curr_pdt_rec;
3130 CLOSE curr_pdt_csr;
3131
3132 IF (l_curr_pdt_rec.REPORTING_PDT_ID IS NOT NULL) THEN
3133 IF l_curr_pdt_rec.DEAL_TYPE like 'LOAN%' THEN
3134 -- Delete reporting asset tax book
3135 l_delete_flag := 'Y';
3136 END IF;
3137 ELSE
3138 -- Delete rep[orting asset tax book
3139 l_delete_flag := 'Y';
3140 --l_khrv_rec.multi_gaap_yn := 'N';
3141 END IF;
3142 END IF;
3143 END IF;
3144
3145 IF (l_delete_flag = 'Y') THEN
3146 -- Delete reporting asset tax book
3147 l_rep_book_type := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
3148 i := 0;
3149 If nvl(l_rep_book_type,OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR then
3150 open l_txd_csr (p_book_type_code => l_rep_book_type,
3151 p_chr_id => l_chrv_rec.id);
3152 Loop
3153 fetch l_txd_csr into l_txd_rec;
3154 exit when l_txd_csr%NOTFOUND;
3155 i := i+1;
3156 l_adpv_tbl(i).id := l_txd_rec.id;
3157 end Loop;
3158 close l_txd_csr;
3159
3160 If l_adpv_tbl.COUNT <> 0 then
3161 OKL_TXD_ASSETS_PUB.delete_txd_asset_Def(
3162 p_api_version => p_api_version,
3163 p_init_msg_list => p_init_msg_list,
3164 x_return_status => x_return_status,
3165 x_msg_count => x_msg_count,
3166 x_msg_data => x_msg_data,
3167 p_adpv_tbl => l_adpv_tbl);
3168 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
3169 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3170 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
3171 raise OKL_API.G_EXCEPTION_ERROR;
3172 End If;
3173 End If;
3174 End If;
3175
3176 END IF;
3177 -- Bug 7610725 end
3178
3179 --
3180 If l_chrv_rec.start_date = OKL_API.G_MISS_DATE Then
3181 l_chrv_rec.start_date := l_orig_chr_rec.start_date;
3182 End If;
3183 --
3184
3185 If l_khrv_rec.term_duration = OKL_API.G_MISS_NUM and
3186 l_orig_khr_rec.term_duration is not null Then
3187 l_khrv_rec.term_duration := l_orig_khr_rec.term_duration;
3188 End If;
3189 --
3190 --Bug Fix# 2860122 start.
3191 --SandO fix for end date
3192 IF (l_chrv_rec.end_date = OKL_API.G_MISS_DATE) Then
3193 IF (l_chrv_rec.start_date is NOT NULL and
3194 l_chrv_rec.start_date <> OKL_API.G_MISS_DATE) and
3195 (l_khrv_rec.term_duration is not NULL and
3196 l_khrv_rec.term_duration <> OKL_API.G_MISS_NUM) Then
3197 --Added for bug 6007644
3198 l_chrv_rec.end_date := OKL_LLA_UTIL_PVT.calculate_end_date(p_start_date => l_chrv_rec.start_date,
3199 p_months => l_khrv_rec.term_duration);
3200 --end bug 6007644
3201 ELSE
3202 l_chrv_rec.end_date := l_orig_chr_rec.end_date;
3203 END IF;
3204 END IF;
3205 -- Bug Fix # 2860122 End.
3206 --
3207 If l_chrv_rec.currency_code = OKL_API.G_MISS_CHAR Then
3208 l_chrv_rec.currency_code := l_orig_chr_rec.currency_code;
3209 End If;
3210
3211 --
3212 -- call to check if term modification is allowed and cascade it onto existing lines
3213 ---
3214 --Bug # 11.5.9 : modified to take care of currency modification during rebooks
3215 term_modfn( p_api_version => p_api_version,
3216 p_init_msg_list => p_init_msg_list,
3217 x_return_status => x_return_status,
3218 x_msg_count => x_msg_count,
3219 x_msg_data => x_msg_data,
3220 p_chr_id => l_chrv_rec.id,
3221 p_new_start_date => l_chrv_rec.start_date,
3222 p_new_end_date => l_chrv_rec.end_date,
3223 p_new_term => l_khrv_rec.term_duration,
3224 x_modfn_mode => l_modfn_mode);
3225
3226 -- check return status
3227 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
3228 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3229 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
3230 raise OKL_API.G_EXCEPTION_ERROR;
3231 End If;
3232
3233 ----------------------------------------------------------------------------
3234 --call to check if template modification is allowed
3235 ----------------------------------------------------------------------------
3236 template_create_allowed(p_chr_id => l_chrv_rec.id,
3237 p_template_yn => l_chrv_rec.template_yn,
3238 x_return_status => x_return_status);
3239
3240 If (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3241 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3242 Elsif (x_return_status = OKL_API.G_RET_STS_ERROR) then
3243 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
3244 p_msg_name => G_TEMPLATE_CREATE_NOT_ALLOWED);
3245 raise OKL_API.G_EXCEPTION_ERROR;
3246 End If;
3247
3248 ----------------------------------------------------------------------------
3249 --Bug# : 11.5.9 Enhancement Multi Currency
3250 ----------------------------------------------------------------------------
3251 If (l_chrv_rec.currency_code = OKL_API.G_MISS_CHAR) Then
3252 l_chrv_rec.currency_code := l_orig_chr_rec.currency_code;
3253 End If;
3254
3255 If (l_khrv_rec.currency_conversion_type = OKL_API.G_MISS_CHAR) and
3256 l_orig_khr_rec.currency_conversion_type is not null Then
3257 l_khrv_rec.currency_conversion_type := l_orig_khr_rec.currency_conversion_type;
3258 End If;
3259
3260 If (l_khrv_rec.currency_conversion_rate = OKL_API.G_MISS_NUM) and
3261 l_orig_khr_rec.currency_conversion_rate is not null Then
3262 l_khrv_rec.currency_conversion_rate := l_orig_khr_rec.currency_conversion_rate;
3263 End If;
3264
3265 If (l_khrv_rec.currency_conversion_date = OKL_API.G_MISS_DATE) and
3266 l_orig_khr_rec.currency_conversion_date is not null Then
3267 l_khrv_rec.currency_conversion_date := l_orig_khr_rec.currency_conversion_date;
3268 End If;
3269
3270 If (l_chrv_rec.start_date = OKL_API.G_MISS_DATE) Then
3271 l_chrv_rec.start_date := l_orig_chr_rec.start_date;
3272 End If;
3273
3274 If (l_chrv_rec.scs_code = OKL_API.G_MISS_CHAR) Then
3275 l_chrv_rec.scs_code := l_orig_chr_rec.scs_code;
3276 End If;
3277
3278 --Bug# 3180583
3279 If (l_khrv_rec.multi_gaap_yn = OKL_API.G_MISS_CHAR) then
3280 l_khrv_rec.multi_gaap_yn := l_orig_khr_rec.multi_gaap_yn;
3281 End If;
3282
3283 -- AKP:Check if start_date is changed default interest_start_date,
3284 --rate_change_start_date and catchup_start_date
3285 IF ((l_chrv_rec.start_date <> l_orig_chr_rec.start_date) AND
3286 (l_chrv_rec.scs_code = 'LEASE') ) THEN
3287 okl_k_rate_params_pvt.cascade_contract_start_date
3288 ( p_api_version => p_api_version,
3289 p_init_msg_list => p_init_msg_list,
3290 x_return_status => x_return_status,
3291 x_msg_count => x_msg_count,
3292 x_msg_data => x_msg_data,
3293 p_chr_id => l_chrv_rec.id,
3294 p_new_start_date => l_chrv_rec.start_date);
3295 -- check return status
3296 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
3297 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3298 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
3299 raise OKL_API.G_EXCEPTION_ERROR;
3300 End If;
3301 END IF;
3302
3303 -- now go in to validate currency
3304 validate_currency(p_api_version => p_api_version,
3305 p_init_msg_list => p_init_msg_list,
3306 x_msg_count => x_msg_count,
3307 x_msg_data => x_msg_data,
3308 x_return_status => x_return_status,
3309 p_chrv_rec => l_chrv_rec,
3310 p_khrv_rec => l_khrv_rec,
3311 x_chrv_rec => l_curr_chrv_rec,
3312 x_khrv_rec => l_curr_khrv_rec);
3313 If (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
3314 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3315 Elsif (x_return_status = OKL_API.G_RET_STS_ERROR) then
3316 raise OKL_API.G_EXCEPTION_ERROR;
3317 End If;
3318
3319 l_chrv_rec := l_curr_chrv_rec;
3320 l_khrv_rec := l_curr_khrv_rec;
3321 ----------------------------------------------------------------------------
3322 --Bug# : 11.5.9 Enhancement Multi Currency End
3323 ----------------------------------------------------------------------------
3324
3325 ----------------------------------------------------------------------------
3326 --Bug# : 11.5.9 Enhancement Product Validations
3327 ----------------------------------------------------------------------------
3328 --For older contracts do not check for product validation unless product has changed
3329 --therefore commenting this code below :
3330 --If l_khrv_rec.pdt_id = OKL_API.G_MISS_NUM Then
3331 -- l_khrv_rec.pdt_id := l_orig_chr_rec.pdt_id;
3332 --End If;
3333
3334 If (l_chrv_rec.start_date = OKL_API.G_MISS_DATE) Then
3335 l_chrv_rec.start_date := l_orig_chr_rec.start_date;
3336 End If;
3337
3338
3339 --For older contracts do not check for product validation unless product has changed
3340 --therefore commenting adding the G_MISS clause in IF below :
3341
3342 If (l_khrv_rec.pdt_id is null) OR (l_khrv_rec.pdt_id = OKL_API.G_MISS_NUM ) OR
3343 (l_khrv_rec.pdt_id = l_orig_khr_rec.pdt_id) then
3344 null;
3345 Else
3346 --Begin (Bug# 2730633)
3347 --Fix for not to validate for copied contracts being copied from contracts
3348 --which have 11.5.8 products against them
3349 l_bypass_pdt_validation := 'N';
3350 If nvl(l_orig_chr_rec.orig_system_source_code,OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR AND
3351 nvl(l_orig_chr_rec.orig_system_id1,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM Then
3352 l_bypass_pdt_validation := Is_Orig_Pdt_old(p_orig_chr_id => l_orig_chr_rec.orig_system_id1,
3353 p_pdt_id => l_khrv_rec.pdt_id);
3354 End If;
3355 --Fix for not to validate for copied contracts being copied from contracts
3356 --which have 11.5.8 products against them
3357 --End (Bug# 2730633)
3358 If l_bypass_pdt_validation = 'N' Then
3359 Validate_Product(p_api_version => p_api_version,
3360 p_init_msg_list => p_init_msg_list,
3361 x_return_status => x_return_status,
3362 x_msg_count => x_msg_count,
3363 x_msg_data => x_msg_data,
3364 p_chrv_rec => l_chrv_rec,
3365 p_pdt_id => l_khrv_rec.pdt_id,
3366 x_deal_type => l_pdt_deal_type,
3367 x_tax_owner => l_pdt_tax_owner,
3368 --Bug# 3180583
3369 x_multigaap_yn => l_multigaap_yn);
3370
3371 -- check return status
3372 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
3373 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3374 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
3375 raise OKL_API.G_EXCEPTION_ERROR;
3376 End If;
3377
3378 --for lease contracts deal type has to come from product
3379 If l_chrv_rec.scs_code in ('LEASE','QUOTE') Then
3380 --Bug# 2809358
3381 --If l_khrv_rec.deal_type <> l_pdt_deal_type Then
3382 If nvl(l_khrv_rec.deal_type,'DEALTYPE') <> l_pdt_deal_type Then
3383 --If l_pdt_deal_type is not null OR
3384 If l_pdt_deal_type is not null AND
3385 l_pdt_deal_type <> OKL_API.G_MISS_CHAR Then
3386 l_khrv_rec.deal_type := l_pdt_deal_type;
3387 End If;
3388 End If;
3389
3390 --------------
3391 --Bug# 3180583
3392 -------------
3393 If nvl(l_multigaap_yn,OKL_API.G_MISS_CHAR) = 'N' then
3394 If nvl(l_khrv_rec.multi_gaap_yn,OKL_API.G_MISS_CHAR) = 'Y' then
3395 l_khrv_rec.multi_gaap_yn := NULL;
3396 End If;
3397 ELSIf nvl(l_multigaap_yn,'N') = 'Y' then -- 7610725
3398 l_khrv_rec.multi_gaap_yn := 'Y';
3399 End If;
3400 --------------
3401 --Bug# 3180583
3402 -------------
3403
3404 --Bug# 3379294 : check if deal type is still Null then raise error for lease and quote
3405 If nvl(l_khrv_rec.deal_type,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
3406 OKL_API.Set_Message(p_app_name => G_APP_NAME,
3407 p_msg_name => 'OKL_NULL_DEAL_TYPE');
3408 x_return_status := OKL_API.G_RET_STS_ERROR;
3409 raise OKL_API.G_EXCEPTION_ERROR;
3410 End If;
3411 --Bug# 3379294 : End
3412
3413 End If;
3414 End If;
3415 End If;
3416 ----------------------------------------------------------------------------
3417 --Bug# : 11.5.9 Product validations
3418 ----------------------------------------------------------------------------
3419 --Added by dpsingh
3420 l_legal_entity_id := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(l_chrv_rec.id) ;
3421
3422 --rkuttiya commented out for bug 6595451
3423 --validation on null legal entity id not required for update contract
3424 /*IF (l_khrv_rec.legal_entity_id IS NULL ) THEN
3425 IF l_chrv_rec.scs_code IN ('LEASE','LOAN','INVESTOR', 'MASTER_LEASE','PROGRAM') THEN
3426 OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'legal_entity_id');
3427 RAISE OKL_API.G_EXCEPTION_ERROR;
3428 END IF;*/
3429 IF( (l_khrv_rec.legal_entity_id <> Okl_Api.G_MISS_NUM) AND (l_legal_entity_id <> l_khrv_rec.legal_entity_id)) THEN
3430 OKL_LA_VALIDATION_UTIL_PVT.VALIDATE_LEGAL_ENTITY(x_return_status => x_return_status,
3431 p_chrv_rec => l_chrv_rec,
3432 p_mode => 'UPD');
3433 l_upd_trx_assets := 1;
3434 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3435 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3436 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3437 RAISE OKL_API.G_EXCEPTION_ERROR;
3438 END IF;
3439 END IF ;
3440 --Added by dpsingh end
3441
3442 --Should not go in and validate for previous records
3443
3444 --
3445 -- call procedure in complex API
3446 --
3447 -- OKC_CONTRACT_PUB.update_contract_header(
3448
3449 okl_okc_migration_pvt.update_contract_header(
3450 p_api_version => p_api_version,
3451 p_init_msg_list => p_init_msg_list,
3452 x_return_status => x_return_status,
3453 x_msg_count => x_msg_count,
3454 x_msg_data => x_msg_data,
3455 p_restricted_update => p_restricted_update,
3456 p_chrv_rec => l_curr_chrv_rec,
3457 x_chrv_rec => x_chrv_rec);
3458
3459 -- check return status
3460 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
3461 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3462 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
3463 RAISE OKL_API.G_EXCEPTION_ERROR;
3464 --Added by dpsingh for LE Uptake
3465 ELSIF x_return_status = OKL_API.G_RET_STS_SUCCESS AND l_upd_trx_assets = 1 THEN
3466 FOR get_con_line_ids_rec IN get_con_line_ids_csr(l_chrv_rec.id) LOOP
3467 l_tasv_rec.id := get_con_line_ids_rec.tas_id;
3468 l_tasv_rec.legal_entity_id := l_legal_entity_id;
3469 OKL_TRX_ASSETS_PVT.UPDATE_TRX_ASS_H_DEF(p_api_version ,
3470 p_init_msg_list ,
3471 x_return_status ,
3472 x_msg_count ,
3473 x_msg_data ,
3474 l_tasv_rec ,
3475 x_tasv_rec) ;
3476
3477 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
3478 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3479 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
3480 RAISE OKL_API.G_EXCEPTION_ERROR;
3481 END IF;
3482 END LOOP;
3483 END IF;
3484 /*Bug# 3124577: 11.5.10 Rule Migration:-----------------------------------------------------------
3485 ----------------------------------------------------------------------------
3486 --Bug# : 11.5.9 Enhancement Multi Currency, Create CURRENCY Rule
3487 ----------------------------------------------------------------------------
3488 --Create OKC currency rule for contract currency different from functional currency
3489 --Removed as OKC CVN rule need not be created after 11.5.10 rules migration
3490 ----------------------------------------------------------------------------
3491 --Bug# : 11.5.9 Enhancement Multi Currency, Create CURRENCY Rule
3492 ----------------------------------------------------------------------------
3493 ---------------------------------------Bug# 3124577 -Rule Migration 11.5.10-----------*/
3494
3495 --If does not satisfy above clause stamp header dates on to lines
3496 If l_modfn_mode in ('L','R') Then
3497 --Bug# 2821383
3498 Open top_cle_csr(p_chr_id => x_chrv_rec.id);
3499 Loop
3500 Fetch top_cle_csr into l_top_cle_id;
3501 Exit when top_cle_csr%NOTFOUND;
3502
3503 Open cle_csr (p_cle_id => l_top_cle_id);
3504 --Open cle_csr (p_chr_id => x_chrv_rec.id);
3505 Loop
3506 Fetch Cle_Csr into l_cle_id,
3507 l_cle_start_date,
3508 l_cle_end_date,
3509 l_parent_cle_id,
3510 --Bug# : subsidy
3511 l_lse_id;
3512
3513 Exit When Cle_Csr%NOTFOUND;
3514
3515 l_clev_rec.id := l_cle_id;
3516 l_clev_rec.start_date := l_cle_start_date;
3517 l_clev_rec.end_date := l_cle_end_date;
3518
3519 --Bug#: Subsidy
3520 l_lty_code := Null;
3521 open l_ltycd_csr (p_lse_id => l_lse_id);
3522 fetch l_ltycd_csr into l_lty_code;
3523 If l_ltycd_csr%NOTFOUND then
3524 Null;
3525 End If;
3526 close l_ltycd_csr;
3527
3528
3529 -----------------------------------------------------------------------------------------------------
3530 --Bug# 3143522: Subsidy - segregated date stamping logic for fee,service and subsidy from rest of the lines
3531 -- because of different natures of these lines
3532 ---------------------------------------------------------------------------------------------------e
3533 If nvl(l_lty_code,'XXXX') not in('FEE','SOLD_SERVICE','LINK_FEE_ASSET','LINK_SERV_ASSET','SUBSIDY') then
3534 --Bug # 2691029 : modify line start date only if line start date is
3535 -- is less than or equal to new header start date
3536 ----------------------------------------------------------------
3537 --start date logic for lines other than FEE, SERVICE and SUBSIDY
3538 ----------------------------------------------------------------
3539 If l_modfn_mode = 'R' then
3540 --bug# 2821383
3541 l_rbk_cpy := 'N';
3542 l_rbk_cpy := Is_rebook_Copy(p_chr_id => x_chrv_rec.id);
3543 If l_rbk_cpy = 'Y' then
3544 If l_parent_cle_id is not null then
3545 If l_cle_start_date <= x_chrv_rec.start_date then
3546 l_clev_rec.start_date := x_chrv_rec.start_date;
3547 elsif l_cle_start_date > x_chrv_rec.start_date then
3548 --get the dates from parent lines
3549 Open parent_cle_csr(p_cle_id => l_parent_cle_id);
3550 Fetch parent_cle_csr into
3551 l_parent_cle_start_date,
3552 l_parent_cle_end_date;
3553 If parent_cle_csr%NOTFOUND then
3554 null;
3555 Else
3556 If trunc(l_clev_rec.start_date) = trunc(l_parent_cle_start_date) then
3557 --do not change the line date (do not stamp header date on line)
3558 null;
3559 Else
3560 --change line start date
3561 If trunc(l_parent_cle_start_date) <= trunc(x_chrv_rec.start_date) then
3562 l_clev_rec.start_date := x_chrv_rec.start_date;
3563 Elsif trunc(l_parent_cle_start_date) > trunc(x_chrv_rec.start_date) then
3564 l_clev_rec.start_date := l_parent_cle_start_date;
3565 End If;
3566 End If;
3567 End If;
3568 Close parent_cle_csr;
3569 End If; --cle_start date > header date
3570
3571 elsif l_parent_cle_id is null then
3572 null;
3573 end if;
3574 Elsif l_rbk_cpy = 'N' then
3575 If l_cle_start_date <= x_chrv_rec.start_date then
3576 l_clev_rec.start_date := x_chrv_rec.start_date;
3577 elsif l_cle_start_date > x_chrv_rec.start_date then
3578 null;
3579 end if;
3580 End If;
3581
3582 elsif l_modfn_mode = 'L' then
3583 l_clev_rec.start_date := x_chrv_rec.start_date;
3584 end if;
3585 ----------------------------------------------------------------
3586 --end of start date logic for lines other than FEE, SERVICE and SUBSIDY
3587 ----------------------------------------------------------------
3588
3589 ---------------------------------------------------------------
3590 --End date logic for lines other than FEE, SERVICE and SUBSIDY
3591 --------------------------------------------------------------
3592 l_clev_rec.end_date := x_chrv_rec.end_date;
3593 ---------------------------------------------------------------
3594 --end of End date logic for lines other than FEE, SERVICE and SUBSIDY
3595 --------------------------------------------------------------
3596
3597 ---------------------------------------------------------------------------------------------
3598 --Bug#3143522 :subsidy special logic for fee and service lines which may end and start on any dates
3599 -- between contract dates
3600 ---------------------------------------------------------------------------------------------
3601 ElsIf nvl(l_lty_code,'XXXX') in ('FEE','SOLD_SERVICE','LINK_FEE_ASSET','LINK_SERV_ASSET') then
3602
3603 --------------------------------------------------------
3604 --New code added along with bug fix 3180583 to take care of
3605 --fee and service lines during re-books :
3606 /*--------new code-------------------------------------*/
3607 If l_modfn_mode = 'R' then
3608 --bug# 2821383
3609 l_rbk_cpy := 'N';
3610 l_rbk_cpy := Is_rebook_Copy(p_chr_id => x_chrv_rec.id);
3611 If l_rbk_cpy = 'Y' then
3612 If l_parent_cle_id is not null then
3613 Open parent_cle_csr(p_cle_id => l_parent_cle_id);
3614 Fetch parent_cle_csr into
3615 l_parent_cle_start_date,
3616 l_parent_cle_end_date;
3617 If parent_cle_csr%NOTFOUND then
3618 null;
3619 End If;
3620 Close parent_cle_csr;
3621
3622 If (l_cle_start_date <= x_chrv_rec.start_date) OR
3623 (l_cle_start_date > x_chrv_rec.end_date) then
3624 l_clev_rec.start_date := x_chrv_rec.start_date;
3625 elsif (l_cle_start_date > x_chrv_rec.start_date) AND
3626 (l_cle_start_date <= x_chrv_rec.end_date) then
3627 --get the dates from parent lines
3628 If nvl(l_parent_cle_start_date,OKL_API.G_MISS_DATE) = OKL_API.G_MISS_DATE then
3629 null;
3630 Else
3631 If trunc(l_clev_rec.start_date) = trunc(l_parent_cle_start_date) then
3632 --do not change the line date (do not stamp header date on line)
3633 null;
3634 Else
3635 --change line start date
3636 If trunc(l_parent_cle_start_date) <= trunc(x_chrv_rec.start_date) then
3637 l_clev_rec.start_date := x_chrv_rec.start_date;
3638 Elsif trunc(l_parent_cle_start_date) > trunc(x_chrv_rec.start_date) then
3639 l_clev_rec.start_date := l_parent_cle_start_date;
3640 End If;
3641 End If;
3642 End If;
3643 End If; --cle_start date > header date
3644
3645 If (l_cle_end_date >= x_chrv_rec.end_date) OR
3646 (l_cle_end_date < x_chrv_rec.start_date) then
3647 l_clev_rec.end_date := x_chrv_rec.end_date;
3648 ElsIf (l_cle_end_date < x_chrv_rec.end_date)
3649 and (l_cle_end_date >= x_chrv_rec.start_date) then
3650 --get the dates from parent lines
3651 If nvl(l_parent_cle_end_date,OKL_API.G_MISS_DATE) = OKL_API.G_MISS_DATE then
3652 null;
3653 Else
3654 If trunc(l_clev_rec.end_date) = trunc(l_parent_cle_end_date) then
3655 --do not change the line date (do not stamp header date on line)
3656 null;
3657 Else
3658 --change line start date
3659 If trunc(l_parent_cle_end_date) > trunc(x_chrv_rec.end_date) then
3660 l_clev_rec.end_date := x_chrv_rec.end_date;
3661 Elsif trunc(l_parent_cle_end_date) <= trunc(x_chrv_rec.end_date) then
3662 l_clev_rec.end_date := l_parent_cle_end_date;
3663 End If;
3664 End If;
3665 End If;
3666 End If; --cle_end date < header end date
3667
3668 elsif l_parent_cle_id is null then
3669 null;
3670 end if;
3671
3672 Elsif l_rbk_cpy = 'N' then
3673 -------------------------------------------
3674 --start date logic for fee and service lines
3675 -------------------------------------------
3676 If (l_cle_start_date < x_chrv_rec.start_date) OR (l_cle_start_date > x_chrv_rec.end_date) then
3677 l_clev_rec.start_date := x_chrv_rec.start_date;
3678 ElsIf (l_cle_start_date >= x_chrv_rec.start_date) And (l_cle_start_date <= x_chrv_rec.end_date) then
3679 NULL;
3680 End If;
3681 --------------------------------------------
3682 --end of start date logic for fee and service
3683 -------------------------------------------
3684 ---------------------------------------------
3685 --end date logic for fee and service
3686 ---------------------------------------------
3687 If (l_cle_end_date > x_chrv_rec.end_date) OR (l_cle_end_date < x_chrv_rec.start_date) then
3688 l_clev_rec.end_date := x_chrv_rec.end_date;
3689 ElsIf (l_cle_end_date <= x_chrv_rec.end_date) and (l_cle_end_date >= x_chrv_rec.start_date) then
3690 NULL;
3691 End If;
3692 --------------------------------------------
3693 --end of end date logic for fee and service
3694 -------------------------------------------
3695
3696 End If;
3697
3698 elsif l_modfn_mode = 'L' then
3699 ---------------------------------------------
3700 --start date logic for fee and service lines
3701 ---------------------------------------------
3702 If (l_cle_start_date < x_chrv_rec.start_date) OR (l_cle_start_date > x_chrv_rec.end_date) then
3703 l_clev_rec.start_date := x_chrv_rec.start_date;
3704 ElsIf (l_cle_start_date >= x_chrv_rec.start_date) And (l_cle_start_date <= x_chrv_rec.end_date) then
3705 NULL;
3706 End If;
3707 --------------------------------------------
3708 --end of start date logic for fee and service
3709 -------------------------------------------
3710 ---------------------------------------------
3711 --end date logic for fee and service
3712 ---------------------------------------------
3713 If (l_cle_end_date > x_chrv_rec.end_date) OR (l_cle_end_date < x_chrv_rec.start_date) then
3714 l_clev_rec.end_date := x_chrv_rec.end_date;
3715 ElsIf (l_cle_end_date <= x_chrv_rec.end_date) and (l_cle_end_date >= x_chrv_rec.start_date) then
3716 NULL;
3717 End If;
3718 --------------------------------------------
3719 --end of end date logic for fee and service
3720 -------------------------------------------
3721 end if;
3722 /*---------------------end of new code--------------------*/
3723
3724 ----------------------------------------------------------------------------------------------
3725 --Bug#3143522 : Subsidy special logic for subsidy line which starts with the parent line but may end
3726 -- prior to contract/parent line end date based on maximum-term in subsidy setup
3727 ---------------------------------------------------------------------------------------------
3728 ElsIf nvl(l_lty_code,'XXX') = 'SUBSIDY' then
3729 -- follow the same logic for normal asset lines for start date
3730
3731 -----------------------------------------------------------------------------------
3732 -- start date logic for subsidy lines : exactly copied from above (for asset lines)
3733 -----------------------------------------------------------------------------------
3734 If l_modfn_mode = 'R' then
3735 --bug# 2821383
3736 l_rbk_cpy := 'N';
3737 l_rbk_cpy := Is_rebook_Copy(p_chr_id => x_chrv_rec.id);
3738 If l_rbk_cpy = 'Y' then
3739 If l_parent_cle_id is not null then
3740 If l_cle_start_date <= x_chrv_rec.start_date then
3741 l_clev_rec.start_date := x_chrv_rec.start_date;
3742 elsif l_cle_start_date > x_chrv_rec.start_date then
3743 --get the dates from parent lines
3744 Open parent_cle_csr(p_cle_id => l_parent_cle_id);
3745 Fetch parent_cle_csr into
3746 l_parent_cle_start_date,
3747 l_parent_cle_end_date;
3748 If parent_cle_csr%NOTFOUND then
3749 null;
3750 Else
3751 If trunc(l_clev_rec.start_date) = trunc(l_parent_cle_start_date) then
3752 --do not change the line date (do not stamp header date on line)
3753 null;
3754 Else
3755 --change line start date
3756 If trunc(l_parent_cle_start_date) <= trunc(x_chrv_rec.start_date) then
3757 l_clev_rec.start_date := x_chrv_rec.start_date;
3758 Elsif trunc(l_parent_cle_start_date) > trunc(x_chrv_rec.start_date) then
3759 l_clev_rec.start_date := l_parent_cle_start_date;
3760 End If;
3761 End If;
3762 End If;
3763 Close parent_cle_csr;
3764 End If; --cle_start date > header date
3765
3766 elsif l_parent_cle_id is null then
3767 null;
3768 end if;
3769 Elsif l_rbk_cpy = 'N' then
3770 If l_cle_start_date <= x_chrv_rec.start_date then
3771 l_clev_rec.start_date := x_chrv_rec.start_date;
3772 elsif l_cle_start_date > x_chrv_rec.start_date then
3773 null;
3774 end if;
3775 End If;
3776
3777 elsif l_modfn_mode = 'L' then
3778 l_clev_rec.start_date := x_chrv_rec.start_date;
3779 end if;
3780 ---------------------------------------------------
3781 --end of start date logic for subsidy lines
3782 ---------------------------------------------------
3783
3784 ---------------------------------------------------
3785 --start of end date logic for subsidy lines
3786 --------------------------------------------------
3787 l_max_subsidy_term := null;
3788 open l_sub_csr(p_cle_id => l_cle_id);
3789 fetch l_sub_csr into l_max_subsidy_term;
3790 If l_sub_csr%NOTFOUND then
3791 null;
3792 End If;
3793 close l_sub_csr;
3794 If nvl(l_max_subsidy_term,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM then
3795 l_clev_rec.end_date := x_chrv_rec.end_date;
3796 Elsif l_max_subsidy_term <= 0 then
3797 l_clev_rec.end_date := l_clev_rec.start_date;
3798 Elsif l_max_subsidy_term > 0 then
3799 l_clev_rec.end_date := add_months(l_clev_rec.start_date,l_max_subsidy_term) - 1;
3800 If l_clev_rec.end_date > x_chrv_rec.end_date then
3801 l_clev_rec.end_date := x_chrv_rec.end_date;
3802 End If;
3803 End If;
3804 ---------------------------------------------------
3805 --end of end date logic for subsidy lines
3806 ---------------------------------------------------
3807
3808 End If; --lty code not service fee or subsidy
3809
3810
3811 okl_okc_migration_pvt.update_contract_line(
3812 p_api_version => p_api_version,
3813 p_init_msg_list => p_init_msg_list,
3814 x_return_status => x_return_status,
3815 x_msg_count => x_msg_count,
3816 x_msg_data => x_msg_data,
3817 p_clev_rec => l_clev_rec,
3818 x_clev_rec => lx_clev_rec);
3819
3820 -- check return status
3821 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
3822 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3823 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
3824 raise OKL_API.G_EXCEPTION_ERROR;
3825 End If;
3826 End Loop;
3827 Close Cle_Csr;
3828 End Loop;
3829 Close top_cle_csr;
3830 Elsif l_modfn_mode = 'N' Then
3831 Null;
3832 End If;
3833
3834 -- Bug# 6438785
3835 -- When the contract start date is changed, update the
3836 -- start dates for all payments based on the new contract or
3837 -- line start dates
3838 IF ((l_chrv_rec.start_date <> l_orig_chr_rec.start_date) AND
3839 (l_chrv_rec.scs_code = 'LEASE') ) THEN
3840
3841 OKL_LA_PAYMENTS_PVT.update_pymt_start_date
3842 (p_api_version => p_api_version,
3843 p_init_msg_list => p_init_msg_list,
3844 x_return_status => x_return_status,
3845 x_msg_count => x_msg_count,
3846 x_msg_data => x_msg_data,
3847 p_chr_id => l_chrv_rec.id);
3848
3849 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
3850 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3851 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
3852 raise OKL_API.G_EXCEPTION_ERROR;
3853 End If;
3854
3855 END IF;
3856 -- Bug# 6438785
3857
3858 -- get id from OKC record
3859 l_khrv_rec.ID := x_chrv_rec.ID;
3860
3861 -- check whether the shadow is present
3862 open l_khrv_csr(l_khrv_rec.id);
3863 fetch l_khrv_csr into l_dummy_var;
3864 close l_khrv_csr;
3865
3866 -- call procedure in complex API
3867 -- if l_dummy_var is changed then the shadow is present
3868 -- and we need to update it, otherwise we need to create the shadow
3869 if (l_dummy_var = 'x') THEN
3870 OKL_KHR_PVT.Update_Row(
3871 p_api_version => p_api_version,
3872 p_init_msg_list => p_init_msg_list,
3873 x_return_status => x_return_status,
3874 x_msg_count => x_msg_count,
3875 x_msg_data => x_msg_data,
3876 p_khrv_rec => l_khrv_rec,
3877 x_khrv_rec => x_khrv_rec);
3878 else
3879 OKL_KHR_PVT.Insert_Row(
3880 p_api_version => p_api_version,
3881 p_init_msg_list => p_init_msg_list,
3882 x_return_status => x_return_status,
3883 x_msg_count => x_msg_count,
3884 x_msg_data => x_msg_data,
3885 p_khrv_rec => l_khrv_rec,
3886 x_khrv_rec => x_khrv_rec);
3887 end if;
3888
3889 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
3890 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3891 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
3892 raise OKL_API.G_EXCEPTION_ERROR;
3893 End If;
3894
3895 If p_edit_mode = 'Y' Then
3896 --Added for updating header status if required and cascading to lines
3897 If (x_khrv_rec.id is not null) OR (x_khrv_rec.id <> OKL_API.G_MISS_NUM) Then
3898 okl_contract_status_pub.cascade_lease_status_edit
3899 (p_api_version => p_api_version,
3900 p_init_msg_list => p_init_msg_list,
3901 x_return_status => x_return_status,
3902 x_msg_count => x_msg_count,
3903 x_msg_data => x_msg_data,
3904 p_chr_id => x_khrv_rec.id);
3905
3906 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
3907 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3908 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
3909 raise OKL_API.G_EXCEPTION_ERROR;
3910 End If;
3911 End If;
3912 End If;
3913
3914 -- 4722839. Create zero interest schedules for LOAN (FLOAT, CATCHUP/CLEANUP)
3915 -- And LOAN-REVOLVING (FLOAT).
3916
3917 OKL_K_RATE_PARAMS_PVT.get_product(
3918 p_api_version => p_api_version,
3919 p_init_msg_list => p_init_msg_list,
3920 x_return_status => x_return_status,
3921 x_msg_count => x_msg_count,
3922 x_msg_data => x_msg_data,
3923 p_khr_id => x_khrv_rec.ID,
3924 x_pdt_parameter_rec => l_pdt_parameter_rec);
3925
3926 l_interest_calculation_basis :=l_pdt_parameter_rec.interest_calculation_basis;
3927 l_revenue_recognition_method :=l_pdt_parameter_rec.revenue_recognition_method;
3928 l_deal_type := l_pdt_parameter_rec.deal_type;
3929
3930 --okl_debug_pub.logmessage('update_contract_header: l_deal_type=' || l_deal_type);
3931 --okl_debug_pub.logmessage('update_contract_header: l_interest_calculation_basis=' || l_interest_calculation_basis);
3932 IF (l_deal_type = 'LOAN' AND
3933 --l_interest_calculation_basis IN ('FLOAT', 'CATCHUP/CLEANUP')) OR
3934 l_interest_calculation_basis = 'FLOAT') OR
3935 (l_deal_type = 'LOAN-REVOLVING' AND
3936 l_interest_calculation_basis = 'FLOAT') THEN
3937 OKL_LA_PAYMENTS_PVT.VARIABLE_INTEREST_SCHEDULE (
3938 p_api_version => p_api_version,
3939 p_init_msg_list => p_init_msg_list,
3940 x_return_status => x_return_status,
3941 x_msg_count => x_msg_count,
3942 x_msg_data => x_msg_data,
3943 p_chr_id => l_khrv_rec.ID,
3944 x_rulv_tbl => x_rulv_tbl
3945 );
3946
3947 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
3948 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3949 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
3950 raise OKL_API.G_EXCEPTION_ERROR;
3951 End If;
3952
3953 END IF;
3954
3955 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
3956 x_msg_data => x_msg_data);
3957 EXCEPTION
3958 when OKL_API.G_EXCEPTION_ERROR then
3959 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3960 p_api_name => l_api_name,
3961 p_pkg_name => g_pkg_name,
3962 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
3963 x_msg_count => x_msg_count,
3964 x_msg_data => x_msg_data,
3965 p_api_type => g_api_type);
3966 if l_khrv_csr%ISOPEN then
3967 close l_khrv_csr;
3968 end if;
3969
3970 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
3971 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3972 p_api_name => l_api_name,
3973 p_pkg_name => g_pkg_name,
3974 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
3975 x_msg_count => x_msg_count,
3976 x_msg_data => x_msg_data,
3977 p_api_type => g_api_type);
3978 if l_khrv_csr%ISOPEN then
3979 close l_khrv_csr;
3980 end if;
3981
3982 when OTHERS then
3983 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3984 p_api_name => l_api_name,
3985 p_pkg_name => g_pkg_name,
3986 p_exc_name => 'OTHERS',
3987 x_msg_count => x_msg_count,
3988 x_msg_data => x_msg_data,
3989 p_api_type => g_api_type);
3990 if l_khrv_csr%ISOPEN then
3991 close l_khrv_csr;
3992 end if;
3993
3994 END update_contract_header;
3995
3996 -- Start of comments
3997 --
3998 -- Procedure Name : update_contract_header
3999 -- Description : updates contract header for shadowed contract will be called
4000 -- from updation of streams after stream generation
4001 -- This will not flip the contract status
4002 -- Business Rules :
4003 -- Parameters :
4004 -- Version : 1.0
4005 -- End of comments
4006 PROCEDURE update_contract_header(
4007 p_api_version IN NUMBER,
4008 p_init_msg_list IN VARCHAR2,
4009 x_return_status OUT NOCOPY VARCHAR2,
4010 x_msg_count OUT NOCOPY NUMBER,
4011 x_msg_data OUT NOCOPY VARCHAR2,
4012 p_restricted_update IN VARCHAR2,
4013 p_chrv_rec IN okl_okc_migration_pvt.chrv_rec_type,
4014 p_khrv_rec IN khrv_rec_type,
4015 x_chrv_rec OUT NOCOPY okl_okc_migration_pvt.chrv_rec_type,
4016 x_khrv_rec OUT NOCOPY khrv_rec_type) IS
4017
4018 l_chrv_rec okl_okc_migration_pvt.chrv_rec_type;
4019 l_khrv_rec khrv_rec_type;
4020
4021 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_CONTRACT_HEADER';
4022 l_api_version CONSTANT NUMBER := 1.0;
4023 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4024
4025
4026 BEGIN
4027
4028 -- call START_ACTIVITY to create savepoint, check compatibility
4029 -- and initialize message list
4030 l_return_status := OKL_API.START_ACTIVITY(
4031 p_api_name => l_api_name,
4032 p_pkg_name => g_pkg_name,
4033 p_init_msg_list => p_init_msg_list,
4034 l_api_version => l_api_version,
4035 p_api_version => p_api_version,
4036 p_api_type => g_api_type,
4037 x_return_status => x_return_status);
4038
4039 -- check if activity started successfully
4040 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4041 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4042 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
4043 raise OKL_API.G_EXCEPTION_ERROR;
4044 End If;
4045
4046 l_khrv_rec := p_khrv_rec;
4047 l_chrv_rec := p_chrv_rec;
4048
4049
4050 update_contract_header(
4051 p_api_version => p_api_version,
4052 p_init_msg_list => p_init_msg_list,
4053 x_return_status => x_return_status,
4054 x_msg_count => x_msg_count,
4055 x_msg_data => x_msg_data,
4056 p_restricted_update => p_restricted_update,
4057 p_chrv_rec => l_chrv_rec,
4058 p_khrv_rec => l_khrv_rec,
4059 p_edit_mode => 'Y',
4060 x_chrv_rec => x_chrv_rec,
4061 x_khrv_rec => x_khrv_rec
4062 );
4063
4064 -- check return status
4065 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
4066 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4067 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
4068 raise OKL_API.G_EXCEPTION_ERROR;
4069 End If;
4070
4071
4072 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
4073 x_msg_data => x_msg_data);
4074 EXCEPTION
4075 when OKL_API.G_EXCEPTION_ERROR then
4076 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4077 p_api_name => l_api_name,
4078 p_pkg_name => g_pkg_name,
4079 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
4080 x_msg_count => x_msg_count,
4081 x_msg_data => x_msg_data,
4082 p_api_type => g_api_type);
4083
4084 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
4085 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4086 p_api_name => l_api_name,
4087 p_pkg_name => g_pkg_name,
4088 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4089 x_msg_count => x_msg_count,
4090 x_msg_data => x_msg_data,
4091 p_api_type => g_api_type);
4092
4093 when OTHERS then
4094 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4095 p_api_name => l_api_name,
4096 p_pkg_name => g_pkg_name,
4097 p_exc_name => 'OTHERS',
4098 x_msg_count => x_msg_count,
4099 x_msg_data => x_msg_data,
4100 p_api_type => g_api_type);
4101
4102 END update_contract_header;
4103
4104
4105 -- Start of comments
4106 --
4107 -- Procedure Name : update_contract_header
4108 -- Description : creates contract header for shadowed contract
4109 -- Business Rules :
4110 -- Parameters :
4111 -- Version : 1.0
4112 -- End of comments
4113 PROCEDURE update_contract_header(
4114 p_api_version IN NUMBER,
4115 p_init_msg_list IN VARCHAR2,
4116 x_return_status OUT NOCOPY VARCHAR2,
4117 x_msg_count OUT NOCOPY NUMBER,
4118 x_msg_data OUT NOCOPY VARCHAR2,
4119 p_restricted_update IN VARCHAR2,
4120 p_chrv_tbl IN okl_okc_migration_pvt.chrv_tbl_type,
4121 p_khrv_tbl IN khrv_tbl_type,
4122 x_chrv_tbl OUT NOCOPY okl_okc_migration_pvt.chrv_tbl_type,
4123 x_khrv_tbl OUT NOCOPY khrv_tbl_type) IS
4124
4125 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_CONTRACT_HEADER';
4126 l_api_version CONSTANT NUMBER := 1.0;
4127 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4128 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4129 i NUMBER;
4130 l_khrv_tbl khrv_tbl_type := p_khrv_tbl;
4131 BEGIN
4132 -- call START_ACTIVITY to create savepoint, check compatibility
4133 -- and initialize message list
4134 l_return_status := OKL_API.START_ACTIVITY(
4135 p_api_name => l_api_name,
4136 p_pkg_name => g_pkg_name,
4137 p_init_msg_list => p_init_msg_list,
4138 l_api_version => l_api_version,
4139 p_api_version => p_api_version,
4140 p_api_type => g_api_type,
4141 x_return_status => x_return_status);
4142
4143 -- check if activity started successfully
4144 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4145 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4146 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
4147 raise OKL_API.G_EXCEPTION_ERROR;
4148
4149 End If;
4150
4151 If (p_chrv_tbl.COUNT > 0) Then
4152 i := p_chrv_tbl.FIRST;
4153 LOOP
4154 -- call procedure in complex API for a record
4155 update_contract_header(
4156 p_api_version => p_api_version,
4157 p_init_msg_list => p_init_msg_list,
4158 x_return_status => x_return_status,
4159 x_msg_count => x_msg_count,
4160 x_msg_data => x_msg_data,
4161 p_restricted_update => p_restricted_update,
4162 p_chrv_rec => p_chrv_tbl(i),
4163 p_khrv_rec => l_khrv_tbl(i),
4164 x_chrv_rec => x_chrv_tbl(i),
4165 x_khrv_rec => x_khrv_tbl(i));
4166
4167 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
4168 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
4169 l_overall_status := x_return_status;
4170 End If;
4171 End If;
4172
4173 EXIT WHEN (i = p_chrv_tbl.LAST);
4174 i := p_chrv_tbl.NEXT(i);
4175 END LOOP;
4176
4177 -- return overall status
4178 x_return_status := l_overall_status;
4179 End If;
4180
4181 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
4182 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4183 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
4184 raise OKL_API.G_EXCEPTION_ERROR;
4185 End If;
4186
4187 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
4188 x_msg_data => x_msg_data);
4189 EXCEPTION
4190 when OKL_API.G_EXCEPTION_ERROR then
4191 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4192 p_api_name => l_api_name,
4193 p_pkg_name => g_pkg_name,
4194 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
4195 x_msg_count => x_msg_count,
4196 x_msg_data => x_msg_data,
4197 p_api_type => g_api_type);
4198
4199 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
4200 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4201 p_api_name => l_api_name,
4202 p_pkg_name => g_pkg_name,
4203 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4204 x_msg_count => x_msg_count,
4205 x_msg_data => x_msg_data,
4206 p_api_type => g_api_type);
4207
4208 when OTHERS then
4209 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4210 p_api_name => l_api_name,
4211 p_pkg_name => g_pkg_name,
4212 p_exc_name => 'OTHERS',
4213 x_msg_count => x_msg_count,
4214 x_msg_data => x_msg_data,
4215 p_api_type => g_api_type);
4216
4217 END update_contract_header;
4218
4219
4220 -------------------------------------------------------------------------------------------------
4221 -- Start of Commnets
4222 -- Procedure Name : delete_contracte
4223 -- Description : delete of the contract
4224 -- Business Rules :
4225 -- Parameters :
4226 -- Version :
4227 -- End of Commnets
4228 PROCEDURE delete_contract(
4229 p_api_version IN NUMBER,
4230 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4231 x_return_status OUT NOCOPY VARCHAR2,
4232 x_msg_count OUT NOCOPY NUMBER,
4233 x_msg_data OUT NOCOPY VARCHAR2,
4234 p_contract_id IN okc_k_headers_b.id%TYPE) IS
4235
4236 SUBTYPE chrv_rec_type IS OKL_OKC_MIGRATION_PVT.CHRV_REC_TYPE;
4237 SUBTYPE khrv_rec_type IS OKL_CONTRACT_PUB.KHRV_REC_TYPE;
4238 G_TLS_TYPE OKC_LINE_STYLES_V.LSE_TYPE%TYPE := 'TLS';
4239 G_APP_NAME CONSTANT VARCHAR2(3) := OKL_API.G_APP_NAME;
4240 G_NO_MATCHING_RECORD CONSTANT VARCHAR2(200) := 'OKL_LLA_NO_MATCHING_RECORD';
4241 G_PKG_NAME CONSTANT VARCHAR2(200) := 'OKL_OPEN_INTERFACE_PVT';
4242 G_COL_NAME_TOKEN CONSTANT VARCHAR2(200) := OKL_API.G_COL_NAME_TOKEN;
4243 G_CANNOT_DELETE VARCHAR2(200) := 'OKC_CANNOT_DELETE';
4244 G_TABLE_NAME_TOKEN VARCHAR2(200) := 'TABLE_NAME';
4245 G_UNEXPECTED_ERROR CONSTANT VARCHAR2(200) := 'OKC_CONTRACT_UNEXPECTED_ERROR';
4246 G_SQLCODE_TOKEN VARCHAR2(200) := 'SQLcode';
4247 G_SQLERRM_TOKEN VARCHAR2(200) := 'SQLerrm';
4248
4249 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_CONTRACT';
4250 l_chrv_rec2 OKC_CONTRACT_PUB.chrv_rec_type;
4251 l_chrv_rec chrv_rec_type;
4252 l_khrv_rec khrv_rec_type;
4253 l_tcnv_rec OKL_TRX_CONTRACTS_PVT.tcnv_rec_type;
4254 lx_tcnv_rec OKL_TRX_CONTRACTS_PVT.tcnv_rec_type;
4255 l_stmv_rec OKL_STREAMS_PUB.stmv_rec_type;
4256 r_tcnv_rec OKL_TRX_CONTRACTS_PVT.tcnv_rec_type;
4257 l_sts_code OKC_K_HEADERS_B.STS_CODE%TYPE;
4258
4259 l_orig_system_source_code okc_k_headers_b.orig_system_source_code%type;
4260 l_contract_number okc_k_headers_b.contract_number%type;
4261 l_funding_count number := 0;
4262 l_chr_ever_booked varchar2(1);
4263 l_chr_invoices varchar2(1);
4264 l_receipts_csr number;
4265 l_authoring_org_id NUMBER; --CDUBEY l_authoring_org_id added for MOAC
4266
4267 CURSOR check_receipts_csr(p_id number) IS
4268 SELECT 'Y'
4269 FROM okl_trx_ar_invoices_b
4270 WHERE khr_id = p_id
4271 AND trx_status_code <> 'ERROR'
4272 AND rownum < 2;
4273
4274 CURSOR Ever_Booked_crs(p_id number) IS
4275 SELECT 'Y'
4276 FROM okc_k_headers_bh chrh,
4277 okc_k_headers_b chr
4278 WHERE chrh.contract_number = chr.contract_number
4279 AND chr.id = p_id
4280 AND chrh.sts_code = G_OKL_BOOKED_STS_CODE
4281 AND rownum < 2;
4282
4283 CURSOR c_get_k_stream(p_khr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
4284 SELECT id stm_id
4285 FROM OKL_STREAMS
4286 WHERE khr_id = p_khr_id;
4287
4288 CURSOR c_get_je_trans(p_khr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
4289 SELECT id trx_id
4290 FROM OKL_TRX_CONTRACTS
4291 WHERE khr_id = p_khr_id
4292 AND representation_type = 'PRIMARY';
4293
4294 CURSOR c_get_source_id(p_khr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
4295 SELECT id
4296 FROM OKL_TXL_CNTRCT_LNS
4297 WHERE khr_id = p_khr_id;
4298
4299 CURSOR c_get_k_top_line(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
4300 SELECT cle.id top_line
4301 FROM okc_line_styles_b lse,
4302 okc_k_lines_b cle
4303 WHERE cle.dnz_chr_id = p_dnz_chr_id
4304 AND cle.cle_id IS NULL
4305 AND cle.chr_id = cle.dnz_chr_id
4306 AND cle.lse_id = lse.id
4307 AND lse.lse_parent_id IS NULL
4308 AND lse.lse_type = G_TLS_TYPE;
4309
4310 -- To get the orig system id for p_chr_id
4311 CURSOR get_sts_code(p_chr_id OKC_K_HEADERS_B.ID%TYPE) IS
4312 SELECT sts_code, orig_system_source_code, contract_number,authoring_org_id --CDUBEY authoring_org_id added for MOAC
4313 FROM okc_k_headers_b
4314 WHERE id = p_chr_id;
4315
4316
4317 FUNCTION DELETE_GOVERNANCES( p_chr_id number) Return varchar2 IS
4318 l_return_status varchar2(30);
4319 l_gvev_tbl_in okc_contract_pub.gvev_tbl_type;
4320
4321 CURSOR l_gvev_csr (p_id IN NUMBER) IS
4322 SELECT ID
4323 FROM OKC_GOVERNANCES_V
4324 WHERE dnz_chr_id = p_id;
4325
4326 Begin
4327
4328 l_return_status := OKC_API.G_RET_STS_SUCCESS;
4329
4330 FOR rec IN l_gvev_csr(p_chr_id)
4331 LOOP
4332
4333 l_gvev_tbl_in(1).ID := rec.id;
4334
4335 okc_contract_pub.delete_governance (
4336 p_api_version => p_api_version,
4337 p_init_msg_list => p_init_msg_list,
4338 x_return_status => l_return_status,
4339 x_msg_count => x_msg_count,
4340 x_msg_data => x_msg_data,
4341 p_gvev_tbl => l_gvev_tbl_in
4342 );
4343
4344 If (l_return_status <> 'S') Then
4345 OKC_API.SET_MESSAGE(p_app_name => G_APP_NAME,
4346 p_msg_name => G_CANNOT_DELETE,
4347 p_token1 => G_TABLE_NAME_TOKEN,
4348 p_token1_value => 'Governances',
4349 p_token2 => G_SQLCODE_TOKEN,
4350 p_token2_value => sqlcode,
4351 p_token3 => G_SQLERRM_TOKEN,
4352 p_token3_value => sqlerrm);
4353 Exit;
4354 End If;
4355 END LOOP;
4356 return l_return_status;
4357 EXCEPTION
4358 -- other appropriate handlers
4359 When others then
4360 -- store SQL error message on message stack
4361 OKC_API.SET_MESSAGE(p_app_name => G_APP_NAME,
4362 p_msg_name => G_UNEXPECTED_ERROR,
4363 p_token1 => G_SQLCODE_TOKEN,
4364 p_token1_value => sqlcode,
4365 p_token2 => G_SQLERRM_TOKEN,
4366 p_token2_value => sqlerrm);
4367
4368 -- notify UNEXPECTED error
4369 l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4370 return l_return_status;
4371 END DELETE_GOVERNANCES;
4372
4373 FUNCTION DELETE_RULE_GROUPS( p_chr_id number) Return varchar2 IS
4374
4375 l_return_status varchar2(30);
4376 l_rgpv_tbl_in OKC_RULE_PUB.rgpv_tbl_type;
4377
4378 CURSOR l_rgpv_csr (p_id IN NUMBER) IS
4379 SELECT ID
4380 FROM OKC_RULE_GROUPS_V
4381 WHERE dnz_chr_id = p_id;
4382
4383 Begin
4384
4385 l_return_status := OKC_API.G_RET_STS_SUCCESS;
4386
4387 FOR rec IN l_rgpv_csr(p_chr_id)
4388 LOOP
4389 l_rgpv_tbl_in(1).ID := rec.id;
4390
4391 OKC_RULE_PUB.delete_rule_group (
4392 p_api_version => p_api_version,
4393 p_init_msg_list => p_init_msg_list,
4394 x_return_status => l_return_status,
4395 x_msg_count => x_msg_count,
4396 x_msg_data => x_msg_data,
4397 p_rgpv_tbl => l_rgpv_tbl_in
4398 );
4399
4400 If (l_return_status <> 'S') Then
4401 OKC_API.SET_MESSAGE(p_app_name => G_APP_NAME,
4402 p_msg_name => G_CANNOT_DELETE,
4403 p_token1 => G_TABLE_NAME_TOKEN,
4404 p_token1_value => 'Rule Groups',
4405 p_token2 => G_SQLCODE_TOKEN,
4406 p_token2_value => sqlcode,
4407 p_token3 => G_SQLERRM_TOKEN,
4408 p_token3_value => sqlerrm);
4409 Exit;
4410 End If;
4411 END LOOP;
4412 return l_return_status;
4413 EXCEPTION
4414 -- other appropriate handlers
4415 When others then
4416 -- store SQL error message on message stack
4417 OKC_API.SET_MESSAGE(p_app_name => G_APP_NAME,
4418 p_msg_name => G_UNEXPECTED_ERROR,
4419 p_token1 => G_SQLCODE_TOKEN,
4420 p_token1_value => sqlcode,
4421 p_token2 => G_SQLERRM_TOKEN,
4422 p_token2_value => sqlerrm);
4423
4424 -- notify UNEXPECTED error
4425 l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4426 return l_return_status;
4427 END DELETE_RULE_GROUPS;
4428
4429 FUNCTION DELETE_K_PARTY_ROLES( p_chr_id number) Return varchar2 IS
4430
4431 --Bug# 4558486
4432 l_cplv_tbl_in OKL_OKC_MIGRATION_PVT.cplv_tbl_type;
4433 l_return_status varchar2(30);
4434
4435 CURSOR l_cplv_csr (p_id IN NUMBER) IS
4436 SELECT ID
4437 FROM OKC_K_PARTY_ROLES_V
4438 WHERE dnz_chr_id = p_id;
4439
4440 --Bug# 4558486
4441 l_kplv_tbl_in OKL_K_PARTY_ROLES_PVT.kplv_tbl_type;
4442 Begin
4443
4444 l_return_status := OKC_API.G_RET_STS_SUCCESS;
4445
4446 FOR rec IN l_cplv_csr(p_chr_id)
4447 LOOP
4448 l_cplv_tbl_in(1).ID := rec.id;
4449
4450 --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
4451 -- to delete records in tables
4452 -- okc_k_party_roles_b and okl_k_party_roles
4453
4454 l_kplv_tbl_in(1).ID := l_cplv_tbl_in(1).ID;
4455 OKL_K_PARTY_ROLES_PVT.DELETE_K_PARTY_ROLE (
4456 p_api_version => p_api_version,
4457 p_init_msg_list => p_init_msg_list,
4458 x_return_status => x_return_status,
4459 x_msg_count => x_msg_count,
4460 x_msg_data => x_msg_data,
4461 p_cplv_tbl => l_cplv_tbl_in,
4462 p_kplv_tbl => l_kplv_tbl_in
4463 );
4464
4465 If (l_return_status <> 'S') Then
4466 OKC_API.SET_MESSAGE(p_app_name => G_APP_NAME,
4467 p_msg_name => G_CANNOT_DELETE,
4468 p_token1 => G_TABLE_NAME_TOKEN,
4469 p_token1_value => 'Contract Party Roles',
4470 p_token2 => G_SQLCODE_TOKEN,
4471 p_token2_value => sqlcode,
4472 p_token3 => G_SQLERRM_TOKEN,
4473 p_token3_value => sqlerrm);
4474 Exit;
4475 End If;
4476 END LOOP;
4477 return l_return_status;
4478 EXCEPTION
4479 -- other appropriate handlers
4480 When others then
4481 -- store SQL error message on message stack
4482 OKC_API.SET_MESSAGE(p_app_name => G_APP_NAME,
4483 p_msg_name => G_UNEXPECTED_ERROR,
4484 p_token1 => G_SQLCODE_TOKEN,
4485 p_token1_value => sqlcode,
4486 p_token2 => G_SQLERRM_TOKEN,
4487 p_token2_value => sqlerrm);
4488
4489 -- notify UNEXPECTED error
4490 l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4491 return l_return_status;
4492 END DELETE_K_PARTY_ROLES;
4493
4494 FUNCTION DELETE_CONTACTS( p_chr_id number) Return varchar2 IS
4495
4496 l_ctcv_tbl_in OKC_CONTRACT_PARTY_PUB.ctcv_tbl_type;
4497 l_return_status varchar2(30);
4498
4499 CURSOR l_ctc_csr (p_id IN NUMBER) IS
4500 SELECT ID
4501 FROM OKC_CONTACTS_V
4502 WHERE dnz_chr_id = p_id;
4503
4504 Begin
4505 l_return_status := OKC_API.G_RET_STS_SUCCESS;
4506
4507 FOR rec IN l_ctc_csr(p_chr_id)
4508 LOOP
4509
4510 l_ctcv_tbl_in(1).ID := rec.id;
4511
4512 OKC_CONTRACT_PARTY_PUB.Delete_Contact(
4513 p_api_version => p_api_version,
4514 p_init_msg_list => p_init_msg_list,
4515 x_return_status => x_return_status,
4516 x_msg_count => x_msg_count,
4517 x_msg_data => x_msg_data,
4518 p_ctcv_tbl => l_ctcv_tbl_in);
4519
4520 If (l_return_status <> 'S') Then
4521 OKC_API.SET_MESSAGE(p_app_name => G_APP_NAME,
4522 p_msg_name => G_CANNOT_DELETE,
4523 p_token1 => G_TABLE_NAME_TOKEN,
4524 p_token1_value => 'Contacts',
4525 p_token2 => G_SQLCODE_TOKEN,
4526 p_token2_value => sqlcode,
4527 p_token3 => G_SQLERRM_TOKEN,
4528 p_token3_value => sqlerrm);
4529 Exit;
4530 End If;
4531 END LOOP;
4532 return l_return_status;
4533 EXCEPTION
4534 -- other appropriate handlers
4535 When others then
4536 -- store SQL error message on message stack
4537 OKC_API.SET_MESSAGE(p_app_name => G_APP_NAME,
4538 p_msg_name => G_UNEXPECTED_ERROR,
4539 p_token1 => G_SQLCODE_TOKEN,
4540 p_token1_value => sqlcode,
4541 p_token2 => G_SQLERRM_TOKEN,
4542 p_token2_value => sqlerrm);
4543
4544 -- notify UNEXPECTED error
4545 l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4546 return l_return_status;
4547 END DELETE_CONTACTS;
4548
4549 FUNCTION DELETE_RG_PARTY_ROLES( p_chr_id number) Return varchar2 IS
4550
4551 l_rmpv_tbl_in OKC_RULE_PUB.rmpv_tbl_type;
4552 l_return_status varchar2(30);
4553
4554 CURSOR l_rmpv_csr (p_id IN NUMBER) IS
4555 SELECT ID
4556 FROM OKC_RG_PARTY_ROLES_V
4557 WHERE dnz_chr_id = p_id;
4558
4559 Begin
4560
4561 l_return_status := OKC_API.G_RET_STS_SUCCESS;
4562
4563 FOR rec IN l_rmpv_csr(p_chr_id)
4564 LOOP
4565 l_rmpv_tbl_in(1).ID := rec.id;
4566
4567 OKC_RULE_PUB.delete_rg_mode_pty_role (
4568 p_api_version => p_api_version,
4569 p_init_msg_list => p_init_msg_list,
4570 x_return_status => x_return_status,
4571 x_msg_count => x_msg_count,
4572 x_msg_data => x_msg_data,
4573 p_rmpv_tbl => l_rmpv_tbl_in
4574 );
4575
4576 If (l_return_status <> 'S') Then
4577 OKC_API.SET_MESSAGE(p_app_name => G_APP_NAME,
4578 p_msg_name => G_CANNOT_DELETE,
4579 p_token1 => G_TABLE_NAME_TOKEN,
4580 p_token1_value => 'Rule Group Party Roles',
4581 p_token2 => G_SQLCODE_TOKEN,
4582 p_token2_value => sqlcode,
4583 p_token3 => G_SQLERRM_TOKEN,
4584 p_token3_value => sqlerrm);
4585 Exit;
4586 End If;
4587 END LOOP;
4588 return l_return_status;
4589 EXCEPTION
4590 -- other appropriate handlers
4591 When others then
4592 -- store SQL error message on message stack
4593 OKC_API.SET_MESSAGE(p_app_name => G_APP_NAME,
4594 p_msg_name => G_UNEXPECTED_ERROR,
4595 p_token1 => G_SQLCODE_TOKEN,
4596 p_token1_value => sqlcode,
4597 p_token2 => G_SQLERRM_TOKEN,
4598 p_token2_value => sqlerrm);
4599
4600 -- notify UNEXPECTED error
4601 l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4602 return l_return_status;
4603 END DELETE_RG_PARTY_ROLES;
4604
4605
4606 BEGIN
4607 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4608 -- Call start_activity to create savepoint, check compatibility
4609 -- and initialize message list
4610 x_return_status := OKL_API.START_ACTIVITY (
4611 l_api_name
4612 ,p_init_msg_list
4613 ,'_PVT'
4614 ,x_return_status);
4615 -- Check if activity started successfully
4616 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4617 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4618 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4619 RAISE OKL_API.G_EXCEPTION_ERROR;
4620 END IF;
4621 -- Get the Orig system id1
4622 OPEN get_sts_code(p_chr_id => p_contract_id);
4623 FETCH get_sts_code INTO l_sts_code,
4624 l_orig_system_source_code,
4625 l_contract_number,
4626 l_authoring_org_id; --CDUBEY l_authoring_org_id added for MOAC
4627 IF get_sts_code%NOTFOUND THEN
4628 OKL_API.set_message(p_app_name => G_APP_NAME,
4629 p_msg_name => G_NO_MATCHING_RECORD,
4630 p_token1 => G_COL_NAME_TOKEN,
4631 p_token1_value => 'p_chr_id');
4632 x_return_status := OKL_API.G_RET_STS_ERROR;
4633 RAISE OKL_API.G_EXCEPTION_ERROR;
4634 END IF;
4635 CLOSE get_sts_code;
4636
4637 -- Check rebook copy contract
4638 if (nvl(l_orig_system_source_code, 'N') = 'OKL_REBOOK') then
4639 OKL_API.set_message(p_app_name => G_APP_NAME,
4640 p_msg_name => G_DELETE_CONT_RBK_ERROR,
4641 p_token1 => 'CONTRACT_NUMBER',
4642 p_token1_value => l_contract_number);
4643 x_return_status := OKL_API.G_RET_STS_ERROR;
4644 RAISE OKL_API.G_EXCEPTION_ERROR;
4645 end if;
4646
4647 -- Check if funding txn exists
4648 l_funding_count := 0;
4649 -- sjalasut, added okl_txl_ap_inv_lns_all_b as part of OKLR12B disbursements project
4650 -- also changed the reference of okl_trx_ap_invoices_v to okl_trx_ap_invoices_b
4651 select count(1) into l_funding_count
4652 from okl_trx_ap_invoices_b a
4653 ,okl_txl_ap_inv_lns_all_b b
4654 where a.id = b.tap_id
4655 and b.khr_id = p_contract_id
4656 and a.funding_type_code is not null
4657 and rownum < 2;
4658
4659 if (l_funding_count > 0) then
4660 OKL_API.set_message(p_app_name => G_APP_NAME,
4661 p_msg_name => G_DELETE_CONT_FUND_ERROR,
4662 p_token1 => 'CONTRACT_NUMBER',
4663 p_token1_value => l_contract_number);
4664 x_return_status := OKL_API.G_RET_STS_ERROR;
4665 RAISE OKL_API.G_EXCEPTION_ERROR;
4666 end if;
4667
4668 --check if contract was ever booked
4669 l_chr_ever_booked := 'N';
4670 Open Ever_Booked_crs(p_id => p_contract_id);
4671 Fetch Ever_Booked_crs into l_chr_ever_booked;
4672
4673 Close Ever_Booked_crs;
4674
4675 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4676 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_chr_ever_booked=' || l_chr_ever_booked);
4677 END IF;
4678 If nvl(l_chr_ever_booked, 'N') = 'Y' Then
4679 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
4680 p_msg_name => G_PAST_BOOKED_KLE_DELETE);
4681 x_return_status := OKL_API.G_RET_STS_ERROR;
4682 Raise OKL_API.G_EXCEPTION_ERROR;
4683 End If;
4684
4685 --check if contract has receivables invoices
4686 l_chr_invoices := 'N';
4687 Open check_receipts_csr(p_id => p_contract_id);
4688 Fetch check_receipts_csr into l_chr_invoices;
4689 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4690 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'In okl_contract_pvt.delete_contract: ' || p_contract_id || ':' || l_chr_invoices);
4691 END IF;
4692
4693 Close check_receipts_csr;
4694
4695 If nvl(l_chr_invoices, 'N') = 'Y' Then
4696 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
4697 p_msg_name => G_DELETE_CONT_RCPT_ERROR,
4698 p_token1 => 'CONTRACT_NUMBER',
4699 p_token1_value => l_contract_number);
4700 x_return_status := OKL_API.G_RET_STS_ERROR;
4701 RAISE OKL_API.G_EXCEPTION_ERROR;
4702 End If;
4703
4704 --debug_message('l_sts_code=' || l_sts_code);
4705 if l_sts_code not in ('NEW', 'INCOMPLETE', 'PASSED', 'COMPLETE', 'APPROVED', 'PENDING_APPROVAL') then
4706 OKL_API.set_message(p_app_name => G_APP_NAME,
4707 p_msg_name => G_DELETE_CONT_ERROR,
4708 p_token1 => 'CONTRACT_NUMBER',
4709 p_token1_value => l_contract_number,
4710 p_token2 => 'STATUS',
4711 p_token2_value => l_sts_code);
4712 x_return_status := OKL_API.G_RET_STS_ERROR;
4713 RAISE OKL_API.G_EXCEPTION_ERROR;
4714 end if;
4715
4716 -- Deleting the Draft journal Entries
4717 FOR r_get_source_id IN c_get_source_id(p_khr_id => p_contract_id) LOOP
4718 OKL_ACCOUNT_DIST_PUB.DELETE_ACCT_ENTRIES(
4719 p_api_version => p_api_version,
4720 p_init_msg_list => p_init_msg_list,
4721 x_return_status => x_return_status,
4722 x_msg_count => x_msg_count,
4723 x_msg_data => x_msg_data,
4724 p_source_id => r_get_source_id.id,
4725 p_source_table => 'OKL_TXL_CNTRCT_LNS');
4726 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4727 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4728 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4729 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4730 END IF;
4731 END LOOP;
4732 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4733 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4734 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4735 RAISE OKL_API.G_EXCEPTION_ERROR;
4736 END IF;
4737 -- Deleting the transctions of the journal Entries
4738 FOR r_get_je_trans IN c_get_je_trans(p_khr_id => p_contract_id) LOOP
4739 r_tcnv_rec.id := r_get_je_trans.trx_id;
4740 OKL_TRX_CONTRACTS_PUB.delete_trx_contracts(
4741 p_api_version => p_api_version,
4742 p_init_msg_list => p_init_msg_list,
4743 x_return_status => x_return_status,
4744 x_msg_count => x_msg_count,
4745 x_msg_data => x_msg_data,
4746 p_tcnv_rec => r_tcnv_rec);
4747 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4748 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4749 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4750 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4751 END IF;
4752 END LOOP;
4753 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4754 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4755 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4756 RAISE OKL_API.G_EXCEPTION_ERROR;
4757 END IF;
4758 -- Delete the streams for the contract
4759 FOR r_get_k_stream IN c_get_k_stream(p_khr_id => p_contract_id) LOOP
4760 l_stmv_rec.id := r_get_k_stream.stm_id;
4761 OKL_STREAMS_PUB.delete_streams(
4762 p_api_version => p_api_version,
4763 p_init_msg_list => p_init_msg_list,
4764 x_return_status => x_return_status,
4765 x_msg_count => x_msg_count,
4766 x_msg_data => x_msg_data,
4767 p_stmv_rec => l_stmv_rec);
4768 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4769 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4770 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4771 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4772 END IF;
4773 END LOOP;
4774 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4775 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4776 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4777 RAISE OKL_API.G_EXCEPTION_ERROR;
4778 END IF;
4779 -- Delete the contract lines
4780 FOR r_get_k_top_line IN c_get_k_top_line(p_dnz_chr_id => p_contract_id) LOOP
4781 OKL_CONTRACT_PUB.delete_contract_line(
4782 p_api_version => p_api_version,
4783 p_init_msg_list => p_init_msg_list,
4784 x_return_status => x_return_status,
4785 x_msg_count => x_msg_count,
4786 x_msg_data => x_msg_data,
4787 p_line_id => r_get_k_top_line.top_line);
4788 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4789 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4790 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4791 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4792 END IF;
4793 END LOOP;
4794 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4795 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4796 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4797 RAISE OKL_API.G_EXCEPTION_ERROR;
4798 END IF;
4799
4800 OKC_K_HISTORY_PUB.delete_all_rows(
4801 p_api_version => p_api_version,
4802 p_init_msg_list => p_init_msg_list,
4803 x_return_status => x_return_status,
4804 x_msg_count => x_msg_count,
4805 x_msg_data => x_msg_data,
4806 p_chr_id => p_contract_id);
4807 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4808 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4809 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4810 RAISE OKL_API.G_EXCEPTION_ERROR;
4811 END IF;
4812
4813 x_return_status := DELETE_GOVERNANCES(p_contract_id);
4814 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4815 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4816 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4817 RAISE OKL_API.G_EXCEPTION_ERROR;
4818 END IF;
4819
4820 x_return_status := DELETE_RULE_GROUPS(p_contract_id);
4821 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4822 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4823 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4824 RAISE OKL_API.G_EXCEPTION_ERROR;
4825 END IF;
4826
4827 x_return_status := DELETE_CONTACTS(p_contract_id);
4828 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4829 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4830 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4831 RAISE OKL_API.G_EXCEPTION_ERROR;
4832 END IF;
4833
4834 x_return_status := DELETE_K_PARTY_ROLES(p_contract_id);
4835 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4836 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4837 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4838 RAISE OKL_API.G_EXCEPTION_ERROR;
4839 END IF;
4840
4841 x_return_status := DELETE_RG_PARTY_ROLES(p_contract_id);
4842 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4843 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4844 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4845 RAISE OKL_API.G_EXCEPTION_ERROR;
4846 END IF;
4847
4848 DELETE OKL_K_RATE_PARAMS
4849 WHERE KHR_ID = p_contract_id;
4850
4851 -- Now the Delete the Header
4852
4853 l_chrv_rec.id := p_contract_id;
4854 l_chrv_rec.authoring_org_id :=l_authoring_org_id; --CDUBEY added for MOAC
4855 l_khrv_rec.id := p_contract_id;
4856
4857
4858
4859 OKL_CONTRACT_PUB.delete_contract_header(
4860 p_api_version => p_api_version,
4861 p_init_msg_list => p_init_msg_list,
4862 x_return_status => x_return_status,
4863 x_msg_count => x_msg_count,
4864 x_msg_data => x_msg_data,
4865 p_chrv_rec => l_chrv_rec,
4866 p_khrv_rec => l_khrv_rec);
4867 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4868 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4869 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4870 RAISE OKL_API.G_EXCEPTION_ERROR;
4871 END IF;
4872
4873 OKL_API.END_ACTIVITY (x_msg_count,
4874 x_msg_data );
4875 -- since we need to do this beacuse we need to delete to the contract
4876 --COMMIT;
4877 EXCEPTION
4878 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4879 IF c_get_k_top_line%ISOPEN THEN
4880 CLOSE c_get_k_top_line;
4881 END IF;
4882 IF get_sts_code%ISOPEN THEN
4883 CLOSE get_sts_code;
4884 END IF;
4885
4886 IF c_get_k_stream%ISOPEN THEN
4887 CLOSE c_get_k_stream;
4888 END IF;
4889 IF c_get_je_trans%ISOPEN THEN
4890 CLOSE c_get_je_trans;
4891 END IF;
4892 IF c_get_source_id%ISOPEN THEN
4893 CLOSE c_get_source_id;
4894 END IF;
4895 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4896 l_api_name,
4897 G_PKG_NAME,
4898 'OKL_API.G_RET_STS_ERROR',
4899 x_msg_count,
4900 x_msg_data,
4901 '_PVT');
4902 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4903 IF c_get_k_top_line%ISOPEN THEN
4904 CLOSE c_get_k_top_line;
4905 END IF;
4906 IF get_sts_code%ISOPEN THEN
4907 CLOSE get_sts_code;
4908 END IF;
4909
4910 IF c_get_k_stream%ISOPEN THEN
4911 CLOSE c_get_k_stream;
4912 END IF;
4913 IF c_get_je_trans%ISOPEN THEN
4914 CLOSE c_get_je_trans;
4915 END IF;
4916 IF c_get_source_id%ISOPEN THEN
4917 CLOSE c_get_source_id;
4918 END IF;
4919 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4920 l_api_name,
4921 G_PKG_NAME,
4922 'OKL_API.G_RET_STS_UNEXP_ERROR',
4923 x_msg_count,
4924 x_msg_data,
4925 '_PVT');
4926 WHEN OTHERS THEN
4927 IF c_get_k_top_line%ISOPEN THEN
4928 CLOSE c_get_k_top_line;
4929 END IF;
4930 IF get_sts_code%ISOPEN THEN
4931 CLOSE get_sts_code;
4932 END IF;
4933
4934 IF c_get_k_stream%ISOPEN THEN
4935 CLOSE c_get_k_stream;
4936 END IF;
4937 IF c_get_je_trans%ISOPEN THEN
4938 CLOSE c_get_je_trans;
4939 END IF;
4940 IF c_get_source_id%ISOPEN THEN
4941 CLOSE c_get_source_id;
4942 END IF;
4943 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4944 l_api_name,
4945 G_PKG_NAME,
4946 'OTHERS',
4947 x_msg_count,
4948 x_msg_data,
4949 '_PVT');
4950 END delete_contract;
4951
4952 -- Start of comments
4953 --
4954 -- Procedure Name : delete_contract_header
4955 -- Description : deletes contract header for shadowed contract
4956 -- Business Rules :
4957 -- Parameters :
4958 -- Version : 1.0
4959 -- End of comments
4960 PROCEDURE delete_contract_header(
4961 p_api_version IN NUMBER,
4962 p_init_msg_list IN VARCHAR2,
4963 x_return_status OUT NOCOPY VARCHAR2,
4964 x_msg_count OUT NOCOPY NUMBER,
4965 x_msg_data OUT NOCOPY VARCHAR2,
4966 p_chrv_rec IN okl_okc_migration_pvt.chrv_rec_type,
4967 p_khrv_rec IN khrv_rec_type) IS
4968
4969 l_chrv_rec okl_okc_migration_pvt.chrv_rec_type;
4970 l_khrv_rec khrv_rec_type;
4971
4972 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_CONTRACT_HEADER';
4973 l_api_version CONSTANT NUMBER := 1.0;
4974 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4975 BEGIN
4976
4977 -- call START_ACTIVITY to create savepoint, check compatibility
4978 -- and initialize message list
4979 l_return_status := OKL_API.START_ACTIVITY(
4980 p_api_name => l_api_name,
4981 p_pkg_name => g_pkg_name,
4982 p_init_msg_list => p_init_msg_list,
4983 l_api_version => l_api_version,
4984 p_api_version => p_api_version,
4985 p_api_type => g_api_type,
4986 x_return_status => x_return_status);
4987
4988 -- check if activity started successfully
4989 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
4990 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4991 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
4992 raise OKL_API.G_EXCEPTION_ERROR;
4993 End If;
4994
4995 l_khrv_rec := p_khrv_rec;
4996 l_chrv_rec := p_chrv_rec;
4997
4998 --
4999 -- set okc context before API call
5000 -- msamoyle: check whether we need to call this method here or in PUB or in processing
5001
5002 OKL_CONTEXT.SET_OKC_ORG_CONTEXT(l_chrv_rec.authoring_org_id,l_chrv_rec.inv_organization_id);
5003
5004
5005 --
5006 -- call procedure in complex API
5007 --
5008 okl_okc_migration_pvt.delete_contract_header(
5009 p_api_version => p_api_version,
5010 p_init_msg_list => p_init_msg_list,
5011 x_return_status => x_return_status,
5012 x_msg_count => x_msg_count,
5013 x_msg_data => x_msg_data,
5014 p_chrv_rec => l_chrv_rec);
5015
5016 -- check return status
5017 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
5018 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5019 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
5020 raise OKL_API.G_EXCEPTION_ERROR;
5021 End If;
5022
5023 -- call procedure in complex API
5024 OKL_KHR_PVT.Delete_Row(
5025 p_api_version => p_api_version,
5026 p_init_msg_list => p_init_msg_list,
5027 x_return_status => x_return_status,
5028 x_msg_count => x_msg_count,
5029 x_msg_data => x_msg_data,
5030 p_khrv_rec => p_khrv_rec);
5031
5032 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
5033 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5034 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
5035 raise OKL_API.G_EXCEPTION_ERROR;
5036 End If;
5037
5038 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5039 x_msg_data => x_msg_data);
5040 EXCEPTION
5041 when OKL_API.G_EXCEPTION_ERROR then
5042 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5043 p_api_name => l_api_name,
5044 p_pkg_name => g_pkg_name,
5045 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5046 x_msg_count => x_msg_count,
5047 x_msg_data => x_msg_data,
5048 p_api_type => g_api_type);
5049
5050 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5051 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5052 p_api_name => l_api_name,
5053 p_pkg_name => g_pkg_name,
5054 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5055 x_msg_count => x_msg_count,
5056 x_msg_data => x_msg_data,
5057 p_api_type => g_api_type);
5058
5059 when OTHERS then
5060 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5061 p_api_name => l_api_name,
5062 p_pkg_name => g_pkg_name,
5063 p_exc_name => 'OTHERS',
5064 x_msg_count => x_msg_count,
5065 x_msg_data => x_msg_data,
5066 p_api_type => g_api_type);
5067 END delete_contract_header;
5068
5069
5070 -- Start of comments
5071 --
5072 -- Procedure Name : delete_contract_header
5073 -- Description : deletes contract header for shadowed contract
5074 -- Business Rules :
5075 -- Parameters :
5076 -- Version : 1.0
5077 -- End of comments
5078 PROCEDURE delete_contract_header(
5079 p_api_version IN NUMBER,
5080 p_init_msg_list IN VARCHAR2,
5081 x_return_status OUT NOCOPY VARCHAR2,
5082 x_msg_count OUT NOCOPY NUMBER,
5083 x_msg_data OUT NOCOPY VARCHAR2,
5084 p_chrv_tbl IN okl_okc_migration_pvt.chrv_tbl_type,
5085 p_khrv_tbl IN khrv_tbl_type) IS
5086
5087 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_CONTRACT_HEADER';
5088 l_api_version CONSTANT NUMBER := 1.0;
5089 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5090 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5091 i NUMBER;
5092 l_khrv_tbl khrv_tbl_type := p_khrv_tbl;
5093 BEGIN
5094 -- call START_ACTIVITY to create savepoint, check compatibility
5095 -- and initialize message list
5096 l_return_status := OKL_API.START_ACTIVITY(
5097 p_api_name => l_api_name,
5098 p_pkg_name => g_pkg_name,
5099 p_init_msg_list => p_init_msg_list,
5100 l_api_version => l_api_version,
5101 p_api_version => p_api_version,
5102 p_api_type => g_api_type,
5103 x_return_status => x_return_status);
5104
5105 -- check if activity started successfully
5106 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5107 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5108 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
5109 raise OKL_API.G_EXCEPTION_ERROR;
5110
5111 End If;
5112
5113 If (p_chrv_tbl.COUNT > 0) Then
5114 i := p_chrv_tbl.FIRST;
5115 LOOP
5116 -- call procedure in complex API for a record
5117 delete_contract_header(
5118 p_api_version => p_api_version,
5119 p_init_msg_list => p_init_msg_list,
5120 x_return_status => x_return_status,
5121 x_msg_count => x_msg_count,
5122 x_msg_data => x_msg_data,
5123 p_chrv_rec => p_chrv_tbl(i),
5124 p_khrv_rec => l_khrv_tbl(i));
5125
5126 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
5127 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
5128 l_overall_status := x_return_status;
5129 End If;
5130 End If;
5131
5132 EXIT WHEN (i = p_chrv_tbl.LAST);
5133 i := p_chrv_tbl.NEXT(i);
5134 END LOOP;
5135
5136 -- return overall status
5137 x_return_status := l_overall_status;
5138 End If;
5139
5140 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
5141 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5142 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
5143 raise OKL_API.G_EXCEPTION_ERROR;
5144 End If;
5145
5146 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5147 x_msg_data => x_msg_data);
5148 EXCEPTION
5149 when OKL_API.G_EXCEPTION_ERROR then
5150 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5151 p_api_name => l_api_name,
5152 p_pkg_name => g_pkg_name,
5153 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5154 x_msg_count => x_msg_count,
5155 x_msg_data => x_msg_data,
5156 p_api_type => g_api_type);
5157
5158 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5159 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5160 p_api_name => l_api_name,
5161 p_pkg_name => g_pkg_name,
5162 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5163 x_msg_count => x_msg_count,
5164 x_msg_data => x_msg_data,
5165 p_api_type => g_api_type);
5166
5167 when OTHERS then
5168 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5169 p_api_name => l_api_name,
5170 p_pkg_name => g_pkg_name,
5171 p_exc_name => 'OTHERS',
5172 x_msg_count => x_msg_count,
5173 x_msg_data => x_msg_data,
5174 p_api_type => g_api_type);
5175
5176 END delete_contract_header;
5177
5178 -- Start of comments
5179 --
5180 -- Procedure Name : lock_contract_header
5181 -- Description : locks contract header for shadowed contract
5182 -- Business Rules :
5183 -- Parameters :
5184 -- Version : 1.0
5185 -- End of comments
5186 PROCEDURE lock_contract_header(
5187 p_api_version IN NUMBER,
5188 p_init_msg_list IN VARCHAR2,
5189 x_return_status OUT NOCOPY VARCHAR2,
5190 x_msg_count OUT NOCOPY NUMBER,
5191 x_msg_data OUT NOCOPY VARCHAR2,
5192 p_chrv_rec IN okl_okc_migration_pvt.chrv_rec_type,
5193 p_khrv_rec IN khrv_rec_type) IS
5194
5195 l_chrv_rec okl_okc_migration_pvt.chrv_rec_type;
5196 l_khrv_rec khrv_rec_type;
5197
5198 l_api_name CONSTANT VARCHAR2(30) := 'LOCK_CONTRACT_HEADER';
5199 l_api_version CONSTANT NUMBER := 1.0;
5200 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5201 BEGIN
5202
5203 -- call START_ACTIVITY to create savepoint, check compatibility
5204 -- and initialize message list
5205 l_return_status := OKL_API.START_ACTIVITY(
5206 p_api_name => l_api_name,
5207 p_pkg_name => g_pkg_name,
5208 p_init_msg_list => p_init_msg_list,
5209 l_api_version => l_api_version,
5210 p_api_version => p_api_version,
5211 p_api_type => g_api_type,
5212 x_return_status => x_return_status);
5213
5214 -- check if activity started successfully
5215 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5216 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5217 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
5218 raise OKL_API.G_EXCEPTION_ERROR;
5219 End If;
5220
5221 l_khrv_rec := p_khrv_rec;
5222 l_chrv_rec := p_chrv_rec;
5223
5224 --
5225 -- set okc context before API call
5226 -- msamoyle: check whether we need to call this method here or in PUB or in processing
5227
5228 OKL_CONTEXT.SET_OKC_ORG_CONTEXT(l_chrv_rec.authoring_org_id,l_chrv_rec.inv_organization_id);
5229
5230
5231 --
5232 -- call procedure in complex API
5233 --
5234 okl_okc_migration_pvt.lock_contract_header(
5235 p_api_version => p_api_version,
5236 p_init_msg_list => p_init_msg_list,
5237 x_return_status => x_return_status,
5238 x_msg_count => x_msg_count,
5239 x_msg_data => x_msg_data,
5240 p_chrv_rec => l_chrv_rec);
5241
5242 -- check return status
5243 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
5244 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5245 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
5246 raise OKL_API.G_EXCEPTION_ERROR;
5247 End If;
5248
5249 -- call procedure in complex API
5250 OKL_KHR_PVT.lock_Row(
5251 p_api_version => p_api_version,
5252 p_init_msg_list => p_init_msg_list,
5253 x_return_status => x_return_status,
5254 x_msg_count => x_msg_count,
5255 x_msg_data => x_msg_data,
5256 p_khrv_rec => p_khrv_rec);
5257
5258 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
5259 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5260 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
5261 raise OKL_API.G_EXCEPTION_ERROR;
5262 End If;
5263
5264 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5265 x_msg_data => x_msg_data);
5266 EXCEPTION
5267 when OKL_API.G_EXCEPTION_ERROR then
5268 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5269 p_api_name => l_api_name,
5270 p_pkg_name => g_pkg_name,
5271 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5272 x_msg_count => x_msg_count,
5273 x_msg_data => x_msg_data,
5274 p_api_type => g_api_type);
5275
5276 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5277 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5278 p_api_name => l_api_name,
5279 p_pkg_name => g_pkg_name,
5280 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5281 x_msg_count => x_msg_count,
5282 x_msg_data => x_msg_data,
5283 p_api_type => g_api_type);
5284
5285 when OTHERS then
5286 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5287 p_api_name => l_api_name,
5288 p_pkg_name => g_pkg_name,
5289 p_exc_name => 'OTHERS',
5290 x_msg_count => x_msg_count,
5291 x_msg_data => x_msg_data,
5292 p_api_type => g_api_type);
5293 END lock_contract_header;
5294
5295
5296 -- Start of comments
5297 --
5298 -- Procedure Name : lock_contract_header
5299 -- Description : locks contract header for shadowed contract
5300 -- Business Rules :
5301 -- Parameters :
5302 -- Version : 1.0
5303 -- End of comments
5304 PROCEDURE lock_contract_header(
5305 p_api_version IN NUMBER,
5306 p_init_msg_list IN VARCHAR2,
5307 x_return_status OUT NOCOPY VARCHAR2,
5308 x_msg_count OUT NOCOPY NUMBER,
5309 x_msg_data OUT NOCOPY VARCHAR2,
5310 p_chrv_tbl IN okl_okc_migration_pvt.chrv_tbl_type,
5311 p_khrv_tbl IN khrv_tbl_type) IS
5312
5313 l_api_name CONSTANT VARCHAR2(30) := 'LOCK_CONTRACT_HEADER';
5314 l_api_version CONSTANT NUMBER := 1.0;
5315 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5316 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5317 i NUMBER;
5318 l_khrv_tbl khrv_tbl_type := p_khrv_tbl;
5319 BEGIN
5320 -- call START_ACTIVITY to create savepoint, check compatibility
5321 -- and initialize message list
5322 l_return_status := OKL_API.START_ACTIVITY(
5323 p_api_name => l_api_name,
5324 p_pkg_name => g_pkg_name,
5325 p_init_msg_list => p_init_msg_list,
5326 l_api_version => l_api_version,
5327 p_api_version => p_api_version,
5328 p_api_type => g_api_type,
5329 x_return_status => x_return_status);
5330
5331 -- check if activity started successfully
5332 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5333 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5334 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
5335 raise OKL_API.G_EXCEPTION_ERROR;
5336
5337 End If;
5338
5339 If (p_chrv_tbl.COUNT > 0) Then
5340 i := p_chrv_tbl.FIRST;
5341 LOOP
5342 -- call procedure in complex API for a record
5343 lock_contract_header(
5344 p_api_version => p_api_version,
5345 p_init_msg_list => p_init_msg_list,
5346 x_return_status => x_return_status,
5347 x_msg_count => x_msg_count,
5348 x_msg_data => x_msg_data,
5349 p_chrv_rec => p_chrv_tbl(i),
5350 p_khrv_rec => l_khrv_tbl(i));
5351
5352 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
5353 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
5354 l_overall_status := x_return_status;
5355 End If;
5356 End If;
5357
5358 EXIT WHEN (i = p_chrv_tbl.LAST);
5359 i := p_chrv_tbl.NEXT(i);
5360 END LOOP;
5361
5362 -- return overall status
5363 x_return_status := l_overall_status;
5364 End If;
5365
5366 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
5367 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5368 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
5369 raise OKL_API.G_EXCEPTION_ERROR;
5370 End If;
5371
5372 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5373 x_msg_data => x_msg_data);
5374 EXCEPTION
5375 when OKL_API.G_EXCEPTION_ERROR then
5376 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5377 p_api_name => l_api_name,
5378 p_pkg_name => g_pkg_name,
5379 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5380 x_msg_count => x_msg_count,
5381 x_msg_data => x_msg_data,
5382 p_api_type => g_api_type);
5383
5384 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5385 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5386 p_api_name => l_api_name,
5387 p_pkg_name => g_pkg_name,
5388 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5389 x_msg_count => x_msg_count,
5390 x_msg_data => x_msg_data,
5391 p_api_type => g_api_type);
5392
5393 when OTHERS then
5394 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5395 p_api_name => l_api_name,
5396 p_pkg_name => g_pkg_name,
5397 p_exc_name => 'OTHERS',
5398 x_msg_count => x_msg_count,
5399 x_msg_data => x_msg_data,
5400 p_api_type => g_api_type);
5401
5402 END lock_contract_header;
5403
5404 -- -----------------------------------------------------------------------------
5405 -- Start of comments
5406 --
5407 -- Procedure Name : validate_contract_header
5408 -- Description : validates contract header for shadowed contract
5409 -- Business Rules :
5410 -- Parameters :
5411 -- Version : 1.0
5412 -- End of comments
5413 PROCEDURE validate_contract_header(
5414 p_api_version IN NUMBER,
5415 p_init_msg_list IN VARCHAR2,
5416 x_return_status OUT NOCOPY VARCHAR2,
5417 x_msg_count OUT NOCOPY NUMBER,
5418 x_msg_data OUT NOCOPY VARCHAR2,
5419 p_chrv_rec IN okl_okc_migration_pvt.chrv_rec_type,
5420 p_khrv_rec IN khrv_rec_type) IS
5421
5422 l_chrv_rec okl_okc_migration_pvt.chrv_rec_type;
5423 l_khrv_rec khrv_rec_type;
5424
5425 l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_CONTRACT_HEADER';
5426 l_api_version CONSTANT NUMBER := 1.0;
5427 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5428 BEGIN
5429
5430 --dbms_output.put_line('Start validation');
5431 -- call START_ACTIVITY to create savepoint, check compatibility
5432 -- and initialize message list
5433 l_return_status := OKL_API.START_ACTIVITY(
5434 p_api_name => l_api_name,
5435 p_pkg_name => g_pkg_name,
5436 p_init_msg_list => p_init_msg_list,
5437 l_api_version => l_api_version,
5438 p_api_version => p_api_version,
5439 p_api_type => g_api_type,
5440 x_return_status => x_return_status);
5441
5442 -- check if activity started successfully
5443 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5444 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5445 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
5446 raise OKL_API.G_EXCEPTION_ERROR;
5447 End If;
5448
5449 --dbms_output.put_line('Started activity');
5450
5451 l_khrv_rec := p_khrv_rec;
5452 l_chrv_rec := p_chrv_rec;
5453
5454 --
5455 -- set okc context before API call
5456 -- msamoyle: check whether we need to call this method here or in PUB or in processing
5457
5458 OKL_CONTEXT.SET_OKC_ORG_CONTEXT(l_chrv_rec.authoring_org_id,l_chrv_rec.inv_organization_id);
5459 --dbms_output.put_line('Set up context');
5460
5461 --
5462 -- call procedure in complex API
5463 --
5464 okl_okc_migration_pvt.validate_contract_header(
5465 p_api_version => p_api_version,
5466 p_init_msg_list => p_init_msg_list,
5467 x_return_status => x_return_status,
5468 x_msg_count => x_msg_count,
5469 x_msg_data => x_msg_data,
5470 p_chrv_rec => l_chrv_rec);
5471
5472 -- check return status
5473 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
5474 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5475 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
5476 raise OKL_API.G_EXCEPTION_ERROR;
5477 End If;
5478 --dbms_output.put_line('Got standard validation');
5479
5480 -- pass OKC contract header id
5481 l_khrv_rec.id := l_chrv_rec.id;
5482
5483 -- call procedure in complex API
5484 OKL_KHR_PVT.validate_Row(
5485 p_api_version => p_api_version,
5486 p_init_msg_list => p_init_msg_list,
5487 x_return_status => x_return_status,
5488 x_msg_count => x_msg_count,
5489 x_msg_data => x_msg_data,
5490 p_khrv_rec => l_khrv_rec);
5491
5492 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
5493 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5494 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
5495 raise OKL_API.G_EXCEPTION_ERROR;
5496 End If;
5497 --dbms_output.put_line('Got shadow validation');
5498
5499 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5500 x_msg_data => x_msg_data);
5501 --dbms_output.put_line('Done');
5502 EXCEPTION
5503 when OKL_API.G_EXCEPTION_ERROR then
5504 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5505 p_api_name => l_api_name,
5506 p_pkg_name => g_pkg_name,
5507 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5508 x_msg_count => x_msg_count,
5509 x_msg_data => x_msg_data,
5510 p_api_type => g_api_type);
5511
5512 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5513 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5514 p_api_name => l_api_name,
5515 p_pkg_name => g_pkg_name,
5516 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5517 x_msg_count => x_msg_count,
5518 x_msg_data => x_msg_data,
5519 p_api_type => g_api_type);
5520
5521 when OTHERS then
5522 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5523 p_api_name => l_api_name,
5524 p_pkg_name => g_pkg_name,
5525 p_exc_name => 'OTHERS',
5526 x_msg_count => x_msg_count,
5527 x_msg_data => x_msg_data,
5528 p_api_type => g_api_type);
5529 END validate_contract_header;
5530
5531
5532 -- Start of comments
5533 --
5534 -- Procedure Name : validate_contract_header
5535 -- Description : validates contract header for shadowed contract
5536 -- Business Rules :
5537 -- Parameters :
5538 -- Version : 1.0
5539 -- End of comments
5540 PROCEDURE validate_contract_header(
5541 p_api_version IN NUMBER,
5542 p_init_msg_list IN VARCHAR2,
5543 x_return_status OUT NOCOPY VARCHAR2,
5544 x_msg_count OUT NOCOPY NUMBER,
5545 x_msg_data OUT NOCOPY VARCHAR2,
5546 p_chrv_tbl IN okl_okc_migration_pvt.chrv_tbl_type,
5547 p_khrv_tbl IN khrv_tbl_type) IS
5548
5549 l_api_name CONSTANT VARCHAR2(30) := 'validate_CONTRACT_HEADER';
5550 l_api_version CONSTANT NUMBER := 1.0;
5551 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5552 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5553 i NUMBER;
5554 l_khrv_tbl khrv_tbl_type := p_khrv_tbl;
5555 BEGIN
5556 -- call START_ACTIVITY to create savepoint, check compatibility
5557 -- and initialize message list
5558 l_return_status := OKL_API.START_ACTIVITY(
5559 p_api_name => l_api_name,
5560 p_pkg_name => g_pkg_name,
5561 p_init_msg_list => p_init_msg_list,
5562 l_api_version => l_api_version,
5563 p_api_version => p_api_version,
5564 p_api_type => g_api_type,
5565 x_return_status => x_return_status);
5566
5567 -- check if activity started successfully
5568 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
5569 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5570 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
5571 raise OKL_API.G_EXCEPTION_ERROR;
5572
5573 End If;
5574
5575 If (p_chrv_tbl.COUNT > 0) Then
5576 i := p_chrv_tbl.FIRST;
5577 LOOP
5578 -- call procedure in complex API for a record
5579 validate_contract_header(
5580 p_api_version => p_api_version,
5581 p_init_msg_list => p_init_msg_list,
5582 x_return_status => x_return_status,
5583 x_msg_count => x_msg_count,
5584 x_msg_data => x_msg_data,
5585 p_chrv_rec => p_chrv_tbl(i),
5586 p_khrv_rec => l_khrv_tbl(i));
5587
5588 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
5589 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
5590 l_overall_status := x_return_status;
5591 End If;
5592 End If;
5593
5594 EXIT WHEN (i = p_chrv_tbl.LAST);
5595 i := p_chrv_tbl.NEXT(i);
5596 END LOOP;
5597
5598 -- return overall status
5599 x_return_status := l_overall_status;
5600 End If;
5601
5602 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
5603 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5604 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
5605 raise OKL_API.G_EXCEPTION_ERROR;
5606 End If;
5607
5608 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5609 x_msg_data => x_msg_data);
5610 EXCEPTION
5611 when OKL_API.G_EXCEPTION_ERROR then
5612 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5613 p_api_name => l_api_name,
5614 p_pkg_name => g_pkg_name,
5615 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5616 x_msg_count => x_msg_count,
5617 x_msg_data => x_msg_data,
5618 p_api_type => g_api_type);
5619
5620 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
5621 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5622 p_api_name => l_api_name,
5623 p_pkg_name => g_pkg_name,
5624 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5625 x_msg_count => x_msg_count,
5626 x_msg_data => x_msg_data,
5627 p_api_type => g_api_type);
5628
5629 when OTHERS then
5630 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5631 p_api_name => l_api_name,
5632 p_pkg_name => g_pkg_name,
5633 p_exc_name => 'OTHERS',
5634 x_msg_count => x_msg_count,
5635 x_msg_data => x_msg_data,
5636 p_api_type => g_api_type);
5637
5638 END validate_contract_header;
5639
5640 -- Start of comments
5641 --
5642 -- Procedure Name : roundoff_line_amount
5643 -- Description : Round off NOT NULL line amounts columns
5644 -- Business Rules :
5645 -- Parameters :
5646 -- Version : 1.0
5647 -- End of comments
5648
5649 PROCEDURE roundoff_line_amount(
5650 x_return_status OUT NOCOPY VARCHAR2,
5651 x_msg_count OUT NOCOPY NUMBER,
5652 x_msg_data OUT NOCOPY VARCHAR2,
5653 p_clev_rec IN okl_okc_migration_pvt.clev_rec_type,
5654 p_klev_rec IN klev_rec_type,
5655 x_clev_rec OUT NOCOPY okl_okc_migration_pvt.clev_rec_type,
5656 x_klev_rec OUT NOCOPY klev_rec_type
5657 ) IS
5658
5659 --Fix Bug# 2727161
5660 CURSOR curr_hdr_csr (p_chr_id OKC_K_HEADERS_B.ID%TYPE) IS
5661 SELECT currency_code
5662 FROM okc_k_headers_b
5663 WHERE id = p_chr_id;
5664
5665 CURSOR curr_ln_csr (p_line_id OKC_K_HEADERS_B.ID%TYPE) IS
5666 SELECT h.currency_code
5667 FROM okc_k_headers_b h,
5668 okc_k_lines_b l
5669 WHERE h.id = l.dnz_chr_id
5670 AND l.id = p_line_id;
5671
5672 l_conv_amount NUMBER;
5673 l_currency_code OKC_K_LINES_B.CURRENCY_CODE%TYPE;
5674
5675 roundoff_error EXCEPTION;
5676
5677 BEGIN
5678
5679 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5680
5681 -- Take original record values
5682 x_clev_rec := p_clev_rec;
5683 x_klev_rec := p_klev_rec;
5684
5685 --
5686 -- Get currency Code
5687 -- Using line dnz_chr_id
5688 --
5689 l_currency_code := '?';
5690 OPEN curr_hdr_csr (p_clev_rec.dnz_chr_id);
5691 FETCH curr_hdr_csr INTO l_currency_code;
5692 CLOSE curr_hdr_csr;
5693
5694 IF (l_currency_code = '?') THEN
5695 --
5696 -- Get currency_code
5697 -- Using line_id
5698 --
5699 OPEN curr_ln_csr (p_clev_rec.id);
5700 FETCH curr_ln_csr INTO l_currency_code;
5701 CLOSE curr_ln_csr;
5702 END IF;
5703
5704 IF (l_currency_code = '?') THEN -- Fatal error, Not a valid currency_code
5705 RAISE roundoff_error;
5706 END IF;
5707
5708 --dbms_output.put_line('Round off start '||l_currency_code);
5709 -- Round off all OKL Line Amounts
5710 IF (p_klev_rec.amount IS NOT NULL
5711 AND
5712 p_klev_rec.amount <> OKL_API.G_MISS_NUM) THEN
5713
5714 l_conv_amount := NULL;
5715 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5716 p_amount => p_klev_rec.amount,
5717 p_currency_code => l_currency_code
5718 );
5719
5720 x_klev_rec.amount := l_conv_amount;
5721 END IF;
5722
5723 IF (p_klev_rec.amount_stake IS NOT NULL
5724 AND
5725 p_klev_rec.amount_stake<> OKL_API.G_MISS_NUM) THEN
5726
5727 l_conv_amount := NULL;
5728 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5729 p_amount => p_klev_rec.amount_stake,
5730 p_currency_code => l_currency_code
5731 );
5732
5733 x_klev_rec.amount_stake := l_conv_amount;
5734 END IF;
5735
5736 IF (p_klev_rec.appraisal_value IS NOT NULL
5737 AND
5738 p_klev_rec.appraisal_value <> OKL_API.G_MISS_NUM) THEN
5739
5740 l_conv_amount := NULL;
5741 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5742 p_amount => p_klev_rec.appraisal_value,
5743 p_currency_code => l_currency_code
5744 );
5745
5746 x_klev_rec.appraisal_value := l_conv_amount;
5747 END IF;
5748
5749 IF (p_klev_rec.capital_amount IS NOT NULL
5750 AND
5751 p_klev_rec.capital_amount <> OKL_API.G_MISS_NUM) THEN
5752
5753 l_conv_amount := NULL;
5754 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5755 p_amount => p_klev_rec.capital_amount,
5756 p_currency_code => l_currency_code
5757 );
5758
5759 x_klev_rec.capital_amount := l_conv_amount;
5760 END IF;
5761
5762 IF (p_klev_rec.capital_reduction IS NOT NULL
5763 AND
5764 p_klev_rec.capital_reduction <> OKL_API.G_MISS_NUM) THEN
5765
5766 l_conv_amount := NULL;
5767 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5768 p_amount => p_klev_rec.capital_reduction,
5769 p_currency_code => l_currency_code
5770 );
5771
5772 x_klev_rec.capital_reduction := l_conv_amount;
5773 END IF;
5774
5775 IF (p_klev_rec.capitalized_interest IS NOT NULL
5776 AND
5777 p_klev_rec.capitalized_interest <> OKL_API.G_MISS_NUM) THEN
5778
5779 l_conv_amount := NULL;
5780 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5781 p_amount => p_klev_rec.capitalized_interest,
5782 p_currency_code => l_currency_code
5783 );
5784
5785 x_klev_rec.capitalized_interest := l_conv_amount;
5786 END IF;
5787
5788 IF (p_klev_rec.coverage IS NOT NULL
5789 AND
5790 p_klev_rec.coverage <> OKL_API.G_MISS_NUM) THEN
5791
5792 l_conv_amount := NULL;
5793 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5794 p_amount => p_klev_rec.coverage,
5795 p_currency_code => l_currency_code
5796 );
5797
5798 x_klev_rec.coverage := l_conv_amount;
5799 END IF;
5800
5801 IF (p_klev_rec.estimated_oec IS NOT NULL
5802 AND
5803 p_klev_rec.estimated_oec <> OKL_API.G_MISS_NUM) THEN
5804
5805 l_conv_amount := NULL;
5806 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5807 p_amount => p_klev_rec.estimated_oec,
5808 p_currency_code => l_currency_code
5809 );
5810
5811 x_klev_rec.estimated_oec := l_conv_amount;
5812 END IF;
5813
5814 IF (p_klev_rec.fee_charge IS NOT NULL
5815 AND
5816 p_klev_rec.fee_charge <> OKL_API.G_MISS_NUM) THEN
5817
5818 l_conv_amount := NULL;
5819 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5820 p_amount => p_klev_rec.fee_charge,
5821 p_currency_code => l_currency_code
5822 );
5823
5824 x_klev_rec.fee_charge := l_conv_amount;
5825 END IF;
5826
5827 IF (p_klev_rec.floor_amount IS NOT NULL
5828 AND
5829 p_klev_rec.floor_amount <> OKL_API.G_MISS_NUM) THEN
5830
5831 l_conv_amount := NULL;
5832 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5833 p_amount => p_klev_rec.floor_amount,
5834 p_currency_code => l_currency_code
5835 );
5836
5837 x_klev_rec.floor_amount := l_conv_amount;
5838 END IF;
5839
5840 IF (p_klev_rec.initial_direct_cost IS NOT NULL
5841 AND
5842 p_klev_rec.initial_direct_cost <> OKL_API.G_MISS_NUM) THEN
5843
5844 l_conv_amount := NULL;
5845 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5846 p_amount => p_klev_rec.initial_direct_cost,
5847 p_currency_code => l_currency_code
5848 );
5849
5850 x_klev_rec.initial_direct_cost := l_conv_amount;
5851 END IF;
5852
5853 IF (p_klev_rec.lao_amount IS NOT NULL
5854 AND
5855 p_klev_rec.lao_amount <> OKL_API.G_MISS_NUM) THEN
5856
5857 l_conv_amount := NULL;
5858 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5859 p_amount => p_klev_rec.lao_amount,
5860 p_currency_code => p_clev_rec.currency_code
5861 );
5862
5863 x_klev_rec.lao_amount := l_conv_amount;
5864 END IF;
5865
5866 IF (p_klev_rec.lrv_amount IS NOT NULL
5867 AND
5868 p_klev_rec.lrv_amount <> OKL_API.G_MISS_NUM) THEN
5869
5870 l_conv_amount := NULL;
5871 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5872 p_amount => p_klev_rec.lrv_amount,
5873 p_currency_code => l_currency_code
5874 );
5875
5876 x_klev_rec.lrv_amount := l_conv_amount;
5877 END IF;
5878
5879 IF (p_klev_rec.net_rentable IS NOT NULL
5880 AND
5881 p_klev_rec.net_rentable <> OKL_API.G_MISS_NUM) THEN
5882
5883 l_conv_amount := NULL;
5884 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5885 p_amount => p_klev_rec.net_rentable,
5886 p_currency_code => l_currency_code
5887 );
5888
5889 x_klev_rec.net_rentable := l_conv_amount;
5890 END IF;
5891
5892 IF (p_klev_rec.oec IS NOT NULL
5893 AND
5894 p_klev_rec.oec <> OKL_API.G_MISS_NUM) THEN
5895
5896 l_conv_amount := NULL;
5897 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5898 p_amount => p_klev_rec.oec,
5899 p_currency_code => l_currency_code
5900 );
5901
5902 x_klev_rec.oec := l_conv_amount;
5903
5904 END IF;
5905
5906 IF (p_klev_rec.refinance_amount IS NOT NULL
5907 AND
5908 p_klev_rec.refinance_amount <> OKL_API.G_MISS_NUM) THEN
5909
5910 l_conv_amount := NULL;
5911 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5912 p_amount => p_klev_rec.refinance_amount,
5913 p_currency_code => l_currency_code
5914 );
5915
5916 x_klev_rec.refinance_amount := l_conv_amount;
5917 END IF;
5918
5919 IF (p_klev_rec.remarketed_amount IS NOT NULL
5920 AND
5921 p_klev_rec.remarketed_amount <> OKL_API.G_MISS_NUM) THEN
5922
5923 l_conv_amount := NULL;
5924 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5925 p_amount => p_klev_rec.remarketed_amount,
5926 p_currency_code => l_currency_code
5927 );
5928
5929 x_klev_rec.remarketed_amount := l_conv_amount;
5930 END IF;
5931
5932 IF (p_klev_rec.repurchased_amount IS NOT NULL
5933 AND
5934 p_klev_rec.repurchased_amount <> OKL_API.G_MISS_NUM) THEN
5935
5936 l_conv_amount := NULL;
5937 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5938 p_amount => p_klev_rec.repurchased_amount,
5939 p_currency_code => l_currency_code
5940 );
5941
5942 x_klev_rec.repurchased_amount := l_conv_amount;
5943 END IF;
5944
5945 IF (p_klev_rec.residual_grnty_amount IS NOT NULL
5946 AND
5947 p_klev_rec.residual_grnty_amount <> OKL_API.G_MISS_NUM) THEN
5948
5949 l_conv_amount := NULL;
5950 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5951 p_amount => p_klev_rec.residual_grnty_amount,
5952 p_currency_code => l_currency_code
5953 );
5954
5955 x_klev_rec.residual_grnty_amount := l_conv_amount;
5956 END IF;
5957
5958 IF (p_klev_rec.rvi_premium IS NOT NULL
5959 AND
5960 p_klev_rec.rvi_premium <> OKL_API.G_MISS_NUM) THEN
5961
5962 l_conv_amount := NULL;
5963 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5964 p_amount => p_klev_rec.rvi_premium,
5965 p_currency_code => l_currency_code
5966 );
5967
5968 x_klev_rec.rvi_premium := l_conv_amount;
5969 END IF;
5970
5971 IF (p_klev_rec.termination_purchase_amount IS NOT NULL
5972 AND
5973 p_klev_rec.termination_purchase_amount <> OKL_API.G_MISS_NUM) THEN
5974
5975 l_conv_amount := NULL;
5976 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5977 p_amount => p_klev_rec.termination_purchase_amount,
5978 p_currency_code => l_currency_code
5979 );
5980
5981 x_klev_rec.termination_purchase_amount := l_conv_amount;
5982 END IF;
5983
5984 IF (p_klev_rec.tracked_residual IS NOT NULL
5985 AND
5986 p_klev_rec.tracked_residual <> OKL_API.G_MISS_NUM) THEN
5987
5988 l_conv_amount := NULL;
5989 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
5990 p_amount => p_klev_rec.tracked_residual,
5991 p_currency_code => l_currency_code
5992 );
5993
5994 x_klev_rec.tracked_residual := l_conv_amount;
5995 END IF;
5996
5997 IF (p_klev_rec.tradein_amount IS NOT NULL
5998 AND
5999 p_klev_rec.tradein_amount <> OKL_API.G_MISS_NUM) THEN
6000
6001 l_conv_amount := NULL;
6002 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
6003 p_amount => p_klev_rec.tradein_amount,
6004 p_currency_code => l_currency_code
6005 );
6006
6007 x_klev_rec.tradein_amount := l_conv_amount;
6008 END IF;
6009
6010 IF (p_klev_rec.vendor_advance_paid IS NOT NULL
6011 AND
6012 p_klev_rec.vendor_advance_paid <> OKL_API.G_MISS_NUM) THEN
6013
6014 l_conv_amount := NULL;
6015 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
6016 p_amount => p_klev_rec.vendor_advance_paid,
6017 p_currency_code => l_currency_code
6018 );
6019
6020 x_klev_rec.vendor_advance_paid := l_conv_amount;
6021 END IF;
6022
6023 IF (p_klev_rec.residual_value IS NOT NULL
6024 AND
6025 p_klev_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
6026
6027 l_conv_amount := NULL;
6028 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
6029 p_amount => p_klev_rec.residual_value,
6030 p_currency_code => l_currency_code
6031 );
6032
6033 x_klev_rec.residual_value := l_conv_amount;
6034 END IF;
6035
6036 --Bug# 3143522 : 11.5.10 Subsidies
6037 IF (p_klev_rec.subsidy_override_amount IS NOT NULL
6038 AND
6039 p_klev_rec.subsidy_override_amount <> OKL_API.G_MISS_NUM) THEN
6040
6041 l_conv_amount := NULL;
6042 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
6043 p_amount => p_klev_rec.subsidy_override_amount,
6044 p_currency_code => l_currency_code
6045 );
6046
6047 x_klev_rec.subsidy_override_amount := l_conv_amount;
6048 END IF;
6049 -- Round off OKC line amounts
6050
6051
6052 IF (p_clev_rec.price_negotiated IS NOT NULL
6053 AND
6054 p_clev_rec.price_negotiated <> OKL_API.G_MISS_NUM) THEN
6055
6056 l_conv_amount := NULL;
6057 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
6058 p_amount => p_clev_rec.price_negotiated,
6059 p_currency_code => l_currency_code
6060 );
6061
6062 x_clev_rec.price_negotiated := l_conv_amount;
6063 END IF;
6064
6065 IF (p_clev_rec.price_negotiated_renewed IS NOT NULL
6066 AND
6067 p_clev_rec.price_negotiated_renewed <> OKL_API.G_MISS_NUM) THEN
6068
6069 l_conv_amount := NULL;
6070 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
6071 p_amount => p_clev_rec.price_negotiated_renewed,
6072 p_currency_code => l_currency_code
6073 );
6074
6075 x_clev_rec.price_negotiated_renewed := l_conv_amount;
6076 END IF;
6077
6078 IF (p_clev_rec.price_unit IS NOT NULL
6079 AND
6080 p_clev_rec.price_unit <> OKL_API.G_MISS_NUM) THEN
6081
6082 l_conv_amount := NULL;
6083 l_conv_amount := okl_accounting_util.cross_currency_round_amount(
6084 p_amount => p_clev_rec.price_unit,
6085 p_currency_code => l_currency_code
6086 );
6087
6088 x_clev_rec.price_unit := l_conv_amount;
6089 END IF;
6090 --dbms_output.put_line('Round off complete');
6091
6092 EXCEPTION
6093 WHEN roundoff_error THEN
6094 x_return_status := OKL_API.G_RET_STS_ERROR;
6095 END roundoff_line_amount;
6096
6097
6098 -- -----------------------------------------------------------------------------
6099 -- Contract Line Related Procedure
6100 -- -----------------------------------------------------------------------------
6101
6102 -- Start of comments
6103 --
6104 -- Procedure Name : create_contract_line
6105 -- Description : creates contract line for shadowed contract
6106 -- Business Rules :
6107 -- Parameters :
6108 -- Version : 1.0
6109 -- End of comments
6110 PROCEDURE create_contract_line(
6111 p_api_version IN NUMBER,
6112 p_init_msg_list IN VARCHAR2,
6113 x_return_status OUT NOCOPY VARCHAR2,
6114 x_msg_count OUT NOCOPY NUMBER,
6115 x_msg_data OUT NOCOPY VARCHAR2,
6116 p_clev_rec IN okl_okc_migration_pvt.clev_rec_type,
6117 p_klev_rec IN klev_rec_type,
6118 x_clev_rec OUT NOCOPY okl_okc_migration_pvt.clev_rec_type,
6119 x_klev_rec OUT NOCOPY klev_rec_type) IS
6120
6121 /*
6122 -- vthiruva, 08/19/2004
6123 -- START, Code change to enable Business Event
6124 */
6125 --cursor to fetch the line style code for line style id passed
6126 CURSOR lty_code_csr(p_line_id okc_k_lines_b.id%TYPE) IS
6127 SELECT lse.lty_code
6128 FROM okc_line_styles_b lse,
6129 okc_k_lines_b line
6130 WHERE lse.id = line.lse_id
6131 AND line.id = p_line_id;
6132
6133 l_lty_code okc_line_styles_b.lty_code%TYPE;
6134 l_parameter_list wf_parameter_list_t;
6135 l_event_name wf_events.name%TYPE := null;
6136 l_raise_business_event VARCHAR2(1) := OKL_API.G_FALSE;
6137 /*
6138 -- vthiruva, 08/19/2004
6139 -- END, Code change to enable Business Event
6140 */
6141 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
6142 l_klev_rec klev_rec_type;
6143
6144 lx_clev_rec okl_okc_migration_pvt.clev_rec_type;
6145 lx_klev_rec klev_rec_type;
6146
6147 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_CONTRACT_LINE';
6148 l_api_version CONSTANT NUMBER := 1.0;
6149 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
6150
6151 --Bug# 3143522
6152 l_dt_clev_rec okl_okc_migration_pvt.clev_rec_type;
6153 lx_dt_clev_rec okl_okc_migration_pvt.clev_rec_type;
6154 BEGIN
6155
6156 -- call START_ACTIVITY to create savepoint, check compatibility
6157 -- and initialize message list
6158 l_return_status := OKL_API.START_ACTIVITY(
6159 p_api_name => l_api_name,
6160 p_pkg_name => g_pkg_name,
6161 p_init_msg_list => p_init_msg_list,
6162 l_api_version => l_api_version,
6163 p_api_version => p_api_version,
6164 p_api_type => g_api_type,
6165 x_return_status => x_return_status);
6166
6167 -- check if activity started successfully
6168 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
6169 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6170 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
6171 raise OKL_API.G_EXCEPTION_ERROR;
6172 End If;
6173
6174 l_klev_rec := p_klev_rec;
6175 l_clev_rec := p_clev_rec;
6176
6177 --
6178 -- Calling amount round-off process
6179 --
6180 roundoff_line_amount(
6181 x_return_status => x_return_status,
6182 x_msg_count => x_msg_count,
6183 x_msg_data => x_msg_data,
6184 p_clev_rec => l_clev_rec,
6185 p_klev_rec => l_klev_rec,
6186 x_clev_rec => lx_clev_rec,
6187 x_klev_rec => lx_klev_rec
6188 );
6189
6190 -- check return status
6191 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
6192 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6193 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
6194 raise OKL_API.G_EXCEPTION_ERROR;
6195 End If;
6196
6197 l_klev_rec := lx_klev_rec;
6198 l_clev_rec := lx_clev_rec;
6199
6200 --Bug# 3143522:
6201 --
6202 -- call procedure to get default line dates for Fee and service lines
6203 --
6204 If nvl(l_clev_rec.start_date,OKL_API.G_MISS_DATE) = OKL_API.G_MISS_DATE or
6205 nvl(l_clev_rec.end_date,OKL_API.G_MISS_DATE) = OKL_API.G_MISS_DATE or
6206 nvl(l_clev_rec.currency_code,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR or
6207 nvl(l_clev_rec.sts_code,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
6208
6209 l_dt_clev_rec := l_clev_rec;
6210
6211 get_line_dates(p_clev_rec => l_dt_clev_rec,
6212 x_return_status => x_return_status,
6213 x_clev_rec => lx_dt_clev_rec);
6214
6215 -- check return status
6216 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
6217 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6218 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
6219 raise OKL_API.G_EXCEPTION_ERROR;
6220 End If;
6221
6222 If nvl(lx_dt_clev_rec.start_date,OKL_API.G_MISS_DATE) <> OKL_API.G_MISS_DATE then
6223 l_clev_rec.start_date := lx_dt_clev_rec.start_date;
6224 End If;
6225 If nvl(lx_dt_clev_rec.end_date,OKL_API.G_MISS_DATE) <> OKL_API.G_MISS_DATE then
6226 l_clev_rec.end_date := lx_dt_clev_rec.end_date;
6227 End If;
6228 If nvl(lx_dt_clev_rec.currency_code,OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR then
6229 l_clev_rec.currency_code := lx_dt_clev_rec.currency_code;
6230 End If;
6231 If nvl(lx_dt_clev_rec.sts_code,OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR then
6232 l_clev_rec.sts_code := lx_dt_clev_rec.sts_code;
6233 End If;
6234 End If;
6235 --End Bug# 3143522
6236
6237 --
6238 -- call procedure in complex API
6239 --
6240 okl_okc_migration_pvt.create_contract_line(
6241 p_api_version => p_api_version,
6242 p_init_msg_list => p_init_msg_list,
6243 x_return_status => x_return_status,
6244 x_msg_count => x_msg_count,
6245 x_msg_data => x_msg_data,
6246 p_clev_rec => l_clev_rec,
6247 x_clev_rec => x_clev_rec);
6248
6249 -- check return status
6250 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
6251 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6252 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
6253 raise OKL_API.G_EXCEPTION_ERROR;
6254 End If;
6255
6256 -- get id from OKC record
6257 l_klev_rec.ID := x_clev_rec.ID;
6258
6259 -- call procedure in complex API
6260 OKL_KLE_PVT.Insert_Row(
6261 p_api_version => p_api_version,
6262 p_init_msg_list => p_init_msg_list,
6263 x_return_status => x_return_status,
6264 x_msg_count => x_msg_count,
6265 x_msg_data => x_msg_data,
6266 p_klev_rec => l_klev_rec,
6267 x_klev_rec => x_klev_rec);
6268
6269 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
6270 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6271 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
6272 raise OKL_API.G_EXCEPTION_ERROR;
6273 End If;
6274
6275 If (x_clev_rec.dnz_chr_id is not null) AND (l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) Then
6276
6277 -- call to cascade lease contract statuses to INCOMPLETE
6278 okl_contract_status_pub.cascade_lease_status_edit
6279 (p_api_version => p_api_version,
6280 p_init_msg_list => p_init_msg_list,
6281 x_return_status => x_return_status,
6282 x_msg_count => x_msg_count,
6283 x_msg_data => x_msg_data,
6284 p_chr_id => x_clev_rec.dnz_chr_id);
6285
6286 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
6287 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6288 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
6289 raise OKL_API.G_EXCEPTION_ERROR;
6290 End If;
6291
6292 End If;
6293
6294 /*
6295 -- vthiruva, 08/19/2004
6296 -- START, Code change to enable Business Event
6297 */
6298 --fetch the line style code for the record
6299 OPEN lty_code_csr(x_clev_rec.ID);
6300 FETCH lty_code_csr into l_lty_code;
6301 CLOSE lty_code_csr;
6302
6303 IF l_lty_code = 'FREE_FORM' THEN
6304 -- raise the business event for create credit limit, if line style code is FREE_FORM
6305 l_event_name := G_WF_EVT_CR_LMT_CREATED;
6306 l_raise_business_event := OKL_API.G_TRUE;
6307 -- create the parameter list to pass to raise_event
6308 wf_event.AddParameterToList(G_WF_ITM_CR_LINE_ID,l_clev_rec.dnz_chr_id,l_parameter_list);
6309 wf_event.AddParameterToList(G_WF_ITM_CR_LMT_ID,x_clev_rec.id,l_parameter_list);
6310 ELSIF l_lty_code = 'FREE_FORM1' THEN
6311 -- raise business event only if the context contract is a lease contract
6312 l_raise_business_event := OKL_LLA_UTIL_PVT.is_lease_contract(l_clev_rec.dnz_chr_id);
6313 IF(l_raise_business_event = OKL_API.G_TRUE)THEN
6314 -- raise the business event for create asset, if line style code is FREE_FORM1
6315 l_event_name := G_WF_EVT_ASSET_CREATED;
6316 -- create the parameter list to pass to raise_event
6317 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,l_clev_rec.dnz_chr_id,l_parameter_list);
6318 wf_event.AddParameterToList(G_WF_ITM_ASSET_ID,x_clev_rec.id,l_parameter_list);
6319 END IF;
6320 ELSIF l_lty_code = 'SOLD_SERVICE' THEN
6321 -- raise business event only if the context contract is a lease contract
6322 l_raise_business_event := OKL_LLA_UTIL_PVT.is_lease_contract(l_clev_rec.dnz_chr_id);
6323 IF(l_raise_business_event = OKL_API.G_TRUE)THEN
6324 -- raise the business event for create service, if line style code is SOLD_SERVICE
6325 l_event_name := G_WF_EVT_SERVICE_CREATED;
6326 -- create the parameter list to pass to raise_event
6327 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,l_clev_rec.dnz_chr_id,l_parameter_list);
6328 wf_event.AddParameterToList(G_WF_ITM_SRV_LINE_ID,x_clev_rec.id,l_parameter_list);
6329 END IF;
6330 --create_fee event is raised from here rather than okl_maintain_fee_pvt
6331 --as contract import process does not call okl_maintain_fee_pvt, but directly calls
6332 --okl_contract_pvt
6333 ELSIF l_lty_code = 'FEE' THEN
6334 -- raise business event only if the context contract is a lease contract
6335 l_raise_business_event := OKL_LLA_UTIL_PVT.is_lease_contract(l_clev_rec.dnz_chr_id);
6336 IF(l_raise_business_event = OKL_API.G_TRUE)THEN
6337 -- raise the business event for create fee, if line style code is FEE
6338 l_event_name := G_WF_EVT_FEE_CREATED;
6339 -- create the parameter list to pass to raise_event
6340 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,l_clev_rec.dnz_chr_id,l_parameter_list);
6341 wf_event.AddParameterToList(G_WF_ITM_FEE_LINE_ID,x_clev_rec.id,l_parameter_list);
6342 END IF;
6343 END IF;
6344
6345 -- raise business event only if the contract is a lease contract, the raise_event flag is on and business event
6346 -- name is specified. the event should also be raised if this is a credit limit, in which case is_lease_contract
6347 -- does not hold good
6348 IF(l_raise_business_event = OKL_API.G_TRUE AND l_event_name IS NOT NULL) THEN
6349 raise_business_event(p_api_version => p_api_version,
6350 p_init_msg_list => p_init_msg_list,
6351 x_return_status => x_return_status,
6352 x_msg_count => x_msg_count,
6353 x_msg_data => x_msg_data,
6354 p_event_name => l_event_name,
6355 p_parameter_list => l_parameter_list);
6356 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6357 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6358 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6359 RAISE OKL_API.G_EXCEPTION_ERROR;
6360 END IF;
6361 END IF;
6362
6363 /*
6364 -- vthiruva, 08/19/2004
6365 -- END, Code change to enable Business Event
6366 */
6367
6368 OKL_API.END_ACTIVITY( x_msg_count => x_msg_count,
6369 x_msg_data => x_msg_data);
6370 EXCEPTION
6371 when OKL_API.G_EXCEPTION_ERROR then
6372 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6373 p_api_name => l_api_name,
6374 p_pkg_name => g_pkg_name,
6375 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
6376 x_msg_count => x_msg_count,
6377 x_msg_data => x_msg_data,
6378 p_api_type => g_api_type);
6379
6380 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
6381 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6382 p_api_name => l_api_name,
6383 p_pkg_name => g_pkg_name,
6384 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
6385 x_msg_count => x_msg_count,
6386 x_msg_data => x_msg_data,
6387 p_api_type => g_api_type);
6388
6389 when OTHERS then
6390 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6391 p_api_name => l_api_name,
6392 p_pkg_name => g_pkg_name,
6393 p_exc_name => 'OTHERS',
6394 x_msg_count => x_msg_count,
6395 x_msg_data => x_msg_data,
6396 p_api_type => g_api_type);
6397 END create_contract_line;
6398
6399
6400 -- Start of comments
6401 --
6402 -- Procedure Name : create_contract_line
6403 -- Description : creates contract line for shadowed contract
6404 -- Business Rules :
6405 -- Parameters :
6406 -- Version : 1.0
6407 -- End of comments
6408 PROCEDURE create_contract_line(
6409 p_api_version IN NUMBER,
6410 p_init_msg_list IN VARCHAR2,
6411 x_return_status OUT NOCOPY VARCHAR2,
6412 x_msg_count OUT NOCOPY NUMBER,
6413 x_msg_data OUT NOCOPY VARCHAR2,
6414 p_clev_tbl IN okl_okc_migration_pvt.clev_tbl_type,
6415 p_klev_tbl IN klev_tbl_type,
6416 x_clev_tbl OUT NOCOPY okl_okc_migration_pvt.clev_tbl_type,
6417 x_klev_tbl OUT NOCOPY klev_tbl_type) IS
6418
6419 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_CONTRACT_LINE';
6420 l_api_version CONSTANT NUMBER := 1.0;
6421 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
6422 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
6423 i NUMBER;
6424 l_klev_tbl klev_tbl_type := p_klev_tbl;
6425 BEGIN
6426 -- call START_ACTIVITY to create savepoint, check compatibility
6427 -- and initialize message list
6428 l_return_status := OKL_API.START_ACTIVITY(
6429 p_api_name => l_api_name,
6430 p_pkg_name => g_pkg_name,
6431 p_init_msg_list => p_init_msg_list,
6432 l_api_version => l_api_version,
6433 p_api_version => p_api_version,
6434 p_api_type => g_api_type,
6435 x_return_status => x_return_status);
6436
6437 -- check if activity started successfully
6438 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
6439 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6440 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
6441 raise OKL_API.G_EXCEPTION_ERROR;
6442
6443 End If;
6444
6445 If (p_clev_tbl.COUNT > 0) Then
6446 i := p_clev_tbl.FIRST;
6447 LOOP
6448 -- call procedure in complex API for a record
6449 create_contract_line(
6450 p_api_version => p_api_version,
6451 p_init_msg_list => p_init_msg_list,
6452 x_return_status => x_return_status,
6453 x_msg_count => x_msg_count,
6454 x_msg_data => x_msg_data,
6455 p_clev_rec => p_clev_tbl(i),
6456 p_klev_rec => l_klev_tbl(i),
6457 x_clev_rec => x_clev_tbl(i),
6458 x_klev_rec => x_klev_tbl(i));
6459
6460 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
6461 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
6462 l_overall_status := x_return_status;
6463 End If;
6464 End If;
6465
6466 EXIT WHEN (i = p_clev_tbl.LAST);
6467 i := p_clev_tbl.NEXT(i);
6468 END LOOP;
6469
6470 -- return overall status
6471 x_return_status := l_overall_status;
6472 End If;
6473
6474 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
6475 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6476 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
6477 raise OKL_API.G_EXCEPTION_ERROR;
6478 End If;
6479
6480 OKL_API.END_ACTIVITY( x_msg_count => x_msg_count,
6481 x_msg_data => x_msg_data);
6482 EXCEPTION
6483 when OKL_API.G_EXCEPTION_ERROR then
6484 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6485 p_api_name => l_api_name,
6486 p_pkg_name => g_pkg_name,
6487 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
6488 x_msg_count => x_msg_count,
6489 x_msg_data => x_msg_data,
6490 p_api_type => g_api_type);
6491
6492 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
6493 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6494 p_api_name => l_api_name,
6495 p_pkg_name => g_pkg_name,
6496 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
6497 x_msg_count => x_msg_count,
6498 x_msg_data => x_msg_data,
6499 p_api_type => g_api_type);
6500
6501 when OTHERS then
6502 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6503 p_api_name => l_api_name,
6504 p_pkg_name => g_pkg_name,
6505 p_exc_name => 'OTHERS',
6506 x_msg_count => x_msg_count,
6507 x_msg_data => x_msg_data,
6508 p_api_type => g_api_type);
6509
6510 END create_contract_line;
6511 -- Start of comments
6512 -- Bug 2525554 : added this overloaded form for bug 252554
6513 -- Procedure Name : update_contract_line
6514 -- Description : updates contract line for shadowed contract
6515 -- Business Rules : If p_edit_mode is sent as 'Y' contract status will be
6516 -- updated to 'INCOMPLETE' else it will not be updated to
6517 -- 'INCOMPLETE'. Facilitates updater transactions which
6518 -- happen in the background while the contract is not 'BOOKED'
6519 -- for example - calculation and updation of okl_k_lines.
6520 -- capitalized_interest every time user navigates to booking
6521 -- page. It is not desired that khr status change to 'INCOMPLETE'
6522 -- every time capitalized interest is updated.
6523 -- Parameters :
6524 -- Version : 1.0
6525 -- End of comments
6526 PROCEDURE update_contract_line(
6527 p_api_version IN NUMBER,
6528 p_init_msg_list IN VARCHAR2,
6529 x_return_status OUT NOCOPY VARCHAR2,
6530 x_msg_count OUT NOCOPY NUMBER,
6531 x_msg_data OUT NOCOPY VARCHAR2,
6532 p_clev_rec IN okl_okc_migration_pvt.clev_rec_type,
6533 p_klev_rec IN klev_rec_type,
6534 p_edit_mode IN VARCHAR2,
6535 x_clev_rec OUT NOCOPY okl_okc_migration_pvt.clev_rec_type,
6536 x_klev_rec OUT NOCOPY klev_rec_type) IS
6537
6538 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
6539 l_klev_rec klev_rec_type;
6540 lx_clev_rec okl_okc_migration_pvt.clev_rec_type;
6541 lx_klev_rec klev_rec_type;
6542
6543 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_CONTRACT_LINE';
6544 l_api_version CONSTANT NUMBER := 1.0;
6545 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
6546
6547 cursor l_klev_csr(l_id IN NUMBER) is
6548 select 'x'
6549 from OKL_K_LINES_V
6550 where id = l_id;
6551 l_dummy_var VARCHAR2(1) := '?';
6552
6553 --Bug# 3143522,
6554 --
6555 -- cursor to get original line data for defaulting dates for fee and service lines
6556 --Bug# 3455874
6557 --
6558 -- populate missing currency_code and sts_code
6559
6560 cursor l_orig_clev_csr(p_cle_id in number) is
6561 select cleb.dnz_chr_id,
6562 cleb.cle_id,
6563 cleb.lse_id,
6564 cleb.start_date,
6565 cleb.end_date,
6566 cleb.currency_code,
6567 cleb.sts_code
6568 from okc_k_lines_b cleb
6569 where id = p_cle_id;
6570
6571 l_orig_chr_id okc_k_lines_b.dnz_chr_id%TYPE;
6572 l_orig_cle_id okc_k_lines_b.cle_id%TYPE;
6573 l_orig_lse_id okc_k_lines_b.lse_id%TYPE;
6574 l_orig_start_date okc_k_lines_b.start_date%TYPE;
6575 l_orig_end_date okc_k_lines_b.end_date%TYPE;
6576 l_orig_currency_code okc_k_lines_b.currency_code%TYPE;
6577 l_orig_sts_code okc_k_lines_b.sts_code%TYPE;
6578
6579 l_dt_clev_rec okl_okc_migration_pvt.clev_rec_type;
6580 lx_dt_clev_rec okl_okc_migration_pvt.clev_rec_type;
6581 --Bug# 3143522
6582
6583 /*
6584 -- vthiruva, 08/19/2004
6585 -- START, Code change to enable Business Event
6586 */
6587 --cursor to fetch the line style code for line style id passed
6588 CURSOR lty_code_csr(p_line_id okc_k_lines_b.id%TYPE) IS
6589 SELECT lse.lty_code
6590 FROM okc_line_styles_b lse,
6591 okc_k_lines_b line
6592 WHERE lse.id = line.lse_id
6593 AND line.id = p_line_id;
6594
6595 -- sjalasut. added cursors to get the service contract details
6596 CURSOR get_linked_serv_cle (p_okl_chr_id okc_k_headers_b.id%TYPE, p_okl_cle_id okc_k_lines_b.id%TYPE) IS
6597 select rlobj.object1_id1
6598 from okc_k_rel_objs_v rlobj
6599 where rlobj.chr_id = p_okl_chr_id
6600 and rlobj.cle_id = p_okl_cle_id
6601 and rlobj.rty_code = 'OKLSRV'
6602 and rlobj.jtot_object1_code = 'OKL_SERVICE_LINE';
6603 l_linked_serv_cle_id okc_k_lines_b.id%TYPE;
6604
6605 CURSOR get_linked_serv_khr (p_oks_cle_id okc_k_headers_b.id%TYPE) IS
6606 select dnz_chr_id from okc_k_lines_b where id = p_oks_cle_id;
6607 l_linked_serv_chr_id okc_k_headers_b.id%TYPE;
6608
6609
6610 l_lty_code okc_line_styles_b.lty_code%TYPE;
6611 l_parameter_list wf_parameter_list_t;
6612 l_event_name wf_events.name%TYPE := null;
6613 l_raise_business_event VARCHAR2(1) := OKL_API.G_FALSE;
6614 /*
6615 -- vthiruva, 08/19/2004
6616 -- END, Code change to enable Business Event
6617 */
6618 BEGIN
6619
6620 -- call START_ACTIVITY to create savepoint, check compatibility
6621 -- and initialize message list
6622 l_return_status := OKL_API.START_ACTIVITY(
6623 p_api_name => l_api_name,
6624 p_pkg_name => g_pkg_name,
6625 p_init_msg_list => p_init_msg_list,
6626 l_api_version => l_api_version,
6627 p_api_version => p_api_version,
6628 p_api_type => g_api_type,
6629 x_return_status => x_return_status);
6630
6631 -- check if activity started successfully
6632 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
6633 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6634 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
6635 raise OKL_API.G_EXCEPTION_ERROR;
6636 End If;
6637
6638 l_klev_rec := p_klev_rec;
6639 l_clev_rec := p_clev_rec;
6640
6641 --
6642 -- Calling amount round-off process
6643 --
6644 roundoff_line_amount(
6645 x_return_status => x_return_status,
6646 x_msg_count => x_msg_count,
6647 x_msg_data => x_msg_data,
6648 p_clev_rec => l_clev_rec,
6649 p_klev_rec => l_klev_rec,
6650 x_clev_rec => lx_clev_rec,
6651 x_klev_rec => lx_klev_rec
6652 );
6653
6654 -- check return status
6655 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
6656 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6657 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
6658 raise OKL_API.G_EXCEPTION_ERROR;
6659 End If;
6660
6661 l_klev_rec := lx_klev_rec;
6662 l_clev_rec := lx_clev_rec;
6663
6664 --Bug# 3143522
6665 --
6666 -- call procedure to get default line dates for Fee and service lines
6667 --
6668 If nvl(l_clev_rec.start_date,OKL_API.G_MISS_DATE) = OKL_API.G_MISS_DATE or
6669 nvl(l_clev_rec.end_date,OKL_API.G_MISS_DATE) = OKL_API.G_MISS_DATE or
6670 nvl(l_clev_rec.currency_code,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR or
6671 nvl(l_clev_rec.sts_code,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
6672
6673
6674 l_dt_clev_rec := l_clev_rec;
6675
6676 open l_orig_clev_csr(p_cle_id => l_clev_rec.id);
6677 fetch l_orig_clev_csr into l_orig_chr_id,
6678 l_orig_cle_id,
6679 l_orig_lse_id,
6680 l_orig_start_date,
6681 l_orig_end_date,
6682 l_orig_currency_code,
6683 l_orig_sts_code;
6684 close l_orig_clev_csr;
6685
6686 If nvl(l_dt_clev_rec.dnz_chr_id,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM then
6687 l_dt_clev_rec.dnz_chr_id := l_orig_chr_id;
6688 End If;
6689 If nvl(l_dt_clev_rec.cle_id,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM then
6690 l_dt_clev_rec.cle_id := l_orig_cle_id;
6691 End If;
6692 If nvl(l_dt_clev_rec.lse_id,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM then
6693 l_dt_clev_rec.lse_id := l_orig_lse_id;
6694 End If;
6695 If nvl(l_dt_clev_rec.start_date,OKL_API.G_MISS_DATE) = OKL_API.G_MISS_DATE then
6696 l_dt_clev_rec.start_date := l_orig_start_date;
6697 End If;
6698 If nvl(l_dt_clev_rec.end_date,OKL_API.G_MISS_DATE) = OKL_API.G_MISS_DATE then
6699 l_dt_clev_rec.end_date := l_orig_end_date;
6700 End If;
6701 If nvl(l_dt_clev_rec.currency_code,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
6702 l_dt_clev_rec.currency_code := l_orig_currency_code;
6703 End If;
6704 If nvl(l_dt_clev_rec.sts_code,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
6705 l_dt_clev_rec.sts_code := l_orig_sts_code;
6706 End If;
6707
6708 If nvl(l_dt_clev_rec.start_date,OKL_API.G_MISS_DATE) = OKL_API.G_MISS_DATE or
6709 nvl(l_dt_clev_rec.end_date,OKL_API.G_MISS_DATE) = OKL_API.G_MISS_DATE or
6710 nvl(l_dt_clev_rec.currency_code,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR or
6711 nvl(l_dt_clev_rec.sts_code,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
6712
6713 get_line_dates(p_clev_rec => l_dt_clev_rec,
6714 x_return_status => x_return_status,
6715 x_clev_rec => lx_dt_clev_rec);
6716
6717 -- check return status
6718 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
6719 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6720 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
6721 raise OKL_API.G_EXCEPTION_ERROR;
6722 End If;
6723
6724 If nvl(lx_dt_clev_rec.start_date,OKL_API.G_MISS_DATE) <> OKL_API.G_MISS_DATE then
6725 l_clev_rec.start_date := lx_dt_clev_rec.start_date;
6726 End If;
6727 If nvl(lx_dt_clev_rec.end_date,OKL_API.G_MISS_DATE) <> OKL_API.G_MISS_DATE then
6728 l_clev_rec.end_date := lx_dt_clev_rec.end_date;
6729 End If;
6730 If nvl(lx_dt_clev_rec.currency_code,OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR then
6731 l_clev_rec.currency_code := lx_dt_clev_rec.currency_code;
6732 End If;
6733 If nvl(lx_dt_clev_rec.sts_code,OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR then
6734 l_clev_rec.sts_code := lx_dt_clev_rec.sts_code;
6735 End If;
6736 End If;
6737 End If;
6738 --Bug# 3143522
6739
6740 --
6741 -- call procedure in complex API
6742 --
6743 okl_okc_migration_pvt.update_contract_line(
6744 p_api_version => p_api_version,
6745 p_init_msg_list => p_init_msg_list,
6746 x_return_status => x_return_status,
6747 x_msg_count => x_msg_count,
6748 x_msg_data => x_msg_data,
6749 p_clev_rec => l_clev_rec,
6750 x_clev_rec => x_clev_rec);
6751
6752 -- check return status
6753 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
6754 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6755 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
6756 raise OKL_API.G_EXCEPTION_ERROR;
6757 End If;
6758
6759 -- get id from OKC record
6760 l_klev_rec.ID := x_clev_rec.ID;
6761
6762 -- check whether the shadow is present
6763 open l_klev_csr(l_klev_rec.id);
6764 fetch l_klev_csr into l_dummy_var;
6765 close l_klev_csr;
6766
6767 -- call procedure in complex API
6768 -- if l_dummy_var is changed then the shadow is present
6769 -- and we need to update it, otherwise we need to create the shadow
6770 if (l_dummy_var = 'x') THEN
6771 OKL_KLE_PVT.Update_Row(
6772 p_api_version => p_api_version,
6773 p_init_msg_list => p_init_msg_list,
6774 x_return_status => x_return_status,
6775 x_msg_count => x_msg_count,
6776 x_msg_data => x_msg_data,
6777 p_klev_rec => l_klev_rec,
6778 x_klev_rec => x_klev_rec);
6779 else
6780 OKL_KLE_PVT.Insert_Row(
6781 p_api_version => p_api_version,
6782 p_init_msg_list => p_init_msg_list,
6783 x_return_status => x_return_status,
6784 x_msg_count => x_msg_count,
6785 x_msg_data => x_msg_data,
6786 p_klev_rec => l_klev_rec,
6787 x_klev_rec => x_klev_rec);
6788 end if;
6789
6790 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
6791 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6792 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
6793 raise OKL_API.G_EXCEPTION_ERROR;
6794 End If;
6795
6796 If p_edit_mode = 'Y' Then
6797 If (x_clev_rec.dnz_chr_id is NOT NULL) AND (x_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
6798 --cascade edit status on to lines
6799 okl_contract_status_pub.cascade_lease_status_edit
6800 (p_api_version => p_api_version,
6801 p_init_msg_list => p_init_msg_list,
6802 x_return_status => x_return_status,
6803 x_msg_count => x_msg_count,
6804 x_msg_data => x_msg_data,
6805 p_chr_id => x_clev_rec.dnz_chr_id);
6806
6807 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
6808 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6809 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
6810 raise OKL_API.G_EXCEPTION_ERROR;
6811 End If;
6812 END IF;
6813 End If;
6814
6815 /*
6816 -- vthiruva, 08/19/2004
6817 -- START, Code change to enable Business Event
6818 */
6819 --fetch the line style code for the record
6820 OPEN lty_code_csr(x_clev_rec.ID);
6821 FETCH lty_code_csr into l_lty_code;
6822 CLOSE lty_code_csr;
6823
6824 IF l_lty_code = 'FREE_FORM' THEN
6825 -- raise the business event for update credit limit if line style code is FREE_FORM
6826 l_event_name := G_WF_EVT_CR_LMT_UPDATED;
6827 l_raise_business_event := OKL_API.G_TRUE;
6828 --create the parameter list to pass to raise_event
6829 wf_event.AddParameterToList(G_WF_ITM_CR_LINE_ID,l_clev_rec.dnz_chr_id,l_parameter_list);
6830 wf_event.AddParameterToList(G_WF_ITM_CR_LMT_ID,l_clev_rec.id,l_parameter_list);
6831 ELSIF l_lty_code = 'FREE_FORM1' THEN
6832 -- raise business event only if the context contract is a lease contract
6833 l_raise_business_event := OKL_LLA_UTIL_PVT.is_lease_contract(l_clev_rec.dnz_chr_id);
6834 IF(l_raise_business_event = OKL_API.G_TRUE)THEN
6835 -- raise the business event for create asset, if line style code is FREE_FORM1
6836 l_event_name := G_WF_EVT_ASSET_UPDATED;
6837 --create the parameter list to pass to raise_event
6838 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,l_clev_rec.dnz_chr_id,l_parameter_list);
6839 wf_event.AddParameterToList(G_WF_ITM_ASSET_ID,x_clev_rec.id,l_parameter_list);
6840 END IF;
6841 ELSIF l_lty_code = 'SOLD_SERVICE' THEN
6842 -- raise business event only if the context contract is a lease contract
6843 l_raise_business_event := OKL_LLA_UTIL_PVT.is_lease_contract(l_clev_rec.dnz_chr_id);
6844 IF(l_raise_business_event = OKL_API.G_TRUE)THEN
6845 --raise the business event for create service, if line style code is SOLD_SERVICE
6846 l_event_name := G_WF_EVT_SERVICE_UPDATED;
6847 --create the parameter list to pass to raise_event
6848 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,l_clev_rec.dnz_chr_id,l_parameter_list);
6849 wf_event.AddParameterToList(G_WF_ITM_SRV_LINE_ID,x_clev_rec.id,l_parameter_list);
6850 -- check if this service line is linked with a service contract
6851 OPEN get_linked_serv_cle(l_clev_rec.dnz_chr_id,x_clev_rec.id);
6852 FETCH get_linked_serv_cle INTO l_linked_serv_cle_id;
6853 CLOSE get_linked_serv_cle;
6854 IF(l_linked_serv_cle_id IS NOT NULL)THEN
6855 -- we have a service line, derive the service contract and pass the service line and
6856 -- service contract to the event
6857 OPEN get_linked_serv_khr(l_linked_serv_cle_id);
6858 FETCH get_linked_serv_khr INTO l_linked_serv_chr_id;
6859 CLOSE get_linked_serv_khr;
6860 wf_event.AddParameterToList(G_WF_ITM_SERVICE_KHR_ID,l_linked_serv_chr_id,l_parameter_list);
6861 wf_event.AddParameterToList(G_WF_ITM_SERVICE_CLE_ID,l_linked_serv_cle_id,l_parameter_list);
6862 END IF;
6863 END IF;
6864 --update_fee event is raised from here rather than okl_maintain_fee_pvt
6865 --as split contract process does not call okl_maintain_fee_pvt, but directly calls
6866 --okl_contract_pvt
6867 ELSIF l_lty_code = 'FEE' THEN
6868 -- raise business event only if the context contract is a lease contract
6869 l_raise_business_event := OKL_LLA_UTIL_PVT.is_lease_contract(l_clev_rec.dnz_chr_id);
6870 IF(l_raise_business_event = OKL_API.G_TRUE)THEN
6871 -- raise the business event for fee updated, if line style code is FEE
6872 l_event_name := G_WF_EVT_FEE_UPDATED;
6873 --create the parameter list to pass to raise_event
6874 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,l_clev_rec.dnz_chr_id,l_parameter_list);
6875 wf_event.AddParameterToList(G_WF_ITM_FEE_LINE_ID,x_clev_rec.id,l_parameter_list);
6876 END IF;
6877 END IF;
6878
6879 -- raise business event only if the contract is a lease contract, the raise_event flag is on and business event
6880 -- name is specified. the event should also be raised if this is a credit limit, in which case is_lease_contract
6881 -- does not hold good
6882 IF(l_raise_business_event = OKL_API.G_TRUE AND l_event_name IS NOT NULL) THEN
6883 raise_business_event(p_api_version => p_api_version,
6884 p_init_msg_list => p_init_msg_list,
6885 x_return_status => x_return_status,
6886 x_msg_count => x_msg_count,
6887 x_msg_data => x_msg_data,
6888 p_event_name => l_event_name,
6889 p_parameter_list => l_parameter_list);
6890 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6891 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6892 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6893 RAISE OKL_API.G_EXCEPTION_ERROR;
6894 END IF;
6895 END IF;
6896
6897 /*
6898 -- vthiruva, 08/19/2004
6899 -- END, Code change to enable Business Event
6900 */
6901
6902 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
6903 x_msg_data => x_msg_data);
6904 EXCEPTION
6905 when OKL_API.G_EXCEPTION_ERROR then
6906 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6907 p_api_name => l_api_name,
6908 p_pkg_name => g_pkg_name,
6909 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
6910 x_msg_count => x_msg_count,
6911 x_msg_data => x_msg_data,
6912 p_api_type => g_api_type);
6913 if l_klev_csr%ISOPEN then
6914 close l_klev_csr;
6915 end if;
6916
6917 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
6918 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6919 p_api_name => l_api_name,
6920 p_pkg_name => g_pkg_name,
6921 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
6922 x_msg_count => x_msg_count,
6923 x_msg_data => x_msg_data,
6924 p_api_type => g_api_type);
6925 if l_klev_csr%ISOPEN then
6926 close l_klev_csr;
6927 end if;
6928
6929 when OTHERS then
6930 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6931 p_api_name => l_api_name,
6932 p_pkg_name => g_pkg_name,
6933 p_exc_name => 'OTHERS',
6934 x_msg_count => x_msg_count,
6935 x_msg_data => x_msg_data,
6936 p_api_type => g_api_type);
6937 if l_klev_csr%ISOPEN then
6938 close l_klev_csr;
6939 end if;
6940 END update_contract_line;
6941
6942 -- Start of comments
6943 --
6944 -- Procedure Name : update_contract_line (default)
6945 -- Description : updates contract line for shadowed contract
6946 -- Business Rules :
6947 -- Parameters :
6948 -- Version : 1.0
6949 -- Bug # 2525554 : Now calls the p_edit_mode form of update_contract_line
6950 -- with p_edit_mode = 'Y' as default. This is the original
6951 -- default update contract line.
6952 -- End of comments
6953 PROCEDURE update_contract_line(
6954 p_api_version IN NUMBER,
6955 p_init_msg_list IN VARCHAR2,
6956 x_return_status OUT NOCOPY VARCHAR2,
6957 x_msg_count OUT NOCOPY NUMBER,
6958 x_msg_data OUT NOCOPY VARCHAR2,
6959 p_clev_rec IN okl_okc_migration_pvt.clev_rec_type,
6960 p_klev_rec IN klev_rec_type,
6961 x_clev_rec OUT NOCOPY okl_okc_migration_pvt.clev_rec_type,
6962 x_klev_rec OUT NOCOPY klev_rec_type) IS
6963
6964 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
6965 l_klev_rec klev_rec_type;
6966
6967 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_CONTRACT_LINE';
6968 l_api_version CONSTANT NUMBER := 1.0;
6969 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
6970
6971 BEGIN
6972
6973 -- call START_ACTIVITY to create savepoint, check compatibility
6974 -- and initialize message list
6975 l_return_status := OKL_API.START_ACTIVITY(
6976 p_api_name => l_api_name,
6977 p_pkg_name => g_pkg_name,
6978 p_init_msg_list => p_init_msg_list,
6979 l_api_version => l_api_version,
6980 p_api_version => p_api_version,
6981 p_api_type => g_api_type,
6982 x_return_status => x_return_status);
6983
6984 -- check if activity started successfully
6985 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
6986 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6987 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
6988 raise OKL_API.G_EXCEPTION_ERROR;
6989 End If;
6990
6991 l_klev_rec := p_klev_rec;
6992 l_clev_rec := p_clev_rec;
6993
6994 --
6995 -- call procedure in complex API
6996 --
6997 update_contract_line(
6998 p_api_version => p_api_version,
6999 p_init_msg_list => p_init_msg_list,
7000 x_return_status => x_return_status,
7001 x_msg_count => x_msg_count,
7002 x_msg_data => x_msg_data,
7003 p_clev_rec => l_clev_rec,
7004 p_klev_rec => l_klev_rec,
7005 p_edit_mode => 'Y',
7006 x_clev_rec => x_clev_rec,
7007 x_klev_rec => x_klev_rec);
7008
7009 -- check return status
7010 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7011 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7012 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7013 raise OKL_API.G_EXCEPTION_ERROR;
7014 End If;
7015
7016 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
7017 x_msg_data => x_msg_data);
7018 EXCEPTION
7019 when OKL_API.G_EXCEPTION_ERROR then
7020 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7021 p_api_name => l_api_name,
7022 p_pkg_name => g_pkg_name,
7023 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
7024 x_msg_count => x_msg_count,
7025 x_msg_data => x_msg_data,
7026 p_api_type => g_api_type);
7027
7028 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
7029 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7030 p_api_name => l_api_name,
7031 p_pkg_name => g_pkg_name,
7032 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
7033 x_msg_count => x_msg_count,
7034 x_msg_data => x_msg_data,
7035 p_api_type => g_api_type);
7036
7037 when OTHERS then
7038 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7039 p_api_name => l_api_name,
7040 p_pkg_name => g_pkg_name,
7041 p_exc_name => 'OTHERS',
7042 x_msg_count => x_msg_count,
7043 x_msg_data => x_msg_data,
7044 p_api_type => g_api_type);
7045 END update_contract_line;
7046
7047 -- Start of comments
7048 -- Bug 2525554 : added this overloaded form for bug 252554
7049 -- Procedure Name : update_contract_line
7050 -- Description : updates contract line for shadowed contract
7051 -- Business Rules : If p_edit_mode is sent as 'Y' contract status will be
7052 -- updated to 'INCOMPLETE' else it will not be updated to
7053 -- 'INCOMPLETE'. Facilitates updater transactions which
7054 -- happen in the background while the contract is not 'BOOKED'
7055 -- for example - calculation and updation of okl_k_lines.
7056 -- capitalized_interest every time user navigates to booking
7057 -- page. It is not desired that khr status change to 'INCOMPLETE'
7058 -- every time capitalized interest is updated.
7059 -- Parameters :
7060 -- Version : 1.0
7061 -- End of comments
7062
7063 PROCEDURE update_contract_line(
7064 p_api_version IN NUMBER,
7065 p_init_msg_list IN VARCHAR2,
7066 x_return_status OUT NOCOPY VARCHAR2,
7067 x_msg_count OUT NOCOPY NUMBER,
7068 x_msg_data OUT NOCOPY VARCHAR2,
7069 p_clev_tbl IN okl_okc_migration_pvt.clev_tbl_type,
7070 p_klev_tbl IN klev_tbl_type,
7071 p_edit_mode IN VARCHAR2,
7072 x_clev_tbl OUT NOCOPY okl_okc_migration_pvt.clev_tbl_type,
7073 x_klev_tbl OUT NOCOPY klev_tbl_type) IS
7074
7075 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_CONTRACT_LINE';
7076 l_api_version CONSTANT NUMBER := 1.0;
7077 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
7078 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
7079 i NUMBER;
7080 l_klev_tbl klev_tbl_type := p_klev_tbl;
7081 BEGIN
7082 -- call START_ACTIVITY to create savepoint, check compatibility
7083 -- and initialize message list
7084 l_return_status := OKL_API.START_ACTIVITY(
7085 p_api_name => l_api_name,
7086 p_pkg_name => g_pkg_name,
7087 p_init_msg_list => p_init_msg_list,
7088 l_api_version => l_api_version,
7089 p_api_version => p_api_version,
7090 p_api_type => g_api_type,
7091 x_return_status => x_return_status);
7092
7093 -- check if activity started successfully
7094 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7095 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7096 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
7097 raise OKL_API.G_EXCEPTION_ERROR;
7098
7099 End If;
7100
7101 If (p_clev_tbl.COUNT > 0) Then
7102 i := p_clev_tbl.FIRST;
7103 LOOP
7104 -- call procedure in complex API for a record
7105 update_contract_line(
7106 p_api_version => p_api_version,
7107 p_init_msg_list => p_init_msg_list,
7108 x_return_status => x_return_status,
7109 x_msg_count => x_msg_count,
7110 x_msg_data => x_msg_data,
7111 p_clev_rec => p_clev_tbl(i),
7112 p_klev_rec => l_klev_tbl(i),
7113 p_edit_mode => p_edit_mode,
7114 x_clev_rec => x_clev_tbl(i),
7115 x_klev_rec => x_klev_tbl(i));
7116
7117 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
7118 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
7119 l_overall_status := x_return_status;
7120 End If;
7121 End If;
7122
7123 EXIT WHEN (i = p_clev_tbl.LAST);
7124 i := p_clev_tbl.NEXT(i);
7125 END LOOP;
7126
7127 -- return overall status
7128 x_return_status := l_overall_status;
7129 End If;
7130
7131 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7132 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7133 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7134 raise OKL_API.G_EXCEPTION_ERROR;
7135 End If;
7136
7137 OKL_API.END_ACTIVITY( x_msg_count => x_msg_count,
7138 x_msg_data => x_msg_data);
7139 EXCEPTION
7140 when OKL_API.G_EXCEPTION_ERROR then
7141 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7142 p_api_name => l_api_name,
7143 p_pkg_name => g_pkg_name,
7144 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
7145 x_msg_count => x_msg_count,
7146 x_msg_data => x_msg_data,
7147 p_api_type => g_api_type);
7148
7149 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
7150 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7151 p_api_name => l_api_name,
7152 p_pkg_name => g_pkg_name,
7153 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
7154 x_msg_count => x_msg_count,
7155 x_msg_data => x_msg_data,
7156 p_api_type => g_api_type);
7157
7158 when OTHERS then
7159 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7160 p_api_name => l_api_name,
7161 p_pkg_name => g_pkg_name,
7162 p_exc_name => 'OTHERS',
7163 x_msg_count => x_msg_count,
7164 x_msg_data => x_msg_data,
7165 p_api_type => g_api_type);
7166
7167 END update_contract_line;
7168
7169
7170 -- Start of comments
7171 --
7172 -- Procedure Name : update_contract_line
7173 -- Description : updates contract line for shadowed contract(default)
7174 -- Business Rules :
7175 -- Parameters :
7176 -- Version : 1.0
7177 -- Bug # 2525554 : Now calls the p_edit_mode form of update_contract_line
7178 -- with p_edit_mode = 'Y' as default. This is the original
7179 -- default update contract line for table signature.
7180 -- End of comments
7181 PROCEDURE update_contract_line(
7182 p_api_version IN NUMBER,
7183 p_init_msg_list IN VARCHAR2,
7184 x_return_status OUT NOCOPY VARCHAR2,
7185 x_msg_count OUT NOCOPY NUMBER,
7186 x_msg_data OUT NOCOPY VARCHAR2,
7187 p_clev_tbl IN okl_okc_migration_pvt.clev_tbl_type,
7188 p_klev_tbl IN klev_tbl_type,
7189 x_clev_tbl OUT NOCOPY okl_okc_migration_pvt.clev_tbl_type,
7190 x_klev_tbl OUT NOCOPY klev_tbl_type) IS
7191
7192 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_CONTRACT_LINE';
7193 l_api_version CONSTANT NUMBER := 1.0;
7194 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
7195 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
7196 i NUMBER;
7197 l_klev_tbl klev_tbl_type := p_klev_tbl;
7198 BEGIN
7199 -- call START_ACTIVITY to create savepoint, check compatibility
7200 -- and initialize message list
7201 l_return_status := OKL_API.START_ACTIVITY(
7202 p_api_name => l_api_name,
7203 p_pkg_name => g_pkg_name,
7204 p_init_msg_list => p_init_msg_list,
7205 l_api_version => l_api_version,
7206 p_api_version => p_api_version,
7207 p_api_type => g_api_type,
7208 x_return_status => x_return_status);
7209
7210 -- check if activity started successfully
7211 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7212 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7213 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
7214 raise OKL_API.G_EXCEPTION_ERROR;
7215
7216 End If;
7217
7218 If (p_clev_tbl.COUNT > 0) Then
7219
7220 update_contract_line(
7221 p_api_version => p_api_version,
7222 p_init_msg_list => p_init_msg_list,
7223 x_return_status => x_return_status,
7224 x_msg_count => x_msg_count,
7225 x_msg_data => x_msg_data,
7226 p_clev_tbl => p_clev_tbl,
7227 p_klev_tbl => l_klev_tbl,
7228 p_edit_mode => 'Y',
7229 x_clev_tbl => x_clev_tbl,
7230 x_klev_tbl => x_klev_tbl);
7231
7232 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7233 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7234 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7235 raise OKL_API.G_EXCEPTION_ERROR;
7236 End If;
7237
7238 End If;
7239
7240
7241 OKL_API.END_ACTIVITY( x_msg_count => x_msg_count,
7242 x_msg_data => x_msg_data);
7243 EXCEPTION
7244 when OKL_API.G_EXCEPTION_ERROR then
7245 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7246 p_api_name => l_api_name,
7247 p_pkg_name => g_pkg_name,
7248 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
7249 x_msg_count => x_msg_count,
7250 x_msg_data => x_msg_data,
7251 p_api_type => g_api_type);
7252
7253 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
7254 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7255 p_api_name => l_api_name,
7256 p_pkg_name => g_pkg_name,
7257 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
7258 x_msg_count => x_msg_count,
7259 x_msg_data => x_msg_data,
7260 p_api_type => g_api_type);
7261
7262 when OTHERS then
7263 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7264 p_api_name => l_api_name,
7265 p_pkg_name => g_pkg_name,
7266 p_exc_name => 'OTHERS',
7267 x_msg_count => x_msg_count,
7268 x_msg_data => x_msg_data,
7269 p_api_type => g_api_type);
7270
7271 END update_contract_line;
7272
7273
7274 -- Start of comments
7275 --
7276 -- Procedure Name : delete_contract_line
7277 -- Description : deletes contract line for shadowed contract
7278 -- Business Rules : line can be deleted only when there is no sublines attached
7279 -- Parameters :
7280 -- Version : 1.0
7281 -- End of comments
7282 PROCEDURE delete_contract_line(
7283 p_api_version IN NUMBER,
7284 p_init_msg_list IN VARCHAR2,
7285 x_return_status OUT NOCOPY VARCHAR2,
7286 x_msg_count OUT NOCOPY NUMBER,
7287 x_msg_data OUT NOCOPY VARCHAR2,
7288 p_clev_rec IN okl_okc_migration_pvt.clev_rec_type,
7289 p_klev_rec IN klev_rec_type) IS
7290
7291 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
7292 l_klev_rec klev_rec_type;
7293
7294 l_clev_rec_out okl_okc_migration_pvt.clev_rec_type;
7295 l_klev_rec_out klev_rec_type;
7296
7297 l_deletion_type Varchar2(1);
7298
7299 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_CONTRACT_LINE';
7300 l_api_version CONSTANT NUMBER := 1.0;
7301 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
7302
7303 --cursor to find out chr id required to flip status at edit point
7304 CURSOR chr_id_crs (p_cle_id IN NUMBER) is
7305 SELECT DNZ_CHR_ID
7306 FROM OKC_K_LINES_B
7307 WHERE ID = P_CLE_ID;
7308
7309 l_dnz_chr_id OKC_K_LINES_B.dnz_chr_id%TYPE;
7310
7311 --cursor to find out if any transactions hanging off the line to be deleted
7312 CURSOR l_get_txl_crs (p_kle_id IN NUMBER) is
7313 SELECT tas_id,
7314 id
7315 FROM OKL_TXL_ASSETS_B
7316 WHERE kle_id = p_kle_id;
7317
7318 l_tas_id OKL_TXL_ASSETS_B.TAS_ID%TYPE;
7319 l_txl_id OKL_TXL_ASSETS_B.ID%TYPE;
7320
7321 --cursor to get the transaction detail record if it exists
7322 CURSOR l_get_txd_crs (p_tal_id IN NUMBER) is
7323 SELECT ID
7324 FROM OKL_TXD_ASSETS_B
7325 WHERE tal_id = p_tal_id;
7326
7327 l_txd_id OKL_TXD_ASSETS_B.ID%TYPE;
7328
7329 l_adpv_rec OKL_TXD_ASSETS_PUB.adpv_rec_type;
7330 l_tlpv_rec OKL_TXL_ASSETS_PUB.tlpv_rec_type;
7331 l_thpv_rec OKL_TRX_ASSETS_PUB.thpv_rec_type;
7332
7333 --Bug # 2522268
7334 --cursor to get ib transaction line record
7335 CURSOR l_get_iti_csr (p_kle_id IN NUMBER) is
7336 SELECT tas_id,
7337 id
7338 FROM OKL_TXL_ITM_INSTS
7339 WHERE kle_id = p_kle_id;
7340
7341 l_iti_tas_id OKL_TXL_ITM_INSTS.TAS_ID%TYPE;
7342 l_iti_id OKL_TXL_ITM_INSTS.ID%TYPE;
7343
7344 l_iipv_rec OKL_TXL_ITM_INSTS_PUB.iipv_rec_type;
7345 l_iti_thpv_rec OKL_TRX_ASSETS_PUB.thpv_rec_type;
7346 --Bug # 2522268
7347
7348 --Bug# 3143522 : delete supplier invoice details is line is deleted
7349 --cursor to ger supplier invoice details
7350 CURSOR l_get_sid_csr (p_kle_id IN NUMBER) is
7351 Select id
7352 FROM OKL_SUPP_INVOICE_DTLS
7353 where cle_id = p_kle_id;
7354
7355 l_sid_id OKL_SUPP_INVOICE_DTLS.ID%TYPE;
7356
7357 l_sidv_tbl OKL_SUPP_INVOICE_DTLS_PUB.sidv_tbl_type;
7358
7359 --cursor to get party payment header for line
7360 -- Passthru, Bug 4350255
7361 CURSOR l_get_pyh_csr (p_kle_id IN NUMBER) is
7362 Select pyh.id
7363 FROM OKL_PARTY_PAYMENT_HDR pyh
7364 WHERE pyh.cle_id = p_kle_id;
7365
7366 l_pyh_id OKL_PARTY_PAYMENT_HDR.ID%TYPE;
7367 l_pphv_tbl OKL_PARTY_PAYMENTS_PVT.pphv_tbl_type;
7368
7369 --cursor to get party payment details for line
7370 CURSOR l_get_pyd_csr (p_kle_id IN NUMBER) is
7371 Select pyd.id
7372 FROM OKL_PARTY_PAYMENT_DTLS pyd,
7373 OKC_K_PARTY_ROLES_B cplb
7374 WHERE pyd.cpl_id = cplb.id
7375 AND nvl(cplb.cle_id,-9999) = p_kle_id;
7376
7377 l_pyd_id OKL_PARTY_PAYMENT_DTLS.ID%TYPE;
7378
7379 l_ppydv_tbl OKL_PYD_PVT.ppydv_tbl_type;
7380 i number default 0;
7381
7382 --Bug# 4558486
7383 CURSOR l_kpl_csr(p_kle_id IN NUMBER,
7384 p_khr_id IN NUMBER) is
7385 SELECT kpl.id
7386 FROM okl_k_party_roles kpl,
7387 okc_k_party_roles_b cpl
7388 WHERE kpl.id = cpl.id
7389 AND cpl.cle_id = p_kle_id
7390 AND cpl.dnz_chr_id = p_khr_id;
7391
7392 l_kplv_tbl OKL_KPL_PVT.kplv_tbl_type;
7393
7394 --Bug# 3143522
7395 /*
7396 -- vthiruva, 08/19/2004
7397 -- START, Code change to enable Business Event
7398 */
7399 --cursor to fetch the line style code for line style id passed
7400 CURSOR lty_code_csr(p_line_id okc_k_lines_b.id%TYPE) IS
7401 SELECT lse.lty_code
7402 FROM okc_line_styles_b lse,
7403 okc_k_lines_b lns
7404 WHERE lns.id = p_line_id
7405 AND lse.id = lns.lse_id;
7406
7407 l_lty_code okc_line_styles_b.lty_code%TYPE;
7408 l_parameter_list wf_parameter_list_t;
7409 l_raise_business_event VARCHAR2(1) := OKL_API.G_FALSE;
7410 l_business_event_name WF_EVENTS.NAME%TYPE;
7411 /*
7412 -- vthiruva, 08/19/2004
7413 -- END, Code change to enable Business Event
7414 */
7415
7416 BEGIN
7417
7418 -- call START_ACTIVITY to create savepoint, check compatibility
7419 -- and initialize message list
7420 l_return_status := OKL_API.START_ACTIVITY(
7421 p_api_name => l_api_name,
7422 p_pkg_name => g_pkg_name,
7423 p_init_msg_list => p_init_msg_list,
7424 l_api_version => l_api_version,
7425 p_api_version => p_api_version,
7426 p_api_type => g_api_type,
7427 x_return_status => x_return_status);
7428
7429 -- check if activity started successfully
7430 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7431 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7432 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
7433 raise OKL_API.G_EXCEPTION_ERROR;
7434 End If;
7435
7436 l_klev_rec := p_klev_rec;
7437 l_clev_rec := p_clev_rec;
7438
7439 --check if okl contract line delete is allowed
7440 kle_delete_allowed(p_cle_id => l_klev_rec.id,
7441 x_deletion_type => l_deletion_type,
7442 x_return_status => x_return_status);
7443
7444 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7445 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7446 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
7447 raise OKL_API.G_EXCEPTION_ERROR;
7448 End If;
7449
7450 OPEN lty_code_csr(l_clev_rec.id);
7451 FETCH lty_code_csr into l_lty_code;
7452 CLOSE lty_code_csr;
7453
7454
7455 If l_deletion_type = 'L' Then --logical delete
7456 --update line status to 'Abandoned'
7457 l_clev_rec.sts_code := G_OKL_CANCELLED_STS_CODE;
7458 --l_clev_rec.end_date := sysdate;
7459
7460 update_contract_line(
7461 p_api_version => p_api_version,
7462 p_init_msg_list => p_init_msg_list,
7463 x_return_status => x_return_status,
7464 x_msg_count => x_msg_count,
7465 x_msg_data => x_msg_data,
7466 p_clev_rec => l_clev_rec,
7467 p_klev_rec => l_klev_rec,
7468 x_clev_rec => l_clev_rec_out,
7469 x_klev_rec => l_klev_rec_out
7470 );
7471
7472 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7473 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7474 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
7475 raise OKL_API.G_EXCEPTION_ERROR;
7476 End If;
7477
7478 --Bug # 2522268 Begin
7479 --do logical deletion of asset number so
7480 -- old asset number is available for use
7481 Asset_Logical_Delete( p_api_version => p_api_version,
7482 p_init_msg_list => p_init_msg_list,
7483 x_return_status => x_return_status,
7484 x_msg_count => x_msg_count,
7485 x_msg_data => x_msg_data,
7486 p_cle_id => l_clev_rec_out.id,
7487 p_asset_number => l_clev_rec_out.name);
7488
7489 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7490 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7491 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
7492 raise OKL_API.G_EXCEPTION_ERROR;
7493 End If;
7494
7495 --do logical deletion of linked assets
7496 Linked_Asset_Delete(p_api_version => p_api_version,
7497 p_init_msg_list => p_init_msg_list,
7498 x_return_status => x_return_status,
7499 x_msg_count => x_msg_count,
7500 x_msg_data => x_msg_data,
7501 p_cle_id => l_clev_rec_out.id,
7502 p_deletion_type => l_deletion_type);
7503
7504 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7505 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7506 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
7507 raise OKL_API.G_EXCEPTION_ERROR;
7508 End If;
7509 --Bug # 2522268 End
7510
7511 --Bug # 2937980
7512 Inactivate_Streams
7513 ( p_api_version => p_api_version,
7514 p_init_msg_list => p_init_msg_list,
7515 x_return_status => x_return_status,
7516 x_msg_count => x_msg_count,
7517 x_msg_data => x_msg_data,
7518 p_cle_id => l_clev_rec.id);
7519
7520 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7521 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7522 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
7523 raise OKL_API.G_EXCEPTION_ERROR;
7524 End If;
7525 --Bug # 2937980
7526
7527 If (l_clev_rec_out.dnz_chr_id is not null) AND (l_clev_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
7528 --call to cascade the status to Incomplete
7529 okl_contract_status_pub.cascade_lease_status_edit
7530 (p_api_version => p_api_version,
7531 p_init_msg_list => p_init_msg_list,
7532 x_return_status => x_return_status,
7533 x_msg_count => x_msg_count,
7534 x_msg_data => x_msg_data,
7535 p_chr_id => l_clev_rec_out.dnz_chr_id);
7536
7537 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7538 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7539 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7540 raise OKL_API.G_EXCEPTION_ERROR;
7541 End If;
7542
7543 End If;
7544
7545 ElsIf l_deletion_type = 'N' Then --not allowed
7546 null; --delete is not allowed this will be normally an error
7547 ElsIf l_deletion_type = 'P' Then
7548
7549 --call to cascade the status to Incomplete
7550 --this has to be done first as l_clev_rec.dnz_chr_id will be null
7551 -- once the line has been deleted.
7552 If (l_clev_rec.dnz_chr_id is NULL) or (l_clev_rec.dnz_chr_id = OKL_API.G_MISS_NUM) Then
7553 Open chr_id_crs(p_cle_id => l_clev_rec.cle_id);
7554 Fetch chr_id_crs into l_dnz_chr_id;
7555 If chr_id_crs%NOTFOUND Then
7556 null;
7557 End If;
7558 Close chr_id_crs;
7559 Else
7560 l_dnz_chr_id := l_clev_rec.dnz_chr_id;
7561 End If;
7562
7563 If (l_dnz_chr_id is not null) AND (l_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
7564
7565 okl_contract_status_pub.cascade_lease_status_edit
7566 (p_api_version => p_api_version,
7567 p_init_msg_list => p_init_msg_list,
7568 x_return_status => x_return_status,
7569 x_msg_count => x_msg_count,
7570 x_msg_data => x_msg_data,
7571 p_chr_id => l_dnz_chr_id);
7572
7573 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7574 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7575 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7576 raise OKL_API.G_EXCEPTION_ERROR;
7577 End If;
7578
7579 End If;
7580
7581 --Bug # 2522268
7582 --Physical delete of linked covered asset lines
7583 Linked_Asset_Delete(p_api_version => p_api_version,
7584 p_init_msg_list => p_init_msg_list,
7585 x_return_status => x_return_status,
7586 x_msg_count => x_msg_count,
7587 x_msg_data => x_msg_data,
7588 p_cle_id => l_clev_rec.id,
7589 p_deletion_type => l_deletion_type);
7590
7591 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
7592 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7593 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
7594 raise OKL_API.G_EXCEPTION_ERROR;
7595 End If;
7596 --Bug # 2522268 End
7597
7598 --Bug# 3143522
7599 --delete associated party payment details
7600 i := 0;
7601 open l_get_pyd_csr(p_kle_id => l_clev_rec.id);
7602 Loop
7603 Fetch l_get_pyd_csr into l_pyd_id;
7604 Exit when l_get_pyd_csr%NOTFOUND;
7605 i := i+1;
7606 l_ppydv_tbl(i).id := l_pyd_id;
7607 End Loop;
7608 close l_get_pyd_csr;
7609
7610 If l_ppydv_tbl.COUNT > 0 then
7611 OKL_PYD_PVT.delete_row
7612 (p_api_version => p_api_version,
7613 p_init_msg_list => p_init_msg_list,
7614 x_return_status => x_return_status,
7615 x_msg_count => x_msg_count,
7616 x_msg_data => x_msg_data,
7617 p_ppydv_tbl => l_ppydv_tbl);
7618
7619 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7620 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7621 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7622 raise OKL_API.G_EXCEPTION_ERROR;
7623 End If;
7624
7625 l_ppydv_tbl.DELETE;
7626
7627 End If;
7628 --Bug# 3143522
7629
7630 -- Passthru Bug 4350255
7631 i := 0;
7632 open l_get_pyh_csr(p_kle_id => l_clev_rec.id);
7633 Loop
7634 Fetch l_get_pyh_csr into l_pyh_id;
7635 Exit when l_get_pyh_csr%NOTFOUND;
7636 i := i+1;
7637 l_pphv_tbl(i).id := l_pyh_id;
7638 End Loop;
7639 close l_get_pyh_csr;
7640
7641 If l_pphv_tbl.COUNT > 0 then
7642 OKL_PARTY_PAYMENTS_PVT.DELETE_PARTY_PAYMENT_HDR
7643 (p_api_version => p_api_version,
7644 p_init_msg_list => p_init_msg_list,
7645 x_return_status => x_return_status,
7646 x_msg_count => x_msg_count,
7647 x_msg_data => x_msg_data,
7648 p_pphv_tbl => l_pphv_tbl );
7649
7650 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7651 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7652 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7653 raise OKL_API.G_EXCEPTION_ERROR;
7654 End If;
7655
7656 l_pphv_tbl.DELETE;
7657
7658 End If;
7659 -- Passthru Bug 4350255
7660
7661 --Bug# 4558486
7662 -- Delete records from okl_k_party_roles
7663 i := 0;
7664 For l_kpl_rec in l_kpl_csr(p_kle_id => l_clev_rec.id,
7665 p_khr_id => l_dnz_chr_id)
7666 Loop
7667 i := i + 1;
7668 l_kplv_tbl(i).id := l_kpl_rec.id;
7669 End Loop;
7670
7671 If l_kplv_tbl.COUNT > 0 then
7672 OKL_KPL_PVT.Delete_Row
7673 (p_api_version => p_api_version,
7674 p_init_msg_list => p_init_msg_list,
7675 x_return_status => x_return_status,
7676 x_msg_count => x_msg_count,
7677 x_msg_data => x_msg_data,
7678 p_kplv_tbl => l_kplv_tbl);
7679
7680 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7681 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7682 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7683 raise OKL_API.G_EXCEPTION_ERROR;
7684 End If;
7685
7686 l_kplv_tbl.DELETE;
7687 End If;
7688 --Bug# 4558486
7689
7690 --
7691 -- call procedure in complex API
7692 --
7693 okl_okc_migration_pvt.delete_contract_line(
7694 p_api_version => p_api_version,
7695 p_init_msg_list => p_init_msg_list,
7696 x_return_status => x_return_status,
7697 x_msg_count => x_msg_count,
7698 x_msg_data => x_msg_data,
7699 p_clev_rec => l_clev_rec);
7700
7701
7702 --12/10/01 ashish - changed this to call different okc api as we need to delete
7703 --okc_k_items automatically when okc_k_lines is deleted.
7704 --okc_contract_pub can be called directly here as there are no records involved
7705
7706 --taken care of in another api with p_delete_cascade_yn flag
7707
7708 -- check return status
7709 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7710 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7711 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7712 raise OKL_API.G_EXCEPTION_ERROR;
7713 End If;
7714
7715 -- get id from OKC record
7716 l_klev_rec.ID := l_clev_rec.ID;
7717
7718 -- check if any transactions are hanging on this line
7719 OPEN l_get_txl_crs (p_kle_id => l_klev_rec.ID);
7720 FETCH l_get_txl_crs into l_tas_id, l_txl_id;
7721 If l_get_txl_crs%NOTFOUND Then
7722 Null;
7723 Else
7724 --find if any transaction details attached to the txl line
7725
7726 OPEN l_get_txd_crs (p_tal_id => l_txl_id);
7727 FETCH l_get_txd_crs INTO l_txd_id;
7728 If l_get_txd_crs%NOTFOUND Then
7729 Null;
7730 Else
7731 --delete txd record
7732 l_adpv_rec.id := l_txd_id;
7733 OKL_TXD_ASSETS_PUB.delete_txd_asset_Def(
7734 p_api_version => p_api_version,
7735 p_init_msg_list => p_init_msg_list,
7736 x_return_status => x_return_status,
7737 x_msg_count => x_msg_count,
7738 x_msg_data => x_msg_data,
7739 p_adpv_rec => l_adpv_rec);
7740 -- check return status
7741 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7742 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7743 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7744 raise OKL_API.G_EXCEPTION_ERROR;
7745 End If;
7746 End If;
7747 Close l_get_txd_crs;
7748 --delete txl record
7749 l_tlpv_rec.id := l_txl_id;
7750 OKL_TXL_ASSETS_PUB.delete_txl_asset_Def(
7751 p_api_version => p_api_version,
7752 p_init_msg_list => p_init_msg_list,
7753 x_return_status => x_return_status,
7754 x_msg_count => x_msg_count,
7755 x_msg_data => x_msg_data,
7756 p_tlpv_rec => l_tlpv_rec);
7757 -- check return status
7758 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7759 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7760 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7761 raise OKL_API.G_EXCEPTION_ERROR;
7762 End If;
7763
7764 --delete tas_record
7765 l_thpv_rec.id := l_tas_id;
7766 OKL_TRX_ASSETS_PUB.delete_trx_ass_h_Def(
7767 p_api_version => p_api_version,
7768 p_init_msg_list => p_init_msg_list,
7769 x_return_status => x_return_status,
7770 x_msg_count => x_msg_count,
7771 x_msg_data => x_msg_data,
7772 p_thpv_rec => l_thpv_rec);
7773 -- check return status
7774 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7775 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7776 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7777 raise OKL_API.G_EXCEPTION_ERROR;
7778 End If;
7779 End If;
7780 Close l_get_txl_crs;
7781
7782 --Bug # 2522268
7783 -- check if any IB transactions are hanging on this line
7784 OPEN l_get_iti_csr (p_kle_id => l_klev_rec.ID);
7785 FETCH l_get_iti_csr into l_iti_tas_id, l_iti_id;
7786 If l_get_iti_csr%NOTFOUND Then
7787 Null;
7788 Else
7789 l_iipv_rec.id := l_iti_id;
7790 OKL_TXL_ITM_INSTS_PUB.delete_txl_itm_insts(
7791 p_api_version => p_api_version,
7792 p_init_msg_list => p_init_msg_list,
7793 x_return_status => x_return_status,
7794 x_msg_count => x_msg_count,
7795 x_msg_data => x_msg_data,
7796 p_iipv_rec => l_iipv_rec);
7797 -- check return status
7798 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7799 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7800 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7801 raise OKL_API.G_EXCEPTION_ERROR;
7802 End If;
7803
7804 --delete tas_record
7805 l_iti_thpv_rec.id := l_iti_tas_id;
7806 OKL_TRX_ASSETS_PUB.delete_trx_ass_h_Def(
7807 p_api_version => p_api_version,
7808 p_init_msg_list => p_init_msg_list,
7809 x_return_status => x_return_status,
7810 x_msg_count => x_msg_count,
7811 x_msg_data => x_msg_data,
7812 p_thpv_rec => l_iti_thpv_rec);
7813 -- check return status
7814 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7815 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7816 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7817 raise OKL_API.G_EXCEPTION_ERROR;
7818 End If;
7819 End If;
7820 Close l_get_iti_csr;
7821
7822 --Bug # 2522268 End
7823
7824 --Bug# 3143522
7825 --delete associated supplier invoice details
7826 i := 0;
7827 open l_get_sid_csr(p_kle_id => l_clev_rec.id);
7828 Loop
7829 Fetch l_get_sid_csr into l_sid_id;
7830 Exit when l_get_sid_csr%NOTFOUND;
7831 i := i+1;
7832 l_sidv_tbl(i).id := l_sid_id;
7833 End Loop;
7834 close l_get_sid_csr;
7835
7836 If l_sidv_tbl.COUNT > 0 then
7837 OKL_SUPP_INVOICE_DTLS_PUB.delete_sup_inv_dtls
7838 (p_api_version => p_api_version,
7839 p_init_msg_list => p_init_msg_list,
7840 x_return_status => x_return_status,
7841 x_msg_count => x_msg_count,
7842 x_msg_data => x_msg_data,
7843 p_sidv_tbl => l_sidv_tbl);
7844
7845 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7846 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7847 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7848 raise OKL_API.G_EXCEPTION_ERROR;
7849 End If;
7850
7851 l_sidv_tbl.DELETE;
7852
7853 End If;
7854 --Bug# 3143522 End
7855
7856
7857 -- call procedure in complex API
7858 OKL_KLE_PVT.Delete_Row(
7859 p_api_version => p_api_version,
7860 p_init_msg_list => p_init_msg_list,
7861 x_return_status => x_return_status,
7862 x_msg_count => x_msg_count,
7863 x_msg_data => x_msg_data,
7864 p_klev_rec => l_klev_rec);
7865
7866 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
7867 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7868 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
7869 raise OKL_API.G_EXCEPTION_ERROR;
7870 End If;
7871 End If;
7872
7873 -- sjalasut, added code to handle business event when credit limit is deleted
7874 -- raise the business event for delete credit limit only if line style code is FREE_FORM.
7875 -- keep the following condition and the raise business event api separate for
7876 -- extensibility
7877 IF(l_lty_code = 'FREE_FORM')THEN
7878 l_raise_business_event := OKL_API.G_TRUE;
7879 --create the parameter list to pass to raise_event
7880 wf_event.AddParameterToList(G_WF_ITM_CR_LINE_ID,l_dnz_chr_id,l_parameter_list);
7881 wf_event.AddParameterToList(G_WF_ITM_CR_LMT_ID,l_clev_rec.id,l_parameter_list);
7882 l_business_event_name := G_WF_EVT_CR_LMT_REMOVED;
7883 END IF;
7884
7885 IF(l_raise_business_event = OKL_API.G_TRUE AND l_business_event_name IS NOT NULL)THEN
7886 raise_business_event(p_api_version => p_api_version,
7887 p_init_msg_list => p_init_msg_list,
7888 x_return_status => x_return_status,
7889 x_msg_count => x_msg_count,
7890 x_msg_data => x_msg_data,
7891 p_event_name => l_business_event_name,
7892 p_parameter_list => l_parameter_list);
7893 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7894 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7895 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7896 RAISE OKL_API.G_EXCEPTION_ERROR;
7897 END IF;
7898 END IF;
7899
7900 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
7901 x_msg_data => x_msg_data);
7902 EXCEPTION
7903 when OKL_API.G_EXCEPTION_ERROR then
7904 If l_get_txl_crs%ISOPEN Then
7905 Close l_get_txl_crs;
7906 End If;
7907 If l_get_txd_crs%ISOPEN Then
7908 Close l_get_txd_crs;
7909 End If;
7910 If chr_id_crs%ISOPEN Then
7911 Close chr_id_crs;
7912 End If;
7913 If l_get_iti_csr%ISOPEN Then
7914 Close l_get_iti_csr;
7915 End If;
7916 If l_get_sid_csr%ISOPEN Then
7917 Close l_get_sid_csr;
7918 End If;
7919 If l_get_pyd_csr%ISOPEN Then
7920 Close l_get_pyd_csr;
7921 End If;
7922 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7923 p_api_name => l_api_name,
7924 p_pkg_name => g_pkg_name,
7925 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
7926 x_msg_count => x_msg_count,
7927 x_msg_data => x_msg_data,
7928 p_api_type => g_api_type);
7929
7930 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
7931 If l_get_txl_crs%ISOPEN Then
7932 Close l_get_txl_crs;
7933 End If;
7934 If l_get_txd_crs%ISOPEN Then
7935 Close l_get_txd_crs;
7936 End If;
7937 If chr_id_crs%ISOPEN Then
7938 Close chr_id_crs;
7939 End If;
7940 If l_get_iti_csr%ISOPEN Then
7941 Close l_get_iti_csr;
7942 End If;
7943 If l_get_sid_csr%ISOPEN Then
7944 Close l_get_sid_csr;
7945 End If;
7946 If l_get_pyd_csr%ISOPEN Then
7947 Close l_get_pyd_csr;
7948 End If;
7949
7950 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7951 p_api_name => l_api_name,
7952 p_pkg_name => g_pkg_name,
7953 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
7954 x_msg_count => x_msg_count,
7955 x_msg_data => x_msg_data,
7956 p_api_type => g_api_type);
7957
7958 when OTHERS then
7959 If l_get_txl_crs%ISOPEN Then
7960 Close l_get_txl_crs;
7961 End If;
7962 If l_get_txd_crs%ISOPEN Then
7963 Close l_get_txd_crs;
7964 End If;
7965 If chr_id_crs%ISOPEN Then
7966 Close chr_id_crs;
7967 End If;
7968 If l_get_iti_csr%ISOPEN Then
7969 Close l_get_iti_csr;
7970 End If;
7971 If l_get_sid_csr%ISOPEN Then
7972 Close l_get_sid_csr;
7973 End If;
7974 If l_get_pyd_csr%ISOPEN Then
7975 Close l_get_pyd_csr;
7976 End If;
7977
7978 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7979 p_api_name => l_api_name,
7980 p_pkg_name => g_pkg_name,
7981 p_exc_name => 'OTHERS',
7982 x_msg_count => x_msg_count,
7983 x_msg_data => x_msg_data,
7984 p_api_type => g_api_type);
7985 END delete_contract_line;
7986
7987
7988 -- Start of comments
7989 --
7990 -- Procedure Name : delete_contract_line
7991 -- Description : deletes contract line for shadowed contract
7992 -- Business Rules : line can be deleted only if there is not sublines attached
7993 -- Parameters :
7994 -- Version : 1.0
7995 -- End of comments
7996 PROCEDURE delete_contract_line(
7997 p_api_version IN NUMBER,
7998 p_init_msg_list IN VARCHAR2,
7999 x_return_status OUT NOCOPY VARCHAR2,
8000 x_msg_count OUT NOCOPY NUMBER,
8001 x_msg_data OUT NOCOPY VARCHAR2,
8002 p_clev_tbl IN okl_okc_migration_pvt.clev_tbl_type,
8003 p_klev_tbl IN klev_tbl_type) IS
8004
8005 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_CONTRACT_LINE';
8006 l_api_version CONSTANT NUMBER := 1.0;
8007 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
8008 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
8009 i NUMBER;
8010 l_klev_tbl klev_tbl_type := p_klev_tbl;
8011 BEGIN
8012 -- call START_ACTIVITY to create savepoint, check compatibility
8013 -- and initialize message list
8014 l_return_status := OKL_API.START_ACTIVITY(
8015 p_api_name => l_api_name,
8016 p_pkg_name => g_pkg_name,
8017 p_init_msg_list => p_init_msg_list,
8018 l_api_version => l_api_version,
8019 p_api_version => p_api_version,
8020 p_api_type => g_api_type,
8021 x_return_status => x_return_status);
8022
8023 -- check if activity started successfully
8024 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8025 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8026 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
8027 raise OKL_API.G_EXCEPTION_ERROR;
8028 End If;
8029
8030 If (p_clev_tbl.COUNT > 0) Then
8031 i := p_clev_tbl.FIRST;
8032 LOOP
8033 -- call procedure in complex API for a record
8034 delete_contract_line(
8035 p_api_version => p_api_version,
8036 p_init_msg_list => p_init_msg_list,
8037 x_return_status => x_return_status,
8038 x_msg_count => x_msg_count,
8039 x_msg_data => x_msg_data,
8040 p_clev_rec => p_clev_tbl(i),
8041 p_klev_rec => l_klev_tbl(i));
8042
8043 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
8044 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
8045 l_overall_status := x_return_status;
8046 End If;
8047 End If;
8048
8049 EXIT WHEN (i = p_clev_tbl.LAST);
8050 i := p_clev_tbl.NEXT(i);
8051 END LOOP;
8052
8053 -- return overall status
8054 x_return_status := l_overall_status;
8055 End If;
8056
8057 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
8058 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8059 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
8060 raise OKL_API.G_EXCEPTION_ERROR;
8061 End If;
8062
8063 OKL_API.END_ACTIVITY( x_msg_count => x_msg_count,
8064 x_msg_data => x_msg_data);
8065 EXCEPTION
8066 when OKL_API.G_EXCEPTION_ERROR then
8067 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8068 p_api_name => l_api_name,
8069 p_pkg_name => g_pkg_name,
8070 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
8071 x_msg_count => x_msg_count,
8072 x_msg_data => x_msg_data,
8073 p_api_type => g_api_type);
8074
8075 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
8076 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8077 p_api_name => l_api_name,
8078 p_pkg_name => g_pkg_name,
8079 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
8080 x_msg_count => x_msg_count,
8081 x_msg_data => x_msg_data,
8082 p_api_type => g_api_type);
8083
8084 when OTHERS then
8085 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8086 p_api_name => l_api_name,
8087 p_pkg_name => g_pkg_name,
8088 p_exc_name => 'OTHERS',
8089 x_msg_count => x_msg_count,
8090 x_msg_data => x_msg_data,
8091 p_api_type => g_api_type);
8092
8093 END delete_contract_line;
8094
8095 -- Start of comments
8096 --
8097 -- Procedure Name : delete_contract_line
8098 -- Description : deletes contract line for shadowed contract
8099 -- Business Rules : delete contract line, all related objects and sublines
8100 -- Parameters :
8101 -- Version : 1.0
8102 -- End of comments
8103 PROCEDURE delete_contract_line(
8104 p_api_version IN NUMBER,
8105 p_init_msg_list IN VARCHAR2,
8106 x_return_status OUT NOCOPY VARCHAR2,
8107 x_msg_count OUT NOCOPY NUMBER,
8108 x_msg_data OUT NOCOPY VARCHAR2,
8109 p_line_id IN NUMBER) IS
8110
8111 l_cle_Id NUMBER;
8112 v_Index Binary_Integer;
8113
8114 -- OKC code removes lines four levels deep
8115 CURSOR l_Child_Cur1_csr(P_Parent_Id IN NUMBER)
8116 IS SELECT ID
8117 FROM OKC_K_Lines_b
8118 WHERE cle_id=P_Parent_Id;
8119
8120 CURSOR l_Child_Cur2_csr(P_Parent_Id IN NUMBER)
8121 IS SELECT ID
8122 FROM Okc_K_Lines_b
8123 WHERE cle_Id=P_Parent_Id;
8124
8125 CURSOR l_Child_Cur3_csr(P_Parent_Id IN NUMBER)
8126 IS SELECT ID
8127 FROM Okc_K_Lines_b
8128 WHERE cle_Id=P_Parent_Id;
8129
8130 CURSOR l_Child_Cur4_csr(P_Parent_Id IN NUMBER)
8131 IS SELECT ID
8132 FROM Okc_K_Lines_b
8133 WHERE cle_Id=P_Parent_Id;
8134
8135 CURSOR l_Child_Cur5_csr(P_Parent_Id IN NUMBER)
8136 IS SELECT ID
8137 FROM Okc_K_Lines_b
8138 WHERE cle_Id=P_Parent_Id;
8139
8140 --cursor to find out chr id required to flip status at edit point
8141 CURSOR chr_id_crs (p_cle_id IN NUMBER) is
8142 SELECT DNZ_CHR_ID
8143 FROM OKC_K_LINES_B
8144 WHERE ID = P_CLE_ID;
8145
8146 l_dnz_chr_id OKC_K_LINES_B.dnz_chr_id%TYPE;
8147
8148
8149 n NUMBER:=0;
8150 l_klev_tbl_in OKL_KLE_PVT.klev_tbl_type;
8151 l_klev_tbl_tmp OKL_KLE_PVT.klev_tbl_type;
8152
8153 l_api_version CONSTANT NUMBER := 1.0;
8154 l_return_status VARCHAR2(1);
8155 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_CONTRACT_LINE';
8156
8157 l_clev NUMBER:=1;
8158 l_lse_Id NUMBER;
8159
8160 --cursor to find out if any transactions hanging off the line to be deleted
8161 CURSOR l_get_txl_crs (p_kle_id IN NUMBER) is
8162 SELECT tas_id,
8163 id
8164 FROM OKL_TXL_ASSETS_B
8165 WHERE kle_id = p_kle_id;
8166
8167 l_tas_id OKL_TXL_ASSETS_B.TAS_ID%TYPE;
8168 l_txl_id OKL_TXL_ASSETS_B.ID%TYPE;
8169
8170 --cursor to get the transaction detail record if it exists
8171 CURSOR l_get_txd_crs (p_tal_id IN NUMBER) is
8172 SELECT ID
8173 FROM OKL_TXD_ASSETS_B
8174 WHERE tal_id = p_tal_id;
8175
8176 l_txd_id OKL_TXD_ASSETS_B.ID%TYPE;
8177
8178 l_adpv_rec OKL_TXD_ASSETS_PUB.adpv_rec_type;
8179 l_tlpv_rec OKL_TXL_ASSETS_PUB.tlpv_rec_type;
8180 l_thpv_rec OKL_TRX_ASSETS_PUB.thpv_rec_type;
8181
8182 --Bug # 2522268
8183 --cursor to get ib transaction line record
8184 CURSOR l_get_iti_csr (p_kle_id IN NUMBER) is
8185 SELECT tas_id,
8186 id
8187 FROM OKL_TXL_ITM_INSTS
8188 WHERE kle_id = p_kle_id;
8189
8190 l_iti_tas_id OKL_TXL_ITM_INSTS.TAS_ID%TYPE;
8191 l_iti_id OKL_TXL_ITM_INSTS.ID%TYPE;
8192
8193 l_iipv_rec OKL_TXL_ITM_INSTS_PUB.iipv_rec_type;
8194 l_iti_thpv_rec OKL_TRX_ASSETS_PUB.thpv_rec_type;
8195 --Bug # 2522268
8196
8197
8198 --variable added for checking if okl line deletion is allowed
8199 i Number;
8200 l_deletion_type Varchar2(1) default 'P';
8201 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
8202 l_klev_rec klev_rec_type;
8203
8204 l_clev_rec_out okl_okc_migration_pvt.clev_rec_type;
8205 l_klev_rec_out klev_rec_type;
8206 --variable added for checking if okl line deletion is allowed
8207 --Bug# 3143522 : delete supplier invoice details is line is deleted
8208 --cursor to ger supplier invoice details
8209 CURSOR l_get_sid_csr (p_kle_id IN NUMBER) is
8210 Select id
8211 FROM OKL_SUPP_INVOICE_DTLS
8212 where cle_id = p_kle_id;
8213
8214 l_sid_id OKL_SUPP_INVOICE_DTLS.ID%TYPE;
8215
8216 l_sidv_tbl OKL_SUPP_INVOICE_DTLS_PUB.sidv_tbl_type;
8217
8218 --cursor to get party payment details for line
8219 CURSOR l_get_pyd_csr (p_kle_id IN NUMBER) is
8220 Select pyd.id
8221 FROM OKL_PARTY_PAYMENT_DTLS pyd,
8222 OKC_K_PARTY_ROLES_B cplb
8223 WHERE pyd.cpl_id = cplb.id
8224 AND nvl(cplb.cle_id,-9999) = p_kle_id;
8225
8226 l_pyd_id OKL_PARTY_PAYMENT_DTLS.ID%TYPE;
8227
8228 l_ppydv_tbl OKL_PYD_PVT.ppydv_tbl_type;
8229 k number default 0;
8230 --Bug# 3143522
8231
8232 --cursor to get party payment header for line
8233 -- Passthru, Bug 4350255
8234 CURSOR l_get_pyh_csr (p_kle_id IN NUMBER) is
8235 Select pyh.id
8236 FROM OKL_PARTY_PAYMENT_HDR pyh
8237 WHERE pyh.cle_id = p_kle_id;
8238
8239 l_pyh_id OKL_PARTY_PAYMENT_HDR.ID%TYPE;
8240 l_pphv_tbl OKL_PARTY_PAYMENTS_PVT.pphv_tbl_type;
8241
8242 --Bug# 4558486
8243 CURSOR l_kpl_csr(p_kle_id IN NUMBER,
8244 p_khr_id IN NUMBER) is
8245 SELECT kpl.id
8246 FROM okl_k_party_roles kpl,
8247 okc_k_party_roles_b cpl
8248 WHERE kpl.id = cpl.id
8249 AND cpl.cle_id = p_kle_id
8250 AND cpl.dnz_chr_id = p_khr_id;
8251
8252 l_kplv_tbl OKL_KPL_PVT.kplv_tbl_type;
8253
8254 /*
8255 -- vthiruva, 08/19/2004
8256 -- START, Code change to enable Business Event
8257 */
8258 --cursor to fetch the line style code for line style id passed
8259 CURSOR lty_code_csr(p_line_id okc_k_lines_b.id%TYPE) IS
8260 SELECT lse.lty_code
8261 FROM okc_line_styles_b lse,
8262 okc_k_lines_b lns
8263 WHERE lns.id = p_line_id
8264 AND lse.id = lns.lse_id;
8265
8266 l_lty_code okc_line_styles_b.lty_code%TYPE;
8267 l_parameter_list wf_parameter_list_t;
8268 l_raise_business_event VARCHAR2(1) := OKL_API.G_FALSE;
8269 l_business_event_name WF_EVENTS.NAME%TYPE;
8270 /*
8271 -- vthiruva, 08/19/2004
8272 -- END, Code change to enable Business Event
8273 */
8274
8275 -- validates line id
8276 PROCEDURE Validate_Line_id(
8277 p_line_id IN NUMBER,
8278 x_return_status OUT NOCOPY VARCHAR2) IS
8279 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
8280 l_count NUMBER;
8281 CURSOR l_cur_line_csr(p_line_id IN NUMBER) IS
8282 SELECT COUNT(id) FROM OKC_K_LINES_B
8283 WHERE id = p_line_id;
8284 BEGIN
8285 IF p_line_id = OKL_API.G_MISS_NUM OR p_line_id IS NULL
8286 THEN
8287 OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'p_line_id');
8288
8289 l_return_status := OKL_API.G_RET_STS_ERROR;
8290 END IF;
8291
8292 OPEN l_cur_line_csr(p_line_id);
8293 FETCH l_cur_line_csr INTO l_Count;
8294 CLOSE l_cur_line_csr;
8295 IF NOT l_Count = 1 THEN
8296 OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'p_line_id');
8297
8298 l_return_status := OKL_API.G_RET_STS_ERROR;
8299 END IF;
8300 x_return_status := l_return_status;
8301 EXCEPTION
8302 WHEN OTHERS THEN
8303 -- store SQL error message on message stack for caller
8304
8305 OKL_API.set_message(G_APP_NAME,
8306 G_UNEXPECTED_ERROR,
8307 G_SQLCODE_TOKEN,
8308 SQLCODE,
8309 G_SQLERRM_TOKEN,
8310 SQLERRM);
8311 -- notify caller of an UNEXPECTED error
8312 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
8313 END Validate_Line_id;
8314
8315 BEGIN
8316 x_return_status:=OKL_API.G_RET_STS_SUCCESS;
8317
8318 -- call START_ACTIVITY to create savepoint, check compatibility
8319 -- and initialize message list
8320 l_return_status := OKL_API.START_ACTIVITY(
8321 p_api_name => l_api_name,
8322 p_pkg_name => g_pkg_name,
8323 p_init_msg_list => p_init_msg_list,
8324 l_api_version => l_api_version,
8325 p_api_version => p_api_version,
8326 p_api_type => g_api_type,
8327 x_return_status => x_return_status);
8328
8329 -- check if activity started successfully
8330 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8331 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8332 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
8333 raise OKL_API.G_EXCEPTION_ERROR;
8334 End If;
8335
8336 Validate_Line_id(p_line_id,l_return_status);
8337 -- check if activity started successfully
8338 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8339 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8340 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
8341 raise OKL_API.G_EXCEPTION_ERROR;
8342 End If;
8343
8344
8345 -- now we need to store all numbers of sublines to the current line
8346 -- we do it the same way as OKC are doing
8347 -- what we need to make sure later, is that even when the master line is deleted
8348 -- we still can delete the shadow
8349 l_klev_tbl_tmp(l_clev).ID:=p_line_id;
8350 l_clev:=l_clev+1;
8351 FOR l_child_rec1 IN l_child_cur1_csr(p_line_id)
8352 LOOP
8353 l_klev_tbl_tmp(l_clev).ID:=l_child_rec1.ID;
8354 l_clev:=l_clev+1;
8355 FOR l_child_rec2 IN l_child_cur2_csr(l_child_rec1.Id)
8356 LOOP
8357 l_klev_tbl_tmp(l_clev).ID:=l_child_rec2.Id;
8358 l_clev:=l_clev+1;
8359 FOR l_child_rec3 IN l_child_cur3_csr(l_child_rec2.Id)
8360 LOOP
8361 l_klev_tbl_tmp(l_clev).ID:=l_child_rec3.Id;
8362 l_clev:=l_clev+1;
8363 FOR l_child_rec4 IN l_child_cur4_csr(l_child_rec3.Id)
8364 LOOP
8365 l_klev_tbl_tmp(l_clev).ID:=l_child_rec4.Id;
8366 l_clev:=l_clev+1;
8367 FOR l_child_rec5 IN l_child_cur5_csr(l_child_rec4.Id)
8368 LOOP
8369 l_klev_tbl_tmp(l_clev).ID:=l_child_rec5.Id;
8370 l_clev:=l_clev+1;
8371 END LOOP;
8372 END LOOP;
8373 END LOOP;
8374 END LOOP;
8375 END LOOP;
8376 l_clev:=1;
8377 FOR v_Index IN REVERSE l_klev_tbl_tmp.FIRST .. l_klev_tbl_tmp.LAST
8378 LOOP
8379 l_klev_tbl_in(l_clev).ID:= l_klev_tbl_tmp(v_Index).ID;
8380 l_clev:=l_clev+1;
8381 END LOOP;
8382
8383 --check for deletion allowed on all lines
8384 for i in 1..l_klev_tbl_in.LAST
8385 LOOP
8386 --check if okl contract line delete is allowed
8387 --dbms_output.put_line('cle id '||to_char(l_klev_tbl_in(i).id));
8388 kle_delete_allowed(p_cle_id => l_klev_tbl_in(i).id,
8389 x_deletion_type => l_deletion_type,
8390 x_return_status => x_return_status);
8391
8392 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8393 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8394 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
8395 raise OKL_API.G_EXCEPTION_ERROR;
8396 End If;
8397 --dbms_output.put_line('l_deletion_type'||l_deletion_type);
8398 If (l_deletion_type in ('L','N')) Then --logical delete or not allowed
8399 Exit;
8400 End If;
8401 END LOOP;
8402
8403 If l_deletion_type = 'L' Then
8404 for i in l_klev_tbl_in.FIRST..l_klev_tbl_in.LAST
8405 LOOP
8406 --update line status to 'Abandoned'
8407 l_clev_rec.id := l_klev_tbl_in(i).ID;
8408 l_clev_rec.sts_code := G_OKL_CANCELLED_STS_CODE; --'ABANDONED';
8409 --l_clev_rec.end_date := sysdate;
8410 --l_klev_rec.ID := l_klev_tbl_in(i).ID;
8411 --dbms_output.put_line('going in for logical delete');
8412 --dbms_output.put_line('line:'||to_char(l_clev_rec.id));
8413
8414 okl_okc_migration_pvt.update_contract_line
8415 (p_api_version => p_api_version,
8416 p_init_msg_list => p_init_msg_list,
8417 x_return_status => x_return_status,
8418 x_msg_count => x_msg_count,
8419 x_msg_data => x_msg_data,
8420 p_clev_rec => l_clev_rec,
8421 x_clev_rec => l_clev_rec_out
8422 );
8423 --dbms_output.put_line('sts_code :'||l_clev_rec_out.sts_code);
8424 --dbms_output.put_line('line:'||to_char(l_clev_rec_out.id));
8425
8426 If (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8427 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8428 Elsif (x_return_status = OKL_API.G_RET_STS_ERROR) then
8429 raise OKL_API.G_EXCEPTION_ERROR;
8430 End If;
8431
8432 --Bug # 2522268 Begin
8433 --do logical deletion of asset number so
8434 -- old asset number is available for use
8435 --dbms_output.put_line('Asset_Logical_Delete:'||to_char(l_clev_rec_out.id));
8436 Asset_Logical_Delete( p_api_version => p_api_version,
8437 p_init_msg_list => p_init_msg_list,
8438 x_return_status => x_return_status,
8439 x_msg_count => x_msg_count,
8440 x_msg_data => x_msg_data,
8441 p_cle_id => l_clev_rec_out.id,
8442 p_asset_number => l_clev_rec_out.name);
8443
8444 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8445 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8446 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
8447 raise OKL_API.G_EXCEPTION_ERROR;
8448 End If;
8449
8450 --do logical deletion of linked assets
8451 Linked_Asset_Delete(p_api_version => p_api_version,
8452 p_init_msg_list => p_init_msg_list,
8453 x_return_status => x_return_status,
8454 x_msg_count => x_msg_count,
8455 x_msg_data => x_msg_data,
8456 p_cle_id => l_clev_rec_out.id,
8457 p_deletion_type => l_deletion_type);
8458
8459 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8460 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8461 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
8462 raise OKL_API.G_EXCEPTION_ERROR;
8463 End If;
8464 --Bug # 2522268 End
8465
8466 --Bug # 2937980
8467 Inactivate_Streams
8468 ( p_api_version => p_api_version,
8469 p_init_msg_list => p_init_msg_list,
8470 x_return_status => x_return_status,
8471 x_msg_count => x_msg_count,
8472 x_msg_data => x_msg_data,
8473 p_cle_id => l_clev_rec.id);
8474
8475 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8476 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8477 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
8478 raise OKL_API.G_EXCEPTION_ERROR;
8479 End If;
8480 --Bug # 2937980
8481
8482 If (l_clev_rec_out.dnz_chr_id is not null) AND (l_clev_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
8483 --call API to cascade 'INCOMPLETE' status for lease contracts
8484 okl_contract_status_pub.cascade_lease_status_edit
8485 (p_api_version => p_api_version,
8486 p_init_msg_list => p_init_msg_list,
8487 x_return_status => x_return_status,
8488 x_msg_count => x_msg_count,
8489 x_msg_data => x_msg_data,
8490 p_chr_id => l_clev_rec_out.dnz_chr_id);
8491
8492 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
8493 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8494 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
8495 raise OKL_API.G_EXCEPTION_ERROR;
8496 End If;
8497
8498 End If;
8499 END LOOP;
8500
8501 ElsIf l_deletion_type = 'P' Then --physical delete
8502 -- sjalasut added code to raise business event. the cursor is processed here but the actual
8503 -- event is raised later. the cursor cannot be processed just before raising the event
8504 -- as the records would have been deleted by that time and no information about the line can
8505 -- be derived. fetch the line style code for the record
8506
8507 OPEN lty_code_csr(p_line_id);
8508 FETCH lty_code_csr into l_lty_code;
8509 CLOSE lty_code_csr;
8510
8511
8512 --get dnz_chr_id
8513 --call to cascade the status to Incomplete
8514 --this has to be done first as l_clev_rec.dnz_chr_id will be null
8515 -- once the line has been deleted.
8516
8517 Open chr_id_crs(p_cle_id => p_line_id);
8518 Fetch chr_id_crs into l_dnz_chr_id;
8519 If chr_id_crs%NOTFOUND Then
8520 null;
8521 End If;
8522 Close chr_id_crs;
8523
8524 If (l_dnz_chr_id is not null) AND (l_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
8525
8526 okl_contract_status_pub.cascade_lease_status_edit
8527 (p_api_version => p_api_version,
8528 p_init_msg_list => p_init_msg_list,
8529 x_return_status => x_return_status,
8530 x_msg_count => x_msg_count,
8531 x_msg_data => x_msg_data,
8532 p_chr_id => l_dnz_chr_id);
8533
8534 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
8535 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8536 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
8537 raise OKL_API.G_EXCEPTION_ERROR;
8538 End If;
8539
8540 End If;
8541
8542 --Bug # 2522268 begin
8543 --physical deletion of linked assets
8544 --dbms_output.put_line('going in for lnk asst delete '||to_char(p_line_id));
8545 Linked_Asset_Delete(p_api_version => p_api_version,
8546 p_init_msg_list => p_init_msg_list,
8547 x_return_status => x_return_status,
8548 x_msg_count => x_msg_count,
8549 x_msg_data => x_msg_data,
8550 p_cle_id => p_line_id,
8551 p_deletion_type => l_deletion_type);
8552
8553 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8554 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8555 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
8556 raise OKL_API.G_EXCEPTION_ERROR;
8557 End If;
8558 --Bug # 2522268 end
8559
8560 --Bug# 3143522
8561 --delete associated party payment details
8562 for i in l_klev_tbl_in.FIRST..l_klev_tbl_in.LAST
8563 LOOP
8564
8565 --Bug# 3143522
8566 --delete associated party payment details
8567 k := 0;
8568 open l_get_pyd_csr(p_kle_id => l_klev_tbl_in(i).ID);
8569 Loop
8570 Fetch l_get_pyd_csr into l_pyd_id;
8571 Exit when l_get_pyd_csr%NOTFOUND;
8572 k := k+1;
8573 l_ppydv_tbl(k).id := l_pyd_id;
8574 End Loop;
8575 close l_get_pyd_csr;
8576
8577 If l_ppydv_tbl.COUNT > 0 then
8578 OKL_PYD_PVT.delete_row
8579 (p_api_version => p_api_version,
8580 p_init_msg_list => p_init_msg_list,
8581 x_return_status => x_return_status,
8582 x_msg_count => x_msg_count,
8583 x_msg_data => x_msg_data,
8584 p_ppydv_tbl => l_ppydv_tbl);
8585
8586 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
8587 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8588 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
8589 raise OKL_API.G_EXCEPTION_ERROR;
8590 End If;
8591
8592 l_ppydv_tbl.DELETE;
8593
8594 End If;
8595 End Loop;
8596 --Bug# 3143522
8597
8598 -- Passthru Bug 4350255
8599 i := 0;
8600 open l_get_pyh_csr(p_kle_id => p_line_id);
8601 Loop
8602 Fetch l_get_pyh_csr into l_pyh_id;
8603 Exit when l_get_pyh_csr%NOTFOUND;
8604 i := i+1;
8605 l_pphv_tbl(i).id := l_pyh_id;
8606 End Loop;
8607 close l_get_pyh_csr;
8608
8609 If l_pphv_tbl.COUNT > 0 then
8610 OKL_PARTY_PAYMENTS_PVT.DELETE_PARTY_PAYMENT_HDR
8611 (p_api_version => p_api_version,
8612 p_init_msg_list => p_init_msg_list,
8613 x_return_status => x_return_status,
8614 x_msg_count => x_msg_count,
8615 x_msg_data => x_msg_data,
8616 p_pphv_tbl => l_pphv_tbl );
8617
8618 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
8619 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8620 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
8621 raise OKL_API.G_EXCEPTION_ERROR;
8622 End If;
8623
8624 l_pphv_tbl.DELETE;
8625
8626 End If;
8627 -- Passthru Bug 4350255
8628
8629 --Bug# 4558486
8630 -- Delete records from okl_k_party_roles
8631 i := 0;
8632 For l_klev_count in l_klev_tbl_in.FIRST..l_klev_tbl_in.LAST
8633 Loop
8634 For l_kpl_rec in l_kpl_csr(p_kle_id => l_klev_tbl_in(l_klev_count).ID,
8635 p_khr_id => l_dnz_chr_id)
8636 Loop
8637 i := i + 1;
8638 l_kplv_tbl(i).id := l_kpl_rec.id;
8639 End Loop;
8640 End Loop;
8641
8642 If l_kplv_tbl.COUNT > 0 then
8643 OKL_KPL_PVT.Delete_Row
8644 (p_api_version => p_api_version,
8645 p_init_msg_list => p_init_msg_list,
8646 x_return_status => x_return_status,
8647 x_msg_count => x_msg_count,
8648 x_msg_data => x_msg_data,
8649 p_kplv_tbl => l_kplv_tbl);
8650
8651 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
8652 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8653 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
8654 raise OKL_API.G_EXCEPTION_ERROR;
8655 End If;
8656
8657 l_kplv_tbl.DELETE;
8658 End If;
8659 --Bug# 4558486
8660
8661 -- call OKC API first to delete contract line
8662 okc_contract_pub.delete_contract_line(
8663 p_api_version => l_api_version,
8664 p_init_msg_list => p_init_msg_list,
8665 x_return_status => x_return_status,
8666 x_msg_count => x_msg_count,
8667 x_msg_data => x_msg_data,
8668 p_line_id => p_line_id);
8669
8670 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
8671 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8672 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
8673 raise OKL_API.G_EXCEPTION_ERROR;
8674 End If;
8675
8676 -- delete transactions hanging fo the lines
8677 for i in l_klev_tbl_in.FIRST..l_klev_tbl_in.LAST
8678 LOOP
8679 l_tas_id := Null;
8680 l_txl_id := Null;
8681 OPEN l_get_txl_crs (p_kle_id => l_klev_tbl_in(i).ID);
8682 FETCH l_get_txl_crs into l_tas_id, l_txl_id;
8683 If l_get_txl_crs%NOTFOUND Then
8684 Null;
8685 Else
8686 --find if any transaction details attached to the txl line
8687 l_txd_id := Null;
8688 OPEN l_get_txd_crs (p_tal_id => l_txl_id);
8689 FETCH l_get_txd_crs INTO l_txd_id;
8690 If l_get_txd_crs%NOTFOUND Then
8691 Null;
8692 Else
8693 --delete txd record
8694 l_adpv_rec.id := l_txd_id;
8695 OKL_TXD_ASSETS_PUB.delete_txd_asset_Def(
8696 p_api_version => p_api_version,
8697 p_init_msg_list => p_init_msg_list,
8698 x_return_status => x_return_status,
8699 x_msg_count => x_msg_count,
8700 x_msg_data => x_msg_data,
8701 p_adpv_rec => l_adpv_rec);
8702 -- check return status
8703 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
8704 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8705 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
8706 raise OKL_API.G_EXCEPTION_ERROR;
8707 End If;
8708 End If;
8709 Close l_get_txd_crs;
8710 --delete txl record
8711 l_tlpv_rec.id := l_txl_id;
8712 OKL_TXL_ASSETS_PUB.delete_txl_asset_Def(
8713 p_api_version => p_api_version,
8714 p_init_msg_list => p_init_msg_list,
8715 x_return_status => x_return_status,
8716 x_msg_count => x_msg_count,
8717 x_msg_data => x_msg_data,
8718 p_tlpv_rec => l_tlpv_rec);
8719 -- check return status
8720 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
8721 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8722 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
8723 raise OKL_API.G_EXCEPTION_ERROR;
8724 End If;
8725
8726 --delete tas_record
8727 l_thpv_rec.id := l_tas_id;
8728 OKL_TRX_ASSETS_PUB.delete_trx_ass_h_Def(
8729 p_api_version => p_api_version,
8730 p_init_msg_list => p_init_msg_list,
8731 x_return_status => x_return_status,
8732 x_msg_count => x_msg_count,
8733 x_msg_data => x_msg_data,
8734 p_thpv_rec => l_thpv_rec);
8735 -- check return status
8736 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
8737 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8738 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
8739 raise OKL_API.G_EXCEPTION_ERROR;
8740 End If;
8741 End If;
8742 Close l_get_txl_crs;
8743
8744 --Bug # 2522268
8745 -- check if any IB transactions are hanging on this line
8746 l_iti_tas_id := Null;
8747 l_iti_id := Null;
8748 OPEN l_get_iti_csr (p_kle_id => l_klev_tbl_in(i).ID);
8749 FETCH l_get_iti_csr into l_iti_tas_id, l_iti_id;
8750 If l_get_iti_csr%NOTFOUND Then
8751 Null;
8752 Else
8753
8754 l_iipv_rec.id := l_iti_id;
8755 OKL_TXL_ITM_INSTS_PUB.delete_txl_itm_insts(
8756 p_api_version => p_api_version,
8757 p_init_msg_list => p_init_msg_list,
8758 x_return_status => x_return_status,
8759 x_msg_count => x_msg_count,
8760 x_msg_data => x_msg_data,
8761 p_iipv_rec => l_iipv_rec);
8762 -- check return status
8763 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
8764 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8765 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
8766 raise OKL_API.G_EXCEPTION_ERROR;
8767 End If;
8768
8769 --delete tas_record
8770 l_iti_thpv_rec.id := l_iti_tas_id;
8771 OKL_TRX_ASSETS_PUB.delete_trx_ass_h_Def(
8772 p_api_version => p_api_version,
8773 p_init_msg_list => p_init_msg_list,
8774 x_return_status => x_return_status,
8775 x_msg_count => x_msg_count,
8776 x_msg_data => x_msg_data,
8777 p_thpv_rec => l_iti_thpv_rec);
8778 -- check return status
8779 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
8780 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8781 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
8782 raise OKL_API.G_EXCEPTION_ERROR;
8783 End If;
8784
8785 End If;
8786 Close l_get_iti_csr;
8787
8788 --Bug # 2522268 End
8789
8790
8791 --Bug# 3143522
8792 --delete associated supplier invoice details
8793 k := 0;
8794 open l_get_sid_csr(p_kle_id => l_klev_tbl_in(i).id);
8795 Loop
8796 Fetch l_get_sid_csr into l_sid_id;
8797 Exit when l_get_sid_csr%NOTFOUND;
8798 k := k+1;
8799 l_sidv_tbl(k).id := l_sid_id;
8800 End Loop;
8801 close l_get_sid_csr;
8802
8803 If l_sidv_tbl.COUNT > 0 then
8804 OKL_SUPP_INVOICE_DTLS_PUB.delete_sup_inv_dtls
8805 (p_api_version => p_api_version,
8806 p_init_msg_list => p_init_msg_list,
8807 x_return_status => x_return_status,
8808 x_msg_count => x_msg_count,
8809 x_msg_data => x_msg_data,
8810 p_sidv_tbl => l_sidv_tbl);
8811
8812 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
8813 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8814 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
8815 raise OKL_API.G_EXCEPTION_ERROR;
8816 End If;
8817
8818 l_sidv_tbl.DELETE;
8819
8820 End If;
8821 --Bug# 3143522 End
8822
8823 END LOOP;
8824
8825 -- delete shadows
8826 OKL_KLE_PVT.delete_row(
8827 p_api_version => l_api_version,
8828 p_init_msg_list => p_init_msg_list,
8829 x_return_status => x_return_status,
8830 x_msg_count => x_msg_count,
8831 x_msg_data => x_msg_data,
8832 p_klev_tbl => l_klev_tbl_in);
8833
8834 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
8835 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8836 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
8837 raise OKL_API.G_EXCEPTION_ERROR;
8838 End If;
8839
8840 Elsif l_deletion_type = 'N' Then-- not allowed will not come here as this situation will raise error
8841 Null;
8842 End If;
8843
8844 /*
8845 -- vthiruva, 08/19/2004
8846 -- START, Code change to enable Business Event
8847 */
8848 -- raise business event for delete of asset line
8849 IF(l_lty_code = 'FREE_FORM1')THEN
8850 -- raise business event only if the context contract is a lease contract
8851 l_raise_business_event := OKL_LLA_UTIL_PVT.is_lease_contract(l_dnz_chr_id);
8852 IF(l_raise_business_event = OKL_API.G_TRUE)THEN
8853 -- raise the business event for create asset, if line style code is FREE_FORM1
8854 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,l_dnz_chr_id,l_parameter_list);
8855 wf_event.AddParameterToList(G_WF_ITM_ASSET_ID,p_line_id,l_parameter_list);
8856 l_business_event_name := G_WF_EVT_ASSET_REMOVED;
8857 END IF;
8858 END IF;
8859
8860 IF(l_raise_business_event = OKL_API.G_TRUE AND l_business_event_name IS NOT NULL)THEN
8861 raise_business_event(p_api_version => p_api_version,
8862 p_init_msg_list => p_init_msg_list,
8863 x_return_status => x_return_status,
8864 x_msg_count => x_msg_count,
8865 x_msg_data => x_msg_data,
8866 p_event_name => l_business_event_name,
8867 p_parameter_list => l_parameter_list);
8868 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8869 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8870 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8871 RAISE OKL_API.G_EXCEPTION_ERROR;
8872 END IF;
8873 END IF;
8874 /*
8875 -- vthiruva, 08/19/2004
8876 -- END, Code change to enable Business Event
8877 */
8878
8879 OKL_API.END_ACTIVITY( x_msg_count => x_msg_count,
8880 x_msg_data => x_msg_data);
8881
8882 EXCEPTION
8883 when OKL_API.G_EXCEPTION_ERROR then
8884 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8885 p_api_name => l_api_name,
8886 p_pkg_name => g_pkg_name,
8887 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
8888 x_msg_count => x_msg_count,
8889 x_msg_data => x_msg_data,
8890 p_api_type => g_api_type);
8891
8892 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
8893 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8894 p_api_name => l_api_name,
8895 p_pkg_name => g_pkg_name,
8896 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
8897 x_msg_count => x_msg_count,
8898 x_msg_data => x_msg_data,
8899 p_api_type => g_api_type);
8900
8901 when OTHERS then
8902 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8903 p_api_name => l_api_name,
8904 p_pkg_name => g_pkg_name,
8905 p_exc_name => 'OTHERS',
8906 x_msg_count => x_msg_count,
8907 x_msg_data => x_msg_data,
8908 p_api_type => g_api_type);
8909 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
8910
8911 END delete_contract_line;
8912
8913 -- Start of comments
8914 --
8915 -- Procedure Name : delete_contract_line
8916 -- Description : deletes contract line for shadowed contract
8917 -- Business Rules : deletes sublines based on parameter p_delete_cascade_yn
8918 -- Parameters :
8919 -- Version : 1.0
8920 -- End of comments
8921 PROCEDURE delete_contract_line(
8922 p_api_version IN NUMBER,
8923 p_init_msg_list IN VARCHAR2,
8924 x_return_status OUT NOCOPY VARCHAR2,
8925 x_msg_count OUT NOCOPY NUMBER,
8926 x_msg_data OUT NOCOPY VARCHAR2,
8927 p_clev_rec IN okl_okc_migration_pvt.clev_rec_type,
8928 p_klev_rec IN klev_rec_type,
8929 p_delete_cascade_yn IN VARCHAR2) IS
8930
8931 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
8932 l_klev_rec klev_rec_type;
8933
8934 l_clev_rec_out okl_okc_migration_pvt.clev_rec_type;
8935 l_klev_rec_out klev_rec_type;
8936
8937 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_CONTRACT_LINE';
8938 l_api_version CONSTANT NUMBER := 1.0;
8939 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
8940 BEGIN
8941
8942 -- call START_ACTIVITY to create savepoint, check compatibility
8943 -- and initialize message list
8944 l_return_status := OKL_API.START_ACTIVITY(
8945 p_api_name => l_api_name,
8946 p_pkg_name => g_pkg_name,
8947 p_init_msg_list => p_init_msg_list,
8948 l_api_version => l_api_version,
8949 p_api_version => p_api_version,
8950 p_api_type => g_api_type,
8951 x_return_status => x_return_status);
8952
8953 -- check if activity started successfully
8954 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8955 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8956 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
8957 raise OKL_API.G_EXCEPTION_ERROR;
8958 End If;
8959
8960 l_klev_rec := p_klev_rec;
8961 l_clev_rec := p_clev_rec;
8962
8963 If p_delete_cascade_yn = 'Y' Then
8964
8965 delete_contract_line(p_api_version => p_api_version,
8966 p_init_msg_list => p_init_msg_list,
8967 x_return_status => x_return_status,
8968 x_msg_count => x_msg_count,
8969 x_msg_data => x_msg_data,
8970 p_line_id => l_klev_rec.id);
8971
8972 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8973 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8974 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
8975 raise OKL_API.G_EXCEPTION_ERROR;
8976 End If;
8977
8978 ElsIf p_delete_cascade_yn = 'N' Then
8979 delete_contract_line(p_api_version => p_api_version,
8980 p_init_msg_list => p_init_msg_list,
8981 x_return_status => x_return_status,
8982 x_msg_count => x_msg_count,
8983 x_msg_data => x_msg_data,
8984 p_clev_rec => l_clev_rec,
8985 p_klev_rec => p_klev_rec);
8986
8987 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
8988 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8989 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
8990 raise OKL_API.G_EXCEPTION_ERROR;
8991 End If;
8992 End If;
8993
8994 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
8995 x_msg_data => x_msg_data);
8996 EXCEPTION
8997 when OKL_API.G_EXCEPTION_ERROR then
8998 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8999 p_api_name => l_api_name,
9000 p_pkg_name => g_pkg_name,
9001 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
9002 x_msg_count => x_msg_count,
9003 x_msg_data => x_msg_data,
9004 p_api_type => g_api_type);
9005
9006 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
9007 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9008 p_api_name => l_api_name,
9009 p_pkg_name => g_pkg_name,
9010 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
9011 x_msg_count => x_msg_count,
9012 x_msg_data => x_msg_data,
9013 p_api_type => g_api_type);
9014
9015 when OTHERS then
9016 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9017 p_api_name => l_api_name,
9018 p_pkg_name => g_pkg_name,
9019 p_exc_name => 'OTHERS',
9020 x_msg_count => x_msg_count,
9021 x_msg_data => x_msg_data,
9022 p_api_type => g_api_type);
9023 END delete_contract_line;
9024
9025 -- Start of comments
9026 --
9027 -- Procedure Name : delete_contract_line
9028 -- Description : deletes contract line for shadowed contract
9029 -- Business Rules : deletes sublines based on parameter p_delete_cascade_yn
9030 -- Parameters :
9031 -- Version : 1.0
9032 -- End of comments
9033
9034 PROCEDURE delete_contract_line(
9035 p_api_version IN NUMBER,
9036 p_init_msg_list IN VARCHAR2,
9037 x_return_status OUT NOCOPY VARCHAR2,
9038 x_msg_count OUT NOCOPY NUMBER,
9039 x_msg_data OUT NOCOPY VARCHAR2,
9040 p_clev_tbl IN okl_okc_migration_pvt.clev_tbl_type,
9041 p_klev_tbl IN klev_tbl_type,
9042 p_delete_cascade_yn IN varchar2) IS
9043
9044 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_CONTRACT_LINE';
9045 l_api_version CONSTANT NUMBER := 1.0;
9046 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9047 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9048 i NUMBER;
9049 l_klev_tbl klev_tbl_type := p_klev_tbl;
9050 BEGIN
9051 -- call START_ACTIVITY to create savepoint, check compatibility
9052 -- and initialize message list
9053 l_return_status := OKL_API.START_ACTIVITY(
9054 p_api_name => l_api_name,
9055 p_pkg_name => g_pkg_name,
9056 p_init_msg_list => p_init_msg_list,
9057 l_api_version => l_api_version,
9058 p_api_version => p_api_version,
9059 p_api_type => g_api_type,
9060 x_return_status => x_return_status);
9061
9062 -- check if activity started successfully
9063 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
9064 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9065 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
9066 raise OKL_API.G_EXCEPTION_ERROR;
9067 End If;
9068
9069 If (p_clev_tbl.COUNT > 0) Then
9070 i := p_clev_tbl.FIRST;
9071 LOOP
9072 -- call procedure in complex API for a record
9073 delete_contract_line(
9074 p_api_version => p_api_version,
9075 p_init_msg_list => p_init_msg_list,
9076 x_return_status => x_return_status,
9077 x_msg_count => x_msg_count,
9078 x_msg_data => x_msg_data,
9079 p_clev_rec => p_clev_tbl(i),
9080 p_klev_rec => l_klev_tbl(i),
9081 p_delete_cascade_yn => p_delete_cascade_yn);
9082
9083 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
9084 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
9085 l_overall_status := x_return_status;
9086 End If;
9087 End If;
9088
9089 EXIT WHEN (i = p_clev_tbl.LAST);
9090 i := p_clev_tbl.NEXT(i);
9091 END LOOP;
9092
9093 -- return overall status
9094 x_return_status := l_overall_status;
9095 End If;
9096
9097 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
9098 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9099 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
9100 raise OKL_API.G_EXCEPTION_ERROR;
9101 End If;
9102
9103 OKL_API.END_ACTIVITY( x_msg_count => x_msg_count,
9104 x_msg_data => x_msg_data);
9105 EXCEPTION
9106 when OKL_API.G_EXCEPTION_ERROR then
9107 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9108 p_api_name => l_api_name,
9109 p_pkg_name => g_pkg_name,
9110 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
9111 x_msg_count => x_msg_count,
9112 x_msg_data => x_msg_data,
9113 p_api_type => g_api_type);
9114
9115 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
9116 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9117 p_api_name => l_api_name,
9118 p_pkg_name => g_pkg_name,
9119 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
9120 x_msg_count => x_msg_count,
9121 x_msg_data => x_msg_data,
9122 p_api_type => g_api_type);
9123
9124 when OTHERS then
9125 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9126 p_api_name => l_api_name,
9127 p_pkg_name => g_pkg_name,
9128 p_exc_name => 'OTHERS',
9129 x_msg_count => x_msg_count,
9130 x_msg_data => x_msg_data,
9131 p_api_type => g_api_type);
9132
9133 END delete_contract_line;
9134
9135 -- Start of comments
9136 --
9137 -- Procedure Name : lock_contract_line
9138 -- Description : locks contract line for shadowed contract
9139 -- Business Rules :
9140 -- Parameters :
9141 -- Version : 1.0
9142 -- End of comments
9143 PROCEDURE lock_contract_line(
9144 p_api_version IN NUMBER,
9145 p_init_msg_list IN VARCHAR2,
9146 x_return_status OUT NOCOPY VARCHAR2,
9147 x_msg_count OUT NOCOPY NUMBER,
9148 x_msg_data OUT NOCOPY VARCHAR2,
9149 p_clev_rec IN okl_okc_migration_pvt.clev_rec_type,
9150 p_klev_rec IN klev_rec_type) IS
9151
9152 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
9153 l_klev_rec klev_rec_type;
9154
9155 l_api_name CONSTANT VARCHAR2(30) := 'LOCK_CONTRACT_LINE';
9156 l_api_version CONSTANT NUMBER := 1.0;
9157 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9158 BEGIN
9159
9160 -- call START_ACTIVITY to create savepoint, check compatibility
9161 -- and initialize message list
9162 l_return_status := OKL_API.START_ACTIVITY(
9163 p_api_name => l_api_name,
9164 p_pkg_name => g_pkg_name,
9165 p_init_msg_list => p_init_msg_list,
9166 l_api_version => l_api_version,
9167 p_api_version => p_api_version,
9168 p_api_type => g_api_type,
9169 x_return_status => x_return_status);
9170
9171 -- check if activity started successfully
9172 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
9173 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9174 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
9175 raise OKL_API.G_EXCEPTION_ERROR;
9176 End If;
9177
9178 l_klev_rec := p_klev_rec;
9179 l_clev_rec := p_clev_rec;
9180
9181 --
9182 -- call procedure in complex API
9183 --
9184 okl_okc_migration_pvt.lock_contract_line(
9185 p_api_version => p_api_version,
9186 p_init_msg_list => p_init_msg_list,
9187 x_return_status => x_return_status,
9188 x_msg_count => x_msg_count,
9189 x_msg_data => x_msg_data,
9190 p_clev_rec => l_clev_rec);
9191
9192 -- check return status
9193 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
9194 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9195 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
9196 raise OKL_API.G_EXCEPTION_ERROR;
9197 End If;
9198
9199 -- get id from OKC record
9200 l_klev_rec.ID := l_clev_rec.ID;
9201
9202 -- call procedure in complex API
9203 OKL_KLE_PVT.Lock_Row(
9204 p_api_version => p_api_version,
9205 p_init_msg_list => p_init_msg_list,
9206 x_return_status => x_return_status,
9207 x_msg_count => x_msg_count,
9208 x_msg_data => x_msg_data,
9209 p_klev_rec => l_klev_rec);
9210
9211 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
9212 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9213 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
9214 raise OKL_API.G_EXCEPTION_ERROR;
9215 End If;
9216
9217 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
9218 x_msg_data => x_msg_data);
9219 EXCEPTION
9220 when OKL_API.G_EXCEPTION_ERROR then
9221 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9222 p_api_name => l_api_name,
9223 p_pkg_name => g_pkg_name,
9224 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
9225 x_msg_count => x_msg_count,
9226 x_msg_data => x_msg_data,
9227 p_api_type => g_api_type);
9228
9229 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
9230 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9231 p_api_name => l_api_name,
9232 p_pkg_name => g_pkg_name,
9233 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
9234 x_msg_count => x_msg_count,
9235 x_msg_data => x_msg_data,
9236 p_api_type => g_api_type);
9237
9238 when OTHERS then
9239 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9240 p_api_name => l_api_name,
9241 p_pkg_name => g_pkg_name,
9242 p_exc_name => 'OTHERS',
9243 x_msg_count => x_msg_count,
9244 x_msg_data => x_msg_data,
9245 p_api_type => g_api_type);
9246 END lock_contract_line;
9247
9248
9249 -- Start of comments
9250 --
9251 -- Procedure Name : lock_contract_line
9252 -- Description : locks contract line for shadowed contract
9253 -- Business Rules :
9254 -- Parameters :
9255 -- Version : 1.0
9256 -- End of comments
9257 PROCEDURE lock_contract_line(
9258 p_api_version IN NUMBER,
9259 p_init_msg_list IN VARCHAR2,
9260 x_return_status OUT NOCOPY VARCHAR2,
9261 x_msg_count OUT NOCOPY NUMBER,
9262 x_msg_data OUT NOCOPY VARCHAR2,
9263 p_clev_tbl IN okl_okc_migration_pvt.clev_tbl_type,
9264 p_klev_tbl IN klev_tbl_type) IS
9265
9266 l_api_name CONSTANT VARCHAR2(30) := 'lock_CONTRACT_LINE';
9267 l_api_version CONSTANT NUMBER := 1.0;
9268 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9269 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9270 i NUMBER;
9271 l_klev_tbl klev_tbl_type := p_klev_tbl;
9272 BEGIN
9273 -- call START_ACTIVITY to create savepoint, check compatibility
9274 -- and initialize message list
9275 l_return_status := OKL_API.START_ACTIVITY(
9276 p_api_name => l_api_name,
9277 p_pkg_name => g_pkg_name,
9278 p_init_msg_list => p_init_msg_list,
9279 l_api_version => l_api_version,
9280 p_api_version => p_api_version,
9281 p_api_type => g_api_type,
9282 x_return_status => x_return_status);
9283
9284 -- check if activity started successfully
9285 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
9286 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9287 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
9288 raise OKL_API.G_EXCEPTION_ERROR;
9289 End If;
9290
9291 If (p_clev_tbl.COUNT > 0) Then
9292 i := p_clev_tbl.FIRST;
9293 LOOP
9294 -- call procedure in complex API for a record
9295 lock_contract_line(
9296 p_api_version => p_api_version,
9297 p_init_msg_list => p_init_msg_list,
9298 x_return_status => x_return_status,
9299 x_msg_count => x_msg_count,
9300 x_msg_data => x_msg_data,
9301 p_clev_rec => p_clev_tbl(i),
9302 p_klev_rec => l_klev_tbl(i));
9303
9304 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
9305 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
9306 l_overall_status := x_return_status;
9307 End If;
9308 End If;
9309
9310 EXIT WHEN (i = p_clev_tbl.LAST);
9311 i := p_clev_tbl.NEXT(i);
9312 END LOOP;
9313
9314 -- return overall status
9315 x_return_status := l_overall_status;
9316 End If;
9317
9318 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
9319 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9320 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
9321 raise OKL_API.G_EXCEPTION_ERROR;
9322 End If;
9323
9324 OKL_API.END_ACTIVITY( x_msg_count => x_msg_count,
9325 x_msg_data => x_msg_data);
9326 EXCEPTION
9327 when OKL_API.G_EXCEPTION_ERROR then
9328 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9329 p_api_name => l_api_name,
9330 p_pkg_name => g_pkg_name,
9331 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
9332 x_msg_count => x_msg_count,
9333 x_msg_data => x_msg_data,
9334 p_api_type => g_api_type);
9335
9336 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
9337 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9338 p_api_name => l_api_name,
9339 p_pkg_name => g_pkg_name,
9340 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
9341 x_msg_count => x_msg_count,
9342 x_msg_data => x_msg_data,
9343 p_api_type => g_api_type);
9344
9345 when OTHERS then
9346 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9347 p_api_name => l_api_name,
9348 p_pkg_name => g_pkg_name,
9349 p_exc_name => 'OTHERS',
9350 x_msg_count => x_msg_count,
9351 x_msg_data => x_msg_data,
9352 p_api_type => g_api_type);
9353
9354 END lock_contract_line;
9355
9356
9357 -- Start of comments
9358 --
9359 -- Procedure Name : validate_contract_line
9360 -- Description : validates contract line for shadowed contract
9361 -- Business Rules :
9362 -- Parameters :
9363 -- Version : 1.0
9364 -- End of comments
9365 PROCEDURE validate_contract_line(
9366 p_api_version IN NUMBER,
9367 p_init_msg_list IN VARCHAR2,
9368 x_return_status OUT NOCOPY VARCHAR2,
9369 x_msg_count OUT NOCOPY NUMBER,
9370 x_msg_data OUT NOCOPY VARCHAR2,
9371 p_clev_rec IN okl_okc_migration_pvt.clev_rec_type,
9372 p_klev_rec IN klev_rec_type) IS
9373
9374 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
9375 l_klev_rec klev_rec_type;
9376
9377 l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_CONTRACT_LINE';
9378 l_api_version CONSTANT NUMBER := 1.0;
9379 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9380 BEGIN
9381
9382 -- call START_ACTIVITY to create savepoint, check compatibility
9383 -- and initialize message list
9384 l_return_status := OKL_API.START_ACTIVITY(
9385 p_api_name => l_api_name,
9386 p_pkg_name => g_pkg_name,
9387 p_init_msg_list => p_init_msg_list,
9388 l_api_version => l_api_version,
9389 p_api_version => p_api_version,
9390 p_api_type => g_api_type,
9391 x_return_status => x_return_status);
9392
9393 -- check if activity started successfully
9394 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
9395 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9396 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
9397 raise OKL_API.G_EXCEPTION_ERROR;
9398 End If;
9399
9400 l_klev_rec := p_klev_rec;
9401 l_clev_rec := p_clev_rec;
9402
9403 --
9404 -- call procedure in complex API
9405 --
9406 okl_okc_migration_pvt.validate_contract_line(
9407 p_api_version => p_api_version,
9408 p_init_msg_list => p_init_msg_list,
9409 x_return_status => x_return_status,
9410 x_msg_count => x_msg_count,
9411 x_msg_data => x_msg_data,
9412 p_clev_rec => l_clev_rec);
9413
9414 -- check return status
9415 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
9416 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9417 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
9418 raise OKL_API.G_EXCEPTION_ERROR;
9419 End If;
9420
9421 -- get id from OKC record
9422 l_klev_rec.ID := l_clev_rec.ID;
9423
9424 -- call procedure in complex API
9425 OKL_KLE_PVT.validate_Row(
9426 p_api_version => p_api_version,
9427 p_init_msg_list => p_init_msg_list,
9428 x_return_status => x_return_status,
9429 x_msg_count => x_msg_count,
9430 x_msg_data => x_msg_data,
9431 p_klev_rec => l_klev_rec);
9432
9433 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
9434 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9435 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
9436 raise OKL_API.G_EXCEPTION_ERROR;
9437 End If;
9438
9439 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
9440 x_msg_data => x_msg_data);
9441 EXCEPTION
9442 when OKL_API.G_EXCEPTION_ERROR then
9443 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9444 p_api_name => l_api_name,
9445 p_pkg_name => g_pkg_name,
9446 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
9447 x_msg_count => x_msg_count,
9448 x_msg_data => x_msg_data,
9449 p_api_type => g_api_type);
9450
9451 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
9452 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9453 p_api_name => l_api_name,
9454 p_pkg_name => g_pkg_name,
9455 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
9456 x_msg_count => x_msg_count,
9457 x_msg_data => x_msg_data,
9458 p_api_type => g_api_type);
9459
9460 when OTHERS then
9461 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9462 p_api_name => l_api_name,
9463 p_pkg_name => g_pkg_name,
9464 p_exc_name => 'OTHERS',
9465 x_msg_count => x_msg_count,
9466 x_msg_data => x_msg_data,
9467 p_api_type => g_api_type);
9468 END validate_contract_line;
9469
9470
9471 -- Start of comments
9472 --
9473 -- Procedure Name : validate_contract_line
9474 -- Description : validates contract line for shadowed contract
9475 -- Business Rules :
9476 -- Parameters :
9477 -- Version : 1.0
9478 -- End of comments
9479 PROCEDURE validate_contract_line(
9480 p_api_version IN NUMBER,
9481 p_init_msg_list IN VARCHAR2,
9482 x_return_status OUT NOCOPY VARCHAR2,
9483 x_msg_count OUT NOCOPY NUMBER,
9484 x_msg_data OUT NOCOPY VARCHAR2,
9485 p_clev_tbl IN okl_okc_migration_pvt.clev_tbl_type,
9486 p_klev_tbl IN klev_tbl_type) IS
9487
9488 l_api_name CONSTANT VARCHAR2(30) := 'validate_CONTRACT_LINE';
9489 l_api_version CONSTANT NUMBER := 1.0;
9490 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9491 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9492 i NUMBER;
9493 l_klev_tbl klev_tbl_type := p_klev_tbl;
9494 BEGIN
9495 -- call START_ACTIVITY to create savepoint, check compatibility
9496 -- and initialize message list
9497 l_return_status := OKL_API.START_ACTIVITY(
9498 p_api_name => l_api_name,
9499 p_pkg_name => g_pkg_name,
9500 p_init_msg_list => p_init_msg_list,
9501 l_api_version => l_api_version,
9502 p_api_version => p_api_version,
9503 p_api_type => g_api_type,
9504 x_return_status => x_return_status);
9505
9506 -- check if activity started successfully
9507 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
9508 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9509 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
9510 raise OKL_API.G_EXCEPTION_ERROR;
9511 End If;
9512
9513 If (p_clev_tbl.COUNT > 0) Then
9514 i := p_clev_tbl.FIRST;
9515 LOOP
9516 -- call procedure in complex API for a record
9517 validate_contract_line(
9518 p_api_version => p_api_version,
9519 p_init_msg_list => p_init_msg_list,
9520 x_return_status => x_return_status,
9521 x_msg_count => x_msg_count,
9522 x_msg_data => x_msg_data,
9523 p_clev_rec => p_clev_tbl(i),
9524 p_klev_rec => l_klev_tbl(i));
9525
9526 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
9527 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
9528 l_overall_status := x_return_status;
9529 End If;
9530 End If;
9531
9532 EXIT WHEN (i = p_clev_tbl.LAST);
9533 i := p_clev_tbl.NEXT(i);
9534 END LOOP;
9535
9536 -- return overall status
9537 x_return_status := l_overall_status;
9538 End If;
9539
9540 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
9541 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9542 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
9543 raise OKL_API.G_EXCEPTION_ERROR;
9544 End If;
9545
9546 OKL_API.END_ACTIVITY( x_msg_count => x_msg_count,
9547 x_msg_data => x_msg_data);
9548 EXCEPTION
9549 when OKL_API.G_EXCEPTION_ERROR then
9550 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9551 p_api_name => l_api_name,
9552 p_pkg_name => g_pkg_name,
9553 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
9554 x_msg_count => x_msg_count,
9555 x_msg_data => x_msg_data,
9556 p_api_type => g_api_type);
9557
9558 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
9559 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9560 p_api_name => l_api_name,
9561 p_pkg_name => g_pkg_name,
9562 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
9563 x_msg_count => x_msg_count,
9564 x_msg_data => x_msg_data,
9565 p_api_type => g_api_type);
9566
9567 when OTHERS then
9568 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9569 p_api_name => l_api_name,
9570 p_pkg_name => g_pkg_name,
9571 p_exc_name => 'OTHERS',
9572 x_msg_count => x_msg_count,
9573 x_msg_data => x_msg_data,
9574 p_api_type => g_api_type);
9575
9576 END validate_contract_line;
9577 --------------------------------------------------------------------------------
9578 --governances related procedures
9579 --------------------------------------------------------------------------------
9580 PROCEDURE create_governance(
9581 p_api_version IN NUMBER,
9582 p_init_msg_list IN VARCHAR2,
9583 x_return_status OUT NOCOPY VARCHAR2,
9584 x_msg_count OUT NOCOPY NUMBER,
9585 x_msg_data OUT NOCOPY VARCHAR2,
9586 p_gvev_rec IN okl_okc_migration_pvt.gvev_rec_type,
9587 x_gvev_rec OUT NOCOPY okl_okc_migration_pvt.gvev_rec_type) IS
9588
9589 l_gvev_rec okl_okc_migration_pvt.gvev_rec_type;
9590
9591 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_GOVERNANCE';
9592 l_api_version CONSTANT NUMBER := 1.0;
9593 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9594 BEGIN
9595
9596 -- call START_ACTIVITY to create savepoint, check compatibility
9597 -- and initialize message list
9598
9599 --dbms_output.put_line('Start it');
9600
9601 l_return_status := OKL_API.START_ACTIVITY(
9602 p_api_name => l_api_name,
9603 p_pkg_name => g_pkg_name,
9604 p_init_msg_list => p_init_msg_list,
9605 l_api_version => l_api_version,
9606 p_api_version => p_api_version,
9607 p_api_type => g_api_type,
9608 x_return_status => x_return_status);
9609
9610 -- check if activity started successfully
9611 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
9612 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9613 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
9614 raise OKL_API.G_EXCEPTION_ERROR;
9615 End If;
9616
9617 l_gvev_rec := p_gvev_rec;
9618 --
9619 -- set okc context before API call
9620 -- msamoyle: check whether we need to call this method here or in PUB or in processing
9621 --dbms_output.put_line('Set org context');
9622
9623
9624 --OKL_CONTEXT.SET_OKC_ORG_CONTEXT(l_chrv_rec.authoring_org_id,l_chrv_rec.inv_organization_id);
9625
9626 --dbms_output.put_line('Create governance');
9627 --
9628 -- call procedure in complex API
9629 --
9630 --OKC_CONTRACT_PUB.create_contract_header(
9631 okl_okc_migration_pvt.create_governance(
9632 p_api_version => p_api_version,
9633 p_init_msg_list => p_init_msg_list,
9634 x_return_status => x_return_status,
9635 x_msg_count => x_msg_count,
9636 x_msg_data => x_msg_data,
9637 p_gvev_rec => l_gvev_rec,
9638 x_gvev_rec => x_gvev_rec);
9639
9640 -- check return status
9641 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
9642 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9643 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
9644 raise OKL_API.G_EXCEPTION_ERROR;
9645 End If;
9646
9647 If (x_gvev_rec.dnz_chr_id is not null) AND (x_gvev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) Then
9648 --call API to cascade 'INCOMPLETE' status for lease contracts
9649 okl_contract_status_pub.cascade_lease_status_edit
9650 (p_api_version => p_api_version,
9651 p_init_msg_list => p_init_msg_list,
9652 x_return_status => x_return_status,
9653 x_msg_count => x_msg_count,
9654 x_msg_data => x_msg_data,
9655 p_chr_id => x_gvev_rec.dnz_chr_id);
9656
9657 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
9658 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9659 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
9660 raise OKL_API.G_EXCEPTION_ERROR;
9661 End If;
9662 End If;
9663
9664 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
9665 x_msg_data => x_msg_data);
9666 EXCEPTION
9667 when OKL_API.G_EXCEPTION_ERROR then
9668 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9669 p_api_name => l_api_name,
9670 p_pkg_name => g_pkg_name,
9671 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
9672 x_msg_count => x_msg_count,
9673 x_msg_data => x_msg_data,
9674 p_api_type => g_api_type);
9675
9676 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
9677 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9678 p_api_name => l_api_name,
9679 p_pkg_name => g_pkg_name,
9680 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
9681 x_msg_count => x_msg_count,
9682 x_msg_data => x_msg_data,
9683 p_api_type => g_api_type);
9684
9685 when OTHERS then
9686 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9687 p_api_name => l_api_name,
9688 p_pkg_name => g_pkg_name,
9689 p_exc_name => 'OTHERS',
9690 x_msg_count => x_msg_count,
9691 x_msg_data => x_msg_data,
9692 p_api_type => g_api_type);
9693 END create_governance;
9694
9695
9696 -- Start of comments
9697 --
9698 -- Procedure Name : create_contract_header
9699 -- Description : creates contract header for shadowed contract
9700 -- Business Rules :
9701 -- Parameters :
9702 -- Version : 1.0
9703 -- End of comments
9704 PROCEDURE create_governance(
9705 p_api_version IN NUMBER,
9706 p_init_msg_list IN VARCHAR2,
9707 x_return_status OUT NOCOPY VARCHAR2,
9708 x_msg_count OUT NOCOPY NUMBER,
9709 x_msg_data OUT NOCOPY VARCHAR2,
9710 p_gvev_tbl IN okl_okc_migration_pvt.gvev_tbl_type,
9711 x_gvev_tbl OUT NOCOPY okl_okc_migration_pvt.gvev_tbl_type) IS
9712
9713 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_GOVERNANCE';
9714 l_api_version CONSTANT NUMBER := 1.0;
9715 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9716 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9717 i NUMBER;
9718 l_gvev_tbl okl_okc_migration_pvt.gvev_tbl_type := p_gvev_tbl;
9719 BEGIN
9720 -- call START_ACTIVITY to create savepoint, check compatibility
9721 -- and initialize message list
9722 l_return_status := OKL_API.START_ACTIVITY(
9723 p_api_name => l_api_name,
9724 p_pkg_name => g_pkg_name,
9725 p_init_msg_list => p_init_msg_list,
9726 l_api_version => l_api_version,
9727 p_api_version => p_api_version,
9728 p_api_type => g_api_type,
9729 x_return_status => x_return_status);
9730
9731 -- check if activity started successfully
9732 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
9733 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9734 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
9735 raise OKL_API.G_EXCEPTION_ERROR;
9736
9737 End If;
9738
9739 If (p_gvev_tbl.COUNT > 0) Then
9740 i := p_gvev_tbl.FIRST;
9741 LOOP
9742 -- call procedure in complex API for a record
9743 create_governance(
9744 p_api_version => p_api_version,
9745 p_init_msg_list => p_init_msg_list,
9746 x_return_status => x_return_status,
9747 x_msg_count => x_msg_count,
9748 x_msg_data => x_msg_data,
9749 p_gvev_rec => p_gvev_tbl(i),
9750 x_gvev_rec => x_gvev_tbl(i));
9751
9752 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
9753 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
9754 l_overall_status := x_return_status;
9755 End If;
9756 End If;
9757
9758 EXIT WHEN (i = p_gvev_tbl.LAST);
9759 i := p_gvev_tbl.NEXT(i);
9760 END LOOP;
9761
9762 -- return overall status
9763 x_return_status := l_overall_status;
9764 End If;
9765
9766 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
9767 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9768 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
9769 raise OKL_API.G_EXCEPTION_ERROR;
9770 End If;
9771
9772 OKL_API.END_ACTIVITY( x_msg_count => x_msg_count,
9773 x_msg_data => x_msg_data);
9774 EXCEPTION
9775 when OKL_API.G_EXCEPTION_ERROR 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 => 'OKL_API.G_RET_STS_ERROR',
9780 x_msg_count => x_msg_count,
9781 x_msg_data => x_msg_data,
9782 p_api_type => g_api_type);
9783
9784 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
9785 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9786 p_api_name => l_api_name,
9787 p_pkg_name => g_pkg_name,
9788 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
9789 x_msg_count => x_msg_count,
9790 x_msg_data => x_msg_data,
9791 p_api_type => g_api_type);
9792
9793 when OTHERS then
9794 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9795 p_api_name => l_api_name,
9796 p_pkg_name => g_pkg_name,
9797 p_exc_name => 'OTHERS',
9798 x_msg_count => x_msg_count,
9799 x_msg_data => x_msg_data,
9800 p_api_type => g_api_type);
9801
9802 END create_governance;
9803
9804 -- Start of comments
9805 --
9806 -- Procedure Name : update_governance
9807 -- Description : updates governance for shadowed contract
9808 -- Business Rules :
9809 -- Parameters :
9810 -- Version : 1.0
9811 -- End of comments
9812 PROCEDURE update_governance(
9813 p_api_version IN NUMBER,
9814 p_init_msg_list IN VARCHAR2,
9815 x_return_status OUT NOCOPY VARCHAR2,
9816 x_msg_count OUT NOCOPY NUMBER,
9817 x_msg_data OUT NOCOPY VARCHAR2,
9818 p_gvev_rec IN okl_okc_migration_pvt.gvev_rec_type,
9819 x_gvev_rec OUT NOCOPY okl_okc_migration_pvt.gvev_rec_type) IS
9820
9821 l_gvev_rec okl_okc_migration_pvt.gvev_rec_type;
9822
9823 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_GOVERNANCE';
9824 l_api_version CONSTANT NUMBER := 1.0;
9825 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9826
9827 BEGIN
9828
9829 -- call START_ACTIVITY to create savepoint, check compatibility
9830 -- and initialize message list
9831 l_return_status := OKL_API.START_ACTIVITY(
9832 p_api_name => l_api_name,
9833 p_pkg_name => g_pkg_name,
9834 p_init_msg_list => p_init_msg_list,
9835 l_api_version => l_api_version,
9836 p_api_version => p_api_version,
9837 p_api_type => g_api_type,
9838 x_return_status => x_return_status);
9839
9840 -- check if activity started successfully
9841 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
9842 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9843 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
9844 raise OKL_API.G_EXCEPTION_ERROR;
9845 End If;
9846
9847 l_gvev_rec := p_gvev_rec;
9848
9849 --
9850 -- set okc context before API call
9851 -- msamoyle: check whether we need to call this method here or in PUB or in processing
9852
9853 --OKL_CONTEXT.SET_OKC_ORG_CONTEXT(l_chrv_rec.authoring_org_id,l_chrv_rec.inv_organization_id);
9854
9855 --
9856 -- call procedure in complex API
9857 --
9858 -- OKC_CONTRACT_PUB.update_contract_header(
9859 okl_okc_migration_pvt.update_governance(
9860 p_api_version => p_api_version,
9861 p_init_msg_list => p_init_msg_list,
9862 x_return_status => x_return_status,
9863 x_msg_count => x_msg_count,
9864 x_msg_data => x_msg_data,
9865 p_gvev_rec => l_gvev_rec,
9866 x_gvev_rec => x_gvev_rec);
9867
9868 -- check return status
9869 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
9870 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9871 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
9872 raise OKL_API.G_EXCEPTION_ERROR;
9873 End If;
9874
9875 If (x_gvev_rec.dnz_chr_id is not null) AND (x_gvev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) Then
9876 --call API to cascade 'INCOMPLETE' status for lease contracts
9877 okl_contract_status_pub.cascade_lease_status_edit
9878 (p_api_version => p_api_version,
9879 p_init_msg_list => p_init_msg_list,
9880 x_return_status => x_return_status,
9881 x_msg_count => x_msg_count,
9882 x_msg_data => x_msg_data,
9883 p_chr_id => x_gvev_rec.dnz_chr_id);
9884
9885 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
9886 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9887 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
9888 raise OKL_API.G_EXCEPTION_ERROR;
9889 End If;
9890 End If;
9891
9892 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
9893 x_msg_data => x_msg_data);
9894 EXCEPTION
9895 when OKL_API.G_EXCEPTION_ERROR then
9896 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9897 p_api_name => l_api_name,
9898 p_pkg_name => g_pkg_name,
9899 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
9900 x_msg_count => x_msg_count,
9901 x_msg_data => x_msg_data,
9902 p_api_type => g_api_type);
9903
9904 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
9905 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9906 p_api_name => l_api_name,
9907 p_pkg_name => g_pkg_name,
9908 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
9909 x_msg_count => x_msg_count,
9910 x_msg_data => x_msg_data,
9911 p_api_type => g_api_type);
9912
9913
9914
9915 when OTHERS then
9916 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9917 p_api_name => l_api_name,
9918 p_pkg_name => g_pkg_name,
9919 p_exc_name => 'OTHERS',
9920 x_msg_count => x_msg_count,
9921 x_msg_data => x_msg_data,
9922 p_api_type => g_api_type);
9923
9924
9925 END update_governance;
9926
9927
9928 -- Start of comments
9929 --
9930 -- Procedure Name : update_governance
9931 -- Description : update governance for table type records
9932 -- Business Rules :
9933 -- Parameters :
9934 -- Version : 1.0
9935 -- End of comments
9936 PROCEDURE update_governance(
9937 p_api_version IN NUMBER,
9938 p_init_msg_list IN VARCHAR2,
9939 x_return_status OUT NOCOPY VARCHAR2,
9940 x_msg_count OUT NOCOPY NUMBER,
9941 x_msg_data OUT NOCOPY VARCHAR2,
9942 p_gvev_tbl IN okl_okc_migration_pvt.gvev_tbl_type,
9943 x_gvev_tbl OUT NOCOPY okl_okc_migration_pvt.gvev_tbl_type) IS
9944
9945 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_GOVERNANCE';
9946 l_api_version CONSTANT NUMBER := 1.0;
9947 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9948 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9949 i NUMBER;
9950 l_gvev_tbl okl_okc_migration_pvt.gvev_tbl_type := p_gvev_tbl;
9951 BEGIN
9952 -- call START_ACTIVITY to create savepoint, check compatibility
9953 -- and initialize message list
9954 l_return_status := OKL_API.START_ACTIVITY(
9955 p_api_name => l_api_name,
9956 p_pkg_name => g_pkg_name,
9957 p_init_msg_list => p_init_msg_list,
9958 l_api_version => l_api_version,
9959 p_api_version => p_api_version,
9960 p_api_type => g_api_type,
9961 x_return_status => x_return_status);
9962
9963 -- check if activity started successfully
9964 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
9965 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9966 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
9967 raise OKL_API.G_EXCEPTION_ERROR;
9968
9969 End If;
9970
9971 If (p_gvev_tbl.COUNT > 0) Then
9972 i := p_gvev_tbl.FIRST;
9973 LOOP
9974 -- call procedure in complex API for a record
9975 update_governance(
9976 p_api_version => p_api_version,
9977 p_init_msg_list => p_init_msg_list,
9978 x_return_status => x_return_status,
9979 x_msg_count => x_msg_count,
9980 x_msg_data => x_msg_data,
9981 p_gvev_rec => p_gvev_tbl(i),
9982 x_gvev_rec => x_gvev_tbl(i));
9983
9984 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
9985 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
9986 l_overall_status := x_return_status;
9987 End If;
9988 End If;
9989
9990 EXIT WHEN (i = p_gvev_tbl.LAST);
9991 i := p_gvev_tbl.NEXT(i);
9992 END LOOP;
9993
9994 -- return overall status
9995 x_return_status := l_overall_status;
9996 End If;
9997
9998 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
9999 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10000 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
10001 raise OKL_API.G_EXCEPTION_ERROR;
10002 End If;
10003
10004 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
10005 x_msg_data => x_msg_data);
10006 EXCEPTION
10007 when OKL_API.G_EXCEPTION_ERROR then
10008 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10009 p_api_name => l_api_name,
10010 p_pkg_name => g_pkg_name,
10011 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
10012 x_msg_count => x_msg_count,
10013 x_msg_data => x_msg_data,
10014 p_api_type => g_api_type);
10015
10016 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
10017 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10018 p_api_name => l_api_name,
10019 p_pkg_name => g_pkg_name,
10020 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
10021 x_msg_count => x_msg_count,
10022 x_msg_data => x_msg_data,
10023 p_api_type => g_api_type);
10024
10025 when OTHERS then
10026 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10027 p_api_name => l_api_name,
10028 p_pkg_name => g_pkg_name,
10029 p_exc_name => 'OTHERS',
10030 x_msg_count => x_msg_count,
10031 x_msg_data => x_msg_data,
10032 p_api_type => g_api_type);
10033
10034 END update_governance;
10035
10036 -- Start of comments
10037 --
10038 -- Procedure Name : delete_governance
10039 -- Description : deletes governance for shadowed contract
10040 -- Business Rules :
10041 -- Parameters :
10042 -- Version : 1.0
10043 -- End of comments
10044 PROCEDURE delete_governance(
10045 p_api_version IN NUMBER,
10046 p_init_msg_list IN VARCHAR2,
10047 x_return_status OUT NOCOPY VARCHAR2,
10048 x_msg_count OUT NOCOPY NUMBER,
10049 x_msg_data OUT NOCOPY VARCHAR2,
10050 p_gvev_rec IN okl_okc_migration_pvt.gvev_rec_type) IS
10051
10052 l_gvev_rec okl_okc_migration_pvt.gvev_rec_type;
10053
10054 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_GOVERNANCE';
10055 l_api_version CONSTANT NUMBER := 1.0;
10056 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
10057
10058 --cursor to find out chr id required to flip status at edit point
10059 CURSOR chr_id_crs (p_gve_id IN NUMBER) is
10060 SELECT DNZ_CHR_ID
10061 FROM OKC_GOVERNANCES
10062 WHERE ID = P_GVE_ID;
10063
10064 l_dnz_chr_id OKC_GOVERNANCES.dnz_chr_id%TYPE;
10065 BEGIN
10066
10067 -- call START_ACTIVITY to create savepoint, check compatibility
10068 -- and initialize message list
10069 l_return_status := OKL_API.START_ACTIVITY(
10070 p_api_name => l_api_name,
10071 p_pkg_name => g_pkg_name,
10072 p_init_msg_list => p_init_msg_list,
10073 l_api_version => l_api_version,
10074 p_api_version => p_api_version,
10075 p_api_type => g_api_type,
10076 x_return_status => x_return_status);
10077
10078 -- check if activity started successfully
10079 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
10080 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10081 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
10082 raise OKL_API.G_EXCEPTION_ERROR;
10083 End If;
10084
10085 l_gvev_rec := p_gvev_rec;
10086
10087 --
10088 -- set okc context before API call
10089 -- msamoyle: check whether we need to call this method here or in PUB or in processing
10090
10091 --OKL_CONTEXT.SET_OKC_ORG_CONTEXT(l_chrv_rec.authoring_org_id,l_chrv_rec.inv_organization_id);
10092 If (l_gvev_rec.dnz_chr_id is null) OR (l_gvev_rec.dnz_chr_id = OKL_API.G_MISS_NUM) Then
10093 Open chr_id_crs(p_gve_id => l_gvev_rec.id);
10094 FETCH chr_id_crs into l_dnz_chr_id;
10095 If chr_id_crs%NOTFOUND THEN
10096 NULL;
10097 End If;
10098 Close chr_id_crs;
10099 Else
10100 l_dnz_chr_id := l_gvev_rec.dnz_chr_id;
10101 End If;
10102
10103 If (l_dnz_chr_id is not null) And (l_dnz_chr_id <> OKL_API.G_MISS_NUM) Then
10104 --call API to cascade 'INCOMPLETE' status for lease contracts
10105 okl_contract_status_pub.cascade_lease_status_edit
10106 (p_api_version => p_api_version,
10107 p_init_msg_list => p_init_msg_list,
10108 x_return_status => x_return_status,
10109 x_msg_count => x_msg_count,
10110 x_msg_data => x_msg_data,
10111 p_chr_id => l_dnz_chr_id);
10112
10113 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
10114 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10115 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
10116 raise OKL_API.G_EXCEPTION_ERROR;
10117 End If;
10118 End If;
10119 --
10120 -- call procedure in complex API
10121 --
10122 okl_okc_migration_pvt.delete_governance(
10123 p_api_version => p_api_version,
10124 p_init_msg_list => p_init_msg_list,
10125 x_return_status => x_return_status,
10126 x_msg_count => x_msg_count,
10127 x_msg_data => x_msg_data,
10128 p_gvev_rec => l_gvev_rec);
10129
10130 -- check return status
10131 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
10132 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10133 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
10134 raise OKL_API.G_EXCEPTION_ERROR;
10135 End If;
10136
10137
10138 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
10139 x_msg_data => x_msg_data);
10140 EXCEPTION
10141 when OKL_API.G_EXCEPTION_ERROR then
10142 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10143 p_api_name => l_api_name,
10144 p_pkg_name => g_pkg_name,
10145 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
10146 x_msg_count => x_msg_count,
10147 x_msg_data => x_msg_data,
10148 p_api_type => g_api_type);
10149
10150 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
10151 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10152 p_api_name => l_api_name,
10153 p_pkg_name => g_pkg_name,
10154 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
10155 x_msg_count => x_msg_count,
10156 x_msg_data => x_msg_data,
10157 p_api_type => g_api_type);
10158
10159 when OTHERS then
10160 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10161 p_api_name => l_api_name,
10162 p_pkg_name => g_pkg_name,
10163 p_exc_name => 'OTHERS',
10164 x_msg_count => x_msg_count,
10165 x_msg_data => x_msg_data,
10166 p_api_type => g_api_type);
10167 END delete_governance;
10168
10169
10170 -- Start of comments
10171 --
10172 -- Procedure Name : delete_governance
10173 -- Description : deletes governance for shadowed contract
10174 -- Business Rules :
10175 -- Parameters :
10176 -- Version : 1.0
10177 -- End of comments
10178 PROCEDURE delete_governance(
10179 p_api_version IN NUMBER,
10180 p_init_msg_list IN VARCHAR2,
10181 x_return_status OUT NOCOPY VARCHAR2,
10182 x_msg_count OUT NOCOPY NUMBER,
10183 x_msg_data OUT NOCOPY VARCHAR2,
10184 p_gvev_tbl IN okl_okc_migration_pvt.gvev_tbl_type) IS
10185
10186 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_GOVERNANCE';
10187 l_api_version CONSTANT NUMBER := 1.0;
10188 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
10189 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
10190 i NUMBER;
10191 l_gvev_tbl okl_okc_migration_pvt.gvev_tbl_type := p_gvev_tbl;
10192 BEGIN
10193 -- call START_ACTIVITY to create savepoint, check compatibility
10194 -- and initialize message list
10195 l_return_status := OKL_API.START_ACTIVITY(
10196 p_api_name => l_api_name,
10197 p_pkg_name => g_pkg_name,
10198 p_init_msg_list => p_init_msg_list,
10199 l_api_version => l_api_version,
10200 p_api_version => p_api_version,
10201 p_api_type => g_api_type,
10202 x_return_status => x_return_status);
10203
10204 -- check if activity started successfully
10205 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
10206 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10207 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
10208 raise OKL_API.G_EXCEPTION_ERROR;
10209
10210 End If;
10211
10212 If (p_gvev_tbl.COUNT > 0) Then
10213 i := p_gvev_tbl.FIRST;
10214 LOOP
10215 -- call procedure in complex API for a record
10216 delete_governance(
10217 p_api_version => p_api_version,
10218 p_init_msg_list => p_init_msg_list,
10219 x_return_status => x_return_status,
10220 x_msg_count => x_msg_count,
10221 x_msg_data => x_msg_data,
10222 p_gvev_rec => p_gvev_tbl(i));
10223
10224 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
10225 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
10226 l_overall_status := x_return_status;
10227 End If;
10228 End If;
10229
10230 EXIT WHEN (i = p_gvev_tbl.LAST);
10231 i := p_gvev_tbl.NEXT(i);
10232 END LOOP;
10233
10234 -- return overall status
10235 x_return_status := l_overall_status;
10236 End If;
10237
10238 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
10239 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10240 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
10241 raise OKL_API.G_EXCEPTION_ERROR;
10242 End If;
10243
10244 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
10245 x_msg_data => x_msg_data);
10246 EXCEPTION
10247 when OKL_API.G_EXCEPTION_ERROR then
10248 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10249 p_api_name => l_api_name,
10250 p_pkg_name => g_pkg_name,
10251 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
10252 x_msg_count => x_msg_count,
10253 x_msg_data => x_msg_data,
10254 p_api_type => g_api_type);
10255
10256 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
10257 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10258 p_api_name => l_api_name,
10259 p_pkg_name => g_pkg_name,
10260 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
10261 x_msg_count => x_msg_count,
10262 x_msg_data => x_msg_data,
10263 p_api_type => g_api_type);
10264
10265 when OTHERS then
10266 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10267 p_api_name => l_api_name,
10268 p_pkg_name => g_pkg_name,
10269 p_exc_name => 'OTHERS',
10270 x_msg_count => x_msg_count,
10271 x_msg_data => x_msg_data,
10272 p_api_type => g_api_type);
10273
10274 END delete_governance;
10275
10276 -- Start of comments
10277 --
10278 -- Procedure Name : lock_governance
10279 -- Description : locks governance for shadowed contract
10280 -- Business Rules :
10281 -- Parameters :
10282 -- Version : 1.0
10283 -- End of comments
10284 PROCEDURE lock_governance(
10285 p_api_version IN NUMBER,
10286 p_init_msg_list IN VARCHAR2,
10287 x_return_status OUT NOCOPY VARCHAR2,
10288 x_msg_count OUT NOCOPY NUMBER,
10289 x_msg_data OUT NOCOPY VARCHAR2,
10290 p_gvev_rec IN okl_okc_migration_pvt.gvev_rec_type) IS
10291
10292 l_gvev_rec okl_okc_migration_pvt.gvev_rec_type;
10293
10294 l_api_name CONSTANT VARCHAR2(30) := 'LOCK_GOVERNANCE';
10295 l_api_version CONSTANT NUMBER := 1.0;
10296 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
10297 BEGIN
10298
10299 -- call START_ACTIVITY to create savepoint, check compatibility
10300 -- and initialize message list
10301 l_return_status := OKL_API.START_ACTIVITY(
10302 p_api_name => l_api_name,
10303 p_pkg_name => g_pkg_name,
10304 p_init_msg_list => p_init_msg_list,
10305 l_api_version => l_api_version,
10306 p_api_version => p_api_version,
10307 p_api_type => g_api_type,
10308 x_return_status => x_return_status);
10309
10310 -- check if activity started successfully
10311 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
10312 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10313 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
10314 raise OKL_API.G_EXCEPTION_ERROR;
10315 End If;
10316
10317 l_gvev_rec := p_gvev_rec;
10318
10319 --
10320 -- set okc context before API call
10321 -- msamoyle: check whether we need to call this method here or in PUB or in processing
10322
10323 --OKL_CONTEXT.SET_OKC_ORG_CONTEXT(l_chrv_rec.authoring_org_id,l_chrv_rec.inv_organization_id);
10324
10325
10326 --
10327 -- call procedure in complex API
10328 --
10329 okl_okc_migration_pvt.lock_governance(
10330 p_api_version => p_api_version,
10331 p_init_msg_list => p_init_msg_list,
10332 x_return_status => x_return_status,
10333 x_msg_count => x_msg_count,
10334 x_msg_data => x_msg_data,
10335 p_gvev_rec => l_gvev_rec);
10336
10337 -- check return status
10338 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
10339 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10340 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
10341 raise OKL_API.G_EXCEPTION_ERROR;
10342 End If;
10343
10344 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
10345 x_msg_data => x_msg_data);
10346 EXCEPTION
10347 when OKL_API.G_EXCEPTION_ERROR then
10348 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10349 p_api_name => l_api_name,
10350 p_pkg_name => g_pkg_name,
10351 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
10352 x_msg_count => x_msg_count,
10353 x_msg_data => x_msg_data,
10354 p_api_type => g_api_type);
10355
10356 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
10357 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10358 p_api_name => l_api_name,
10359 p_pkg_name => g_pkg_name,
10360 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
10361 x_msg_count => x_msg_count,
10362 x_msg_data => x_msg_data,
10363 p_api_type => g_api_type);
10364
10365 when OTHERS then
10366 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10367 p_api_name => l_api_name,
10368 p_pkg_name => g_pkg_name,
10369 p_exc_name => 'OTHERS',
10370 x_msg_count => x_msg_count,
10371 x_msg_data => x_msg_data,
10372 p_api_type => g_api_type);
10373 END lock_governance;
10374
10375
10376 -- Start of comments
10377 --
10378 -- Procedure Name : lock_governance
10379 -- Description : locks governance for shadowed contract
10380 -- Business Rules :
10381 -- Parameters :
10382 -- Version : 1.0
10383 -- End of comments
10384 PROCEDURE lock_governance(
10385 p_api_version IN NUMBER,
10386 p_init_msg_list IN VARCHAR2,
10387 x_return_status OUT NOCOPY VARCHAR2,
10388 x_msg_count OUT NOCOPY NUMBER,
10389 x_msg_data OUT NOCOPY VARCHAR2,
10390 p_gvev_tbl IN okl_okc_migration_pvt.gvev_tbl_type) IS
10391
10392 l_api_name CONSTANT VARCHAR2(30) := 'LOCK_GOVERNANCE';
10393 l_api_version CONSTANT NUMBER := 1.0;
10394 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
10395 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
10396 i NUMBER;
10397 l_gvev_tbl okl_okc_migration_pvt.gvev_tbl_type := p_gvev_tbl;
10398 BEGIN
10399 -- call START_ACTIVITY to create savepoint, check compatibility
10400 -- and initialize message list
10401 l_return_status := OKL_API.START_ACTIVITY(
10402 p_api_name => l_api_name,
10403 p_pkg_name => g_pkg_name,
10404 p_init_msg_list => p_init_msg_list,
10405 l_api_version => l_api_version,
10406 p_api_version => p_api_version,
10407 p_api_type => g_api_type,
10408 x_return_status => x_return_status);
10409
10410 -- check if activity started successfully
10411 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
10412 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10413 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
10414 raise OKL_API.G_EXCEPTION_ERROR;
10415
10416 End If;
10417
10418 If (p_gvev_tbl.COUNT > 0) Then
10419 i := p_gvev_tbl.FIRST;
10420 LOOP
10421 -- call procedure in complex API for a record
10422 lock_governance(
10423 p_api_version => p_api_version,
10424 p_init_msg_list => p_init_msg_list,
10425 x_return_status => x_return_status,
10426 x_msg_count => x_msg_count,
10427 x_msg_data => x_msg_data,
10428 p_gvev_rec => p_gvev_tbl(i));
10429
10430 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
10431 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
10432 l_overall_status := x_return_status;
10433 End If;
10434 End If;
10435
10436 EXIT WHEN (i = p_gvev_tbl.LAST);
10437 i := p_gvev_tbl.NEXT(i);
10438 END LOOP;
10439
10440 -- return overall status
10441 x_return_status := l_overall_status;
10442 End If;
10443
10444 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
10445 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10446 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
10447 raise OKL_API.G_EXCEPTION_ERROR;
10448 End If;
10449
10450 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
10451 x_msg_data => x_msg_data);
10452 EXCEPTION
10453 when OKL_API.G_EXCEPTION_ERROR then
10454 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10455 p_api_name => l_api_name,
10456 p_pkg_name => g_pkg_name,
10457 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
10458 x_msg_count => x_msg_count,
10459 x_msg_data => x_msg_data,
10460 p_api_type => g_api_type);
10461
10462 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
10463 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10464 p_api_name => l_api_name,
10465 p_pkg_name => g_pkg_name,
10466 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
10467 x_msg_count => x_msg_count,
10468 x_msg_data => x_msg_data,
10469 p_api_type => g_api_type);
10470
10471 when OTHERS then
10472 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10473 p_api_name => l_api_name,
10474 p_pkg_name => g_pkg_name,
10475 p_exc_name => 'OTHERS',
10476 x_msg_count => x_msg_count,
10477 x_msg_data => x_msg_data,
10478 p_api_type => g_api_type);
10479
10480 END lock_governance;
10481
10482 -- -----------------------------------------------------------------------------
10483 -- Start of comments
10484 --
10485 -- Procedure Name : validate_governance
10486 -- Description : validates governance for shadowed contract
10487 -- Business Rules :
10488 -- Parameters :
10489 -- Version : 1.0
10490 -- End of comments
10491 PROCEDURE validate_governance(
10492 p_api_version IN NUMBER,
10493 p_init_msg_list IN VARCHAR2,
10494 x_return_status OUT NOCOPY VARCHAR2,
10495 x_msg_count OUT NOCOPY NUMBER,
10496 x_msg_data OUT NOCOPY VARCHAR2,
10497 p_gvev_rec IN okl_okc_migration_pvt.gvev_rec_type) IS
10498
10499 l_gvev_rec okl_okc_migration_pvt.gvev_rec_type;
10500
10501
10502 l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_GOVERNANCE';
10503 l_api_version CONSTANT NUMBER := 1.0;
10504 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
10505 BEGIN
10506
10507 --dbms_output.put_line('Start validation');
10508 -- call START_ACTIVITY to create savepoint, check compatibility
10509 -- and initialize message list
10510 l_return_status := OKL_API.START_ACTIVITY(
10511 p_api_name => l_api_name,
10512 p_pkg_name => g_pkg_name,
10513 p_init_msg_list => p_init_msg_list,
10514 l_api_version => l_api_version,
10515 p_api_version => p_api_version,
10516 p_api_type => g_api_type,
10517 x_return_status => x_return_status);
10518
10519 -- check if activity started successfully
10520 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
10521 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10522 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
10523 raise OKL_API.G_EXCEPTION_ERROR;
10524 End If;
10525
10526 --dbms_output.put_line('Started activity');
10527
10528 l_gvev_rec := p_gvev_rec;
10529
10530 --
10531 -- set okc context before API call
10532 -- msamoyle: check whether we need to call this method here or in PUB or in processing
10533
10534 --OKL_CONTEXT.SET_OKC_ORG_CONTEXT(l_chrv_rec.authoring_org_id,l_chrv_rec.inv_organization_id);
10535 --dbms_output.put_line('Set up context');
10536
10537 --
10538 -- call procedure in complex API
10539 --
10540 okl_okc_migration_pvt.validate_governance(
10541 p_api_version => p_api_version,
10542 p_init_msg_list => p_init_msg_list,
10543 x_return_status => x_return_status,
10544 x_msg_count => x_msg_count,
10545 x_msg_data => x_msg_data,
10546 p_gvev_rec => l_gvev_rec);
10547
10548 -- check return status
10549 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
10550 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10551 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
10552 raise OKL_API.G_EXCEPTION_ERROR;
10553 End If;
10554 --dbms_output.put_line('Got standard validation');
10555
10556 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
10557 x_msg_data => x_msg_data);
10558 --dbms_output.put_line('Done');
10559 EXCEPTION
10560 when OKL_API.G_EXCEPTION_ERROR then
10561 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10562 p_api_name => l_api_name,
10563 p_pkg_name => g_pkg_name,
10564 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
10565 x_msg_count => x_msg_count,
10566 x_msg_data => x_msg_data,
10567 p_api_type => g_api_type);
10568
10569 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
10570 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10571 p_api_name => l_api_name,
10572 p_pkg_name => g_pkg_name,
10573 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
10574 x_msg_count => x_msg_count,
10575 x_msg_data => x_msg_data,
10576 p_api_type => g_api_type);
10577
10578 when OTHERS then
10579 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10580 p_api_name => l_api_name,
10581 p_pkg_name => g_pkg_name,
10582 p_exc_name => 'OTHERS',
10583 x_msg_count => x_msg_count,
10584 x_msg_data => x_msg_data,
10585 p_api_type => g_api_type);
10586 END validate_governance;
10587
10588
10589 -- Start of comments
10590 --
10591 -- Procedure Name : validate_governance
10592 -- Description : validates governance for shadowed contract
10593 -- Business Rules :
10594 -- Parameters :
10595 -- Version : 1.0
10596 -- End of comments
10597 PROCEDURE validate_governance(
10598 p_api_version IN NUMBER,
10599 p_init_msg_list IN VARCHAR2,
10600 x_return_status OUT NOCOPY VARCHAR2,
10601 x_msg_count OUT NOCOPY NUMBER,
10602 x_msg_data OUT NOCOPY VARCHAR2,
10603 p_gvev_tbl IN okl_okc_migration_pvt.gvev_tbl_type) IS
10604
10605 l_api_name CONSTANT VARCHAR2(30) := 'validate_CONTRACT_HEADER';
10606 l_api_version CONSTANT NUMBER := 1.0;
10607 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
10608 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
10609 i NUMBER;
10610 l_gvev_tbl okl_okc_migration_pvt.gvev_tbl_type := p_gvev_tbl;
10611 BEGIN
10612 -- call START_ACTIVITY to create savepoint, check compatibility
10613 -- and initialize message list
10614 l_return_status := OKL_API.START_ACTIVITY(
10615 p_api_name => l_api_name,
10616 p_pkg_name => g_pkg_name,
10617 p_init_msg_list => p_init_msg_list,
10618 l_api_version => l_api_version,
10619 p_api_version => p_api_version,
10620 p_api_type => g_api_type,
10621 x_return_status => x_return_status);
10622
10623 -- check if activity started successfully
10624 If (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
10625 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10626 Elsif (l_return_status = OKL_API.G_RET_STS_ERROR) then
10627 raise OKL_API.G_EXCEPTION_ERROR;
10628
10629 End If;
10630
10631 If (p_gvev_tbl.COUNT > 0) Then
10632 i := p_gvev_tbl.FIRST;
10633 LOOP
10634 -- call procedure in complex API for a record
10635 validate_governance(
10636 p_api_version => p_api_version,
10637 p_init_msg_list => p_init_msg_list,
10638 x_return_status => x_return_status,
10639 x_msg_count => x_msg_count,
10640 x_msg_data => x_msg_data,
10641 p_gvev_rec => p_gvev_tbl(i));
10642
10643 If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
10644 If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
10645 l_overall_status := x_return_status;
10646 End If;
10647 End If;
10648
10649 EXIT WHEN (i = p_gvev_tbl.LAST);
10650 i := p_gvev_tbl.NEXT(i);
10651 END LOOP;
10652
10653 -- return overall status
10654 x_return_status := l_overall_status;
10655 End If;
10656
10657 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
10658 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10659 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
10660 raise OKL_API.G_EXCEPTION_ERROR;
10661 End If;
10662
10663 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
10664 x_msg_data => x_msg_data);
10665 EXCEPTION
10666 when OKL_API.G_EXCEPTION_ERROR then
10667 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10668 p_api_name => l_api_name,
10669 p_pkg_name => g_pkg_name,
10670 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
10671 x_msg_count => x_msg_count,
10672 x_msg_data => x_msg_data,
10673 p_api_type => g_api_type);
10674
10675 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
10676 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10677 p_api_name => l_api_name,
10678 p_pkg_name => g_pkg_name,
10679 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
10680 x_msg_count => x_msg_count,
10681 x_msg_data => x_msg_data,
10682 p_api_type => g_api_type);
10683
10684 when OTHERS then
10685 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10686 p_api_name => l_api_name,
10687 p_pkg_name => g_pkg_name,
10688 p_exc_name => 'OTHERS',
10689 x_msg_count => x_msg_count,
10690 x_msg_data => x_msg_data,
10691 p_api_type => g_api_type);
10692
10693 END validate_governance;
10694 --------------------------------------------------------------------------------
10695 --APi to get contract header information for OKL
10696 --Bug 2471750 : If cust account is not found for subcalss quote error will not
10697 -- be raised
10698 --bug# 2471750 : Even if cust account soes not exist for QUOTE - party name is
10699 -- to be fetched for the header jsp. for this purpose get_private_label loacal
10700 -- function made generic for all the parties and renamed GET_PARTY. Now is it
10701 -- used to fetch 'LESSEE' name as well as 'PRIVATE_LABEL'
10702 --------------------------------------------------------------------------------
10703 Procedure get_contract_header_info(
10704 p_api_version IN NUMBER,
10705 p_init_msg_list IN VARCHAR2,
10706 x_return_status OUT NOCOPY VARCHAR2,
10707 x_msg_count OUT NOCOPY NUMBER,
10708 x_msg_data OUT NOCOPY VARCHAR2,
10709 p_chr_id IN NUMBER,
10710 p_chr_id_old IN NUMBER,
10711 p_orgId IN NUMBER,
10712 p_custId IN NUMBER,
10713 p_invOrgId IN NUMBER,
10714 p_oldOKL_STATUS IN VARCHAR2,
10715 p_oldOKC_STATUS IN VARCHAR2,
10716 x_hdr_tbl OUT NOCOPY hdr_tbl_type) IS
10717
10718 l_api_name CONSTANT VARCHAR2(30) := 'GET_CONTRACT_HEADER_INFO';
10719 l_api_version CONSTANT NUMBER := 1;
10720 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
10721
10722 Cursor status_csr( chrId NUMBER ) IS
10723 select a.ste_code,
10724 a.code,
10725 cst.meaning,
10726 b.scs_code,
10727 b.currency_code,
10728 --Bug# 2857899
10729 nvl(b.template_yn,'N') template_yn
10730 from okc_statuses_b a,
10731 okc_k_headers_b b,
10732 okl_k_headers c,
10733 OKC_STATUSES_TL cst
10734 where b.id = c.id
10735 and b.id = chrId
10736 and a.CODE = b.STS_CODE
10737 and cst.code = a.code
10738 and cst.LANGUAGE = userenv('LANG');
10739
10740
10741 status_rec status_csr%ROWTYPE;
10742 l_scs_code okc_k_headers_b.scs_code%TYPE;
10743 l_currency_code okc_k_headers_b.currency_code%TYPE;
10744 --bug# 2857899
10745 l_template_yn okc_k_headers_b.template_yn%TYPE;
10746
10747 Cursor chr_csr ( chrId NUMBER ) IS
10748 select khr.SHORT_DESCRIPTION,
10749 khr.CONTRACT_NUMBER,
10750 khr.PROGRAM_NAME,
10751 khr.PRODUCT_NAME,
10752 khr.PDT_ID,
10753 khr.ID,
10754 khr.AUTHORING_ORG_ID,
10755 khr.PRODUCT_DESCRIPTION,
10756 khr.INV_ORG_ID,
10757 khr.START_DATE,
10758 khr.END_DATE,
10759 cst.MEANING,
10760 --Added by dpsingh for LE Project
10761 khr.LEGAL_ENTITY_ID
10762 from OKL_LA_HEADERS_UV khr,
10763 OKC_STATUSES_TL cst
10764 where khr.ID = chrId
10765 and cst.CODE = khr.STS_CODE
10766 and cst.LANGUAGE = userenv('LANG');
10767
10768 chr_rec chr_csr%ROWTYPE;
10769
10770
10771 -------------------------------------------------------
10772 --Bug# 3124577 : 11.5.10 Rule Migration
10773 -- new cust csr will fetch customet account from OKC_K_HEADERS_B
10774 --------------------------------------------------------
10775 Cursor cust_csr ( chrId IN NUMBER) IS
10776 SELECT CHRB.CURRENCY_CODE,
10777 CHRB.AUTHORING_ORG_ID,
10778 CHRB.INV_ORGANIZATION_ID,
10779 CHRB.BUY_OR_SELL,
10780 CHRB.CUST_ACCT_ID,
10781 CUS.NAME,
10782 CUS.DESCRIPTION
10783 FROM OKC_K_HEADERS_B CHRB,
10784 OKX_CUSTOMER_ACCOUNTS_V CUS
10785 WHERE CUS.ID1 = CHRB.cust_acct_id
10786 AND CHRB.ID = chrId;
10787
10788
10789 cust_rec cust_csr%ROWTYPE;
10790 x_value NUMBER;
10791 l_synd VARCHAR2(256);
10792 l_priv VARCHAR2(256);
10793 l_lessee VARCHAR2(360);
10794
10795 -------------------------------------------------------
10796 --Bug# 4748777 : 11.5.10 Change from Program short
10797 -- description to program number in the common header
10798 --------------------------------------------------------
10799 l_prog_num OKC_K_HEADERS_B.CONTRACT_NUMBER%type := null;
10800 Cursor prog_num_csr ( p_chr_id IN NUMBER) IS
10801 select prog.contract_number
10802 from OKL_K_HEADERS KHR,
10803 OKC_K_HEADERS_B PROG
10804 where PROG.ID = KHR.KHR_ID
10805 and khr.id = p_chr_id;
10806
10807 -------------------------------------------------------
10808 --Bug# 3455354 : 11.5.10 CHANGE SYNDICATION FLAG ON CONTRACT HEADER
10809 -- get investor flag for common header
10810 --------------------------------------------------------
10811 l_investor_flag okl_k_headers.SECURITIZED_CODE%type := null;
10812 Cursor investor_csr ( p_chr_id IN NUMBER) IS
10813 select SECURITIZED_CODE
10814 from okl_k_headers khr
10815 where khr.id = p_chr_id;
10816
10817 ---------------------------------------------------------------------------
10818 -- FUNCTION get_syndicate_flag
10819 ---------------------------------------------------------------------------
10820 FUNCTION get_syndicate_flag(
10821 p_contract_id IN NUMBER,
10822 x_syndicate_flag OUT NOCOPY VARCHAR2)
10823 RETURN VARCHAR2
10824 IS
10825 -- A complex query to find out if a contract has syndication
10826 CURSOR syndicate_flag_csr(p_contract_id NUMBER) IS
10827 SELECT 'Y' FROM okc_k_headers_b chr
10828 WHERE id = p_contract_id
10829 AND EXISTS
10830 (
10831 SELECT 'x' FROM okc_k_items cim
10832 WHERE cim.object1_id1 = to_char(chr.id)
10833 AND EXISTS
10834 (
10835 SELECT 'x' FROM okc_k_lines_b cle, okc_line_styles_b lse
10836 WHERE cle.lse_id = lse.id
10837 AND lse.lty_code = 'SHARED'
10838 AND cle.id = cim.cle_id
10839 )
10840 AND EXISTS
10841 (
10842 SELECT 'x' FROM okc_k_headers_b chr2
10843 WHERE chr2.id = cim.dnz_chr_id
10844 AND chr2.scs_code = 'SYNDICATION'
10845 AND chr2.sts_code not in ('TERMINATED','ABANDONED')
10846 )
10847 )
10848 AND chr.scs_code in ('LEASE','LOAN');
10849
10850 l_syndicate_flag VARCHAR2(1) := 'N';
10851 l_api_version NUMBER;
10852 l_return_status VARCHAR2(1) := Okl_API.G_RET_STS_SUCCESS;
10853 l_msg_count NUMBER;
10854 l_msg_data VARCHAR2(2000);
10855
10856 BEGIN
10857
10858 OPEN syndicate_flag_csr(p_contract_id);
10859 FETCH syndicate_flag_csr INTO l_syndicate_flag;
10860 CLOSE syndicate_flag_csr;
10861
10862 x_syndicate_flag := l_syndicate_flag;
10863
10864 RETURN l_return_status;
10865 EXCEPTION
10866 WHEN OTHERS THEN
10867 OKL_API.SET_MESSAGE( p_app_name => G_APP_NAME
10868 ,p_msg_name => G_UNEXPECTED_ERROR
10869 ,p_token1 => G_SQLCODE_TOKEN
10870 ,p_token1_value => SQLCODE
10871 ,p_token2 => G_SQLERRM_TOKEN
10872 ,p_token2_value => SQLERRM);
10873 l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
10874 RETURN(l_return_status);
10875
10876 END get_syndicate_flag;
10877
10878 ---------------------------------------------------------------------------
10879 -- FUNCTION get party
10880 ---------------------------------------------------------------------------
10881 FUNCTION get_party(
10882 p_contract_id IN NUMBER,
10883 p_rle_code IN VARCHAR2,
10884 x_party_name OUT NOCOPY VARCHAR2)
10885 RETURN VARCHAR2
10886 IS
10887 l_api_version NUMBER := 1.0;
10888 l_init_msg_list VARCHAR2(1) DEFAULT OKL_API.G_FALSE;
10889 l_return_status VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
10890 l_msg_count NUMBER;
10891 l_msg_data VARCHAR2(2000);
10892 l_party_tab OKL_JTOT_EXTRACT.party_tab_type;
10893 BEGIN
10894
10895 -- Procedure to call to get Private Label ID, nothing but
10896 -- a Role
10897 OKL_JTOT_EXTRACT.Get_Party (
10898 l_api_version,
10899 l_init_msg_list,
10900 l_return_status,
10901 l_msg_count,
10902 l_msg_data,
10903 p_contract_id,
10904 null,
10905 --'PRIVATE_LABEL',
10906 p_rle_code,
10907 'S',
10908 l_party_tab
10909 );
10910
10911 IF (l_return_status = okl_api.G_RET_STS_UNEXP_ERROR) THEN
10912 RAISE okl_api.G_EXCEPTION_UNEXPECTED_ERROR;
10913 ELSIF (l_return_status = okl_api.G_RET_STS_ERROR) THEN
10914 RAISE okl_api.G_EXCEPTION_ERROR;
10915 END IF;
10916
10917 IF l_party_tab.FIRST IS NOT NULL
10918 THEN --fetch from table only if some data is retrieved
10919 FOR i in 1..l_party_tab.LAST
10920 LOOP
10921 --x_private_label := l_party_tab(i).id1;
10922 --x_private_label := l_party_tab(i).name;
10923 x_party_name := l_party_tab(i).name;
10924 END LOOP;
10925 ELSE
10926 x_party_name := NULL;
10927 END IF;
10928
10929 RETURN l_return_status;
10930 EXCEPTION
10931 when OKL_API.G_EXCEPTION_ERROR then
10932 l_return_status := OKL_API.HANDLE_EXCEPTIONS(
10933 p_api_name => l_api_name,
10934 p_pkg_name => g_pkg_name,
10935 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
10936 x_msg_count => x_msg_count,
10937 x_msg_data => x_msg_data,
10938 p_api_type => g_api_type);
10939
10940 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
10941 l_return_status := OKL_API.HANDLE_EXCEPTIONS(
10942 p_api_name => l_api_name,
10943 p_pkg_name => g_pkg_name,
10944 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
10945 x_msg_count => x_msg_count,
10946 x_msg_data => x_msg_data,
10947 p_api_type => g_api_type);
10948
10949 when OTHERS then
10950 l_return_status := OKL_API.HANDLE_EXCEPTIONS(
10951 p_api_name => l_api_name,
10952 p_pkg_name => g_pkg_name,
10953 p_exc_name => 'OTHERS',
10954 x_msg_count => x_msg_count,
10955 x_msg_data => x_msg_data,
10956 p_api_type => g_api_type);
10957
10958
10959 END get_party;
10960
10961
10962
10963 BEGIN
10964
10965 OPEN status_csr( p_chr_id );
10966 FETCH status_csr INTO status_rec;
10967 if (status_csr%NOTFOUND ) Then
10968 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10969 End If;
10970 CLOSE status_csr;
10971
10972 l_scs_code := status_rec.scs_code;
10973 l_currency_code := status_rec.currency_code;
10974 --Bug Fix# 2857899
10975 l_template_yn := status_rec.template_yn;
10976
10977 If ( ( nvl(p_chr_id,0) <> 0 )
10978 AND ((nvl(p_chr_id_old,0) = 0)
10979 OR (nvl(p_orgId,0) = 0)
10980 OR (nvl(p_custId,0) = 0)
10981 OR (nvl(p_invOrgId,0) = 0)
10982 OR ( status_rec.ste_code <> p_oldOKC_STATUS)
10983 OR ( status_rec.code <> p_oldOKL_STATUS )
10984 OR ( p_chr_id <> p_chr_id_old) )) Then
10985
10986 OPEN chr_csr( p_chr_id );
10987 FETCH chr_csr INTO chr_rec;
10988 if (chr_csr%NOTFOUND ) Then
10989 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10990 End If;
10991 CLOSE chr_csr;
10992
10993 OPEN prog_num_csr( p_chr_id );
10994 FETCH prog_num_csr INTO l_prog_num;
10995 CLOSE prog_num_csr;
10996
10997 x_hdr_tbl(1) := chr_rec.short_description;
10998
10999 x_hdr_tbl(2) := chr_rec.product_description;
11000 x_hdr_tbl(3) := chr_rec.start_date;
11001 x_hdr_tbl(4) := chr_rec.end_date;
11002 x_hdr_tbl(5) := chr_rec.meaning;
11003 x_hdr_tbl(6) := chr_rec.contract_number;
11004 x_hdr_tbl(7) := l_prog_num;
11005 -- x_hdr_tbl(7) := chr_rec.program_name;
11006 x_hdr_tbl(8) := chr_rec.product_name;
11007 x_hdr_tbl(9) := chr_rec.inv_org_id;
11008 x_hdr_tbl(10) := chr_rec.pdt_id;
11009 x_hdr_tbl(11) := chr_rec.id;
11010
11011
11012
11013 ---------------------------------------------
11014 --Bug# 3124577: 11.5.10 : Rule migration
11015 --------------------------------------------
11016 OPEN cust_csr(p_chr_id);
11017 FETCH cust_csr into cust_rec;
11018 if (cust_csr%NOTFOUND ) Then
11019 --for bug# 2471750 :special treatment for QUOTE
11020 If l_scs_code <> 'QUOTE' Then
11021 --Bug# 2857899
11022 If l_template_yn <> 'Y' Then
11023 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11024 Elsif l_template_yn = 'Y' Then
11025 x_hdr_tbl(12) := Null;
11026 x_hdr_tbl(13) := Null;
11027 x_hdr_tbl(14) := Null;
11028
11029 x_hdr_tbl(15) := l_currency_code;
11030
11031 l_return_status := get_party(p_chr_id,'LESSEE', l_lessee);
11032 IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) Then
11033 x_hdr_tbl(16) := l_lessee;
11034 ELSE
11035 x_hdr_tbl(16) := '';
11036 END IF;
11037
11038 x_hdr_tbl(17) := '';
11039 End If;
11040 Elsif l_scs_code = 'QUOTE' Then
11041 x_hdr_tbl(12) := Null;
11042 x_hdr_tbl(13) := Null;
11043 x_hdr_tbl(14) := Null;
11044
11045 x_hdr_tbl(15) := l_currency_code;
11046
11047 l_return_status := get_party(p_chr_id,'LESSEE', l_lessee);
11048 IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) Then
11049 x_hdr_tbl(16) := l_lessee;
11050 ELSE
11051 x_hdr_tbl(16) := '';
11052 END IF;
11053
11054 x_hdr_tbl(17) := '';
11055 End If;
11056 Else
11057 x_hdr_tbl(12) := cust_rec.cust_acct_id;
11058 x_hdr_tbl(13) := 'OKX_CUSTACCT';
11059 x_hdr_tbl(14) := '#';
11060
11061
11062 x_hdr_tbl(15) := cust_rec.currency_code;
11063 x_hdr_tbl(16) := cust_rec.name;
11064 x_hdr_tbl(17) := cust_rec.description;
11065
11066 End If;
11067 CLOSE cust_csr;
11068 --CLOSE rule_csr;
11069
11070 --commented for bug# 2471750
11071 -- x_hdr_tbl(12) := rule_rec.object1_id1;
11072 -- x_hdr_tbl(13) := rule_rec.jtot_object1_code;
11073 -- x_hdr_tbl(14) := rule_rec.object2_id2;
11074
11075
11076 -- OPEN cust_csr( rule_rec.jtot_object1_code,
11077 -- p_chr_id,
11078 -- rule_rec.object1_id1 );
11079 -- FETCH cust_csr INTO cust_rec;
11080 -- if (cust_csr%NOTFOUND ) Then
11081 -- RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11082 -- End If;
11083 -- CLOSE cust_csr;
11084
11085 -- x_hdr_tbl(15) := cust_rec.currency_code;
11086 -- x_hdr_tbl(16) := cust_rec.name;
11087 -- x_hdr_tbl(17) := cust_rec.description;
11088 --commented for bug# 2471750
11089
11090 If (( status_rec.ste_code = 'ENTERED' ) OR ( status_rec.ste_code= 'SIGNED' )) Then
11091 x_hdr_tbl(18) := 'Y';
11092 Else
11093 x_hdr_tbl(18) := 'N';
11094 End If;
11095
11096 --l_return_status := okl_contract_info_pvt.get_syndicate_flag(p_chr_id, l_synd);
11097
11098 -- Bug# 3455354
11099 l_investor_flag := null;
11100 OPEN investor_csr( p_chr_id );
11101 FETCH investor_csr INTO l_investor_flag;
11102 CLOSE investor_csr;
11103
11104 IF (l_investor_flag is not null and l_investor_flag = 'Y') Then
11105 x_hdr_tbl(19) := l_investor_flag;
11106 ELSE
11107 x_hdr_tbl(19) := 'N';
11108 END IF;
11109
11110 --l_return_status := okl_contract_info_pvt.get_private_label(p_chr_id, l_priv);
11111 --l_return_status := get_private_label(p_chr_id, l_priv);
11112 l_return_status := get_party(p_chr_id,'PRIVATE_LABEL', l_priv);
11113 IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) Then
11114 x_hdr_tbl(20) := l_priv;
11115 ELSE
11116 x_hdr_tbl(20) := '';
11117 END IF;
11118
11119 x_hdr_tbl(21) := status_rec.ste_code;
11120 x_hdr_tbl(22) := status_rec.code;
11121
11122 x_hdr_tbl(23) := chr_rec.authoring_org_id;
11123 --Added by dpsingh for LE Project
11124 x_hdr_tbl(24) := chr_rec.legal_entity_id;
11125 Else
11126 x_hdr_tbl(1) := 'GET_FROM_REQUEST';
11127 End if;
11128
11129 l_return_status := OKL_API.G_RET_STS_SUCCESS;
11130
11131 Exception
11132 when OKL_API.G_EXCEPTION_ERROR then
11133 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11134 p_api_name => l_api_name,
11135 p_pkg_name => g_pkg_name,
11136 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
11137 x_msg_count => x_msg_count,
11138 x_msg_data => x_msg_data,
11139 p_api_type => g_api_type);
11140
11141 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
11142 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11143 p_api_name => l_api_name,
11144 p_pkg_name => g_pkg_name,
11145 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
11146 x_msg_count => x_msg_count,
11147 x_msg_data => x_msg_data,
11148 p_api_type => g_api_type);
11149
11150 when OTHERS then
11151 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11152 p_api_name => l_api_name,
11153 p_pkg_name => g_pkg_name,
11154 p_exc_name => 'OTHERS',
11155 x_msg_count => x_msg_count,
11156 x_msg_data => x_msg_data,
11157 p_api_type => g_api_type);
11158
11159
11160 END get_contract_header_info;
11161 END OKL_CONTRACT_PVT;