[Home] [Help]
PACKAGE BODY: APPS.OKL_AM_REPURCHASE_ASSET_PVT
Source
1 PACKAGE BODY okl_am_repurchase_asset_pvt AS
2 /* $Header: OKLRRQUB.pls 120.6 2007/12/18 09:32:20 akrangan noship $ */
3
4 ---------------------------------------------------------------------------
5 -- GLOBAL DATASTRUCTURES
6 ---------------------------------------------------------------------------
7 SUBTYPE rulv_rec_type IS okl_rule_pub.rulv_rec_type;
8
9 SUBTYPE asset_tbl_type IS okl_am_calculate_quote_pvt.asset_tbl_type;
10
11 SUBTYPE taiv_rec_type IS okl_trx_ar_invoices_pub.taiv_rec_type;
12
13 SUBTYPE qpyv_tbl_type IS okl_quote_parties_pub.qpyv_tbl_type;
14
15 --akrangan added for debug logging begin
16 g_module_name VARCHAR2 (255)
17 := 'okl.am.plsql.okl_am_repurchase_asset_pvt';
18 g_level_procedure CONSTANT NUMBER := fnd_log.level_procedure;
19 g_level_exception CONSTANT NUMBER := fnd_log.level_exception;
20 g_level_statement CONSTANT NUMBER := fnd_log.level_statement;
21
22 --akrangan added for debug logging end
23
24 -- Start of comments
25 --
26 -- Procedure Name : get_db_values
27 -- Description : get the stored database fields for the quote
28 -- Business Rules :
29 -- Parameters :
30 -- Version : 1.0
31 -- End of comments
32 PROCEDURE get_db_values (
33 p_qte_id IN NUMBER,
34 x_accepted_yn OUT NOCOPY VARCHAR2,
35 x_quote_number OUT NOCOPY NUMBER,
36 x_date_effective_from OUT NOCOPY DATE,
37 x_date_effective_to OUT NOCOPY DATE,
38 x_khr_id OUT NOCOPY NUMBER,
39 x_qtp_code OUT NOCOPY VARCHAR2,
40 x_return_status OUT NOCOPY VARCHAR2
41 ) AS
42 -- akrangan added for debug feature start
43 l_module_name VARCHAR2 (500)
44 := g_module_name || 'get_db_values';
45 is_debug_exception_on BOOLEAN
46 := okl_debug_pub.check_log_on (l_module_name, g_level_exception);
47 is_debug_procedure_on BOOLEAN
48 := okl_debug_pub.check_log_on (l_module_name, g_level_procedure);
49 is_debug_statement_on BOOLEAN
50 := okl_debug_pub.check_log_on (l_module_name, g_level_statement);
51
52 -- akrangan added for debug feature end
53 -- Select existing db values.
54 CURSOR l_qtev_csr (p_id IN NUMBER) IS
55 SELECT accepted_yn,
56 quote_number,
57 date_effective_from,
58 date_effective_to,
59 khr_id,
60 qtp_code
61 FROM okl_trx_quotes_v qtev
62 WHERE qtev.ID = p_id;
63 BEGIN
64 IF (is_debug_procedure_on) THEN
65 okl_debug_pub.log_debug (g_level_procedure,
66 l_module_name,
67 'Begin(+)'
68 );
69 END IF;
70
71 IF (is_debug_statement_on) THEN
72 okl_debug_pub.log_debug (g_level_statement,
73 l_module_name,
74 'p_qte_id =' || p_qte_id
75 );
76 END IF;
77
78 x_return_status := okc_api.g_ret_sts_success;
79
80 -- Select existing db values.
81 OPEN l_qtev_csr (p_qte_id);
82
83 FETCH l_qtev_csr
84 INTO x_accepted_yn,
85 x_quote_number,
86 x_date_effective_from,
87 x_date_effective_to,
88 x_khr_id,
89 x_qtp_code;
90
91 -- Invalid Value for the column COL_NAME
92 IF (l_qtev_csr%NOTFOUND) THEN
93 okc_api.set_message (p_app_name => 'OKC',
94 p_msg_name => g_invalid_value,
95 p_token1 => g_col_name_token,
96 p_token1_value => 'qte_id'
97 );
98 x_return_status := okc_api.g_ret_sts_error;
99 END IF;
100
101 CLOSE l_qtev_csr;
102
103 IF (is_debug_statement_on) THEN
104 okl_debug_pub.log_debug (g_level_statement,
105 l_module_name,
106 'x_return_status =' || x_return_status
107 );
108 END IF;
109
110 IF (is_debug_procedure_on) THEN
111 okl_debug_pub.log_debug (g_level_procedure, l_module_name, 'End(-)');
112 END IF;
113 EXCEPTION
114 WHEN OTHERS THEN
115 IF (l_qtev_csr%ISOPEN) THEN
116 CLOSE l_qtev_csr;
117 END IF;
118
119 okc_api.set_message (p_app_name => 'OKC',
120 p_msg_name => g_unexpected_error,
121 p_token1 => g_sqlcode_token,
122 p_token1_value => SQLCODE,
123 p_token2 => g_sqlerrm_token,
124 p_token2_value => SQLERRM
125 );
126 x_return_status := okc_api.g_ret_sts_unexp_error;
127 END get_db_values;
128
129 -- Start of comments
130 --
131 -- Procedure Name : get_sysdate
132 -- Description : get the sysdate
133 -- Business Rules :
134 -- Parameters :
135 -- Version : 1.0
136 -- End of comments
137 PROCEDURE get_sysdate (x_sysdate OUT NOCOPY DATE) AS
138 -- get the sysdate
139 CURSOR l_db_date_csr IS
140 SELECT SYSDATE
141 FROM DUAL;
142 BEGIN
143 -- get the sysdate
144 OPEN l_db_date_csr;
145
146 FETCH l_db_date_csr
147 INTO x_sysdate;
148
149 CLOSE l_db_date_csr;
150 EXCEPTION
151 WHEN OTHERS THEN
152 IF (l_db_date_csr%ISOPEN) THEN
153 CLOSE l_db_date_csr;
154 END IF;
155
156 okc_api.set_message (p_app_name => 'OKC',
157 p_msg_name => g_unexpected_error,
158 p_token1 => g_sqlcode_token,
159 p_token1_value => SQLCODE,
160 p_token2 => g_sqlerrm_token,
161 p_token2_value => SQLERRM
162 );
163 END get_sysdate;
164
165 -- Start of comments
166 --
167 -- Procedure Name : quote_effectivity
168 -- Description : gets the rule to determine the quote effective dates
169 -- Business Rules :
170 -- Parameters :
171 -- Version : 1.0
172 -- End of comments
173 PROCEDURE quote_effectivity (
174 p_contract_id IN NUMBER,
175 x_quote_eff_days OUT NOCOPY NUMBER,
176 x_quote_eff_max_days OUT NOCOPY NUMBER,
177 x_return_status OUT NOCOPY VARCHAR2
178 ) IS
179 l_return_status VARCHAR2 (1) := okc_api.g_ret_sts_error;
180 l_rule_found BOOLEAN := FALSE;
181 l_rulv_rec rulv_rec_type;
182 l_rule_code CONSTANT VARCHAR2 (30) := 'AMQTEF';
183 l_rule_group_code CONSTANT VARCHAR2 (30) := 'AMTQPR';
184 -- akrangan added for debug feature start
185 l_module_name VARCHAR2 (500)
186 := g_module_name || 'quote_effectivity';
187 is_debug_exception_on BOOLEAN
188 := okl_debug_pub.check_log_on (l_module_name, g_level_exception);
189 is_debug_procedure_on BOOLEAN
190 := okl_debug_pub.check_log_on (l_module_name, g_level_procedure);
191 is_debug_statement_on BOOLEAN
192 := okl_debug_pub.check_log_on (l_module_name, g_level_statement);
193 -- akrangan added for debug feature end
194 BEGIN
195 IF (is_debug_procedure_on) THEN
196 okl_debug_pub.log_debug (g_level_procedure,
197 l_module_name,
198 'Begin(+)'
199 );
200 END IF;
201
202 IF (is_debug_statement_on) THEN
203 okl_debug_pub.log_debug (g_level_statement,
204 l_module_name,
205 'p_contract_id =' || p_contract_id
206 );
207 END IF;
208
209 IF (is_debug_statement_on) THEN
210 okl_debug_pub.log_debug (g_level_statement,
211 l_module_name,
212 'before okl_am_util_pvt.get_rule_record'
213 );
214 okl_debug_pub.log_debug (g_level_statement,
215 l_module_name,
216 'p_rgd_code =' || l_rule_group_code
217 );
218 okl_debug_pub.log_debug (g_level_statement,
219 l_module_name,
220 'p_rdf_code =' || l_rule_code
221 );
222 okl_debug_pub.log_debug (g_level_statement,
223 l_module_name,
224 'p_chr_id =' || p_contract_id
225 );
226 END IF;
227
228 okl_am_util_pvt.get_rule_record (p_rgd_code => l_rule_group_code,
229 p_rdf_code => l_rule_code,
230 p_chr_id => p_contract_id,
231 p_cle_id => NULL,
232 x_rulv_rec => l_rulv_rec,
233 x_return_status => l_return_status,
234 p_message_yn => TRUE
235 );
236
237 IF (is_debug_statement_on) THEN
238 okl_debug_pub.log_debug (g_level_statement,
239 l_module_name,
240 'after okl_am_util_pvt.get_rule_record'
241 );
242 okl_debug_pub.log_debug (g_level_statement,
243 l_module_name,
244 'l_return_status =' || l_return_status
245 );
246 END IF;
247
248 IF (l_return_status = okc_api.g_ret_sts_success) THEN
249 x_quote_eff_days := l_rulv_rec.rule_information1;
250 x_quote_eff_max_days := l_rulv_rec.rule_information2;
251 l_return_status := okc_api.g_ret_sts_success;
252 END IF;
253
254 x_return_status := l_return_status;
255
256 IF (is_debug_procedure_on) THEN
257 okl_debug_pub.log_debug (g_level_procedure, l_module_name, 'End(-)');
258 END IF;
259 EXCEPTION
260 WHEN OTHERS THEN
261 okc_api.set_message (p_app_name => 'OKC',
262 p_msg_name => g_unexpected_error,
263 p_token1 => g_sqlcode_token,
264 p_token1_value => SQLCODE,
265 p_token2 => g_sqlerrm_token,
266 p_token2_value => SQLERRM
267 );
268 x_return_status := okc_api.g_ret_sts_unexp_error;
269 END quote_effectivity;
270
271 -- Start of comments
272 --
273 -- Procedure Name : quote_type_check
274 -- Description : checks the quote type
275 -- Business Rules :
276 -- Parameters :
277 -- Version : 1.0
278 -- End of comments
279 PROCEDURE quote_type_check (
280 p_qtp_code IN VARCHAR2,
281 x_return_status OUT NOCOPY VARCHAR2
282 ) IS
283 l_return_status VARCHAR2 (1) := okc_api.g_ret_sts_error;
284 -- akrangan added for debug feature start
285 l_module_name VARCHAR2 (500)
286 := g_module_name || 'quote_type_check';
287 is_debug_exception_on BOOLEAN
288 := okl_debug_pub.check_log_on (l_module_name, g_level_exception);
289 is_debug_procedure_on BOOLEAN
290 := okl_debug_pub.check_log_on (l_module_name, g_level_procedure);
291 is_debug_statement_on BOOLEAN
292 := okl_debug_pub.check_log_on (l_module_name, g_level_statement);
293 -- akrangan added for debug feature end
294 BEGIN
295 IF (is_debug_procedure_on) THEN
296 okl_debug_pub.log_debug (g_level_procedure,
297 l_module_name,
298 'Begin(+)'
299 );
300 END IF;
301
302 IF ((p_qtp_code IS NOT NULL) AND (p_qtp_code = 'REP_STANDARD')) THEN
303 l_return_status := okc_api.g_ret_sts_success;
304 END IF;
305
306 x_return_status := l_return_status;
307
308 IF (is_debug_procedure_on) THEN
309 okl_debug_pub.log_debug (g_level_procedure, l_module_name, 'End(-)');
310 END IF;
311 EXCEPTION
312 WHEN OTHERS THEN
313 okc_api.set_message (p_app_name => 'OKC',
314 p_msg_name => g_unexpected_error,
315 p_token1 => g_sqlcode_token,
316 p_token1_value => SQLCODE,
317 p_token2 => g_sqlerrm_token,
318 p_token2_value => SQLERRM
319 );
320 x_return_status := okc_api.g_ret_sts_unexp_error;
321 END quote_type_check;
322
323 -- Start of comments
324 --
325 -- Procedure Name : set_quote_defaults
326 -- Description :
327 -- Business Rules :
328 -- Parameters :
329 -- Version : 1.0
330 -- End of comments
331 PROCEDURE set_quote_defaults (
332 px_qtev_rec IN OUT NOCOPY qtev_rec_type,
333 x_return_status OUT NOCOPY VARCHAR2
334 ) IS
335 l_quote_eff_days NUMBER;
336 l_quote_eff_max_days NUMBER;
337 l_db_date DATE;
338 l_quote_status VARCHAR2 (200) := 'DRAFTED';
339 l_quote_reason VARCHAR2 (200) := 'EOT';
340 l_return_status VARCHAR2 (1) := okc_api.g_ret_sts_success;
341 -- akrangan added for debug feature start
342 l_module_name VARCHAR2 (500)
343 := g_module_name || 'set_quote_defaults';
344 is_debug_exception_on BOOLEAN
345 := okl_debug_pub.check_log_on (l_module_name, g_level_exception);
346 is_debug_procedure_on BOOLEAN
347 := okl_debug_pub.check_log_on (l_module_name, g_level_procedure);
348 is_debug_statement_on BOOLEAN
349 := okl_debug_pub.check_log_on (l_module_name, g_level_statement);
350 -- akrangan added for debug feature end
351 BEGIN
352 IF (is_debug_procedure_on) THEN
353 okl_debug_pub.log_debug (g_level_procedure,
354 l_module_name,
355 'Begin(+)'
356 );
357 END IF;
358
359 IF (is_debug_statement_on) THEN
360 okl_debug_pub.log_debug (g_level_procedure,
361 l_module_name,
362 'px_qtev_rec.id : ' || px_qtev_rec.ID
363 );
364 okl_debug_pub.log_debug (g_level_procedure,
365 l_module_name,
366 'px_qtev_rec.qrs_code : '
367 || px_qtev_rec.qrs_code
368 );
369 okl_debug_pub.log_debug (g_level_procedure,
370 l_module_name,
371 'px_qtev_rec.qst_code : '
372 || px_qtev_rec.qst_code
373 );
374 okl_debug_pub.log_debug (g_level_procedure,
375 l_module_name,
376 'px_qtev_rec.consolidated_qte_id : '
377 || px_qtev_rec.consolidated_qte_id
378 );
379 okl_debug_pub.log_debug (g_level_procedure,
380 l_module_name,
381 'px_qtev_rec.khr_id : '
382 || px_qtev_rec.khr_id
383 );
384 okl_debug_pub.log_debug (g_level_procedure,
385 l_module_name,
386 'px_qtev_rec.art_id : '
387 || px_qtev_rec.art_id
388 );
389 okl_debug_pub.log_debug (g_level_procedure,
390 l_module_name,
391 'px_qtev_rec.qtp_code : '
392 || px_qtev_rec.qtp_code
393 );
394 okl_debug_pub.log_debug (g_level_procedure,
395 l_module_name,
396 'px_qtev_rec.trn_code : '
397 || px_qtev_rec.trn_code
398 );
399 okl_debug_pub.log_debug (g_level_procedure,
400 l_module_name,
401 'px_qtev_rec.pdt_id : '
402 || px_qtev_rec.pdt_id
403 );
404 okl_debug_pub.log_debug (g_level_procedure,
405 l_module_name,
406 'px_qtev_rec.date_effective_from : '
407 || px_qtev_rec.date_effective_from
408 );
409 okl_debug_pub.log_debug (g_level_procedure,
410 l_module_name,
411 'px_qtev_rec.quote_number : '
412 || px_qtev_rec.quote_number
413 );
414 okl_debug_pub.log_debug (g_level_procedure,
415 l_module_name,
416 'px_qtev_rec.early_termination_yn : '
417 || px_qtev_rec.early_termination_yn
418 );
419 okl_debug_pub.log_debug (g_level_procedure,
420 l_module_name,
421 'px_qtev_rec.partial_yn : '
422 || px_qtev_rec.partial_yn
423 );
424 okl_debug_pub.log_debug (g_level_procedure,
425 l_module_name,
426 'px_qtev_rec.preproceeds_yn : '
427 || px_qtev_rec.preproceeds_yn
428 );
429 okl_debug_pub.log_debug (g_level_procedure,
430 l_module_name,
431 'px_qtev_rec.summary_format_yn : '
432 || px_qtev_rec.summary_format_yn
433 );
434 okl_debug_pub.log_debug (g_level_procedure,
435 l_module_name,
436 'px_qtev_rec.consolidated_yn : '
437 || px_qtev_rec.consolidated_yn
438 );
439 okl_debug_pub.log_debug (g_level_procedure,
440 l_module_name,
441 'px_qtev_rec.date_requested : '
442 || px_qtev_rec.date_requested
443 );
444 okl_debug_pub.log_debug (g_level_procedure,
445 l_module_name,
446 'px_qtev_rec.date_proposal : '
447 || px_qtev_rec.date_proposal
448 );
449 okl_debug_pub.log_debug (g_level_procedure,
450 l_module_name,
451 'px_qtev_rec.date_effective_to : '
452 || px_qtev_rec.date_effective_to
453 );
454 okl_debug_pub.log_debug (g_level_procedure,
455 l_module_name,
456 'px_qtev_rec.date_accepted : '
457 || px_qtev_rec.date_accepted
458 );
459 okl_debug_pub.log_debug (g_level_procedure,
460 l_module_name,
461 'px_qtev_rec.payment_received_yn : '
462 || px_qtev_rec.payment_received_yn
463 );
464 okl_debug_pub.log_debug (g_level_procedure,
465 l_module_name,
466 'px_qtev_rec.requested_by : '
467 || px_qtev_rec.requested_by
468 );
469 okl_debug_pub.log_debug (g_level_procedure,
470 l_module_name,
471 'px_qtev_rec.approved_yn : '
472 || px_qtev_rec.approved_yn
473 );
474 okl_debug_pub.log_debug (g_level_procedure,
475 l_module_name,
476 'px_qtev_rec.accepted_yn : '
477 || px_qtev_rec.accepted_yn
478 );
479 okl_debug_pub.log_debug (g_level_procedure,
480 l_module_name,
481 'px_qtev_rec.org_id : '
482 || px_qtev_rec.org_id
483 );
484 okl_debug_pub.log_debug (g_level_procedure,
485 l_module_name,
486 'px_qtev_rec.purchase_amount : '
487 || px_qtev_rec.purchase_amount
488 );
489 okl_debug_pub.log_debug (g_level_procedure,
490 l_module_name,
491 'px_qtev_rec.purchase_formula : '
492 || px_qtev_rec.purchase_formula
493 );
494 okl_debug_pub.log_debug (g_level_procedure,
495 l_module_name,
496 'px_qtev_rec.asset_value : '
497 || px_qtev_rec.asset_value
498 );
499 okl_debug_pub.log_debug (g_level_procedure,
500 l_module_name,
501 'px_qtev_rec.residual_value : '
502 || px_qtev_rec.residual_value
503 );
504 okl_debug_pub.log_debug (g_level_procedure,
505 l_module_name,
506 'px_qtev_rec.unbilled_receivables : '
507 || px_qtev_rec.unbilled_receivables
508 );
509 okl_debug_pub.log_debug (g_level_procedure,
510 l_module_name,
511 'px_qtev_rec.gain_loss : '
512 || px_qtev_rec.gain_loss
513 );
514 okl_debug_pub.log_debug (g_level_procedure,
515 l_module_name,
516 'px_qtev_rec.PERDIEM_AMOUNT : '
517 || px_qtev_rec.perdiem_amount
518 );
519 okl_debug_pub.log_debug (g_level_procedure,
520 l_module_name,
521 'px_qtev_rec.currency_code : '
522 || px_qtev_rec.currency_code
523 );
524 okl_debug_pub.log_debug (g_level_procedure,
525 l_module_name,
526 'px_qtev_rec.currency_conversion_code : '
527 || px_qtev_rec.currency_conversion_code
528 );
529 okl_debug_pub.log_debug (g_level_procedure,
530 l_module_name,
531 'px_qtev_rec.legal_entity_id : '
532 || px_qtev_rec.legal_entity_id
533 );
534 okl_debug_pub.log_debug (g_level_procedure,
535 l_module_name,
536 'px_qtev_rec.repo_quote_indicator_yn : '
537 || px_qtev_rec.repo_quote_indicator_yn
538 );
539 END IF;
540
541 IF ( (px_qtev_rec.date_effective_from IS NULL)
542 OR (px_qtev_rec.date_effective_from = okc_api.g_miss_date)
543 ) THEN
544 -- get the sysdate
545 get_sysdate (l_db_date);
546 px_qtev_rec.date_effective_from := l_db_date;
547 END IF;
548
549 IF ( (px_qtev_rec.date_effective_to IS NULL)
550 OR (px_qtev_rec.date_effective_to = okc_api.g_miss_date)
551 ) THEN
552 IF (is_debug_statement_on) THEN
553 okl_debug_pub.log_debug (g_level_statement,
554 l_module_name,
555 'Before quote_effectivity'
556 );
557 okl_debug_pub.log_debug (g_level_statement,
558 l_module_name,
559 'In param, p_contract_id: '
560 || px_qtev_rec.khr_id
561 );
562 END IF;
563
564 -- set the date eff to using rules
565 quote_effectivity (p_contract_id => px_qtev_rec.khr_id,
566 x_quote_eff_days => l_quote_eff_days,
567 x_quote_eff_max_days => l_quote_eff_max_days,
568 x_return_status => l_return_status
569 );
570
571 IF (is_debug_statement_on) THEN
572 okl_debug_pub.log_debug (g_level_statement,
573 l_module_name,
574 'After quote_effectivity '
575 );
576 okl_debug_pub.log_debug (g_level_statement,
577 l_module_name,
578 'l_return_status: ' || l_return_status
579 );
580 END IF;
581
582 IF (l_return_status = okc_api.g_ret_sts_success) THEN
583 px_qtev_rec.date_effective_to :=
584 px_qtev_rec.date_effective_from + l_quote_eff_days;
585 ELSE
586 RAISE g_exception_halt_validation;
587 END IF;
588 END IF;
589
590 IF ( (px_qtev_rec.qst_code IS NULL)
591 OR (px_qtev_rec.qst_code = okc_api.g_miss_char)
592 ) THEN
593 px_qtev_rec.qst_code := l_quote_status;
594 END IF;
595
596 IF ( (px_qtev_rec.qrs_code IS NULL)
597 OR (px_qtev_rec.qrs_code = okc_api.g_miss_char)
598 ) THEN
599 px_qtev_rec.qrs_code := l_quote_reason;
600 END IF;
601
602 -- Always NO during quote creation
603 px_qtev_rec.accepted_yn := g_no;
604 px_qtev_rec.approved_yn := g_no;
605 x_return_status := l_return_status;
606
607 IF (is_debug_procedure_on) THEN
608 okl_debug_pub.log_debug (g_level_procedure, l_module_name, 'End(-)');
609 END IF;
610 EXCEPTION
611 WHEN g_exception_halt_validation THEN
612 x_return_status := l_return_status;
613 WHEN OTHERS THEN
614 x_return_status := l_return_status;
615 okc_api.set_message (p_app_name => 'OKC',
616 p_msg_name => g_unexpected_error,
617 p_token1 => g_sqlcode_token,
618 p_token1_value => SQLCODE,
619 p_token2 => g_sqlerrm_token,
620 p_token2_value => SQLERRM
621 );
622 END set_quote_defaults;
623
624 -- Start of comments
625 --
626 -- Procedure Name : validate_quote
627 -- Description : checks the validity of the quote
628 -- Business Rules :
629 -- Parameters :
630 -- Version : 1.0
631 -- History : SECHAWLA 22-JAN-03 Bug # 2762419 : Modified the logic to check for the terminated/expired
632 -- asset line instead of a terminated/expired contract
633 -- End of comments
634 PROCEDURE validate_quote (
635 p_api_version IN NUMBER,
636 p_init_msg_list IN VARCHAR2 DEFAULT okl_api.g_false,
637 x_return_status OUT NOCOPY VARCHAR2,
638 x_msg_count OUT NOCOPY NUMBER,
639 x_msg_data OUT NOCOPY VARCHAR2,
640 p_qtev_rec IN OUT NOCOPY qtev_rec_type,
641 p_tqlv_tbl IN tqlv_tbl_type,
642 p_call_flag IN VARCHAR2
643 ) IS
644 -- select the contract id for the contract line id
645 CURSOR l_clev_csr (p_kle_id NUMBER) IS
646 SELECT chr_id
647 FROM okc_k_lines_b
648 WHERE ID = p_kle_id;
649
650 -- see if any quotes already exist for this asset return id
651 CURSOR l_qtev_csr (p_art_id NUMBER) IS
652 SELECT quote_number
653 FROM okl_trx_quotes_b
654 WHERE art_id = p_art_id;
655
656 -- select the asset return id to see if valid
657
658 -- SECHAWLA 22-JAN-03 Bug # 2762419 : Added asset_number in the SELECT clause. Modified the FROM clause to use
659 -- okl_am_asset_returns_uv instead of OKL_ASSET_RETURNS_B
660 --start changed by abhsaxen for Bug#6174484
661 CURSOR l_artv_csr (p_art_id NUMBER) IS
662 SELECT oar.ID ID,
663 kle.NAME asset_number,
664 oar.repurchase_agmt_yn repurchase_agmt_yn,
665 oar.legal_entity_id legal_entity_id
666 FROM okl_asset_returns_all_b oar, okl_k_lines_full_v kle
667 WHERE oar.ID = p_art_id AND oar.kle_id = kle.ID;
668
669 --end changed by abhsaxen for Bug#6174484
670
671 -- Select contract number for contract id
672 CURSOR l_chr_csr (p_khr_id IN NUMBER) IS
673 SELECT k.contract_number
674 FROM okl_k_headers_full_v k
675 WHERE k.ID = p_khr_id;
676
677 -- Select the accepted_yn flag
678 CURSOR l_acpt_csr (p_qte_id IN NUMBER) IS
679 SELECT accepted_yn
680 FROM okl_trx_quotes_b
681 WHERE ID = p_qte_id;
682
683 -- SECHAWLA 22-JAN-03 Bug # 2762419 : Added this cursor to check the status of the asset line
684 CURSOR l_okclines_csr (p_kle_id IN NUMBER) IS
685 SELECT sts_code
686 FROM okc_k_lines_b
687 WHERE ID = p_kle_id;
688
689 l_contract_number VARCHAR2 (120);
690 l_contract_mismatch BOOLEAN := FALSE;
691 l_chr_id NUMBER := 1;
692 l_art_id NUMBER := 1;
693 i NUMBER := 0;
694 l_quote_number NUMBER := 1;
695 l_repurchase_agmt_yn VARCHAR2 (3) := 'N';
696 l_missing_lines BOOLEAN := FALSE;
697 lx_contract_status VARCHAR2 (200);
698 l_control_flag_create VARCHAR2 (200) := 'REPUR_QUOTE_CREATE';
699 l_control_flag_update VARCHAR2 (200) := 'REPUR_QUOTE_UPDATE';
700 l_taiv_rec taiv_rec_type;
701 db_accepted_yn VARCHAR2 (1);
702 -- SECHAWLA 22-JAN-03 Bug # 2762419 : New declarations
703 l_sts_code okc_k_lines_b.sts_code%TYPE;
704 l_asset_number okl_am_asset_returns_uv.asset_number%TYPE;
705 -- RRAVIKIR Legal Entity Changes
706 l_legal_entity_id NUMBER;
707 -- Legal Entity Changes End
708 -- akrangan added for debug feature start
709 l_module_name VARCHAR2 (500)
710 := g_module_name || 'validate_quote';
711 is_debug_exception_on BOOLEAN
712 := okl_debug_pub.check_log_on (l_module_name, g_level_exception);
713 is_debug_procedure_on BOOLEAN
714 := okl_debug_pub.check_log_on (l_module_name, g_level_procedure);
715 is_debug_statement_on BOOLEAN
716 := okl_debug_pub.check_log_on (l_module_name, g_level_statement);
717 -- akrangan added for debug feature end
718 BEGIN
719 IF (is_debug_procedure_on) THEN
720 okl_debug_pub.log_debug (g_level_procedure,
721 l_module_name,
722 'Begin(+)'
723 );
724 END IF;
725
726 IF (is_debug_statement_on) THEN
727 okl_debug_pub.log_debug (g_level_statement,
728 l_module_name,
729 'p_api_version :' || p_api_version
730 );
731 okl_debug_pub.log_debug (g_level_statement,
732 l_module_name,
733 'p_init_msg_list :' || p_init_msg_list
734 );
735 okl_debug_pub.log_debug (g_level_procedure,
736 l_module_name,
737 'p_qtev_rec.id : ' || p_qtev_rec.ID
738 );
739 okl_debug_pub.log_debug (g_level_procedure,
740 l_module_name,
741 'p_qtev_rec.qrs_code : '
742 || p_qtev_rec.qrs_code
743 );
744 okl_debug_pub.log_debug (g_level_procedure,
745 l_module_name,
746 'p_qtev_rec.qst_code : '
747 || p_qtev_rec.qst_code
748 );
749 okl_debug_pub.log_debug (g_level_procedure,
750 l_module_name,
751 'p_qtev_rec.consolidated_qte_id : '
752 || p_qtev_rec.consolidated_qte_id
753 );
754 okl_debug_pub.log_debug (g_level_procedure,
755 l_module_name,
756 'p_qtev_rec.khr_id : ' || p_qtev_rec.khr_id
757 );
758 okl_debug_pub.log_debug (g_level_procedure,
759 l_module_name,
760 'p_qtev_rec.art_id : ' || p_qtev_rec.art_id
761 );
762 okl_debug_pub.log_debug (g_level_procedure,
763 l_module_name,
764 'p_qtev_rec.qtp_code : '
765 || p_qtev_rec.qtp_code
766 );
767 okl_debug_pub.log_debug (g_level_procedure,
768 l_module_name,
769 'p_qtev_rec.trn_code : '
770 || p_qtev_rec.trn_code
771 );
772 okl_debug_pub.log_debug (g_level_procedure,
773 l_module_name,
774 'p_qtev_rec.pdt_id : ' || p_qtev_rec.pdt_id
775 );
776 okl_debug_pub.log_debug (g_level_procedure,
777 l_module_name,
778 'p_qtev_rec.date_effective_from : '
779 || p_qtev_rec.date_effective_from
780 );
781 okl_debug_pub.log_debug (g_level_procedure,
782 l_module_name,
783 'p_qtev_rec.quote_number : '
784 || p_qtev_rec.quote_number
785 );
786 okl_debug_pub.log_debug (g_level_procedure,
787 l_module_name,
788 'p_qtev_rec.early_termination_yn : '
789 || p_qtev_rec.early_termination_yn
790 );
791 okl_debug_pub.log_debug (g_level_procedure,
792 l_module_name,
793 'p_qtev_rec.partial_yn : '
794 || p_qtev_rec.partial_yn
795 );
796 okl_debug_pub.log_debug (g_level_procedure,
797 l_module_name,
798 'p_qtev_rec.preproceeds_yn : '
799 || p_qtev_rec.preproceeds_yn
800 );
801 okl_debug_pub.log_debug (g_level_procedure,
802 l_module_name,
803 'p_qtev_rec.summary_format_yn : '
804 || p_qtev_rec.summary_format_yn
805 );
806 okl_debug_pub.log_debug (g_level_procedure,
807 l_module_name,
808 'p_qtev_rec.consolidated_yn : '
809 || p_qtev_rec.consolidated_yn
810 );
811 okl_debug_pub.log_debug (g_level_procedure,
812 l_module_name,
813 'p_qtev_rec.date_requested : '
814 || p_qtev_rec.date_requested
815 );
816 okl_debug_pub.log_debug (g_level_procedure,
817 l_module_name,
818 'p_qtev_rec.date_proposal : '
819 || p_qtev_rec.date_proposal
820 );
821 okl_debug_pub.log_debug (g_level_procedure,
822 l_module_name,
823 'p_qtev_rec.date_effective_to : '
824 || p_qtev_rec.date_effective_to
825 );
826 okl_debug_pub.log_debug (g_level_procedure,
827 l_module_name,
828 'p_qtev_rec.date_accepted : '
829 || p_qtev_rec.date_accepted
830 );
831 okl_debug_pub.log_debug (g_level_procedure,
832 l_module_name,
833 'p_qtev_rec.payment_received_yn : '
834 || p_qtev_rec.payment_received_yn
835 );
836 okl_debug_pub.log_debug (g_level_procedure,
837 l_module_name,
838 'p_qtev_rec.requested_by : '
839 || p_qtev_rec.requested_by
840 );
841 okl_debug_pub.log_debug (g_level_procedure,
842 l_module_name,
843 'p_qtev_rec.approved_yn : '
844 || p_qtev_rec.approved_yn
845 );
846 okl_debug_pub.log_debug (g_level_procedure,
847 l_module_name,
848 'p_qtev_rec.accepted_yn : '
849 || p_qtev_rec.accepted_yn
850 );
851 okl_debug_pub.log_debug (g_level_procedure,
852 l_module_name,
853 'p_qtev_rec.org_id : ' || p_qtev_rec.org_id
854 );
855 okl_debug_pub.log_debug (g_level_procedure,
856 l_module_name,
857 'p_qtev_rec.purchase_amount : '
858 || p_qtev_rec.purchase_amount
859 );
860 okl_debug_pub.log_debug (g_level_procedure,
861 l_module_name,
862 'p_qtev_rec.purchase_formula : '
863 || p_qtev_rec.purchase_formula
864 );
865 okl_debug_pub.log_debug (g_level_procedure,
866 l_module_name,
867 'p_qtev_rec.asset_value : '
868 || p_qtev_rec.asset_value
869 );
870 okl_debug_pub.log_debug (g_level_procedure,
871 l_module_name,
872 'p_qtev_rec.residual_value : '
873 || p_qtev_rec.residual_value
874 );
875 okl_debug_pub.log_debug (g_level_procedure,
876 l_module_name,
877 'p_qtev_rec.unbilled_receivables : '
878 || p_qtev_rec.unbilled_receivables
879 );
880 okl_debug_pub.log_debug (g_level_procedure,
881 l_module_name,
882 'p_qtev_rec.gain_loss : '
883 || p_qtev_rec.gain_loss
884 );
885 okl_debug_pub.log_debug (g_level_procedure,
886 l_module_name,
887 'p_qtev_rec.PERDIEM_AMOUNT : '
888 || p_qtev_rec.perdiem_amount
889 );
890 okl_debug_pub.log_debug (g_level_procedure,
891 l_module_name,
892 'p_qtev_rec.currency_code : '
893 || p_qtev_rec.currency_code
894 );
895 okl_debug_pub.log_debug (g_level_procedure,
896 l_module_name,
897 'p_qtev_rec.currency_conversion_code : '
898 || p_qtev_rec.currency_conversion_code
899 );
900 okl_debug_pub.log_debug (g_level_procedure,
901 l_module_name,
902 'p_qtev_rec.legal_entity_id : '
903 || p_qtev_rec.legal_entity_id
904 );
905 okl_debug_pub.log_debug (g_level_procedure,
906 l_module_name,
907 'p_qtev_rec.repo_quote_indicator_yn : '
908 || p_qtev_rec.repo_quote_indicator_yn
909 );
910 END IF;
911
912 x_return_status := okc_api.g_ret_sts_success;
913
914 -- SECHAWLA 22-JAN-03 Bug # 2762419 :Moved the quote header level validations to the beginning
915 IF p_call_flag = 'UPDATE' THEN
916 OPEN l_acpt_csr (p_qtev_rec.ID);
917
918 FETCH l_acpt_csr
919 INTO db_accepted_yn;
920
921 -- SECHAWLA 22-JAN-03 Bug # 2762419 : Added the following exception handling code
922 IF l_acpt_csr%NOTFOUND THEN
923 okc_api.set_message (p_app_name => 'OKC',
924 p_msg_name => g_invalid_value,
925 p_token1 => g_col_name_token,
926 p_token1_value => 'qte_id'
927 );
928 RAISE g_exception_halt_validation;
929 END IF;
930
931 -- SECHAWLA 22-JAN-03 Bug # 2762419 : end new code
932 CLOSE l_acpt_csr;
933 END IF;
934
935 IF (is_debug_statement_on) THEN
936 okl_debug_pub.log_debug (g_level_statement,
937 l_module_name,
938 'before quote_type_check '
939 );
940 okl_debug_pub.log_debug (g_level_statement,
941 l_module_name,
942 'p_qtp_code: ' || p_qtev_rec.qtp_code
943 );
944 END IF;
945
946 -- check if quote type is valid
947 quote_type_check (p_qtp_code => p_qtev_rec.qtp_code,
948 x_return_status => x_return_status
949 );
950
951 IF (is_debug_statement_on) THEN
952 okl_debug_pub.log_debug (g_level_statement,
953 l_module_name,
954 'After quote_type_check '
955 );
956 okl_debug_pub.log_debug (g_level_statement,
957 l_module_name,
958 'x_return_status: ' || x_return_status
959 );
960 END IF;
961
962 IF x_return_status = okc_api.g_ret_sts_error THEN
963 --Please select a valid Quote Type.
964 okc_api.set_message (p_app_name => g_app_name,
965 p_msg_name => 'OKL_AM_QTP_CODE_INVALID'
966 );
967 RAISE g_exception_halt_validation;
968 END IF;
969
970 -- check asset return id is populated and valid
971 IF ( (p_qtev_rec.art_id IS NOT NULL)
972 AND (p_qtev_rec.art_id <> okc_api.g_miss_num)
973 ) THEN
974 -- select the asset return id to see if valid
975 OPEN l_artv_csr (p_qtev_rec.art_id);
976
977 FETCH l_artv_csr
978 INTO l_art_id,
979 l_asset_number,
980 l_repurchase_agmt_yn,
981 l_legal_entity_id;
982
983 CLOSE l_artv_csr;
984 END IF;
985
986 IF (l_art_id = 1) THEN
987 okc_api.set_message (p_app_name => 'OKC',
988 p_msg_name => g_invalid_value,
989 p_token1 => g_col_name_token,
990 p_token1_value => 'art_id'
991 );
992 RAISE g_exception_halt_validation;
993 END IF;
994
995 -- RRAVIKIR Legal Entity Changes
996 IF (l_legal_entity_id IS NULL OR l_legal_entity_id = okc_api.g_miss_num
997 ) THEN
998 okl_api.set_message (p_app_name => g_app_name,
999 p_msg_name => g_required_value,
1000 p_token1 => g_col_name_token,
1001 p_token1_value => 'legal_entity_id'
1002 );
1003 RAISE okc_api.g_exception_error;
1004 ELSE
1005 p_qtev_rec.legal_entity_id := l_legal_entity_id;
1006 END IF;
1007
1008 -- Legal Entity Changes End
1009
1010 -- see if there is a repurchase agreement
1011 IF (l_repurchase_agmt_yn IS NULL) OR (l_repurchase_agmt_yn = 'N') THEN
1012 -- Get the contract number
1013 OPEN l_chr_csr (p_qtev_rec.khr_id);
1014
1015 FETCH l_chr_csr
1016 INTO l_contract_number;
1017
1018 CLOSE l_chr_csr;
1019
1020 -- No repurchase agreement exists for contract CONTRACT_NUMBER.
1021 okc_api.set_message (p_app_name => g_app_name,
1022 p_msg_name => 'OKL_AM_NO_REPURCHASE_AGMT',
1023 p_token1 => 'CONTRACT_NUMBER',
1024 p_token1_value => l_contract_number
1025 );
1026 RAISE g_exception_halt_validation;
1027 END IF;
1028
1029 -- SECHAWLA 22-JAN-03 Bug # 2762419 : end of moved validations
1030
1031 -- Check that there are contract lines passed as parameters.
1032 IF (p_tqlv_tbl.COUNT > 0) THEN
1033 i := p_tqlv_tbl.FIRST;
1034
1035 LOOP
1036 IF ( (p_tqlv_tbl (i).kle_id IS NULL)
1037 OR (p_tqlv_tbl (i).kle_id = okc_api.g_miss_num)
1038 ) THEN
1039 l_missing_lines := TRUE;
1040 --SECHAWLA 22-JAN-03 Bug # 2762419 : Added the EXIT statement
1041 EXIT;
1042 END IF;
1043
1044 EXIT WHEN (i = p_tqlv_tbl.LAST);
1045 i := p_tqlv_tbl.NEXT (i);
1046 END LOOP;
1047 ELSE
1048 l_missing_lines := TRUE;
1049 END IF;
1050
1051 IF (l_missing_lines) THEN
1052 okc_api.set_message (p_app_name => 'OKC',
1053 p_msg_name => g_required_value,
1054 p_token1 => g_col_name_token,
1055 p_token1_value => 'kle_id'
1056 );
1057 RAISE g_exception_halt_validation;
1058 END IF;
1059
1060 -- validate that the contract line ids are valid and belong to the same contract
1061 IF ( (p_tqlv_tbl.COUNT > 0)
1062 AND ( (p_qtev_rec.khr_id IS NOT NULL)
1063 AND (p_qtev_rec.khr_id <> okc_api.g_miss_num)
1064 )
1065 ) THEN
1066 i := p_tqlv_tbl.FIRST;
1067 l_contract_mismatch := FALSE;
1068
1069 LOOP
1070 l_chr_id := 1;
1071
1072 -- select the contract id for the contract line id
1073 OPEN l_clev_csr (p_tqlv_tbl (i).kle_id);
1074
1075 FETCH l_clev_csr
1076 INTO l_chr_id;
1077
1078 CLOSE l_clev_csr;
1079
1080 IF (l_chr_id <> p_qtev_rec.khr_id) OR (l_chr_id = 1) THEN
1081 l_contract_mismatch := TRUE;
1082 END IF;
1083
1084 EXIT WHEN (i = p_tqlv_tbl.LAST);
1085 i := p_tqlv_tbl.NEXT (i);
1086 END LOOP;
1087
1088 IF (l_contract_mismatch) THEN
1089 okc_api.set_message (p_app_name => 'OKC',
1090 p_msg_name => g_invalid_value,
1091 p_token1 => g_col_name_token,
1092 p_token1_value => 'kle_id'
1093 );
1094 RAISE g_exception_halt_validation;
1095 END IF;
1096 ELSE
1097 -- Either no lines selected (which is not needed here since done earlier) or khr_id is invalid
1098 okc_api.set_message (p_app_name => 'OKC',
1099 p_msg_name => g_required_value,
1100 p_token1 => g_col_name_token,
1101 p_token1_value => 'khr_id'
1102 );
1103 RAISE g_exception_halt_validation;
1104 END IF;
1105
1106 -- SECHAWLA 22-JAN-03 Bug # 2762419 : Check if the asset line is terminated or expired
1107 IF (p_call_flag = 'CREATE')
1108 OR (p_call_flag = 'UPDATE' AND db_accepted_yn <> 'Y') THEN
1109 i := p_tqlv_tbl.FIRST;
1110
1111 LOOP
1112 --Check if asset line is terminated or expired
1113 OPEN l_okclines_csr (p_tqlv_tbl (i).kle_id);
1114
1115 FETCH l_okclines_csr
1116 INTO l_sts_code;
1117
1118 IF l_okclines_csr%NOTFOUND THEN
1119 x_return_status := okl_api.g_ret_sts_error;
1120 -- Kle ID is invalid
1121 okl_api.set_message (p_app_name => 'OKC',
1122 p_msg_name => g_invalid_value,
1123 p_token1 => g_col_name_token,
1124 p_token1_value => 'KLE_ID'
1125 );
1126 RAISE g_exception_halt_validation;
1127 END IF;
1128
1129 CLOSE l_okclines_csr;
1130
1131 IF l_sts_code NOT IN ('TERMINATED', 'EXPIRED') THEN
1132 x_return_status := okl_api.g_ret_sts_error;
1133 -- Asset ASSET_NUMBER is still STATUS. Asset should be terminated or expired.
1134 okl_api.set_message
1135 (p_app_name => 'OKL',
1136 p_msg_name => 'OKL_AM_ASSET_NOT_TERMINATED',
1137 p_token1 => 'ASSET_NUMBER',
1138 p_token1_value => l_asset_number,
1139 p_token2 => 'STATUS',
1140 p_token2_value => l_sts_code
1141 );
1142 RAISE g_exception_halt_validation;
1143 END IF;
1144
1145 EXIT WHEN (i = p_tqlv_tbl.LAST);
1146 i := p_tqlv_tbl.NEXT (i);
1147 END LOOP;
1148 END IF;
1149
1150 -- SECHAWLA 22-JAN-03 Bug # 2762419 : end new code
1151
1152 /*
1153 -- check if contract active
1154 IF check_contract_active_yn ( p_qtev_rec,l_contract_number) = TRUE THEN
1155 -- Contract CONTRACT_NUMBER is still Active. Unable to generate the quote
1156 -- until the contract has been terminated.
1157 OKC_API.SET_MESSAGE (
1158 p_app_name => G_APP_NAME
1159 ,p_msg_name => 'OKL_AM_CONTRACT_STILL_ACTIVE'
1160 ,p_token1 => 'CONTRACT_NUMBER'
1161 ,p_token1_value => l_contract_number);
1162
1163 RAISE G_EXCEPTION_HALT_VALIDATION;
1164 END IF;
1165 */
1166
1167 -- see if vendor billing information exists
1168 l_taiv_rec.khr_id := p_qtev_rec.khr_id;
1169 okl_am_invoices_pvt.get_vendor_billing_info
1170 (px_taiv_rec => l_taiv_rec,
1171 x_return_status => x_return_status
1172 );
1173
1174 -- If error then above api will set the message, so exit now
1175 IF x_return_status <> okl_api.g_ret_sts_success THEN
1176 RAISE g_exception_halt_validation;
1177 END IF;
1178
1179 -- see if any quotes already exist for this asset return id
1180 OPEN l_qtev_csr (p_qtev_rec.art_id);
1181
1182 FETCH l_qtev_csr
1183 INTO l_quote_number;
1184
1185 CLOSE l_qtev_csr;
1186
1187 IF (l_quote_number <> 1) THEN
1188 -- Repurchase quote (QUOTE_NUMBER) already exists for this Asset.
1189 okc_api.set_message (p_app_name => g_app_name,
1190 p_msg_name => 'OKL_AM_REP_QUOTE_ALREADY_EXIST',
1191 p_token1 => 'QUOTE_NUMBER',
1192 p_token1_value => TO_CHAR (l_quote_number)
1193 );
1194 RAISE g_exception_halt_validation;
1195 END IF;
1196
1197 IF (is_debug_procedure_on) THEN
1198 okl_debug_pub.log_debug (g_level_procedure, l_module_name, 'End(-)');
1199 END IF;
1200 EXCEPTION
1201 WHEN g_exception_halt_validation THEN
1202 IF (l_clev_csr%ISOPEN) THEN
1203 CLOSE l_clev_csr;
1204 END IF;
1205
1206 IF (l_artv_csr%ISOPEN) THEN
1207 CLOSE l_artv_csr;
1208 END IF;
1209
1210 IF (l_qtev_csr%ISOPEN) THEN
1211 CLOSE l_qtev_csr;
1212 END IF;
1213
1214 IF (l_chr_csr%ISOPEN) THEN
1215 CLOSE l_chr_csr;
1216 END IF;
1217
1218 IF (l_acpt_csr%ISOPEN) THEN
1219 CLOSE l_acpt_csr;
1220 END IF;
1221
1222 -- SECHAWLA 22-JAN-03 Bug # 2762419 : Close the new cursor
1223 IF l_okclines_csr%ISOPEN THEN
1224 CLOSE l_okclines_csr;
1225 END IF;
1226
1227 x_return_status := okc_api.g_ret_sts_error;
1228 WHEN OTHERS THEN
1229 IF (l_clev_csr%ISOPEN) THEN
1230 CLOSE l_clev_csr;
1231 END IF;
1232
1233 IF (l_artv_csr%ISOPEN) THEN
1234 CLOSE l_artv_csr;
1235 END IF;
1236
1237 IF (l_qtev_csr%ISOPEN) THEN
1238 CLOSE l_qtev_csr;
1239 END IF;
1240
1241 IF (l_chr_csr%ISOPEN) THEN
1242 CLOSE l_chr_csr;
1243 END IF;
1244
1245 IF (l_acpt_csr%ISOPEN) THEN
1246 CLOSE l_acpt_csr;
1247 END IF;
1248
1249 -- SECHAWLA 22-JAN-03 Bug # 2762419 : Close the new cursor
1250 IF l_okclines_csr%ISOPEN THEN
1251 CLOSE l_okclines_csr;
1252 END IF;
1253
1254 okc_api.set_message (p_app_name => okc_api.g_app_name,
1255 p_msg_name => g_unexpected_error,
1256 p_token1 => g_sqlcode_token,
1257 p_token1_value => SQLCODE,
1258 p_token2 => g_sqlerrm_token,
1259 p_token2_value => SQLERRM
1260 );
1261 x_return_status := okc_api.g_ret_sts_unexp_error;
1262 END validate_quote;
1263
1264 -- Start of comments
1265 --
1266 -- Procedure Name : create_repurchase_quote
1267 -- Description :
1268 -- Business Rules :
1269 -- Parameters :
1270 -- Version : 1.0
1271 -- End of comments
1272 PROCEDURE create_repurchase_quote (
1273 p_api_version IN NUMBER,
1274 p_init_msg_list IN VARCHAR2,
1275 x_return_status OUT NOCOPY VARCHAR2,
1276 x_msg_count OUT NOCOPY NUMBER,
1277 x_msg_data OUT NOCOPY VARCHAR2,
1278 p_qtev_rec IN qtev_rec_type,
1279 p_tqlv_tbl IN tqlv_tbl_type,
1280 x_qtev_rec OUT NOCOPY qtev_rec_type,
1281 x_tqlv_tbl OUT NOCOPY tqlv_tbl_type
1282 ) AS
1283 i NUMBER := 0;
1284 l_contract_active_yn VARCHAR2 (200);
1285 l_contract_term_yn VARCHAR2 (200);
1286 l_partial_allowed_yn VARCHAR2 (200);
1287 lp_qtev_rec qtev_rec_type := p_qtev_rec;
1288 lx_qtev_rec qtev_rec_type;
1289 lp_tqlv_tbl tqlv_tbl_type := p_tqlv_tbl;
1290 lx_tqlv_tbl tqlv_tbl_type := p_tqlv_tbl;
1291 l_asset_tbl asset_tbl_type;
1292 lx_qpyv_tbl qpyv_tbl_type;
1293 l_quote_number NUMBER;
1294 l_api_version CONSTANT NUMBER := 1;
1295 l_api_name CONSTANT VARCHAR2 (30) := 'create_repurchase_quote';
1296 l_return_status VARCHAR2 (1) := okc_api.g_ret_sts_success;
1297 -- akrangan added for debug feature start
1298 l_module_name VARCHAR2 (500)
1299 := g_module_name || 'create_repurchase_quote';
1300 is_debug_exception_on BOOLEAN
1301 := okl_debug_pub.check_log_on (l_module_name, g_level_exception);
1302 is_debug_procedure_on BOOLEAN
1303 := okl_debug_pub.check_log_on (l_module_name, g_level_procedure);
1304 is_debug_statement_on BOOLEAN
1305 := okl_debug_pub.check_log_on (l_module_name, g_level_statement);
1306 -- akrangan added for debug feature end
1307 BEGIN
1308 IF (is_debug_procedure_on) THEN
1309 okl_debug_pub.log_debug (g_level_procedure,
1310 l_module_name,
1311 'Begin(+)'
1312 );
1313 END IF;
1314
1315 IF (is_debug_statement_on) THEN
1316 okl_debug_pub.log_debug (g_level_statement,
1317 l_module_name,
1318 'p_api_version :' || p_api_version
1319 );
1320 okl_debug_pub.log_debug (g_level_statement,
1321 l_module_name,
1322 'p_init_msg_list :' || p_init_msg_list
1323 );
1324 okl_debug_pub.log_debug (g_level_procedure,
1325 l_module_name,
1326 'p_qtev_rec.id : ' || p_qtev_rec.ID
1327 );
1328 okl_debug_pub.log_debug (g_level_procedure,
1329 l_module_name,
1330 'p_qtev_rec.qrs_code : '
1331 || p_qtev_rec.qrs_code
1332 );
1333 okl_debug_pub.log_debug (g_level_procedure,
1334 l_module_name,
1335 'p_qtev_rec.qst_code : '
1336 || p_qtev_rec.qst_code
1337 );
1338 okl_debug_pub.log_debug (g_level_procedure,
1339 l_module_name,
1340 'p_qtev_rec.consolidated_qte_id : '
1341 || p_qtev_rec.consolidated_qte_id
1342 );
1343 okl_debug_pub.log_debug (g_level_procedure,
1344 l_module_name,
1345 'p_qtev_rec.khr_id : ' || p_qtev_rec.khr_id
1346 );
1347 okl_debug_pub.log_debug (g_level_procedure,
1348 l_module_name,
1349 'p_qtev_rec.art_id : ' || p_qtev_rec.art_id
1350 );
1351 okl_debug_pub.log_debug (g_level_procedure,
1352 l_module_name,
1353 'p_qtev_rec.qtp_code : '
1354 || p_qtev_rec.qtp_code
1355 );
1356 okl_debug_pub.log_debug (g_level_procedure,
1357 l_module_name,
1358 'p_qtev_rec.trn_code : '
1359 || p_qtev_rec.trn_code
1360 );
1361 okl_debug_pub.log_debug (g_level_procedure,
1362 l_module_name,
1363 'p_qtev_rec.pdt_id : ' || p_qtev_rec.pdt_id
1364 );
1365 okl_debug_pub.log_debug (g_level_procedure,
1366 l_module_name,
1367 'p_qtev_rec.date_effective_from : '
1368 || p_qtev_rec.date_effective_from
1369 );
1370 okl_debug_pub.log_debug (g_level_procedure,
1371 l_module_name,
1372 'p_qtev_rec.quote_number : '
1373 || p_qtev_rec.quote_number
1374 );
1375 okl_debug_pub.log_debug (g_level_procedure,
1376 l_module_name,
1377 'p_qtev_rec.early_termination_yn : '
1378 || p_qtev_rec.early_termination_yn
1379 );
1380 okl_debug_pub.log_debug (g_level_procedure,
1381 l_module_name,
1382 'p_qtev_rec.partial_yn : '
1383 || p_qtev_rec.partial_yn
1384 );
1385 okl_debug_pub.log_debug (g_level_procedure,
1386 l_module_name,
1387 'p_qtev_rec.preproceeds_yn : '
1388 || p_qtev_rec.preproceeds_yn
1389 );
1390 okl_debug_pub.log_debug (g_level_procedure,
1391 l_module_name,
1392 'p_qtev_rec.summary_format_yn : '
1393 || p_qtev_rec.summary_format_yn
1394 );
1395 okl_debug_pub.log_debug (g_level_procedure,
1396 l_module_name,
1397 'p_qtev_rec.consolidated_yn : '
1398 || p_qtev_rec.consolidated_yn
1399 );
1400 okl_debug_pub.log_debug (g_level_procedure,
1401 l_module_name,
1402 'p_qtev_rec.date_requested : '
1403 || p_qtev_rec.date_requested
1404 );
1405 okl_debug_pub.log_debug (g_level_procedure,
1406 l_module_name,
1407 'p_qtev_rec.date_proposal : '
1408 || p_qtev_rec.date_proposal
1409 );
1410 okl_debug_pub.log_debug (g_level_procedure,
1411 l_module_name,
1412 'p_qtev_rec.date_effective_to : '
1413 || p_qtev_rec.date_effective_to
1414 );
1415 okl_debug_pub.log_debug (g_level_procedure,
1416 l_module_name,
1417 'p_qtev_rec.date_accepted : '
1418 || p_qtev_rec.date_accepted
1419 );
1420 okl_debug_pub.log_debug (g_level_procedure,
1421 l_module_name,
1422 'p_qtev_rec.payment_received_yn : '
1423 || p_qtev_rec.payment_received_yn
1424 );
1425 okl_debug_pub.log_debug (g_level_procedure,
1426 l_module_name,
1427 'p_qtev_rec.requested_by : '
1428 || p_qtev_rec.requested_by
1429 );
1430 okl_debug_pub.log_debug (g_level_procedure,
1431 l_module_name,
1432 'p_qtev_rec.approved_yn : '
1433 || p_qtev_rec.approved_yn
1434 );
1435 okl_debug_pub.log_debug (g_level_procedure,
1436 l_module_name,
1437 'p_qtev_rec.accepted_yn : '
1438 || p_qtev_rec.accepted_yn
1439 );
1440 okl_debug_pub.log_debug (g_level_procedure,
1441 l_module_name,
1442 'p_qtev_rec.org_id : ' || p_qtev_rec.org_id
1443 );
1444 okl_debug_pub.log_debug (g_level_procedure,
1445 l_module_name,
1446 'p_qtev_rec.purchase_amount : '
1447 || p_qtev_rec.purchase_amount
1448 );
1449 okl_debug_pub.log_debug (g_level_procedure,
1450 l_module_name,
1451 'p_qtev_rec.purchase_formula : '
1452 || p_qtev_rec.purchase_formula
1453 );
1454 okl_debug_pub.log_debug (g_level_procedure,
1455 l_module_name,
1456 'p_qtev_rec.asset_value : '
1457 || p_qtev_rec.asset_value
1458 );
1459 okl_debug_pub.log_debug (g_level_procedure,
1460 l_module_name,
1461 'p_qtev_rec.residual_value : '
1462 || p_qtev_rec.residual_value
1463 );
1464 okl_debug_pub.log_debug (g_level_procedure,
1465 l_module_name,
1466 'p_qtev_rec.unbilled_receivables : '
1467 || p_qtev_rec.unbilled_receivables
1468 );
1469 okl_debug_pub.log_debug (g_level_procedure,
1470 l_module_name,
1471 'p_qtev_rec.gain_loss : '
1472 || p_qtev_rec.gain_loss
1473 );
1474 okl_debug_pub.log_debug (g_level_procedure,
1475 l_module_name,
1476 'p_qtev_rec.PERDIEM_AMOUNT : '
1477 || p_qtev_rec.perdiem_amount
1478 );
1479 okl_debug_pub.log_debug (g_level_procedure,
1480 l_module_name,
1481 'p_qtev_rec.currency_code : '
1482 || p_qtev_rec.currency_code
1483 );
1484 okl_debug_pub.log_debug (g_level_procedure,
1485 l_module_name,
1486 'p_qtev_rec.currency_conversion_code : '
1487 || p_qtev_rec.currency_conversion_code
1488 );
1489 okl_debug_pub.log_debug (g_level_procedure,
1490 l_module_name,
1491 'p_qtev_rec.legal_entity_id : '
1492 || p_qtev_rec.legal_entity_id
1493 );
1494 okl_debug_pub.log_debug (g_level_procedure,
1495 l_module_name,
1496 'p_qtev_rec.repo_quote_indicator_yn : '
1497 || p_qtev_rec.repo_quote_indicator_yn
1498 );
1499 END IF;
1500
1501 --Check API version, initialize message list and create savepoint.
1502 l_return_status :=
1503 okl_api.start_activity (l_api_name,
1504 g_pkg_name,
1505 p_init_msg_list,
1506 l_api_version,
1507 p_api_version,
1508 '_PVT',
1509 x_return_status
1510 );
1511
1512 IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
1513 RAISE okl_api.g_exception_unexpected_error;
1514 ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
1515 RAISE okl_api.g_exception_error;
1516 END IF;
1517
1518 IF (is_debug_statement_on) THEN
1519 okl_debug_pub.log_debug (g_level_statement,
1520 l_module_name,
1521 'before validate_quote '
1522 );
1523 okl_debug_pub.log_debug (g_level_statement,
1524 l_module_name,
1525 'l_return_status: ' || l_return_status
1526 );
1527 END IF;
1528
1529 -- check if quote valid
1530 validate_quote
1531 (p_api_version => p_api_version,
1532 p_init_msg_list => p_init_msg_list,
1533 x_return_status => l_return_status,
1534 x_msg_count => x_msg_count,
1535 x_msg_data => x_msg_data,
1536 p_qtev_rec => lp_qtev_rec,
1537 --lx_qtev_rec, --code added by akrangan
1538 p_tqlv_tbl => lp_tqlv_tbl,
1539 p_call_flag => 'CREATE'
1540 );
1541
1542 IF (is_debug_statement_on) THEN
1543 okl_debug_pub.log_debug (g_level_statement,
1544 l_module_name,
1545 'after validate_quote '
1546 );
1547 okl_debug_pub.log_debug (g_level_statement,
1548 l_module_name,
1549 'l_return_status: ' || l_return_status
1550 );
1551 END IF;
1552
1553 IF (l_return_status = okc_api.g_ret_sts_unexp_error) THEN
1554 RAISE okc_api.g_exception_unexpected_error;
1555 ELSIF (l_return_status = okc_api.g_ret_sts_error) THEN
1556 RAISE okc_api.g_exception_error;
1557 END IF;
1558
1559 IF (is_debug_statement_on) THEN
1560 okl_debug_pub.log_debug (g_level_statement,
1561 l_module_name,
1562 'before set_quote_defaults '
1563 );
1564 okl_debug_pub.log_debug (g_level_statement,
1565 l_module_name,
1566 'l_return_status: ' || l_return_status
1567 );
1568 END IF;
1569
1570 -- set quote default values
1571 set_quote_defaults
1572 (px_qtev_rec => lp_qtev_rec,
1573 --lx_qtev_rec, --code added by akrangan
1574 x_return_status => l_return_status);
1575
1576 IF (is_debug_statement_on) THEN
1577 okl_debug_pub.log_debug (g_level_statement,
1578 l_module_name,
1579 'after set_quote_defaults '
1580 );
1581 okl_debug_pub.log_debug (g_level_statement,
1582 l_module_name,
1583 'l_return_status: ' || l_return_status
1584 );
1585 END IF;
1586
1587 IF (l_return_status = okc_api.g_ret_sts_unexp_error) THEN
1588 RAISE okc_api.g_exception_unexpected_error;
1589 ELSIF (l_return_status = okc_api.g_ret_sts_error) THEN
1590 RAISE okc_api.g_exception_error;
1591 END IF;
1592
1593 IF (is_debug_statement_on) THEN
1594 okl_debug_pub.log_debug
1595 (g_level_statement,
1596 l_module_name,
1597 'before OKL_TRX_QUOTES_PUB.insert_trx_quotes '
1598 );
1599 okl_debug_pub.log_debug (g_level_statement,
1600 l_module_name,
1601 'l_return_status: ' || l_return_status
1602 );
1603 END IF;
1604
1605 -- call the pub tapi insert
1606 okl_trx_quotes_pub.insert_trx_quotes
1607 (p_api_version => p_api_version,
1608 p_init_msg_list => p_init_msg_list,
1609 x_msg_count => x_msg_count,
1610 x_msg_data => x_msg_data,
1611 p_qtev_rec => lp_qtev_rec,
1612 --lx_qtev_rec, --code added by akrangan
1613 x_qtev_rec => lx_qtev_rec,
1614 x_return_status => l_return_status
1615 );
1616
1617 IF (is_debug_statement_on) THEN
1618 okl_debug_pub.log_debug
1619 (g_level_statement,
1620 l_module_name,
1621 'after OKL_TRX_QUOTES_PUB.insert_trx_quotes '
1622 );
1623 okl_debug_pub.log_debug (g_level_statement,
1624 l_module_name,
1625 'l_return_status: ' || l_return_status
1626 );
1627 END IF;
1628
1629 IF (l_return_status = okc_api.g_ret_sts_unexp_error) THEN
1630 RAISE okc_api.g_exception_unexpected_error;
1631 ELSIF (l_return_status = okc_api.g_ret_sts_error) THEN
1632 RAISE okc_api.g_exception_error;
1633 END IF;
1634
1635 IF (is_debug_statement_on) THEN
1636 okl_debug_pub.log_debug
1637 (g_level_statement,
1638 l_module_name,
1639 'before OKL_AM_PARTIES_PVT.create_partner_as_recipient '
1640 );
1641 okl_debug_pub.log_debug (g_level_statement,
1642 l_module_name,
1643 'l_return_status: ' || l_return_status
1644 );
1645 END IF;
1646
1647 -- Create quote parties
1648 okl_am_parties_pvt.create_partner_as_recipient
1649 (p_qtev_rec => lx_qtev_rec,
1650 x_qpyv_tbl => lx_qpyv_tbl,
1651 x_return_status => l_return_status
1652 );
1653
1654 IF (is_debug_statement_on) THEN
1655 okl_debug_pub.log_debug
1656 (g_level_statement,
1657 l_module_name,
1658 'after OKL_AM_PARTIES_PVT.create_partner_as_recipient '
1659 );
1660 okl_debug_pub.log_debug (g_level_statement,
1661 l_module_name,
1662 'l_return_status: ' || l_return_status
1663 );
1664 END IF;
1665
1666 IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
1667 RAISE okl_api.g_exception_unexpected_error;
1668 ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
1669 RAISE okl_api.g_exception_error;
1670 END IF;
1671
1672 -- set the asset table to be passed to the calculate quote api
1673 IF (lp_tqlv_tbl.COUNT > 0) THEN
1674 i := lp_tqlv_tbl.FIRST;
1675
1676 LOOP
1677 l_asset_tbl (i).p_asset_id := lp_tqlv_tbl (i).kle_id;
1678 EXIT WHEN (i = lp_tqlv_tbl.LAST);
1679 i := lp_tqlv_tbl.NEXT (i);
1680 END LOOP;
1681 ELSE -- No assets selected for quote
1682 okc_api.set_message (p_app_name => 'OKC',
1683 p_msg_name => g_required_value,
1684 p_token1 => g_col_name_token,
1685 p_token1_value => 'p_tqlv_tbl'
1686 );
1687 RAISE g_exception_halt_validation;
1688 END IF;
1689
1690 IF (is_debug_statement_on) THEN
1691 okl_debug_pub.log_debug
1692 (g_level_statement,
1693 l_module_name,
1694 'before OKL_AM_CALCULATE_QUOTE_PVT.generate '
1695 );
1696 okl_debug_pub.log_debug (g_level_statement,
1697 l_module_name,
1698 'l_return_status: ' || l_return_status
1699 );
1700 END IF;
1701
1702 -- call quote calculation api (pass assets tbl)
1703 -- this will insert quote lines
1704 okl_am_calculate_quote_pvt.generate (p_api_version => p_api_version,
1705 p_init_msg_list => p_init_msg_list,
1706 x_msg_count => x_msg_count,
1707 x_msg_data => x_msg_data,
1708 p_qtev_rec => lx_qtev_rec,
1709 p_asset_tbl => l_asset_tbl,
1710 x_tqlv_tbl => lx_tqlv_tbl,
1711 x_return_status => l_return_status
1712 );
1713
1714 IF (is_debug_statement_on) THEN
1715 okl_debug_pub.log_debug
1716 (g_level_statement,
1717 l_module_name,
1718 'after OKL_AM_CALCULATE_QUOTE_PVT.generate '
1719 );
1720 okl_debug_pub.log_debug (g_level_statement,
1721 l_module_name,
1722 'l_return_status: ' || l_return_status
1723 );
1724 END IF;
1725
1726 IF (l_return_status = okc_api.g_ret_sts_unexp_error) THEN
1727 RAISE okc_api.g_exception_unexpected_error;
1728 ELSIF (l_return_status = okc_api.g_ret_sts_error) THEN
1729 RAISE okc_api.g_exception_error;
1730 END IF;
1731
1732 -- set the return status and out variables
1733 x_return_status := l_return_status;
1734 x_qtev_rec := lx_qtev_rec;
1735 x_tqlv_tbl := lx_tqlv_tbl;
1736 -- end the transaction
1737 okc_api.end_activity (x_msg_count, x_msg_data);
1738
1739 IF (is_debug_procedure_on) THEN
1740 okl_debug_pub.log_debug (g_level_procedure, l_module_name, 'End(-)');
1741 END IF;
1742 EXCEPTION
1743 WHEN okc_api.g_exception_error THEN
1744 x_return_status :=
1745 okc_api.handle_exceptions (l_api_name,
1746 g_pkg_name,
1747 'OKC_API.G_RET_STS_ERROR',
1748 x_msg_count,
1749 x_msg_data,
1750 '_PVT'
1751 );
1752 WHEN okc_api.g_exception_unexpected_error THEN
1753 x_return_status :=
1754 okc_api.handle_exceptions (l_api_name,
1755 g_pkg_name,
1756 'OKC_API.G_RET_STS_UNEXP_ERROR',
1757 x_msg_count,
1758 x_msg_data,
1759 '_PVT'
1760 );
1761 WHEN OTHERS THEN
1762 x_return_status :=
1763 okc_api.handle_exceptions (l_api_name,
1764 g_pkg_name,
1765 'OTHERS',
1766 x_msg_count,
1767 x_msg_data,
1768 '_PVT'
1769 );
1770 END create_repurchase_quote;
1771
1772 -- Start of comments
1773 --
1774 -- Procedure Name : update_repurchase_quote
1775 -- Description :
1776 -- Business Rules :
1777 -- Parameters :
1778 -- Version : 1.0
1779 -- History : rmunjulu Sales_Tax_Enhancement Call the OKL Tax engine to calculate tax
1780 -- Also modified to not pass tax line for updates
1781 -- End of comments
1782 PROCEDURE update_repurchase_quote (
1783 p_api_version IN NUMBER,
1784 p_init_msg_list IN VARCHAR2,
1785 x_return_status OUT NOCOPY VARCHAR2,
1786 x_msg_count OUT NOCOPY NUMBER,
1787 x_msg_data OUT NOCOPY VARCHAR2,
1788 p_qtev_rec IN qtev_rec_type,
1789 p_tqlv_tbl IN tqlv_tbl_type,
1790 x_qtev_rec OUT NOCOPY qtev_rec_type,
1791 x_tqlv_tbl OUT NOCOPY tqlv_tbl_type
1792 ) AS
1793 l_db_date DATE;
1794 i NUMBER := 0;
1795 l_db_khr_id NUMBER;
1796 l_db_accepted_yn VARCHAR2 (3);
1797 l_db_date_effective_from DATE;
1798 l_db_date_effective_to DATE;
1799 l_db_qtp_code VARCHAR2 (200);
1800 lp_qtev_rec qtev_rec_type := p_qtev_rec;
1801 lx_qtev_rec qtev_rec_type := p_qtev_rec;
1802 lp_tqlv_tbl tqlv_tbl_type := p_tqlv_tbl;
1803 lx_tqlv_tbl tqlv_tbl_type := p_tqlv_tbl;
1804 l_quote_number NUMBER;
1805 l_quote_eff_days NUMBER;
1806 l_quote_eff_max_days NUMBER;
1807 l_max_quote_eff_to_dt DATE;
1808 l_api_version CONSTANT NUMBER := 1;
1809 l_api_name CONSTANT VARCHAR2 (30) := 'update_repurchase_quote';
1810 l_return_status VARCHAR2 (1) := okc_api.g_ret_sts_success;
1811 l_event_name VARCHAR2 (200)
1812 := 'oracle.apps.okl.am.repurchasequote';
1813 l_event_desc VARCHAR2 (2000);
1814 l_date_eff_from DATE;
1815 -- rmunjulu Sales_Tax_Enhancement
1816 llp_tqlv_tbl tqlv_tbl_type;
1817 j NUMBER;
1818 -- akrangan added for debug feature start
1819 l_module_name VARCHAR2 (500)
1820 := g_module_name || 'update_repurchase_quote';
1821 is_debug_exception_on BOOLEAN
1822 := okl_debug_pub.check_log_on (l_module_name, g_level_exception);
1823 is_debug_procedure_on BOOLEAN
1824 := okl_debug_pub.check_log_on (l_module_name, g_level_procedure);
1825 is_debug_statement_on BOOLEAN
1826 := okl_debug_pub.check_log_on (l_module_name, g_level_statement);
1827 -- akrangan added for debug feature end
1828 BEGIN
1829 IF (is_debug_procedure_on) THEN
1830 okl_debug_pub.log_debug (g_level_procedure,
1831 l_module_name,
1832 'Begin(+)'
1833 );
1834 END IF;
1835
1836 IF (is_debug_statement_on) THEN
1837 okl_debug_pub.log_debug (g_level_statement,
1838 l_module_name,
1839 'p_api_version :' || p_api_version
1840 );
1841 okl_debug_pub.log_debug (g_level_statement,
1842 l_module_name,
1843 'p_init_msg_list :' || p_init_msg_list
1844 );
1845 okl_debug_pub.log_debug (g_level_procedure,
1846 l_module_name,
1847 'p_qtev_rec.id : ' || p_qtev_rec.ID
1848 );
1849 okl_debug_pub.log_debug (g_level_procedure,
1850 l_module_name,
1851 'p_qtev_rec.qrs_code : '
1852 || p_qtev_rec.qrs_code
1853 );
1854 okl_debug_pub.log_debug (g_level_procedure,
1855 l_module_name,
1856 'p_qtev_rec.qst_code : '
1857 || p_qtev_rec.qst_code
1858 );
1859 okl_debug_pub.log_debug (g_level_procedure,
1860 l_module_name,
1861 'p_qtev_rec.consolidated_qte_id : '
1862 || p_qtev_rec.consolidated_qte_id
1863 );
1864 okl_debug_pub.log_debug (g_level_procedure,
1865 l_module_name,
1866 'p_qtev_rec.khr_id : ' || p_qtev_rec.khr_id
1867 );
1868 okl_debug_pub.log_debug (g_level_procedure,
1869 l_module_name,
1870 'p_qtev_rec.art_id : ' || p_qtev_rec.art_id
1871 );
1872 okl_debug_pub.log_debug (g_level_procedure,
1873 l_module_name,
1874 'p_qtev_rec.qtp_code : '
1875 || p_qtev_rec.qtp_code
1876 );
1877 okl_debug_pub.log_debug (g_level_procedure,
1878 l_module_name,
1879 'p_qtev_rec.trn_code : '
1880 || p_qtev_rec.trn_code
1881 );
1882 okl_debug_pub.log_debug (g_level_procedure,
1883 l_module_name,
1884 'p_qtev_rec.pdt_id : ' || p_qtev_rec.pdt_id
1885 );
1886 okl_debug_pub.log_debug (g_level_procedure,
1887 l_module_name,
1888 'p_qtev_rec.date_effective_from : '
1889 || p_qtev_rec.date_effective_from
1890 );
1891 okl_debug_pub.log_debug (g_level_procedure,
1892 l_module_name,
1893 'p_qtev_rec.quote_number : '
1894 || p_qtev_rec.quote_number
1895 );
1896 okl_debug_pub.log_debug (g_level_procedure,
1897 l_module_name,
1898 'p_qtev_rec.early_termination_yn : '
1899 || p_qtev_rec.early_termination_yn
1900 );
1901 okl_debug_pub.log_debug (g_level_procedure,
1902 l_module_name,
1903 'p_qtev_rec.partial_yn : '
1904 || p_qtev_rec.partial_yn
1905 );
1906 okl_debug_pub.log_debug (g_level_procedure,
1907 l_module_name,
1908 'p_qtev_rec.preproceeds_yn : '
1909 || p_qtev_rec.preproceeds_yn
1910 );
1911 okl_debug_pub.log_debug (g_level_procedure,
1912 l_module_name,
1913 'p_qtev_rec.summary_format_yn : '
1914 || p_qtev_rec.summary_format_yn
1915 );
1916 okl_debug_pub.log_debug (g_level_procedure,
1917 l_module_name,
1918 'p_qtev_rec.consolidated_yn : '
1919 || p_qtev_rec.consolidated_yn
1920 );
1921 okl_debug_pub.log_debug (g_level_procedure,
1922 l_module_name,
1923 'p_qtev_rec.date_requested : '
1924 || p_qtev_rec.date_requested
1925 );
1926 okl_debug_pub.log_debug (g_level_procedure,
1927 l_module_name,
1928 'p_qtev_rec.date_proposal : '
1929 || p_qtev_rec.date_proposal
1930 );
1931 okl_debug_pub.log_debug (g_level_procedure,
1932 l_module_name,
1933 'p_qtev_rec.date_effective_to : '
1934 || p_qtev_rec.date_effective_to
1935 );
1936 okl_debug_pub.log_debug (g_level_procedure,
1937 l_module_name,
1938 'p_qtev_rec.date_accepted : '
1939 || p_qtev_rec.date_accepted
1940 );
1941 okl_debug_pub.log_debug (g_level_procedure,
1942 l_module_name,
1943 'p_qtev_rec.payment_received_yn : '
1944 || p_qtev_rec.payment_received_yn
1945 );
1946 okl_debug_pub.log_debug (g_level_procedure,
1947 l_module_name,
1948 'p_qtev_rec.requested_by : '
1949 || p_qtev_rec.requested_by
1950 );
1951 okl_debug_pub.log_debug (g_level_procedure,
1952 l_module_name,
1953 'p_qtev_rec.approved_yn : '
1954 || p_qtev_rec.approved_yn
1955 );
1956 okl_debug_pub.log_debug (g_level_procedure,
1957 l_module_name,
1958 'p_qtev_rec.accepted_yn : '
1959 || p_qtev_rec.accepted_yn
1960 );
1961 okl_debug_pub.log_debug (g_level_procedure,
1962 l_module_name,
1963 'p_qtev_rec.org_id : ' || p_qtev_rec.org_id
1964 );
1965 okl_debug_pub.log_debug (g_level_procedure,
1966 l_module_name,
1967 'p_qtev_rec.purchase_amount : '
1968 || p_qtev_rec.purchase_amount
1969 );
1970 okl_debug_pub.log_debug (g_level_procedure,
1971 l_module_name,
1972 'p_qtev_rec.purchase_formula : '
1973 || p_qtev_rec.purchase_formula
1974 );
1975 okl_debug_pub.log_debug (g_level_procedure,
1976 l_module_name,
1977 'p_qtev_rec.asset_value : '
1978 || p_qtev_rec.asset_value
1979 );
1980 okl_debug_pub.log_debug (g_level_procedure,
1981 l_module_name,
1982 'p_qtev_rec.residual_value : '
1983 || p_qtev_rec.residual_value
1984 );
1985 okl_debug_pub.log_debug (g_level_procedure,
1986 l_module_name,
1987 'p_qtev_rec.unbilled_receivables : '
1988 || p_qtev_rec.unbilled_receivables
1989 );
1990 okl_debug_pub.log_debug (g_level_procedure,
1991 l_module_name,
1992 'p_qtev_rec.gain_loss : '
1993 || p_qtev_rec.gain_loss
1994 );
1995 okl_debug_pub.log_debug (g_level_procedure,
1996 l_module_name,
1997 'p_qtev_rec.PERDIEM_AMOUNT : '
1998 || p_qtev_rec.perdiem_amount
1999 );
2000 okl_debug_pub.log_debug (g_level_procedure,
2001 l_module_name,
2002 'p_qtev_rec.currency_code : '
2003 || p_qtev_rec.currency_code
2004 );
2005 okl_debug_pub.log_debug (g_level_procedure,
2006 l_module_name,
2007 'p_qtev_rec.currency_conversion_code : '
2008 || p_qtev_rec.currency_conversion_code
2009 );
2010 okl_debug_pub.log_debug (g_level_procedure,
2011 l_module_name,
2012 'p_qtev_rec.legal_entity_id : '
2013 || p_qtev_rec.legal_entity_id
2014 );
2015 okl_debug_pub.log_debug (g_level_procedure,
2016 l_module_name,
2017 'p_qtev_rec.repo_quote_indicator_yn : '
2018 || p_qtev_rec.repo_quote_indicator_yn
2019 );
2020 END IF;
2021
2022 --Check API version, initialize message list and create savepoint.
2023 l_return_status :=
2024 okl_api.start_activity (l_api_name,
2025 g_pkg_name,
2026 p_init_msg_list,
2027 l_api_version,
2028 p_api_version,
2029 '_PVT',
2030 x_return_status
2031 );
2032
2033 IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2034 RAISE okl_api.g_exception_unexpected_error;
2035 ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2036 RAISE okl_api.g_exception_error;
2037 END IF;
2038
2039 -- initialize return variables
2040 x_return_status := okc_api.g_ret_sts_success;
2041
2042 IF (is_debug_statement_on) THEN
2043 okl_debug_pub.log_debug (g_level_statement,
2044 l_module_name,
2045 'before get_db_values '
2046 );
2047 okl_debug_pub.log_debug (g_level_statement,
2048 l_module_name,
2049 'l_return_status: ' || l_return_status
2050 );
2051 END IF;
2052
2053 -- get the db values
2054 get_db_values (lp_qtev_rec.ID,
2055 l_db_accepted_yn,
2056 l_quote_number,
2057 l_db_date_effective_from,
2058 l_db_date_effective_to,
2059 l_db_khr_id,
2060 l_db_qtp_code,
2061 l_return_status
2062 );
2063
2064 IF (is_debug_statement_on) THEN
2065 okl_debug_pub.log_debug (g_level_statement,
2066 l_module_name,
2067 'after get_db_values '
2068 );
2069 okl_debug_pub.log_debug (g_level_statement,
2070 l_module_name,
2071 'l_return_status: ' || l_return_status
2072 );
2073 END IF;
2074
2075 IF (l_return_status = okc_api.g_ret_sts_unexp_error) THEN
2076 RAISE okc_api.g_exception_unexpected_error;
2077 ELSIF (l_return_status = okc_api.g_ret_sts_error) THEN
2078 RAISE okc_api.g_exception_error;
2079 END IF;
2080
2081 IF ( (lp_qtev_rec.khr_id IS NOT NULL)
2082 AND (p_qtev_rec.khr_id <> okc_api.g_miss_num)
2083 AND (l_db_khr_id <> p_qtev_rec.khr_id)
2084 ) THEN
2085 okc_api.set_message (p_app_name => 'OKC',
2086 p_msg_name => g_invalid_value,
2087 p_token1 => g_col_name_token,
2088 p_token1_value => 'kle_id'
2089 );
2090 RAISE g_exception_halt_validation;
2091 END IF;
2092
2093 -- get the sysdate
2094 get_sysdate (l_db_date);
2095
2096 -- IF qtp_code not null then check if valid
2097 IF lp_qtev_rec.qtp_code IS NOT NULL
2098 AND lp_qtev_rec.qtp_code <> okl_api.g_miss_char
2099 AND lp_qtev_rec.qtp_code NOT LIKE 'REP_STANDARD' THEN
2100 -- Please select a valid Quote Type.
2101 okl_api.set_message (p_app_name => okl_api.g_app_name,
2102 p_msg_name => 'OKL_AM_QTP_CODE_INVALID'
2103 );
2104 RAISE g_exception_halt_validation;
2105 -- if qtp_code is null then get from db and check
2106 ELSIF ( lp_qtev_rec.qtp_code IS NULL
2107 OR lp_qtev_rec.qtp_code = okl_api.g_miss_char
2108 )
2109 AND l_db_qtp_code NOT LIKE 'REP_STANDARD' THEN
2110 -- Please select a valid Quote Type.
2111 okl_api.set_message (p_app_name => okl_api.g_app_name,
2112 p_msg_name => 'OKL_AM_QTP_CODE_INVALID'
2113 );
2114 RAISE g_exception_halt_validation;
2115 END IF;
2116
2117 -- Check if date_effective_to is NULL
2118 IF lp_qtev_rec.date_effective_to IS NULL
2119 OR lp_qtev_rec.date_effective_to = okl_api.g_miss_date THEN
2120 -- You must enter a value for PROMPT
2121 okl_api.set_message
2122 (p_app_name => okl_api.g_app_name,
2123 p_msg_name => 'OKL_AM_REQ_FIELD_ERR',
2124 p_token1 => 'PROMPT',
2125 p_token1_value => okl_am_util_pvt.get_ak_attribute
2126 ('OKL_EFFECTIVE_TO')
2127 );
2128 RAISE g_exception_halt_validation;
2129 END IF;
2130
2131 -- Get the date_eff_from from database if not passed
2132 IF (lp_qtev_rec.date_effective_from IS NOT NULL)
2133 AND (lp_qtev_rec.date_effective_from <> okl_api.g_miss_date) THEN
2134 l_date_eff_from := lp_qtev_rec.date_effective_from;
2135 ELSE
2136 l_date_eff_from := l_db_date_effective_from;
2137 END IF;
2138
2139 -- Check date_eff_to > date_eff_from
2140 IF (l_date_eff_from IS NOT NULL)
2141 AND (l_date_eff_from <> okl_api.g_miss_date)
2142 AND (lp_qtev_rec.date_effective_to IS NOT NULL)
2143 AND (lp_qtev_rec.date_effective_to <> okl_api.g_miss_date) THEN
2144 IF (TRUNC (lp_qtev_rec.date_effective_to) <= TRUNC (l_date_eff_from)
2145 ) THEN
2146 -- Message : Date Effective To DATE_EFFECTIVE_TO cannot be before
2147 -- Date Effective From DATE_EFFECTIVE_FROM.
2148 okl_api.set_message
2149 (p_app_name => 'OKL',
2150 p_msg_name => 'OKL_AM_DATE_EFF_FROM_LESS_TO',
2151 p_token1 => 'DATE_EFFECTIVE_TO',
2152 p_token1_value => lp_qtev_rec.date_effective_to,
2153 p_token2 => 'DATE_EFFECTIVE_FROM',
2154 p_token2_value => l_date_eff_from
2155 );
2156 RAISE g_exception_halt_validation;
2157 END IF;
2158 END IF;
2159
2160 -- if date effective to changed then
2161 IF ( (lp_qtev_rec.date_effective_to IS NOT NULL)
2162 AND (lp_qtev_rec.date_effective_to <> okc_api.g_miss_date)
2163 AND (lp_qtev_rec.date_effective_to <> l_db_date_effective_to)
2164 ) THEN
2165 IF (is_debug_statement_on) THEN
2166 okl_debug_pub.log_debug (g_level_statement,
2167 l_module_name,
2168 'before quote_effectivity '
2169 );
2170 okl_debug_pub.log_debug (g_level_statement,
2171 l_module_name,
2172 'l_return_status: ' || l_return_status
2173 );
2174 END IF;
2175
2176 -- get the date eff to from rules
2177 quote_effectivity (p_contract_id => l_db_khr_id,
2178 x_quote_eff_days => l_quote_eff_days,
2179 x_quote_eff_max_days => l_quote_eff_max_days,
2180 x_return_status => l_return_status
2181 );
2182
2183 IF (is_debug_statement_on) THEN
2184 okl_debug_pub.log_debug (g_level_statement,
2185 l_module_name,
2186 'after quote_effectivity '
2187 );
2188 okl_debug_pub.log_debug (g_level_statement,
2189 l_module_name,
2190 'l_return_status: ' || l_return_status
2191 );
2192 END IF;
2193
2194 IF (l_return_status = okc_api.g_ret_sts_unexp_error) THEN
2195 RAISE okc_api.g_exception_unexpected_error;
2196 ELSIF (l_return_status = okc_api.g_ret_sts_error) THEN
2197 RAISE okc_api.g_exception_error;
2198 END IF;
2199
2200 l_max_quote_eff_to_dt :=
2201 l_db_date_effective_from + l_quote_eff_max_days;
2202
2203 -- if max quote eff to date is less than sysdate then error
2204 IF (TRUNC (l_max_quote_eff_to_dt) < TRUNC (l_db_date)) THEN
2205 --Quote QUOTE_NUMBER is already expired.
2206 okl_api.set_message (p_app_name => g_app_name,
2207 p_msg_name => 'OKL_AM_QUOTE_ALREADY_EXP',
2208 p_token1 => g_quote_number_token,
2209 p_token1_value => l_quote_number
2210 );
2211 RAISE g_exception_halt_validation;
2212 END IF;
2213
2214 -- if date is less than sysdate then error
2215 IF (TRUNC (lp_qtev_rec.date_effective_to) < TRUNC (l_db_date)) THEN
2216 --Please enter an Effective To date that occurs after the current system date.
2217 okl_api.set_message (p_app_name => g_app_name,
2218 p_msg_name => 'OKL_AM_DATE_EFF_TO_PAST'
2219 );
2220 RAISE g_exception_halt_validation;
2221 END IF;
2222
2223 -- if eff_to date > l_quote_eff_to_dt then err msg
2224 IF (TRUNC (lp_qtev_rec.date_effective_to) >
2225 TRUNC (l_max_quote_eff_to_dt)
2226 ) THEN
2227 --Please enter Effective To date before DATE_EFF_TO_MAX.
2228 okl_api.set_message (p_app_name => g_app_name,
2229 p_msg_name => 'OKL_AM_DATE_EFF_TO_ERR',
2230 p_token1 => g_max_date_token,
2231 p_token1_value => l_max_quote_eff_to_dt
2232 );
2233 RAISE g_exception_halt_validation;
2234 END IF;
2235 END IF;
2236
2237 -- Accepted YN Flag Validation
2238 IF ( (lp_qtev_rec.accepted_yn IS NOT NULL)
2239 AND (lp_qtev_rec.accepted_yn <> okc_api.g_miss_char)
2240 ) THEN
2241 -- if accepting now then check that quote is still effective
2242 IF (l_db_accepted_yn = g_no) AND (lp_qtev_rec.accepted_yn = g_yes) THEN
2243 -- If date_eff_to is not passed
2244 IF ( (lp_qtev_rec.date_effective_to IS NULL)
2245 OR (lp_qtev_rec.date_effective_to = okl_api.g_miss_date)
2246 ) THEN
2247 --Has quote expired
2248 IF TRUNC (l_db_date) > TRUNC (l_db_date_effective_to) THEN
2249 --Quote QUOTE_NUMBER is already expired.
2250 okl_api.set_message
2251 (p_app_name => g_app_name,
2252 p_msg_name => 'OKL_AM_QUOTE_ALREADY_EXP',
2253 p_token1 => g_quote_number_token,
2254 p_token1_value => l_quote_number
2255 );
2256 RAISE g_exception_halt_validation;
2257 ELSE
2258 -- Do Acceptance steps
2259 NULL;
2260 END IF;
2261 END IF;
2262 -- if already accepted and trying to change then raise error
2263 ELSIF (l_db_accepted_yn = g_yes)
2264 AND (lp_qtev_rec.accepted_yn = g_no) THEN
2265 --Quote QUOTE_NUMBER is already accepted.
2266 okl_api.set_message (p_app_name => g_app_name,
2267 p_msg_name => 'OKL_AM_QUOTE_ALREADY_ACCP',
2268 p_token1 => g_quote_number_token,
2269 p_token1_value => l_quote_number
2270 );
2271 RAISE g_exception_halt_validation;
2272 END IF;
2273 ELSIF (lp_qtev_rec.accepted_yn IS NULL) THEN
2274 lp_qtev_rec.accepted_yn := g_no;
2275 END IF;
2276
2277 -- Set the qst_code to ACCEPTED if the quote is accepted now
2278 IF (lp_qtev_rec.accepted_yn = g_yes AND l_db_accepted_yn = g_no) THEN
2279 lp_qtev_rec.qst_code := 'ACCEPTED';
2280 lp_qtev_rec.date_accepted := l_db_date;
2281 END IF;
2282
2283 IF (is_debug_statement_on) THEN
2284 okl_debug_pub.log_debug
2285 (g_level_statement,
2286 l_module_name,
2287 'before OKL_TRX_QUOTES_PUB.update_trx_quotes'
2288 );
2289 okl_debug_pub.log_debug (g_level_statement,
2290 l_module_name,
2291 'l_return_status: ' || l_return_status
2292 );
2293 END IF;
2294
2295 -- update the quote
2296 okl_trx_quotes_pub.update_trx_quotes
2297 (p_api_version => p_api_version,
2298 p_init_msg_list => p_init_msg_list,
2299 x_return_status => l_return_status,
2300 x_msg_count => x_msg_count,
2301 x_msg_data => x_msg_data,
2302 p_qtev_rec => lp_qtev_rec,
2303 x_qtev_rec => lx_qtev_rec
2304 );
2305
2306 IF (is_debug_statement_on) THEN
2307 okl_debug_pub.log_debug
2308 (g_level_statement,
2309 l_module_name,
2310 'after OKL_TRX_QUOTES_PUB.update_trx_quotes'
2311 );
2312 okl_debug_pub.log_debug (g_level_statement,
2313 l_module_name,
2314 'l_return_status: ' || l_return_status
2315 );
2316 END IF;
2317
2318 IF (l_return_status = okc_api.g_ret_sts_unexp_error) THEN
2319 RAISE okc_api.g_exception_unexpected_error;
2320 ELSIF (l_return_status = okc_api.g_ret_sts_error) THEN
2321 RAISE okc_api.g_exception_error;
2322 END IF;
2323
2324 -- update lines if necessary
2325 IF (lp_tqlv_tbl.COUNT > 0) THEN
2326 -- rmunjulu Sales_Tax_Enhancement
2327 j := 1;
2328
2329 -- rmunjulu Sales_Tax_Enhancement -- Do not take tax quote line for update as that does not have the ID
2330 FOR i IN lp_tqlv_tbl.FIRST .. lp_tqlv_tbl.LAST
2331 LOOP
2332 IF ( lp_tqlv_tbl (i).ID IS NOT NULL
2333 AND lp_tqlv_tbl (i).ID <> okl_api.g_miss_num
2334 )
2335 AND lp_tqlv_tbl (i).qlt_code <> 'AMCTAX' THEN
2336 llp_tqlv_tbl (j) := lp_tqlv_tbl (i);
2337 j := j + 1;
2338 END IF;
2339 END LOOP;
2340
2341 IF (is_debug_statement_on) THEN
2342 okl_debug_pub.log_debug
2343 (g_level_statement,
2344 l_module_name,
2345 'before OKL_TXL_QUOTE_LINES_PUB.update_txl_quote_lines'
2346 );
2347 okl_debug_pub.log_debug (g_level_statement,
2348 l_module_name,
2349 'l_return_status: ' || l_return_status
2350 );
2351 END IF;
2352
2353 -- update the quote lines
2354 okl_txl_quote_lines_pub.update_txl_quote_lines
2355 (p_api_version => p_api_version,
2356 p_init_msg_list => p_init_msg_list,
2357 x_return_status => l_return_status,
2358 x_msg_count => x_msg_count,
2359 x_msg_data => x_msg_data,
2360 p_tqlv_tbl => llp_tqlv_tbl,
2361 --rmunjulu Sales_Tax_Enhancement
2362 x_tqlv_tbl => lx_tqlv_tbl
2363 );
2364
2365 IF (is_debug_statement_on) THEN
2366 okl_debug_pub.log_debug
2367 (g_level_statement,
2368 l_module_name,
2369 'after OKL_TXL_QUOTE_LINES_PUB.update_txl_quote_lines'
2370 );
2371 okl_debug_pub.log_debug (g_level_statement,
2372 l_module_name,
2373 'l_return_status: ' || l_return_status
2374 );
2375 END IF;
2376
2377 IF (l_return_status = okc_api.g_ret_sts_unexp_error) THEN
2378 RAISE okc_api.g_exception_unexpected_error;
2379 ELSIF (l_return_status = okc_api.g_ret_sts_error) THEN
2380 RAISE okc_api.g_exception_error;
2381 END IF;
2382 END IF;
2383
2384 IF (is_debug_statement_on) THEN
2385 okl_debug_pub.log_debug
2386 (g_level_statement,
2387 l_module_name,
2388 'after OKL_TRX_QUOTES_PUB.update_trx_quotes'
2389 );
2390 okl_debug_pub.log_debug (g_level_statement,
2391 l_module_name,
2392 'l_return_status: ' || l_return_status
2393 );
2394 END IF;
2395
2396 -- rmunjulu Sales_Tax_Enhancement
2397 -- Call the new OKL Tax engine to RECALCULATE tax for all quote lines
2398 IF (is_debug_statement_on) THEN
2399 okl_debug_pub.log_debug
2400 (g_level_statement,
2401 l_module_name,
2402 'before OKL_PROCESS_SALES_TAX_PUB.calculate_sales_tax'
2403 );
2404 okl_debug_pub.log_debug (g_level_statement,
2405 l_module_name,
2406 'l_return_status: ' || l_return_status
2407 );
2408 END IF;
2409
2410 okl_process_sales_tax_pub.calculate_sales_tax
2411 (p_api_version => l_api_version,
2412 p_init_msg_list => okl_api.g_false,
2413 x_return_status => l_return_status,
2414 x_msg_count => x_msg_count,
2415 x_msg_data => x_msg_data,
2416 p_source_trx_id => lp_qtev_rec.ID,
2417 -- TRX_ID is QUOTE_ID
2418 p_source_trx_name => 'Estimated Billing',
2419 p_source_table => 'OKL_TRX_QUOTES_B'
2420 ); -- SOURCE_TABLE IS OKL_TRX_QUOTES_B
2421
2422 IF (is_debug_statement_on) THEN
2423 okl_debug_pub.log_debug
2424 (g_level_statement,
2425 l_module_name,
2426 'after OKL_PROCESS_SALES_TAX_PUB.calculate_sales_tax'
2427 );
2428 okl_debug_pub.log_debug (g_level_statement,
2429 l_module_name,
2430 'l_return_status: ' || l_return_status
2431 );
2432 END IF;
2433
2434 IF (l_return_status <> okl_api.g_ret_sts_success) THEN
2435 -- Tax Processing failed.
2436 okl_api.set_message (p_app_name => g_app_name,
2437 p_msg_name => 'OKL_AM_PROCESS_TAX_ERR'
2438 );
2439 END IF;
2440
2441 -- raise exception if error
2442 IF (l_return_status = okc_api.g_ret_sts_unexp_error) THEN
2443 RAISE okc_api.g_exception_unexpected_error;
2444 ELSIF (l_return_status = okc_api.g_ret_sts_error) THEN
2445 RAISE okc_api.g_exception_error;
2446 END IF;
2447
2448 -- raise repurchase quote workflow if the quote is accepted now
2449 IF (lp_qtev_rec.accepted_yn = g_yes AND l_db_accepted_yn = g_no) THEN
2450 -- Raise Repurchase Quote WorkFlow event
2451 okl_am_wf.raise_business_event (p_transaction_id => lp_qtev_rec.ID,
2452 p_event_name => l_event_name
2453 );
2454 -- Get the event name
2455 l_event_desc :=
2456 okl_am_util_pvt.get_wf_event_name
2457 (p_wf_process_type => 'OKLAMRAC',
2458 p_wf_process_name => 'REPUR_QTE_PROC',
2459 x_return_status => l_return_status
2460 );
2461
2462 -- raise exception if error
2463 IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2464 RAISE okc_api.g_exception_unexpected_error;
2465 ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2466 RAISE okc_api.g_exception_error;
2467 END IF;
2468
2469 -- Set message on stack
2470 -- Workflow event EVENT_NAME has been requested.
2471 okl_api.set_message (p_app_name => g_app_name,
2472 p_msg_name => 'OKL_AM_WF_EVENT_MSG',
2473 p_token1 => 'EVENT_NAME',
2474 p_token1_value => l_event_desc
2475 );
2476 -- Save message from stack into transaction message table
2477 okl_am_util_pvt.process_messages
2478 (p_trx_source_table => 'OKL_TRX_QUOTES_V',
2479 p_trx_id => lp_qtev_rec.ID,
2480 x_return_status => l_return_status
2481 );
2482
2483 -- raise exception if error
2484 IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2485 RAISE okc_api.g_exception_unexpected_error;
2486 ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2487 RAISE okc_api.g_exception_error;
2488 END IF;
2489 END IF;
2490
2491 -- set the return status and out variables
2492 x_return_status := l_return_status;
2493 x_qtev_rec := lx_qtev_rec;
2494 x_tqlv_tbl := lx_tqlv_tbl;
2495 -- end the transaction
2496 okc_api.end_activity (x_msg_count, x_msg_data);
2497
2498 IF (is_debug_procedure_on) THEN
2499 okl_debug_pub.log_debug (g_level_procedure, l_module_name, 'End(-)');
2500 END IF;
2501 EXCEPTION
2502 WHEN g_exception_halt_validation THEN
2503 x_return_status := okc_api.g_ret_sts_error;
2504 WHEN okc_api.g_exception_error THEN
2505 x_return_status :=
2506 okc_api.handle_exceptions (l_api_name,
2507 g_pkg_name,
2508 'OKC_API.G_RET_STS_ERROR',
2509 x_msg_count,
2510 x_msg_data,
2511 '_PVT'
2512 );
2513 WHEN okc_api.g_exception_unexpected_error THEN
2514 x_return_status :=
2515 okc_api.handle_exceptions (l_api_name,
2516 g_pkg_name,
2517 'OKC_API.G_RET_STS_UNEXP_ERROR',
2518 x_msg_count,
2519 x_msg_data,
2520 '_PVT'
2521 );
2522 WHEN OTHERS THEN
2523 x_return_status :=
2524 okc_api.handle_exceptions (l_api_name,
2525 g_pkg_name,
2526 'OTHERS',
2527 x_msg_count,
2528 x_msg_data,
2529 '_PVT'
2530 );
2531 END update_repurchase_quote;
2532 END okl_am_repurchase_asset_pvt;