[Home] [Help]
PACKAGE BODY: APPS.OKL_CONTRACT_TOP_LINE_PVT
Source
1 package body okl_contract_top_line_pvt as
2 /* $Header: OKLRKTLB.pls 120.10 2008/02/12 08:39:21 rajnisku noship $ */
3
4 -- Start of comments
5 --
6 -- Procedure Name : create_contract_line
7 -- Description : creates contract line for shadowed contract
8 -- Business Rules :
9 -- Parameters :
10 -- Version : 1.0
11 -- End of comments
12
13 G_API_TYPE CONSTANT VARCHAR2(4) := '_PVT';
14 G_INVALID_NO_OF_PAYMENTS CONSTANT VARCHAR2(200) := 'OKL_INVALID_NO_OF_PAYMNTS';
15 G_FT_FINANCED CONSTANT VARCHAR2(200) := 'FINANCED';
16 G_FT_ABSORBED CONSTANT VARCHAR2(200) := 'ABSORBED';
17
18 FUNCTION GET_AK_PROMPT(p_ak_region IN VARCHAR2, p_ak_attribute IN VARCHAR2)
19 RETURN VARCHAR2 IS
20
21 CURSOR ak_prompt_csr(p_ak_region VARCHAR2, p_ak_attribute VARCHAR2) IS
22 SELECT a.attribute_label_long
23 FROM ak_region_items ri, AK_REGIONS r, AK_ATTRIBUTES_vL a
24 WHERE ri.region_code = r.region_code
25 AND ri.attribute_code = a.attribute_code
26 AND ri.region_code = p_ak_region
27 AND ri.attribute_code = p_ak_attribute;
28
29 l_ak_prompt AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
30 BEGIN
31 OPEN ak_prompt_csr(p_ak_region, p_ak_attribute);
32 FETCH ak_prompt_csr INTO l_ak_prompt;
33 CLOSE ak_prompt_csr;
34 return(l_ak_prompt);
35 END;
36
37 -- Start of comments
38 --
39 -- Procedure Name : create_contract_link_serv
40 -- Description : link service contract to lease
41 -- Business Rules :
42 -- Parameters :
43 -- Version : 1.0
44 -- End of comments
45
46 PROCEDURE create_contract_link_serv (
47 p_api_version IN NUMBER,
48 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
49 x_return_status OUT NOCOPY VARCHAR2,
50 x_msg_count OUT NOCOPY NUMBER,
51 x_msg_data OUT NOCOPY VARCHAR2,
52 p_chr_id IN NUMBER,
53 p_contract_number IN VARCHAR2,
54 p_item_name IN VARCHAR2,
55 p_supplier_name IN VARCHAR2,
56 x_cle_id OUT NOCOPY NUMBER ) IS
57
58 CURSOR l_serv_contract_csr IS
59 select id
60 from okc_k_headers_b k
61 where contract_number = p_contract_number
62 and scs_code = 'SERVICE';
63
64 CURSOR l_rel_vers_csr IS
65 Select id
66 from okc_class_operations
67 where cls_code = 'SERVICE'
68 and opn_code = 'CHECK_RULE';
69
70 CURSOR l_serv_contract9_csr IS
71 select id
72 from okc_k_headers_b k
73 where contract_number = p_contract_number
74 and scs_code = 'SERVICE';
75
76 CURSOR l_serv_line_csr IS
77 select to_number(cle_id)
78 from okl_la_link_service_uv
79 where contract_number = p_contract_number
80 and item_name = p_item_name;
81
82 CURSOR l_supp_name_csr IS
83 select id1
84 from okx_vendors_v
85 where name = p_supplier_name;
86
87 CURSOR l_k_sts_csr IS
88 select k.sts_code, sts.ste_code
89 from OKC_K_HEADERS_B K,
90 OKC_STATUSES_B STS
91 where STS.CODE = K.STS_CODE
92 and K.ID = p_chr_id;
93
94 Cursor l_strmtyp_id_csr IS
95 SELECT sty_id
96 FROM okl_strm_tmpt_full_uv
97 WHERE STY_PURPOSE = 'SERVICE_PAYMENT'
98 and exists (SELECT 1
99 FROM OKC_K_HEADERS_B chr,
100 OKL_K_HEADERS khr
101 WHERE chr.id = khr.id
102 AND khr.pdt_id = okl_strm_tmpt_full_uv.PDT_ID
103 AND trunc(chr.start_date) BETWEEN trunc(okl_strm_tmpt_full_uv.START_DATE) AND nvl(trunc(okl_strm_tmpt_full_uv.END_DATE),chr.start_date+1)
104 AND chr.id = p_chr_id)
105 and sty_name = p_item_name;
106
107 l_chr_id okc_k_headers_b.id%type := null;
108 l_s_chr_id okc_k_headers_b.id%type := null;
109 l_s_cle_id okc_k_lines_b.id%type := null;
110 l_supp_id okx_vendors_v.id1%type := null;
111 x_okl_cle_id okc_k_lines_b.id%type := null;
112 l_rel_vers_id number := null;
113 l_strmtyp_id okl_strm_tmpt_full_uv.sty_id%type := null;
114 l_sts_code OKC_K_HEADERS_B.sts_code%type:= null;
115 l_ste_code OKC_STATUSES_B.STE_CODE%type:= null;
116
117 l_api_name CONSTANT VARCHAR2(30) := 'create_contract_link_serv';
118 l_api_version CONSTANT NUMBER := 1.0;
119 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
120 l_ak_prompt AK_ATTRIBUTES_VL.attribute_label_long%type;
121
122 l_auth number := null;
123 l_inv number := null;
124
125 BEGIN
126
127
128 l_chr_id := p_chr_id;
129
130 If okl_context.get_okc_org_id is null then
131 okl_context.set_okc_org_context(p_chr_id => l_chr_id );
132 End If;
133
134 -- call START_ACTIVITY to create savepoint, check compatibility
135 -- and initialize message list
136 l_return_status := OKC_API.START_ACTIVITY(
137 p_api_name => l_api_name,
138 p_pkg_name => g_pkg_name,
139 p_init_msg_list => p_init_msg_list,
140 l_api_version => l_api_version,
141 p_api_version => p_api_version,
142 p_api_type => g_api_type,
143 x_return_status => x_return_status);
144
145 -- check if activity started successfully
146 If (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
147 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
148 Elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
149 raise OKC_API.G_EXCEPTION_ERROR;
150 End If;
151
152 If(p_contract_number is null) Then
153 x_return_status := OKC_API.g_ret_sts_error;
154 l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_NUMBER');
155 OKC_API.SET_MESSAGE( p_app_name => g_app_name
156 , p_msg_name => 'OKL_REQUIRED_VALUE'
157 , p_token1 => 'COL_NAME'
158 , p_token1_value => l_ak_prompt
159 -- , p_token1_value => 'a'||l_chr_id
160 );
161 raise OKC_API.G_EXCEPTION_ERROR;
162 End If;
163
164 l_rel_vers_id := null;
165 open l_rel_vers_csr;
166 fetch l_rel_vers_csr into l_rel_vers_id;
167 close l_rel_vers_csr;
168
169 If(l_rel_vers_id is null) Then
170
171 open l_serv_contract9_csr;
172 fetch l_serv_contract9_csr into l_s_chr_id;
173 close l_serv_contract9_csr;
174
175 Else
176
177 open l_serv_contract_csr;
178 fetch l_serv_contract_csr into l_s_chr_id;
179 close l_serv_contract_csr;
180
181 End If;
182
183 If l_s_chr_id is null Then
184 x_return_status := OKC_API.g_ret_sts_error;
185 l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_NUMBER');
186 OKC_API.SET_MESSAGE( p_app_name => g_app_name
187 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
188 , p_token1 => 'COL_NAME'
189 , p_token1_value => l_ak_prompt
190 );
191 raise OKC_API.G_EXCEPTION_ERROR;
192 End If;
193
194 If(p_item_name is null) Then
195 x_return_status := OKC_API.g_ret_sts_error;
196 l_ak_prompt := GET_AK_PROMPT('OKL_LA_SERVICE_LINE', 'OKL_LA_SERVICE');
197 OKC_API.SET_MESSAGE( p_app_name => g_app_name
198 , p_msg_name => 'OKL_REQUIRED_VALUE'
199 , p_token1 => 'COL_NAME'
200 , p_token1_value => l_ak_prompt
201 );
202 raise OKC_API.G_EXCEPTION_ERROR;
203 End If;
204
205 -- If(NOT(p_item_name is not null and p_item_name = 'RELINK_SERV_INTGR')) Then
206
207 l_strmtyp_id := null;
208 open l_strmtyp_id_csr;
209 fetch l_strmtyp_id_csr into l_strmtyp_id;
210 close l_strmtyp_id_csr;
211
212 If(l_strmtyp_id is null) Then
213 x_return_status := OKC_API.g_ret_sts_error;
214 l_ak_prompt := GET_AK_PROMPT('OKL_LA_SERVICE_LINE', 'OKL_PAYMENT_TYPE');
215 If(l_ak_prompt is null) Then
216 l_ak_prompt := 'Payment Type';
217 End If;
218 OKC_API.SET_MESSAGE( p_app_name => g_app_name
219 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
220 , p_token1 => 'COL_NAME'
221 , p_token1_value => l_ak_prompt
222 );
223 raise OKC_API.G_EXCEPTION_ERROR;
224 End If;
225
226 -- End If;
227
228 If(p_supplier_name is null) Then
229 x_return_status := OKC_API.g_ret_sts_error;
230 l_ak_prompt := GET_AK_PROMPT('OKL_LA_SERVICE_LINE', 'OKL_LA_SERVICE_SUPPLIER');
231 OKC_API.SET_MESSAGE( p_app_name => g_app_name
232 , p_msg_name => 'OKL_REQUIRED_VALUE'
233 , p_token1 => 'COL_NAME'
234 , p_token1_value => l_ak_prompt
235 );
236 raise OKC_API.G_EXCEPTION_ERROR;
237 End If;
238
239 open l_supp_name_csr;
240 fetch l_supp_name_csr into l_supp_id;
241 close l_supp_name_csr;
242
243 If(l_supp_id is null) Then
244 x_return_status := OKC_API.g_ret_sts_error;
245 l_ak_prompt := GET_AK_PROMPT('OKL_LA_SERVICE_LINE', 'OKL_LA_SERVICE_SUPPLIER');
246 OKC_API.SET_MESSAGE( p_app_name => g_app_name
247 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
248 , p_token1 => 'COL_NAME'
249 , p_token1_value => l_ak_prompt
250 );
251 raise OKC_API.G_EXCEPTION_ERROR;
252 End If;
253
254 l_sts_code := null;
255 l_ste_code := null;
256 open l_k_sts_csr;
257 fetch l_k_sts_csr into l_sts_code, l_ste_code;
258 close l_k_sts_csr;
259
260 --If(p_item_name is not null and p_item_name = 'RELINK_SERV_INTGR') Then
261 If(NOT( l_ste_code is not null AND (l_ste_code = 'ENTERED' OR l_ste_code = 'SIGNED'))) Then
262
263 OKL_SERVICE_INTEGRATION_PVT.relink_service_contract(
264 p_api_version => p_api_version,
265 p_init_msg_list => p_init_msg_list,
266 x_return_status => x_return_status,
267 x_msg_count => x_msg_count,
268 x_msg_data => x_msg_data,
269 p_okl_chr_id => l_chr_id,
270 p_oks_chr_id => l_s_chr_id, -- Service Contract Header ID
271 p_supplier_id => l_supp_id,
272 p_sty_id => l_strmtyp_id, -- payment type
273 x_okl_service_line_id => x_okl_cle_id -- Returns Contract Service TOP Line ID
274 );
275
276 If (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
277 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
278 Elsif (x_return_status = OKC_API.G_RET_STS_ERROR) then
279 raise OKC_API.G_EXCEPTION_ERROR;
280 End If;
281
282 Else
283
284 OKL_SERVICE_INTEGRATION_PVT.create_service_from_oks(
285 p_api_version => p_api_version,
286 p_init_msg_list => p_init_msg_list,
287 x_return_status => x_return_status,
288 x_msg_count => x_msg_count,
289 x_msg_data => x_msg_data,
290 p_okl_chr_id => l_chr_id,
291 p_oks_chr_id => l_s_chr_id, -- Service Contract Header ID
292 p_supplier_id => l_supp_id, -- supplier id
293 p_sty_id => l_strmtyp_id, -- payment type
294 x_okl_service_line_id => x_okl_cle_id -- Returns Contract Service TOP Line ID
295 );
296
297 If (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
298 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
299 Elsif (x_return_status = OKC_API.G_RET_STS_ERROR) then
300 raise OKC_API.G_EXCEPTION_ERROR;
301 End If;
302
303 End If;
304
305 x_cle_id := x_okl_cle_id;
306
307 OKC_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
308
309 EXCEPTION
310 when OKC_API.G_EXCEPTION_ERROR then
311 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
312 p_api_name => l_api_name,
313 p_pkg_name => g_pkg_name,
314 p_exc_name => 'OKC_API.G_RET_STS_ERROR',
315 x_msg_count => x_msg_count,
316 x_msg_data => x_msg_data,
317 p_api_type => g_api_type);
318
319 when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
320 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
321 p_api_name => l_api_name,
322 p_pkg_name => g_pkg_name,
323 p_exc_name => 'OKC_API.G_RET_STS_UNEXP_ERROR',
324 x_msg_count => x_msg_count,
325 x_msg_data => x_msg_data,
326 p_api_type => g_api_type);
327
328 when OTHERS then
329 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
330 p_api_name => l_api_name,
331 p_pkg_name => g_pkg_name,
332 p_exc_name => 'OTHERS',
333 x_msg_count => x_msg_count,
334 x_msg_data => x_msg_data,
335 p_api_type => g_api_type);
336 END create_contract_link_serv;
337
338 -- Start of comments
339 --
340 -- Procedure Name : create_contract_link_serv
341 -- Description : link service contract to lease
342 -- Business Rules :
343 -- Parameters :
344 -- Version : 1.0
345 -- End of comments
346
347 PROCEDURE update_contract_link_serv (
348 p_api_version IN NUMBER,
349 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
350 x_return_status OUT NOCOPY VARCHAR2,
351 x_msg_count OUT NOCOPY NUMBER,
352 x_msg_data OUT NOCOPY VARCHAR2,
353 p_chr_id IN NUMBER,
354 p_cle_id IN NUMBER,
355 p_contract_number IN VARCHAR2,
356 p_item_name IN VARCHAR2,
357 p_supplier_name IN VARCHAR2,
358 x_cle_id OUT NOCOPY NUMBER ) IS
359
360 CURSOR l_serv_contract_csr IS
361 select id
362 from okc_k_headers_b k
363 where contract_number = p_contract_number
364 and scs_code = 'SERVICE';
365
366 CURSOR l_rel_vers_csr IS
367 Select id
368 from okc_class_operations
369 where cls_code = 'SERVICE'
370 and opn_code = 'CHECK_RULE';
371
372 CURSOR l_serv_contract9_csr IS
373 select id
374 from okc_k_headers_b k
375 where contract_number = p_contract_number
376 and scs_code = 'SERVICE';
377
378 CURSOR l_serv_line_csr IS
379 select to_number(cle_id)
380 from okl_la_link_service_uv
381 where contract_number = p_contract_number
382 and item_name = p_item_name;
383
384 CURSOR l_supp_name_csr IS
385 select id1
386 from okx_vendors_v
387 where name = p_supplier_name;
388
389 l_chr_id okc_k_headers_b.id%type := null;
390 l_s_chr_id okc_k_headers_b.id%type := null;
391 l_s_cle_id okc_k_lines_b.id%type := null;
392 l_supp_id okx_vendors_v.id1%type := null;
393 x_okl_cle_id okc_k_lines_b.id%type := null;
394 l_rel_vers_id number := null;
395
396 lp_clev_rec OKL_SERVICE_INTEGRATION_PUB.clev_rec_type;
397 lp_klev_rec OKL_SERVICE_INTEGRATION_PUB.klev_rec_type;
398
399
400 l_api_name CONSTANT VARCHAR2(30) := 'update_contract_link_serv';
401 l_api_version CONSTANT NUMBER := 1.0;
402 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
403 l_ak_prompt AK_ATTRIBUTES_VL.attribute_label_long%type;
404
405 BEGIN
406
407 l_chr_id := p_chr_id;
408 If okl_context.get_okc_org_id is null then
409 okl_context.set_okc_org_context(p_chr_id => l_chr_id );
410 End If;
411
412 -- call START_ACTIVITY to create savepoint, check compatibility
413 -- and initialize message list
414 l_return_status := OKC_API.START_ACTIVITY(
415 p_api_name => l_api_name,
416 p_pkg_name => g_pkg_name,
417 p_init_msg_list => p_init_msg_list,
418 l_api_version => l_api_version,
419 p_api_version => p_api_version,
420 p_api_type => g_api_type,
421 x_return_status => x_return_status);
422
423 -- check if activity started successfully
424 If (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
425 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
426 Elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
427 raise OKC_API.G_EXCEPTION_ERROR;
428 End If;
429
430 If(p_contract_number is null) Then
431 x_return_status := OKC_API.g_ret_sts_error;
432 l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_NUMBER');
433 OKC_API.SET_MESSAGE( p_app_name => g_app_name
434 , p_msg_name => 'OKL_REQUIRED_VALUE'
435 , p_token1 => 'COL_NAME'
436 , p_token1_value => l_ak_prompt
437 );
438 raise OKC_API.G_EXCEPTION_ERROR;
439 End If;
440
441 l_rel_vers_id := null;
442 open l_rel_vers_csr;
443 fetch l_rel_vers_csr into l_rel_vers_id;
444 close l_rel_vers_csr;
445
446 If(l_rel_vers_id is null) Then
447
448 open l_serv_contract9_csr;
449 fetch l_serv_contract9_csr into l_s_chr_id;
450 close l_serv_contract9_csr;
451
452 Else
453
454 open l_serv_contract_csr;
455 fetch l_serv_contract_csr into l_s_chr_id;
456 close l_serv_contract_csr;
457
458 End If;
459
460 If l_s_chr_id is null Then
461 x_return_status := OKC_API.g_ret_sts_error;
462 l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_NUMBER');
463 OKC_API.SET_MESSAGE( p_app_name => g_app_name
464 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
465 , p_token1 => 'COL_NAME'
466 , p_token1_value => l_ak_prompt
467 );
468 raise OKC_API.G_EXCEPTION_ERROR;
469 End If;
470
471 /*
472 If(p_item_name is null) Then
473 x_return_status := OKC_API.g_ret_sts_error;
474 l_ak_prompt := GET_AK_PROMPT('OKL_LA_SERVICE_LINE', 'OKL_LA_SERVICE');
475 OKC_API.SET_MESSAGE( p_app_name => g_app_name
476 , p_msg_name => 'OKL_REQUIRED_VALUE'
477 , p_token1 => 'COL_NAME'
478 , p_token1_value => l_ak_prompt
479 );
480 raise OKC_API.G_EXCEPTION_ERROR;
481 End If;
482
483
484 open l_serv_line_csr;
485 fetch l_serv_line_csr into l_s_cle_id;
486 close l_serv_line_csr;
487
488 If l_s_cle_id is null Then
489 x_return_status := OKC_API.g_ret_sts_error;
490 l_ak_prompt := GET_AK_PROMPT('OKL_LA_SERVICE_LINE', 'OKL_LA_SERVICE');
491 OKC_API.SET_MESSAGE( p_app_name => g_app_name
492 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
493 , p_token1 => 'COL_NAME'
494 , p_token1_value => l_ak_prompt
495 );
496 raise OKC_API.G_EXCEPTION_ERROR;
497 End If;
498 */
499
500 If(p_supplier_name is null) Then
501 x_return_status := OKC_API.g_ret_sts_error;
502 l_ak_prompt := GET_AK_PROMPT('OKL_LA_SERVICE_LINE', 'OKL_LA_SERVICE_SUPPLIER');
503 OKC_API.SET_MESSAGE( p_app_name => g_app_name
504 , p_msg_name => 'OKL_REQUIRED_VALUE'
505 , p_token1 => 'COL_NAME'
506 , p_token1_value => l_ak_prompt
507 );
508 raise OKC_API.G_EXCEPTION_ERROR;
509 End If;
510
511 open l_supp_name_csr;
512 fetch l_supp_name_csr into l_supp_id;
513 close l_supp_name_csr;
514
515 If(l_supp_id is null) Then
516 x_return_status := OKC_API.g_ret_sts_error;
517 l_ak_prompt := GET_AK_PROMPT('OKL_LA_SERVICE_LINE', 'OKL_LA_SERVICE_SUPPLIER');
518 OKC_API.SET_MESSAGE( p_app_name => g_app_name
519 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
520 , p_token1 => 'COL_NAME'
521 , p_token1_value => l_ak_prompt
522 );
523 raise OKC_API.G_EXCEPTION_ERROR;
524 End If;
525
526 lp_clev_rec.dnz_chr_id := l_chr_id;
527 lp_clev_rec.id := p_cle_id;
528 lp_klev_rec.id := p_cle_id;
529
530
531 OKL_SERVICE_INTEGRATION_PUB.update_service_line(
532 p_api_version => p_api_version,
533 p_init_msg_list => p_init_msg_list,
534 x_return_status => x_return_status,
535 x_msg_count => x_msg_count,
536 x_msg_data => x_msg_data,
537 p_okl_chr_id => l_chr_id,
538 p_oks_chr_id => l_s_chr_id, -- Service Contract Header ID
539 p_oks_service_line_id => l_s_cle_id, -- Service Contract Service Top Line ID
540 p_supplier_id => l_supp_id,
541 p_clev_rec => lp_clev_rec,
542 p_klev_rec => lp_klev_rec,
543 x_okl_service_line_id => x_okl_cle_id -- Returns Contract Service TOP Line ID
544 );
545
546 If (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
547 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
548 Elsif (x_return_status = OKC_API.G_RET_STS_ERROR) then
549 raise OKC_API.G_EXCEPTION_ERROR;
550 End If;
551
552 x_cle_id := x_okl_cle_id;
553
554 OKC_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
555
556 EXCEPTION
557 when OKC_API.G_EXCEPTION_ERROR then
558 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
559 p_api_name => l_api_name,
560 p_pkg_name => g_pkg_name,
561 p_exc_name => 'OKC_API.G_RET_STS_ERROR',
562 x_msg_count => x_msg_count,
563 x_msg_data => x_msg_data,
564 p_api_type => g_api_type);
565
566 when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
567 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
568 p_api_name => l_api_name,
569 p_pkg_name => g_pkg_name,
570 p_exc_name => 'OKC_API.G_RET_STS_UNEXP_ERROR',
571 x_msg_count => x_msg_count,
572 x_msg_data => x_msg_data,
573 p_api_type => g_api_type);
574
575 when OTHERS then
576 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
577 p_api_name => l_api_name,
578 p_pkg_name => g_pkg_name,
579 p_exc_name => 'OTHERS',
580 x_msg_count => x_msg_count,
581 x_msg_data => x_msg_data,
582 p_api_type => g_api_type);
583 END update_contract_link_serv;
584
585
586 PROCEDURE create_contract_top_line(
587 p_api_version IN NUMBER,
588 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
589 x_return_status OUT NOCOPY VARCHAR2,
590 x_msg_count OUT NOCOPY NUMBER,
591 x_msg_data OUT NOCOPY VARCHAR2,
592 p_clev_rec IN clev_rec_type,
593 p_klev_rec IN klev_rec_type,
594 p_cimv_rec IN cimv_rec_type,
595 p_cplv_rec IN cplv_rec_type,
596 x_clev_rec OUT NOCOPY clev_rec_type,
597 x_klev_rec OUT NOCOPY klev_rec_type,
598 x_cimv_rec OUT NOCOPY cimv_rec_type,
599 x_cplv_rec OUT NOCOPY cplv_rec_type) IS
600
601 l_clev_rec clev_rec_type := p_clev_rec;
602 l_klev_rec klev_rec_type := p_klev_rec;
603 l_cimv_rec cimv_rec_type := p_cimv_rec;
604 l_cplv_rec cplv_rec_type := p_cplv_rec;
605
606 l_chr_id l_clev_rec.dnz_chr_id%type;
607
608 l_api_name CONSTANT VARCHAR2(30) := 'create_contract_top_line';
609 l_api_version CONSTANT NUMBER := 1.0;
610 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
611
612 CURSOR get_k_dates_csr(l_id NUMBER) IS
613 select chr.start_date, chr.end_date
614 from okc_k_headers_b chr
615 where chr.id = l_id;
616
617 l_start_date okc_k_headers_b.start_date%type := null;
618 l_end_date okc_k_headers_b.end_date%type := null;
619
620 l_cap_yn OKL_STRMTYP_SOURCE_V.CAPITALIZE_YN%type := null;
621 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%type := null;
622
623 CURSOR get_capitalize_yn_csr(cap_yn VARCHAR2) IS
624 SELECT CAPITALIZE_YN
625 FROM OKL_STRMTYP_SOURCE_V OKL_STRMTYP
626 WHERE OKL_STRMTYP.NAME = cap_yn
627 AND OKL_STRMTYP.STATUS = 'A';
628
629 CURSOR get_lty_code_csr(lse_id NUMBER) IS
630 select lty_code
631 from okc_line_styles_v
632 where id = lse_id;
633
634
635 BEGIN
636
637 l_chr_id := l_clev_rec.dnz_chr_id;
638 If okl_context.get_okc_org_id is null then
639 okl_context.set_okc_org_context(p_chr_id => l_chr_id );
640 End If;
641
642 -- call START_ACTIVITY to create savepoint, check compatibility
643 -- and initialize message list
644 x_return_status := OKC_API.START_ACTIVITY(
645 p_api_name => l_api_name,
646 p_pkg_name => g_pkg_name,
647 p_init_msg_list => p_init_msg_list,
648 l_api_version => l_api_version,
649 p_api_version => p_api_version,
650 p_api_type => g_api_type,
651 x_return_status => x_return_status);
652
653 -- check if activity started successfully
654 If (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
655 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
656 Elsif (x_return_status = OKC_API.G_RET_STS_ERROR) then
657 raise OKC_API.G_EXCEPTION_ERROR;
658 End If;
659
660 l_clev_rec.name := l_clev_rec.item_description;
661
662 open get_lty_code_csr(l_clev_rec.lse_id);
663 fetch get_lty_code_csr into l_lty_code;
664 close get_lty_code_csr;
665
666 If (l_lty_code is not null and l_lty_code = 'FEE') Then
667
668 open get_capitalize_yn_csr(l_clev_rec.item_description);
669 fetch get_capitalize_yn_csr into l_cap_yn;
670 close get_capitalize_yn_csr;
671 If (l_cap_yn is not null and l_cap_yn = 'Y') Then
672 l_klev_rec.capital_amount := p_klev_rec.amount;
673 Else
674 l_klev_rec.capital_amount := null;
675 End If;
676
677 End If;
678
679
680 If ( (l_clev_rec.start_date is null or l_clev_rec.start_date = OKC_API.G_MISS_DATE)
681 or (l_clev_rec.end_date is null or l_clev_rec.end_date = OKC_API.G_MISS_DATE) )then
682
683 open get_k_dates_csr(l_clev_rec.dnz_chr_id);
684 fetch get_k_dates_csr into l_start_date, l_end_date;
685 close get_k_dates_csr;
686
687 If ( l_clev_rec.start_date is null or l_clev_rec.start_date = OKC_API.G_MISS_DATE) then
688 l_clev_rec.start_date := l_start_date;
689 End If;
690
691 If ( l_clev_rec.end_date is null or l_clev_rec.end_date = OKC_API.G_MISS_DATE) then
692 l_clev_rec.end_date := l_end_date;
693 End If;
694
695 End If;
696
697 --Bug# 4558486
698 -- To validate DFF data for Service Line
699 l_klev_rec.validate_dff_yn := 'Y';
700
701 okl_contract_pvt.create_contract_line(
702 p_api_version => p_api_version,
703 p_init_msg_list => p_init_msg_list,
704 x_return_status => x_return_status,
705 x_msg_count => x_msg_count,
706 x_msg_data => x_msg_data,
707 p_clev_rec => l_clev_rec,
708 p_klev_rec => l_klev_rec,
709 x_clev_rec => x_clev_rec,
710 x_klev_rec => x_klev_rec);
711
712 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
713 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
714 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
715 raise OKC_API.G_EXCEPTION_ERROR;
716 END IF;
717
718 l_cimv_rec.cle_id := x_clev_rec.id;
719
720 okl_okc_migration_pvt.create_contract_item(
721 p_api_version => p_api_version,
722 p_init_msg_list => p_init_msg_list,
723 x_return_status => x_return_status,
724 x_msg_count => x_msg_count,
725 x_msg_data => x_msg_data,
726 p_cimv_rec => l_cimv_rec,
727 x_cimv_rec => x_cimv_rec);
728
729 -- check return status
730 If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
731 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
732 Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
733 raise OKC_API.G_EXCEPTION_ERROR;
734 End If;
735
736
737 l_cplv_rec.cle_id := x_clev_rec.id;
738
739 --Murthy commented out supplier is not created at line creation.
740 /* if ( l_cplv_rec.object1_id1 is not null and l_cplv_rec.object1_id2 is not null) then
741
742 okl_okc_migration_pvt.create_k_party_role(
743 p_api_version => p_api_version,
744 p_init_msg_list => p_init_msg_list,
745 x_return_status => x_return_status,
746 x_msg_count => x_msg_count,
747 x_msg_data => x_msg_data,
748 p_cplv_rec => l_cplv_rec,
749 x_cplv_rec => x_cplv_rec);
750
751 -- check return status
752 If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
753 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
754 Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
755 raise OKC_API.G_EXCEPTION_ERROR;
756 End If;
757
758 end if;*/
759
760 OKC_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
761 EXCEPTION
762 when OKC_API.G_EXCEPTION_ERROR then
763 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
764 p_api_name => l_api_name,
765 p_pkg_name => g_pkg_name,
766 p_exc_name => 'OKC_API.G_RET_STS_ERROR',
767 x_msg_count => x_msg_count,
768 x_msg_data => x_msg_data,
769 p_api_type => g_api_type);
770
771 when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
772 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
773 p_api_name => l_api_name,
774 p_pkg_name => g_pkg_name,
775 p_exc_name => 'OKC_API.G_RET_STS_UNEXP_ERROR',
776 x_msg_count => x_msg_count,
777 x_msg_data => x_msg_data,
778 p_api_type => g_api_type);
779
780 when OTHERS then
781 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
782 p_api_name => l_api_name,
783 p_pkg_name => g_pkg_name,
784 p_exc_name => 'OTHERS',
785 x_msg_count => x_msg_count,
786 x_msg_data => x_msg_data,
787 p_api_type => g_api_type);
788 END create_contract_top_line;
789
790 -- Start of comments
791 --
792 -- Procedure Name : create_contract_top_line
793 -- Description : creates contract line for shadowed contract
794 -- Business Rules :
795 -- Parameters :
796 -- Version : 1.0
797 -- End of comments
798 PROCEDURE create_contract_top_line(
799 p_api_version IN NUMBER,
800 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
801 x_return_status OUT NOCOPY VARCHAR2,
802 x_msg_count OUT NOCOPY NUMBER,
803 x_msg_data OUT NOCOPY VARCHAR2,
804 p_clev_tbl IN clev_tbl_type,
805 p_klev_tbl IN klev_tbl_type,
806 p_cimv_tbl IN cimv_tbl_type,
807 p_cplv_tbl IN cplv_tbl_type,
808 x_clev_tbl OUT NOCOPY clev_tbl_type,
809 x_klev_tbl OUT NOCOPY klev_tbl_type,
810 x_cimv_tbl OUT NOCOPY cimv_tbl_type,
811 x_cplv_tbl OUT NOCOPY cplv_tbl_type) IS
812
813 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_contract_top_line';
814 l_api_version CONSTANT NUMBER := 1.0;
815 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
816 l_overall_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
817 i NUMBER;
818 l_klev_tbl klev_tbl_type := p_klev_tbl;
819 l_cimv_tbl cimv_tbl_type := p_cimv_tbl;
820 l_cplv_tbl cplv_tbl_type := p_cplv_tbl;
821 BEGIN
822
823 /*
824 -- call START_ACTIVITY to create savepoint, check compatibility
825 -- and initialize message list
826 l_return_status := OKC_API.START_ACTIVITY(
827 p_api_name => l_api_name,
828 p_pkg_name => g_pkg_name,
829 p_init_msg_list => p_init_msg_list,
830 l_api_version => l_api_version,
831 p_api_version => p_api_version,
832 p_api_type => g_api_type,
833 x_return_status => x_return_status);
834
835 -- check if activity started successfully
836 If (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
837 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
838 Elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
839 raise OKC_API.G_EXCEPTION_ERROR;
840 End If;
841 */
842
843 If (p_clev_tbl.COUNT > 0) Then
844 i := p_clev_tbl.FIRST;
845 LOOP
846 -- call procedure in complex API for a record
847 create_contract_top_line(
848 p_api_version => p_api_version,
849 p_init_msg_list => p_init_msg_list,
850 x_return_status => x_return_status,
851 x_msg_count => x_msg_count,
852 x_msg_data => x_msg_data,
853 p_clev_rec => p_clev_tbl(i),
854 p_klev_rec => l_klev_tbl(i),
855 p_cimv_rec => l_cimv_tbl(i),
856 p_cplv_rec => l_cplv_tbl(i),
857 x_clev_rec => x_clev_tbl(i),
858 x_klev_rec => x_klev_tbl(i),
859 x_cimv_rec => x_cimv_tbl(i),
860 x_cplv_rec => x_cplv_tbl(i));
861
862 If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
863 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
864 Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
865 raise OKC_API.G_EXCEPTION_ERROR;
866 End If;
867
868 EXIT WHEN (i = p_clev_tbl.LAST);
869 i := p_clev_tbl.NEXT(i);
870 END LOOP;
871
872 End If;
873
874 If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
875 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
876 Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
877 raise OKC_API.G_EXCEPTION_ERROR;
878 End If;
879 /*
880 OKC_API.END_ACTIVITY( x_msg_count => x_msg_count,
881 x_msg_data => x_msg_data);
882 */
883 EXCEPTION
884 when OKC_API.G_EXCEPTION_ERROR then
885 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
886 p_api_name => l_api_name,
887 p_pkg_name => g_pkg_name,
888 p_exc_name => 'OKC_API.G_RET_STS_ERROR',
889 x_msg_count => x_msg_count,
890 x_msg_data => x_msg_data,
891 p_api_type => g_api_type);
892
893 when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
894 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
895 p_api_name => l_api_name,
896 p_pkg_name => g_pkg_name,
897 p_exc_name => 'OKC_API.G_RET_STS_UNEXP_ERROR',
898 x_msg_count => x_msg_count,
899 x_msg_data => x_msg_data,
900 p_api_type => g_api_type);
901
902 when OTHERS then
903 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
904 p_api_name => l_api_name,
905 p_pkg_name => g_pkg_name,
906 p_exc_name => 'OTHERS',
907 x_msg_count => x_msg_count,
908 x_msg_data => x_msg_data,
909 p_api_type => g_api_type);
910
911 END create_contract_top_line;
912
913
914 -- Start of comments
915 --
916 -- Procedure Name : update_contract_top_line
917 -- Description : updates contract line for shadowed contract
918 -- Business Rules :
919 -- Parameters :
920 -- Version : 1.0
921 -- End of comments
922 PROCEDURE update_contract_top_line(
923 p_api_version IN NUMBER,
924 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
925 x_return_status OUT NOCOPY VARCHAR2,
926 x_msg_count OUT NOCOPY NUMBER,
927 x_msg_data OUT NOCOPY VARCHAR2,
928 p_clev_rec IN clev_rec_type,
929 p_klev_rec IN klev_rec_type,
930 p_cimv_rec IN cimv_rec_type,
931 p_cplv_rec IN cplv_rec_type,
932 x_clev_rec OUT NOCOPY clev_rec_type,
933 x_klev_rec OUT NOCOPY klev_rec_type,
934 x_cimv_rec OUT NOCOPY cimv_rec_type,
935 x_cplv_rec OUT NOCOPY cplv_rec_type) IS
936
937 l_clev_rec clev_rec_type := p_clev_rec;
938 l_klev_rec klev_rec_type := p_klev_rec;
939 l_cimv_rec cimv_rec_type := p_cimv_rec;
940 l_cplv_rec cplv_rec_type := p_cplv_rec;
941
942 l_chr_id l_clev_rec.dnz_chr_id%type;
943
944 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_contract_top_line';
945 l_api_version CONSTANT NUMBER := 1.0;
946 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
947
948 CURSOR get_k_dates_csr(l_id number) IS
949 select chr.start_date, chr.end_date
950 from okc_k_headers_b chr
951 where chr.id = l_id;
952
953 l_start_date okc_k_headers_b.start_date%type := null;
954 l_end_date okc_k_headers_b.end_date%type := null;
955
956 l_cap_yn OKL_STRMTYP_SOURCE_V.CAPITALIZE_YN%type := null;
957 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%type := null;
958
959 CURSOR get_capitalize_yn_csr(cap_yn VARCHAR2) IS
960 SELECT CAPITALIZE_YN
961 FROM OKL_STRMTYP_SOURCE_V OKL_STRMTYP
962 WHERE OKL_STRMTYP.NAME = cap_yn
963 AND OKL_STRMTYP.STATUS = 'A';
964
965 CURSOR get_lty_code_csr(lse_id NUMBER) IS
966 select lty_code
967 from okc_line_styles_v
968 where id = lse_id;
969
970 -- Bug# 6438785
971 CURSOR c_orig_cle_csr(p_cle_id IN NUMBER) IS
972 SELECT cle.start_date
973 FROM okc_k_lines_b cle
974 WHERE cle.id = p_cle_id;
975
976 l_orig_cle_rec c_orig_cle_csr%ROWTYPE;
977
978 BEGIN
979
980 l_chr_id := l_clev_rec.dnz_chr_id;
981 If okl_context.get_okc_org_id is null then
982 okl_context.set_okc_org_context(p_chr_id => l_chr_id );
983 End If;
984
985 -- call START_ACTIVITY to create savepoint, check compatibility
986 -- and initialize message list
987 x_return_status := OKC_API.START_ACTIVITY(
988 p_api_name => l_api_name,
989 p_pkg_name => g_pkg_name,
990 p_init_msg_list => p_init_msg_list,
991 l_api_version => l_api_version,
992 p_api_version => p_api_version,
993 p_api_type => g_api_type,
994 x_return_status => x_return_status);
995
996 -- check if activity started successfully
997 If (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
998 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
999 Elsif (x_return_status = OKC_API.G_RET_STS_ERROR) then
1000 raise OKC_API.G_EXCEPTION_ERROR;
1001 End If;
1002
1003 l_clev_rec.name := l_clev_rec.item_description;
1004
1005 open get_lty_code_csr(l_clev_rec.lse_id);
1006 fetch get_lty_code_csr into l_lty_code;
1007 close get_lty_code_csr;
1008
1009 If (l_lty_code is not null and l_lty_code = 'FEE') Then
1010
1011 open get_capitalize_yn_csr(l_clev_rec.item_description);
1012 fetch get_capitalize_yn_csr into l_cap_yn;
1013 close get_capitalize_yn_csr;
1014 If (l_cap_yn is not null and l_cap_yn = 'Y') Then
1015 l_klev_rec.capital_amount := p_klev_rec.amount;
1016 Else
1017 l_klev_rec.capital_amount := null;
1018 End If;
1019
1020 End If;
1021
1022
1023 If ( (l_clev_rec.start_date is null or l_clev_rec.start_date = OKC_API.G_MISS_DATE )
1024 or (l_clev_rec.end_date is null or l_clev_rec.end_date = OKC_API.G_MISS_DATE) )then
1025
1026 open get_k_dates_csr(l_clev_rec.dnz_chr_id);
1027 fetch get_k_dates_csr into l_start_date, l_end_date;
1028 close get_k_dates_csr;
1029
1030 If ( l_clev_rec.start_date is null or l_clev_rec.start_date = OKC_API.G_MISS_DATE) then
1031 l_clev_rec.start_date := l_start_date;
1032 End If;
1033
1034 If ( l_clev_rec.end_date is null or l_clev_rec.end_date = OKC_API.G_MISS_DATE) then
1035 l_clev_rec.end_date := l_end_date;
1036 End If;
1037
1038 End If;
1039
1040 --Bug# 4558486
1041 -- To validate DFF data for Service Line
1042 l_klev_rec.validate_dff_yn := 'Y';
1043
1044 -- Bug# 6438785
1045 -- Fetch original service line start date for checking
1046 -- whether start date has been changed
1047 OPEN c_orig_cle_csr(p_cle_id => l_clev_rec.id);
1048 FETCH c_orig_cle_csr INTO l_orig_cle_rec;
1049 CLOSE c_orig_cle_csr;
1050
1051 okl_contract_pvt.update_contract_line(
1052 p_api_version => p_api_version,
1053 p_init_msg_list => p_init_msg_list,
1054 x_return_status => x_return_status,
1055 x_msg_count => x_msg_count,
1056 x_msg_data => x_msg_data,
1057 p_clev_rec => l_clev_rec,
1058 p_klev_rec => l_klev_rec,
1059 x_clev_rec => x_clev_rec,
1060 x_klev_rec => x_klev_rec
1061 );
1062
1063 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1064 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1065 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1066 raise OKC_API.G_EXCEPTION_ERROR;
1067 END IF;
1068
1069 --
1070 -- call procedure in complex API
1071 --
1072 okl_okc_migration_pvt.update_contract_item(
1073 p_api_version => p_api_version,
1074 p_init_msg_list => p_init_msg_list,
1075 x_return_status => x_return_status,
1076 x_msg_count => x_msg_count,
1077 x_msg_data => x_msg_data,
1078 p_cimv_rec => l_cimv_rec,
1079 x_cimv_rec => x_cimv_rec);
1080
1081 -- check return status
1082 If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
1083 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1084 Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
1085 raise OKC_API.G_EXCEPTION_ERROR;
1086 End If;
1087
1088 -- Bug# 6438785
1089 -- When the service line start date is changed, update the
1090 -- start dates for all service and sub-line payments based on
1091 -- the new line start date
1092 IF (x_clev_rec.start_date <> l_orig_cle_rec.start_date) THEN
1093
1094 OKL_LA_PAYMENTS_PVT.update_pymt_start_date
1095 (p_api_version => p_api_version,
1096 p_init_msg_list => p_init_msg_list,
1097 x_return_status => x_return_status,
1098 x_msg_count => x_msg_count,
1099 x_msg_data => x_msg_data,
1100 p_chr_id => x_clev_rec.dnz_chr_id,
1101 p_cle_id => x_clev_rec.id);
1102
1103 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
1104 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1105 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
1106 raise OKL_API.G_EXCEPTION_ERROR;
1107 End If;
1108
1109 END IF;
1110 -- Bug# 6438785
1111
1112 --Murthy commented out supplier information is not created at line creation time.
1113 /* if ( l_cplv_rec.object1_id1 is not null and l_cplv_rec.object1_id2 is not null) then
1114
1115 if ( l_cplv_rec.id is null ) then
1116
1117 okl_okc_migration_pvt.create_k_party_role(
1118 p_api_version => p_api_version,
1119 p_init_msg_list => p_init_msg_list,
1120 x_return_status => x_return_status,
1121 x_msg_count => x_msg_count,
1122 x_msg_data => x_msg_data,
1123 p_cplv_rec => l_cplv_rec,
1124 x_cplv_rec => x_cplv_rec);
1125
1126 -- check return status
1127 If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
1128 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1129 Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
1130 raise OKC_API.G_EXCEPTION_ERROR;
1131 End If;
1132
1133 else
1134
1135 okl_okc_migration_pvt.update_k_party_role(
1136 p_api_version => p_api_version,
1137 p_init_msg_list => p_init_msg_list,
1138 x_return_status => x_return_status,
1139 x_msg_count => x_msg_count,
1140 x_msg_data => x_msg_data,
1141 p_cplv_rec => l_cplv_rec,
1142 x_cplv_rec => x_cplv_rec);
1143
1144 -- check return status
1145 If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
1146 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1147 Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
1148 raise OKC_API.G_EXCEPTION_ERROR;
1149 End If;
1150
1151 end if;
1152
1153 Elsif ( l_cplv_rec.id is not null ) then
1154
1155 -- delete party
1156 okl_okc_migration_pvt.delete_k_party_role(
1157 p_api_version => p_api_version,
1158 p_init_msg_list => p_init_msg_list,
1159 x_return_status => x_return_status,
1160 x_msg_count => x_msg_count,
1161 x_msg_data => x_msg_data,
1162 p_cplv_rec => l_cplv_rec);
1163
1164 -- check return status
1165 If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
1166 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1167 Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
1168 raise OKC_API.G_EXCEPTION_ERROR;
1169 End If;
1170 end if;*/
1171
1172 OKC_API.END_ACTIVITY(x_msg_count => x_msg_count,
1173 x_msg_data => x_msg_data);
1174
1175 EXCEPTION
1176 when OKC_API.G_EXCEPTION_ERROR then
1177 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1178 p_api_name => l_api_name,
1179 p_pkg_name => g_pkg_name,
1180 p_exc_name => 'OKC_API.G_RET_STS_ERROR',
1181 x_msg_count => x_msg_count,
1182 x_msg_data => x_msg_data,
1183 p_api_type => g_api_type);
1184
1185 when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
1186 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1187 p_api_name => l_api_name,
1188 p_pkg_name => g_pkg_name,
1189 p_exc_name => 'OKC_API.G_RET_STS_UNEXP_ERROR',
1190 x_msg_count => x_msg_count,
1191 x_msg_data => x_msg_data,
1192 p_api_type => g_api_type);
1193
1194 when OTHERS then
1195 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1196 p_api_name => l_api_name,
1197 p_pkg_name => g_pkg_name,
1198 p_exc_name => 'OTHERS',
1199 x_msg_count => x_msg_count,
1200 x_msg_data => x_msg_data,
1201 p_api_type => g_api_type);
1202 END update_contract_top_line;
1203
1204
1205 -- Start of comments
1206 --
1207 -- Procedure Name : update_contract_top_line
1208 -- Description : updates contract line for shadowed contract
1209 -- Business Rules :
1210 -- Parameters :
1211 -- Version : 1.0
1212 -- End of comments
1213 PROCEDURE update_contract_top_line(
1214 p_api_version IN NUMBER,
1215 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1216 x_return_status OUT NOCOPY VARCHAR2,
1217 x_msg_count OUT NOCOPY NUMBER,
1218 x_msg_data OUT NOCOPY VARCHAR2,
1219 p_clev_tbl IN clev_tbl_type,
1220 p_klev_tbl IN klev_tbl_type,
1221 p_cimv_tbl IN cimv_tbl_type,
1222 p_cplv_tbl IN cplv_tbl_type,
1223 x_clev_tbl OUT NOCOPY clev_tbl_type,
1224 x_klev_tbl OUT NOCOPY klev_tbl_type,
1225 x_cimv_tbl OUT NOCOPY cimv_tbl_type,
1226 x_cplv_tbl OUT NOCOPY cplv_tbl_type) IS
1227
1228 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_contract_top_line';
1229 l_api_version CONSTANT NUMBER := 1.0;
1230 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1231 l_overall_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1232 i NUMBER;
1233 l_klev_tbl klev_tbl_type := p_klev_tbl;
1234 l_cimv_tbl cimv_tbl_type := p_cimv_tbl;
1235 l_cplv_tbl cplv_tbl_type := p_cplv_tbl;
1236 BEGIN
1237 /*
1238 -- call START_ACTIVITY to create savepoint, check compatibility
1239 -- and initialize message list
1240 l_return_status := OKC_API.START_ACTIVITY(
1241 p_api_name => l_api_name,
1242 p_pkg_name => g_pkg_name,
1243 p_init_msg_list => p_init_msg_list,
1244 l_api_version => l_api_version,
1245 p_api_version => p_api_version,
1246 p_api_type => g_api_type,
1247 x_return_status => x_return_status);
1248
1249 -- check if activity started successfully
1250 If (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
1251 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1252 Elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
1253 raise OKC_API.G_EXCEPTION_ERROR;
1254 End If;
1255 */
1256
1257 If (p_clev_tbl.COUNT > 0) Then
1258 i := p_clev_tbl.FIRST;
1259 LOOP
1260 -- call procedure in complex API for a record
1261 update_contract_top_line(
1262 p_api_version => p_api_version,
1263 p_init_msg_list => p_init_msg_list,
1264 x_return_status => x_return_status,
1265 x_msg_count => x_msg_count,
1266 x_msg_data => x_msg_data,
1267 p_clev_rec => p_clev_tbl(i),
1268 p_klev_rec => l_klev_tbl(i),
1269 p_cimv_rec => l_cimv_tbl(i),
1270 p_cplv_rec => l_cplv_tbl(i),
1271 x_clev_rec => x_clev_tbl(i),
1272 x_klev_rec => x_klev_tbl(i),
1273 x_cimv_rec => x_cimv_tbl(i),
1274 x_cplv_rec => x_cplv_tbl(i));
1275
1276 If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
1277 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1278 Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
1279 raise OKC_API.G_EXCEPTION_ERROR;
1280 End If;
1281
1282 EXIT WHEN (i = p_clev_tbl.LAST);
1283 i := p_clev_tbl.NEXT(i);
1284 END LOOP;
1285
1286 End If;
1287
1288 If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
1289 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1290 Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
1291 raise OKC_API.G_EXCEPTION_ERROR;
1292 End If;
1293 /*
1294 OKC_API.END_ACTIVITY( x_msg_count => x_msg_count,
1295 x_msg_data => x_msg_data);
1296 */
1297 EXCEPTION
1298 when OKC_API.G_EXCEPTION_ERROR then
1299 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1300 p_api_name => l_api_name,
1301 p_pkg_name => g_pkg_name,
1302 p_exc_name => 'OKC_API.G_RET_STS_ERROR',
1303 x_msg_count => x_msg_count,
1304 x_msg_data => x_msg_data,
1305 p_api_type => g_api_type);
1306
1307 when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
1308 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1309 p_api_name => l_api_name,
1310 p_pkg_name => g_pkg_name,
1311 p_exc_name => 'OKC_API.G_RET_STS_UNEXP_ERROR',
1312 x_msg_count => x_msg_count,
1313 x_msg_data => x_msg_data,
1314 p_api_type => g_api_type);
1315
1316 when OTHERS then
1317 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1318 p_api_name => l_api_name,
1319 p_pkg_name => g_pkg_name,
1320 p_exc_name => 'OTHERS',
1321 x_msg_count => x_msg_count,
1322 x_msg_data => x_msg_data,
1323 p_api_type => g_api_type);
1324
1325 END update_contract_top_line;
1326
1327
1328 PROCEDURE delete_contract_line(
1329 p_api_version IN NUMBER,
1330 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1331 x_return_status OUT NOCOPY VARCHAR2,
1332 x_msg_count OUT NOCOPY NUMBER,
1333 x_msg_data OUT NOCOPY VARCHAR2,
1334 p_chr_id IN number,
1335 p_cle_id IN number) IS
1336
1337 lp_clev_rec OKL_SERVICE_INTEGRATION_PUB.clev_rec_type;
1338 lp_klev_rec OKL_SERVICE_INTEGRATION_PUB.klev_rec_type;
1339
1340 l_api_name CONSTANT VARCHAR2(30) := 'delete_contract_line';
1341 l_api_version CONSTANT NUMBER := 1.0;
1342 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1343
1344 l_chr_id number := null;
1345
1346 BEGIN
1347
1348 l_chr_id := p_chr_id;
1349 If okl_context.get_okc_org_id is null then
1350 okl_context.set_okc_org_context(p_chr_id => l_chr_id );
1351 End If;
1352
1353 -- call START_ACTIVITY to create savepoint, check compatibility
1354 -- and initialize message list
1355 l_return_status := OKC_API.START_ACTIVITY(
1356 p_api_name => l_api_name,
1357 p_pkg_name => g_pkg_name,
1358 p_init_msg_list => p_init_msg_list,
1359 l_api_version => l_api_version,
1360 p_api_version => p_api_version,
1361 p_api_type => g_api_type,
1362 x_return_status => x_return_status);
1363
1364 -- check if activity started successfully
1365 If (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
1366 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1367 Elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
1368 raise OKC_API.G_EXCEPTION_ERROR;
1369 End If;
1370
1371 lp_clev_rec.dnz_chr_id := l_chr_id;
1372 lp_clev_rec.id := p_cle_id;
1373 lp_klev_rec.id := p_cle_id;
1374
1375 OKL_SERVICE_INTEGRATION_PUB.delete_service_line(
1376 p_api_version => p_api_version,
1377 p_init_msg_list => p_init_msg_list,
1378 x_return_status => x_return_status,
1379 x_msg_count => x_msg_count,
1380 x_msg_data => x_msg_data,
1381 p_clev_rec => lp_clev_rec,
1382 p_klev_rec => lp_klev_rec
1383 );
1384
1385 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1386 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1387 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1388 raise OKC_API.G_EXCEPTION_ERROR;
1389 END IF;
1390
1391 OKC_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
1392
1393 EXCEPTION
1394 when OKC_API.G_EXCEPTION_ERROR then
1395 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1396 p_api_name => l_api_name,
1397 p_pkg_name => g_pkg_name,
1398 p_exc_name => 'OKC_API.G_RET_STS_ERROR',
1399 x_msg_count => x_msg_count,
1400 x_msg_data => x_msg_data,
1401 p_api_type => g_api_type);
1402
1403 when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
1404 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1405 p_api_name => l_api_name,
1406 p_pkg_name => g_pkg_name,
1407 p_exc_name => 'OKC_API.G_RET_STS_UNEXP_ERROR',
1408 x_msg_count => x_msg_count,
1409 x_msg_data => x_msg_data,
1410 p_api_type => g_api_type);
1411
1412 when OTHERS then
1413 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1414 p_api_name => l_api_name,
1415 p_pkg_name => g_pkg_name,
1416 p_exc_name => 'OTHERS',
1417 x_msg_count => x_msg_count,
1418 x_msg_data => x_msg_data,
1419 p_api_type => g_api_type);
1420 END delete_contract_line;
1421
1422
1423 PROCEDURE delete_contract_top_line(
1424 p_api_version IN NUMBER,
1425 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1426 x_return_status OUT NOCOPY VARCHAR2,
1427 x_msg_count OUT NOCOPY NUMBER,
1428 x_msg_data OUT NOCOPY VARCHAR2,
1429 p_clev_rec IN clev_rec_type,
1430 p_klev_rec IN klev_rec_type,
1431 p_cimv_rec IN cimv_rec_type,
1432 p_cplv_rec IN cplv_rec_type) IS
1433
1434 l_clev_rec clev_rec_type := p_clev_rec;
1435 l_klev_rec klev_rec_type := p_klev_rec;
1436 l_cimv_rec cimv_rec_type := p_cimv_rec;
1437 l_cplv_rec cplv_rec_type := p_cplv_rec;
1438
1439 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_contract_top_line';
1440 l_api_version CONSTANT NUMBER := 1.0;
1441 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1442
1443 --Bug# 4558486
1444 l_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
1445
1446 BEGIN
1447
1448 -- call START_ACTIVITY to create savepoint, check compatibility
1449 -- and initialize message list
1450 l_return_status := OKC_API.START_ACTIVITY(
1451 p_api_name => l_api_name,
1452 p_pkg_name => g_pkg_name,
1453 p_init_msg_list => p_init_msg_list,
1454 l_api_version => l_api_version,
1455 p_api_version => p_api_version,
1456 p_api_type => g_api_type,
1457 x_return_status => x_return_status);
1458
1459 -- check if activity started successfully
1460 If (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
1461 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1462 Elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
1463 raise OKC_API.G_EXCEPTION_ERROR;
1464 End If;
1465
1466 okl_contract_pvt.delete_contract_line(
1467 p_api_version => p_api_version,
1468 p_init_msg_list => p_init_msg_list,
1469 x_return_status => x_return_status,
1470 x_msg_count => x_msg_count,
1471 x_msg_data => x_msg_data,
1472 p_clev_rec => l_clev_rec,
1473 p_klev_rec => l_klev_rec
1474 );
1475
1476 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1477 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1478 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1479 raise OKC_API.G_EXCEPTION_ERROR;
1480 END IF;
1481
1482 --
1483 -- call procedure in complex API
1484 --
1485 okl_okc_migration_pvt.delete_contract_item(
1486 p_api_version => p_api_version,
1487 p_init_msg_list => p_init_msg_list,
1488 x_return_status => x_return_status,
1489 x_msg_count => x_msg_count,
1490 x_msg_data => x_msg_data,
1491 p_cimv_rec => l_cimv_rec);
1492
1493 -- check return status
1494 If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
1495 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1496 Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
1497 raise OKC_API.G_EXCEPTION_ERROR;
1498 End If;
1499
1500 --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
1501 -- to delete records in tables
1502 -- okc_k_party_roles_b and okl_k_party_roles
1503 /*
1504 okl_okc_migration_pvt.delete_k_party_role(
1505 p_api_version => p_api_version,
1506 p_init_msg_list => p_init_msg_list,
1507 x_return_status => x_return_status,
1508 x_msg_count => x_msg_count,
1509 x_msg_data => x_msg_data,
1510 p_cplv_rec => l_cplv_rec);
1511 */
1512
1513 l_kplv_rec.id := p_cplv_rec.id;
1514 okl_k_party_roles_pvt.delete_k_party_role(
1515 p_api_version => p_api_version,
1516 p_init_msg_list => p_init_msg_list,
1517 x_return_status => x_return_status,
1518 x_msg_count => x_msg_count,
1519 x_msg_data => x_msg_data,
1520 p_cplv_rec => l_cplv_rec,
1521 p_kplv_rec => l_kplv_rec);
1522
1523 -- check return status
1524 If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
1525 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1526 Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
1527 raise OKC_API.G_EXCEPTION_ERROR;
1528 End If;
1529
1530 OKC_API.END_ACTIVITY(x_msg_count => x_msg_count,
1531 x_msg_data => x_msg_data);
1532 EXCEPTION
1533 when OKC_API.G_EXCEPTION_ERROR then
1534 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1535 p_api_name => l_api_name,
1536 p_pkg_name => g_pkg_name,
1537 p_exc_name => 'OKC_API.G_RET_STS_ERROR',
1538 x_msg_count => x_msg_count,
1539 x_msg_data => x_msg_data,
1540 p_api_type => g_api_type);
1541
1542 when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
1543 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1544 p_api_name => l_api_name,
1545 p_pkg_name => g_pkg_name,
1546 p_exc_name => 'OKC_API.G_RET_STS_UNEXP_ERROR',
1547 x_msg_count => x_msg_count,
1548 x_msg_data => x_msg_data,
1549 p_api_type => g_api_type);
1550
1551 when OTHERS then
1552 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1553 p_api_name => l_api_name,
1554 p_pkg_name => g_pkg_name,
1555 p_exc_name => 'OTHERS',
1556 x_msg_count => x_msg_count,
1557 x_msg_data => x_msg_data,
1558 p_api_type => g_api_type);
1559 END delete_contract_top_line;
1560
1561 -- Start of comments
1562 --
1563 -- Procedure Name : delete_contract_top_line
1564 -- Description : deletes contract line for shadowed contract
1565 -- Business Rules : line can be deleted only if there is no sublines attached
1566 -- Parameters :
1567 -- Version : 1.0
1568 -- End of comments
1569 PROCEDURE delete_contract_top_line(
1570 p_api_version IN NUMBER,
1571 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1572 x_return_status OUT NOCOPY VARCHAR2,
1573 x_msg_count OUT NOCOPY NUMBER,
1574 x_msg_data OUT NOCOPY VARCHAR2,
1575 p_clev_tbl IN clev_tbl_type,
1576 p_klev_tbl IN klev_tbl_type,
1577 p_cimv_tbl IN cimv_tbl_type,
1578 p_cplv_tbl IN cplv_tbl_type
1579 ) IS
1580
1581 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_contract_top_line';
1582 l_api_version CONSTANT NUMBER := 1.0;
1583 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1584 l_overall_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1585 i NUMBER;
1586 l_klev_tbl klev_tbl_type := p_klev_tbl;
1587 l_cimv_tbl cimv_tbl_type := p_cimv_tbl;
1588 l_cplv_tbl cplv_tbl_type := p_cplv_tbl;
1589 BEGIN
1590 /*
1591 -- call START_ACTIVITY to create savepoint, check compatibility
1592 -- and initialize message list
1593 l_return_status := OKC_API.START_ACTIVITY(
1594 p_api_name => l_api_name,
1595 p_pkg_name => g_pkg_name,
1596 p_init_msg_list => p_init_msg_list,
1597 l_api_version => l_api_version,
1598 p_api_version => p_api_version,
1599 p_api_type => g_api_type,
1600 x_return_status => x_return_status);
1601
1602 -- check if activity started successfully
1603 If (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
1604 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1605 Elsif (l_return_status = OKC_API.G_RET_STS_ERROR) then
1606 raise OKC_API.G_EXCEPTION_ERROR;
1607 End If;
1608 */
1609 If (p_clev_tbl.COUNT > 0) Then
1610 i := p_clev_tbl.FIRST;
1611 LOOP
1612 -- call procedure in complex API for a record
1613 delete_contract_top_line(
1614 p_api_version => p_api_version,
1615 p_init_msg_list => p_init_msg_list,
1616 x_return_status => x_return_status,
1617 x_msg_count => x_msg_count,
1618 x_msg_data => x_msg_data,
1619 p_clev_rec => p_clev_tbl(i),
1620 p_klev_rec => l_klev_tbl(i),
1621 p_cimv_rec => l_cimv_tbl(i),
1622 p_cplv_rec => l_cplv_tbl(i)
1623 );
1624
1625 If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
1626 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1627 Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
1628 raise OKC_API.G_EXCEPTION_ERROR;
1629 End If;
1630
1631 EXIT WHEN (i = p_clev_tbl.LAST);
1632 i := p_clev_tbl.NEXT(i);
1633 END LOOP;
1634
1635 End If;
1636
1637 If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
1638 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1639 Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
1640 raise OKC_API.G_EXCEPTION_ERROR;
1641 End If;
1642 /*
1643 OKC_API.END_ACTIVITY( x_msg_count => x_msg_count,
1644 x_msg_data => x_msg_data);
1645 */
1646 EXCEPTION
1647 when OKC_API.G_EXCEPTION_ERROR then
1648 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1649 p_api_name => l_api_name,
1650 p_pkg_name => g_pkg_name,
1651 p_exc_name => 'OKC_API.G_RET_STS_ERROR',
1652 x_msg_count => x_msg_count,
1653 x_msg_data => x_msg_data,
1654 p_api_type => g_api_type);
1655
1656 when OKC_API.G_EXCEPTION_UNEXPECTED_ERROR then
1657 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1658 p_api_name => l_api_name,
1659 p_pkg_name => g_pkg_name,
1660 p_exc_name => 'OKC_API.G_RET_STS_UNEXP_ERROR',
1661 x_msg_count => x_msg_count,
1662 x_msg_data => x_msg_data,
1663 p_api_type => g_api_type);
1664
1665 when OTHERS then
1666 x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1667 p_api_name => l_api_name,
1668 p_pkg_name => g_pkg_name,
1669 p_exc_name => 'OTHERS',
1670 x_msg_count => x_msg_count,
1671 x_msg_data => x_msg_data,
1672 p_api_type => g_api_type);
1673
1674 END delete_contract_top_line;
1675 -- Start of comments
1676 --
1677 -- Procedure Name : validate_fee_expense_rule
1678 -- Description : validates expense rules at FEE line
1679 -- Business Rules :
1680 -- Parameters :
1681 -- Version : 1.0
1682 -- End of comments
1683
1684 PROCEDURE validate_fee_expense_rule(
1685 p_api_version IN NUMBER,
1686 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1687 x_return_status OUT NOCOPY VARCHAR2,
1688 x_msg_count OUT NOCOPY NUMBER,
1689 x_msg_data OUT NOCOPY VARCHAR2,
1690 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
1691 p_line_id IN OKC_K_LINES_V.ID%TYPE,
1692 p_no_of_period IN NUMBER,
1693 p_frequency IN VARCHAR2,
1694 p_amount_per_period IN NUMBER
1695 ) IS
1696
1697 l_api_name VARCHAR2(35) := 'validate_fee_expense_rule';
1698 l_proc_name VARCHAR2(35) := 'VALIDATE_FEE_EXPENSE_RULE';
1699 l_api_version NUMBER := 1.0;
1700
1701 l_id1 VARCHAR2(30);
1702 scscode OKC_K_HEADERS_B.SCS_CODE%TYPE ;
1703
1704 CURSOR contract_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
1705 p_line_id OKC_K_LINES_V.ID%TYPE) IS
1706 SELECT line.start_date,
1707 line.end_date,
1708 line.amount,
1709 line.capital_amount,
1710 style.lty_code,
1711 line.initial_direct_cost,
1712 line.fee_type
1713 FROM okc_k_headers_b head,
1714 okl_k_lines_full_v line,
1715 okc_line_styles_b style
1716 WHERE head.id = line.dnz_chr_id
1717 AND line.lse_id = style.id
1718 AND head.id = p_chr_id
1719 AND line.id = p_line_id;
1720 CURSOR scscode_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE ) IS
1721 SELECT head.scs_code
1722 FROM okc_k_headers_b head
1723 WHERE head.id = p_chr_id ;
1724
1725 CURSOR strm_cap_csr (p_chr_id OKC_K_HEADERS_B.ID%TYPE,
1726 p_line_id OKC_K_LINES_B.ID%TYPE) IS
1727 SELECT stream.capitalize_yn
1728 FROM okl_k_lines_full_v line,
1729 okc_k_items_v item,
1730 okl_strmtyp_source_v stream
1731 WHERE line.id = p_line_id
1732 AND line.dnz_chr_id = p_chr_id
1733 AND line.id = item.cle_id
1734 AND item.object1_id1 = stream.id1;
1735
1736 CURSOR freq_csr (p_frequency VARCHAR2) IS
1737 SELECT id1
1738 FROM okl_time_units_v
1739 WHERE name = p_frequency
1740 AND status = 'A'
1741 AND TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date_active), TRUNC(SYSDATE)) AND
1742 NVL(TRUNC(end_date_active), TRUNC(SYSDATE));
1743
1744 l_start_date OKC_K_lineS_B.START_DATE%TYPE;
1745 l_end_date OKC_K_lineS_B.END_DATE%TYPE;
1746 l_amount NUMBER;
1747 l_capital_amount NUMBER;
1748 l_line_type OKC_LINE_STYLES_B.LTY_CODE%TYPE;
1749 l_fee_type OKL_K_LINES.FEE_TYPE%TYPE := null;
1750 l_cap_yn VARCHAR2(3);
1751 l_mult_factor NUMBER;
1752 l_line_amount NUMBER;
1753 l_initial_direct_cost okl_k_lines.initial_direct_cost%type := null;
1754 l_ak_prompt AK_ATTRIBUTES_VL.attribute_label_long%type;
1755
1756 l_clev_rec clev_rec_type ;
1757 l_klev_rec klev_rec_type ;
1758 x_clev_rec clev_rec_type ;
1759 x_klev_rec klev_rec_type ;
1760
1761 BEGIN
1762
1763 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1764
1765 -- call START_ACTIVITY to create savepoint, check compatibility
1766 -- and initialize message list
1767 x_return_status := OKL_API.START_ACTIVITY(
1768 p_api_name => l_api_name,
1769 p_pkg_name => G_PKG_NAME,
1770 p_init_msg_list => p_init_msg_list,
1771 l_api_version => l_api_version,
1772 p_api_version => p_api_version,
1773 p_api_type => G_API_TYPE,
1774 x_return_status => x_return_status);
1775
1776 -- check if activity started successfully
1777 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
1778 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1779 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
1780 raise OKL_API.G_EXCEPTION_ERROR;
1781 END IF;
1782
1783 If(p_chr_id is null or p_chr_id = OKL_API.G_MISS_NUM) Then
1784 x_return_status := OKL_API.g_ret_sts_error;
1785 OKL_API.SET_MESSAGE( p_app_name => g_app_name
1786 , p_msg_name => 'OKL_INVALID_VALUE'
1787 , p_token1 => 'COL_NAME'
1788 , p_token1_value => 'CHR_ID'
1789 );
1790 raise OKL_API.G_EXCEPTION_ERROR;
1791 End If;
1792
1793
1794 If(p_line_id is null or p_line_id = OKL_API.G_MISS_NUM) Then
1795 x_return_status := OKL_API.g_ret_sts_error;
1796 OKL_API.SET_MESSAGE( p_app_name => g_app_name
1797 , p_msg_name => 'OKL_INVALID_VALUE'
1798 , p_token1 => 'COL_NAME'
1799 , p_token1_value => 'CLE_ID'
1800 );
1801 raise OKL_API.G_EXCEPTION_ERROR;
1802 End If;
1803
1804 OPEN contract_csr (p_chr_id,
1805 p_line_id);
1806 FETCH contract_csr INTO l_start_date,
1807 l_end_date,
1808 l_amount,
1809 l_capital_amount,
1810 l_line_type,
1811 l_initial_direct_cost,
1812 l_fee_type;
1813 CLOSE contract_csr;
1814 OPEN scscode_csr (p_chr_id);
1815 FETCH scscode_csr INTO scscode;
1816 CLOSE scscode_csr ;
1817 if(scscode='INVESTOR' and p_amount_per_period < 0) then
1818
1819 x_return_status := OKL_API.g_ret_sts_error;
1820 OKL_API.SET_MESSAGE( p_app_name => g_app_name
1821 , p_msg_name => 'OKL_PRDAMNT_CHCK'
1822 );
1823 raise OKL_API.G_EXCEPTION_ERROR;
1824 End If;
1825
1826 IF (l_line_type = 'FEE') THEN
1827
1828 If(p_no_of_period is null or p_no_of_period = OKL_API.G_MISS_NUM) Then
1829 l_ak_prompt := GET_AK_PROMPT('OKL_LA_SERVICE_LINE', 'OKL_NO_OF_PERIOD');
1830 x_return_status := OKL_API.g_ret_sts_error;
1831 OKL_API.SET_MESSAGE( p_app_name => g_app_name
1832 , p_msg_name => 'OKL_REQUIRED_VALUE'
1833 , p_token1 => 'COL_NAME'
1834 , p_token1_value => l_ak_prompt
1835 );
1836 raise OKL_API.G_EXCEPTION_ERROR;
1837 End If;
1838
1839 If(p_amount_per_period is null or p_amount_per_period = OKL_API.G_MISS_NUM) Then
1840 l_ak_prompt := GET_AK_PROMPT('OKL_LA_SERVICE_LINE', 'OKL_AMT_PER_PERIOD');
1841 x_return_status := OKL_API.g_ret_sts_error;
1842 OKL_API.SET_MESSAGE( p_app_name => g_app_name
1843 , p_msg_name => 'OKL_REQUIRED_VALUE'
1844 , p_token1 => 'COL_NAME'
1845 , p_token1_value => l_ak_prompt
1846 );
1847 raise OKL_API.G_EXCEPTION_ERROR;
1848 End If;
1849
1850 If(p_frequency is null or p_frequency = OKL_API.G_MISS_CHAR) Then
1851 l_ak_prompt := GET_AK_PROMPT('OKL_LA_SERVICE_LINE', 'OKL_FREEQUENCY');
1852 x_return_status := OKL_API.g_ret_sts_error;
1853 OKL_API.SET_MESSAGE( p_app_name => g_app_name
1854 , p_msg_name => 'OKL_REQUIRED_VALUE'
1855 , p_token1 => 'COL_NAME'
1856 , p_token1_value => l_ak_prompt
1857 );
1858 raise OKL_API.G_EXCEPTION_ERROR;
1859 End If;
1860
1861 End If;
1862
1863 -- Fee Expense rules are only valid for FEE and SERVICE line type
1864 IF (l_line_type IN ('FEE', 'SOLD_SERVICE')) THEN
1865
1866 --Bug# 4959361
1867 OKL_LLA_UTIL_PVT.check_line_update_allowed
1868 (p_api_version => p_api_version,
1869 p_init_msg_list => p_init_msg_list,
1870 x_return_status => x_return_status,
1871 x_msg_count => x_msg_count,
1872 x_msg_data => x_msg_data,
1873 p_cle_id => p_line_id);
1874
1875 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1876 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1877 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1878 RAISE OKL_API.G_EXCEPTION_ERROR;
1879 END IF;
1880 --Bug# 4959361
1881
1882 l_id1 := '?';
1883 IF (p_frequency IS NOT NULL) THEN
1884
1885 OPEN freq_csr (p_frequency);
1886 FETCH freq_csr INTO l_id1;
1887 CLOSE freq_csr;
1888
1889 IF (l_id1 = '?') THEN
1890 okl_api.set_message(
1891 G_APP_NAME,
1892 G_INVALID_VALUE,
1893 'COL_NAME',
1894 'FREQUENCY'
1895 );
1896
1897 x_return_status := OKL_API.G_RET_STS_ERROR;
1898 END IF;
1899
1900 IF (p_no_of_period IS NULL) THEN
1901 okl_api.set_message(
1902 G_APP_NAME,
1903 G_INCOMPLETE_RULE,
1904 'COL_NAME',
1905 'NO_OF_PERIOD'
1906 );
1907
1908 x_return_status := OKL_API.G_RET_STS_ERROR;
1909 ELSE
1910 IF (p_amount_per_period IS NULL) THEN
1911 okl_api.set_message(
1912 G_APP_NAME,
1913 G_INCOMPLETE_RULE,
1914 'COL_NAME',
1915 'AMOUNT_PER_PERIOD'
1916 );
1917
1918 x_return_status := OKL_API.G_RET_STS_ERROR;
1919 END IF;
1920 END IF;
1921 ELSE
1922 okl_api.set_message(
1923 G_APP_NAME,
1924 G_INCOMPLETE_RULE,
1925 'COL_NAME',
1926 'FREQUENCY'
1927 );
1928
1929 x_return_status := OKL_API.G_RET_STS_ERROR;
1930 END IF;
1931
1932 ELSIF (p_no_of_period IS NOT NULL
1933 OR
1934 p_frequency IS NOT NULL
1935 OR
1936 p_amount_per_period IS NOT NULL
1937 ) THEN
1938 okl_api.set_message(
1939 G_APP_NAME,
1940 G_INVALID_LINE_RULE,
1941 'VALUE',
1942 'FEE_NO_OF_PERIOD, FREQUENCY OR AMOUNT_PER_PERIOD',
1943 'LINE_TYPE',
1944 l_line_type,
1945 'ACT_LINE_TYPE',
1946 'FEE or SERVICE'
1947 );
1948
1949 x_return_status := OKL_API.G_RET_STS_ERROR;
1950
1951 END IF;
1952
1953 -- cross validation
1954
1955 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
1956
1957 OPEN strm_cap_csr (p_chr_id,
1958 p_line_id);
1959 FETCH strm_cap_csr INTO l_cap_yn;
1960 CLOSE strm_cap_csr;
1961
1962 IF (l_cap_yn = 'Y') THEN
1963 l_line_amount := l_capital_amount;
1964 ELSE
1965 l_line_amount := l_amount;
1966 END IF;
1967
1968 IF (l_id1 = 'M') THEN
1969 l_mult_factor := 1;
1970 ELSIF (l_id1 = 'Q') THEN
1971 l_mult_factor := 3;
1972 ELSIF (l_id1 = 'S') THEN
1973 l_mult_factor := 6;
1974 ELSIF (l_id1 = 'A') THEN
1975 l_mult_factor := 12;
1976 ELSE
1977 okl_api.set_message(
1978 G_APP_NAME,
1979 G_UOM_SETUP_ERROR,
1980 'COL_VALUE',
1981 l_id1
1982 );
1983 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1984 END IF;
1985
1986 IF (l_end_date < (ADD_MONTHS(l_start_date, p_no_of_period * l_mult_factor)-1)) THEN
1987 okl_api.set_message(
1988 G_APP_NAME,
1989 G_INVALID_PERIOD,
1990 'START_DATE',
1991 l_start_date,
1992 'END_DATE',
1993 l_end_date
1994 );
1995 RAISE OKL_API.G_EXCEPTION_ERROR;
1996 END IF;
1997
1998 If(l_fee_type is not null and (l_fee_type = G_FT_ABSORBED or l_fee_type = G_FT_FINANCED) and p_no_of_period <> 1) Then
1999 okl_api.set_message(
2000 G_APP_NAME,
2001 G_INVALID_NO_OF_PAYMENTS
2002 );
2003 RAISE OKL_API.G_EXCEPTION_ERROR;
2004 End If;
2005
2006 -- this validation is commented for summing recurring exp amt to service/fee line
2007 /*
2008 IF (l_line_amount <> (p_amount_per_period * p_no_of_period)) THEN
2009 okl_api.set_message(
2010 G_APP_NAME,
2011 G_INVALID_EXP_AMOUNT
2012 );
2013 RAISE OKL_API.G_EXCEPTION_ERROR;
2014 END IF;
2015 */
2016 -- update line amount with recurring exp amount
2017
2018 IF (l_line_type IN ('FEE', 'SOLD_SERVICE')) THEN
2019
2020 l_clev_rec.id := p_line_id;
2021 l_klev_rec.id := p_line_id;
2022 l_clev_rec.dnz_chr_id := p_chr_id;
2023 l_clev_rec.chr_id := p_chr_id;
2024
2025 l_line_amount := p_amount_per_period * p_no_of_period;
2026 l_klev_rec.amount := l_line_amount;
2027 IF (l_cap_yn = 'Y') THEN
2028 l_klev_rec.capital_amount := l_line_amount;
2029 END IF;
2030
2031 IF (l_line_type = 'FEE' and l_initial_direct_cost is not null and l_initial_direct_cost > l_klev_rec.amount) THEN
2032 x_return_status := OKL_API.g_ret_sts_error;
2033 OKL_API.SET_MESSAGE( p_app_name => g_app_name
2034 , p_msg_name => 'OKL_LLA_IDC_FEE'
2035 );
2036 raise OKL_API.G_EXCEPTION_ERROR;
2037 END IF;
2038
2039 okl_contract_pvt.update_contract_line(
2040 p_api_version => p_api_version,
2041 p_init_msg_list => p_init_msg_list,
2042 x_return_status => x_return_status,
2043 x_msg_count => x_msg_count,
2044 x_msg_data => x_msg_data,
2045 p_clev_rec => l_clev_rec,
2046 p_klev_rec => l_klev_rec,
2047 x_clev_rec => x_clev_rec,
2048 x_klev_rec => x_klev_rec
2049 );
2050
2051 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2052 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2053 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2054 raise OKL_API.G_EXCEPTION_ERROR;
2055 END IF;
2056
2057 END IF;
2058
2059 END IF;
2060
2061 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2062
2063
2064 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
2065 x_msg_data => x_msg_data);
2066
2067 EXCEPTION
2068
2069 when OKL_API.G_EXCEPTION_ERROR then
2070 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2071 p_api_name => l_api_name,
2072 p_pkg_name => G_PKG_NAME,
2073 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
2074 x_msg_count => x_msg_count,
2075 x_msg_data => x_msg_data,
2076 p_api_type => G_API_TYPE);
2077
2078 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
2079 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2080 p_api_name => l_api_name,
2081 p_pkg_name => G_PKG_NAME,
2082 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2083 x_msg_count => x_msg_count,
2084 x_msg_data => x_msg_data,
2085 p_api_type => G_API_TYPE);
2086
2087 when OTHERS then
2088 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2089 p_api_name => l_api_name,
2090 p_pkg_name => G_PKG_NAME,
2091 p_exc_name => 'OTHERS',
2092 x_msg_count => x_msg_count,
2093 x_msg_data => x_msg_data,
2094 p_api_type => G_API_TYPE);
2095
2096 END validate_fee_expense_rule;
2097
2098
2099 -- Start of comments
2100 --
2101 -- Procedure Name : validate_passthru_rule
2102 -- Description : validates Passthru rules at SERVICE and FEE line
2103 -- Business Rules :
2104 -- Parameters :
2105 -- Version : 1.0
2106 -- End of comments
2107 PROCEDURE validate_passthru_rule(
2108 p_api_version IN NUMBER,
2109 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2110 x_return_status OUT NOCOPY VARCHAR2,
2111 x_msg_count OUT NOCOPY NUMBER,
2112 x_msg_data OUT NOCOPY VARCHAR2,
2113 p_line_id IN OKC_K_LINES_V.ID%TYPE,
2114 p_vendor_id IN NUMBER,
2115 p_payment_term IN VARCHAR2,
2116 p_payment_term_id IN NUMBER,
2117 p_pay_to_site IN VARCHAR2,
2118 p_pay_to_site_id IN NUMBER,
2119 p_payment_method_code IN VARCHAR2,
2120 x_payment_term_id1 OUT NOCOPY VARCHAR2,
2121 x_pay_site_id1 OUT NOCOPY VARCHAR2,
2122 x_payment_method_id1 OUT NOCOPY VARCHAR2
2123 ) IS
2124
2125 G_PKG_NAME CONSTANT VARCHAR2(200) := 'OKL_CONTRACT_TOP_LINE_PVT';
2126 G_APP_NAME CONSTANT VARCHAR2(3) := OKL_API.G_APP_NAME;
2127 G_API_TYPE CONSTANT VARCHAR2(4) := '_PVT';
2128
2129 G_INVALID_VALUE CONSTANT VARCHAR2(200) := 'OKL_INVALID_VALUE';
2130 G_INVALID_LINE_RULE CONSTANT VARCHAR2(200) := 'OKL_LLA_INVALID_LINE_RULE';
2131
2132
2133 l_api_name VARCHAR2(35) := 'validate_passthru_rule';
2134 l_proc_name VARCHAR2(35) := 'VALIDATE_PASSTHRU_RULE';
2135 l_api_version NUMBER := 1.0;
2136
2137 CURSOR line_style_csr (p_line_id OKC_K_LINES_V.ID%TYPE) IS
2138 SELECT style.lty_code
2139 FROM okc_k_lines_b line,
2140 okc_line_styles_b style
2141 WHERE line.lse_id = style.id
2142 AND line.id = p_line_id;
2143
2144 CURSOR pay_term_csr (p_id NUMBER,
2145 p_name VARCHAR2) IS
2146 SELECT id1
2147 FROM okx_payables_terms_v
2148 WHERE (name = p_name
2149 AND
2150 p_name IS NOT NULL)
2151 OR (id1 = p_id
2152 AND
2153 p_id IS NOT NULL)
2154 AND status = 'A'
2155 AND TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date_active), TRUNC(SYSDATE)) AND
2156 NVL(TRUNC(end_date_active), TRUNC(SYSDATE));
2157
2158 CURSOR pay_site_csr (p_id NUMBER,
2159 p_name VARCHAR2,
2160 p_vendor_id NUMBER) IS
2161
2162 SELECT id1
2163 FROM okx_vendor_sites_v
2164 WHERE (name = p_name
2165 AND
2166 p_name IS NOT NULL)
2167 OR (id1 = p_id
2168 AND
2169 p_id IS NOT NULL)
2170 AND status = 'A'
2171 AND vendor_id = p_vendor_id
2172 AND TRUNC(SYSDATE) >= NVL(TRUNC(start_date_active), TRUNC(SYSDATE));
2173
2174 CURSOR pay_method_csr (p_code VARCHAR2) IS
2175 SELECT lookup_code
2176 FROM fnd_lookup_values
2177 WHERE lookup_type = 'PAYMENT METHOD'
2178 AND nvl(enabled_flag,'N') = 'Y'
2179 AND lookup_code = p_code
2180 AND trunc(nvl(start_date_active,sysdate)) <= trunc(sysdate)
2181 AND trunc(nvl(end_date_active,sysdate+1)) > trunc(sysdate);
2182
2183 l_id1 VARCHAR2(30);
2184 l_line_type OKC_LINE_STYLES_B.LTY_CODE%TYPE;
2185
2186 BEGIN
2187
2188 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2189
2190 -- call START_ACTIVITY to create savepoint, check compatibility
2191 -- and initialize message list
2192 x_return_status := OKL_API.START_ACTIVITY(
2193 p_api_name => l_api_name,
2194 p_pkg_name => G_PKG_NAME,
2195 p_init_msg_list => p_init_msg_list,
2196 l_api_version => l_api_version,
2197 p_api_version => p_api_version,
2198 p_api_type => G_API_TYPE,
2199 x_return_status => x_return_status);
2200
2201 -- check if activity started successfully
2202 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
2203 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2204 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
2205 raise OKL_API.G_EXCEPTION_ERROR;
2206 END IF;
2207
2208
2209 OPEN line_style_csr (p_line_id);
2210 FETCH line_style_csr INTO l_line_type;
2211 CLOSE line_style_csr;
2212
2213
2214 -- Passthru rules are only for SERVICE and FEE line
2215 IF (l_line_type IN ('SOLD_SERVICE', 'FEE')) THEN
2216
2217 l_id1 := '?';
2218 IF (p_payment_term IS NOT NULL) THEN
2219
2220 OPEN pay_term_csr (p_payment_term_id,
2221 p_payment_term);
2222 FETCH pay_term_csr INTO l_id1;
2223 CLOSE pay_term_csr;
2224
2225 IF (l_id1 = '?') THEN
2226 okl_api.set_message(
2227 G_APP_NAME,
2228 G_INVALID_VALUE,
2229 'COL_NAME',
2230 'PAYMENT_TERM'
2231 );
2232
2233 x_return_status := OKL_API.G_RET_STS_ERROR;
2234 ELSE
2235 x_payment_term_id1 := l_id1;
2236 END IF;
2237
2238 END IF;
2239
2240 l_id1 := '?';
2241 IF (p_pay_to_site IS NOT NULL
2242 OR
2243 p_pay_to_site_id IS NOT NULL) THEN
2244
2245 OPEN pay_site_csr (p_pay_to_site_id,
2246 p_pay_to_site,
2247 p_vendor_id);
2248 FETCH pay_site_csr INTO l_id1;
2249 CLOSE pay_site_csr;
2250
2251 IF (l_id1 = '?') THEN
2252 okl_api.set_message(
2253 G_APP_NAME,
2254 G_INVALID_VALUE,
2255 'COL_NAME',
2256 'PAY_TO_SITE'
2257 );
2258
2259 x_return_status := OKL_API.G_RET_STS_ERROR;
2260 ELSE
2261 x_pay_site_id1 := l_id1;
2262 END IF;
2263
2264 END IF;
2265
2266 l_id1 := '?';
2267 IF (p_payment_method_code IS NOT NULL) THEN
2268
2269 OPEN pay_method_csr (p_payment_method_code);
2270 FETCH pay_method_csr INTO l_id1;
2271 CLOSE pay_method_csr;
2272
2273 IF (l_id1 = '?') THEN
2274 okl_api.set_message(
2275 G_APP_NAME,
2276 G_INVALID_VALUE,
2277 'COL_NAME',
2278 'PAYMENT_METHOD_CODE'
2279 );
2280
2281 x_return_status := OKL_API.G_RET_STS_ERROR;
2282 ELSE
2283 x_payment_method_id1 := l_id1;
2284 END IF;
2285 END IF;
2286
2287 ELSIF (p_payment_term IS NOT NULL
2288 OR
2289 p_payment_term_id IS NOT NULL
2290 OR
2291 p_pay_to_site IS NOT NULL
2292 OR
2293 p_pay_to_site_id IS NOT NULL
2294 OR
2295 p_payment_method_code IS NOT NULL
2296 ) THEN
2297 okl_api.set_message(
2298 G_APP_NAME,
2299 G_INVALID_LINE_RULE,
2300 'VALUE',
2301 'PAYMENT_TERM, PAY_TO_SITE, PAYMENT_METHOD',
2302 'LINE_TYPE',
2303 l_line_type,
2304 'ACT_LINE_TYPE',
2305 'SERVICE or FEE'
2306 );
2307
2308 x_return_status := OKL_API.G_RET_STS_ERROR;
2309
2310 END IF;
2311
2312 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
2313 x_msg_data => x_msg_data);
2314
2315
2316 RETURN;
2317
2318 EXCEPTION
2319 when OKL_API.G_EXCEPTION_ERROR then
2320 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2321 p_api_name => l_api_name,
2322 p_pkg_name => G_PKG_NAME,
2323 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
2324 x_msg_count => x_msg_count,
2325 x_msg_data => x_msg_data,
2326 p_api_type => G_API_TYPE);
2327
2328 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
2329 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2330 p_api_name => l_api_name,
2331 p_pkg_name => G_PKG_NAME,
2332 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2333 x_msg_count => x_msg_count,
2334 x_msg_data => x_msg_data,
2335 p_api_type => G_API_TYPE);
2336
2337 when OTHERS then
2338 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2339 p_api_name => l_api_name,
2340 p_pkg_name => G_PKG_NAME,
2341 p_exc_name => 'OTHERS',
2342 x_msg_count => x_msg_count,
2343 x_msg_data => x_msg_data,
2344 p_api_type => G_API_TYPE);
2345
2346 END validate_passthru_rule;
2347 END OKL_CONTRACT_TOP_LINE_PVT;