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