[Home] [Help]
PACKAGE BODY: APPS.OKL_AM_QA_DATA_INTEGRITY_PVT
Source
1 PACKAGE BODY okl_am_qa_data_integrity_pvt AS
2 /* $Header: OKLRAMQB.pls 120.3.12010000.4 2008/12/19 00:04:08 rbruno ship $ */
3
4
5 -- Start of comments
6 -- The list of AM Packges which use rules:
7 -- "Validated" means that a rule is validated in this API
8 -- "Not Validated" means that a rule is optional and does not need to be checked
9 --
10 -- OKLRAMIB.pls - OKL_AM_INVOICES_PVT
11 -- Validated: Program Vendor Billing Info - Only for Repurchase Agreements
12 -- Validated: Lease Vendor Billing Info - Warnings only if rule setup is not correct
13 -- Validated: Security Deposit Disposition - If rule exist, check correct dates
14 -- OKLRAMPB.pls - OKL_AM_PARTIES_PVT
15 -- Validated: Termination Quote Recipients - Warnings only if rule setup is not correct
16 -- Validated: Repurchase Quote Recipient - Only for Repurchase Agreements, Not a Rule
17 -- OKLRAMUB.pls - OKL_AM_UTIL_PVT
18 -- Validated: Bill To Address - Mandatory; non-AM rule
19 -- OKLRARRB.pls - OKL_AM_ASSET_RETURN_PVT
20 -- Not Validated: Floor and Item Price Formulas - Optional
21 -- Not Validated: Repurchase Agreement Flag - Optional
22 -- Not Validated: 3rd Party Custodian - Optional (non-AM rule)
23 -- OKLRCQTB.pls - OKL_AM_CREATE_QUOTE_PVT
24 -- Not Validated: Early Termination Allowed - Optional
25 -- Not Validated: Partial Termination Allowed - Optional
26 -- Validated: Term Status - Mandatory
27 -- Validated: Quote Effectivity - Mandatory plus check correct values
28 -- OKLRCQUB.pls - OKL_AM_CALCULATE_QUOTE_PVT
29 -- Not Validated: Top Repurchase Formula - Optional (3 operands)
30 -- Not Validated: Top Early Termination Formula - Optional (8 operands)
31 -- Not Validated: Top EOT Termination Formula - Optional (8 operands)
32 -- Not Validated Top Early Purch. Option Formula - Optional (1 operand)
33 -- Validated: Top EOT Purchase Option Formula - Mandatory (1 operand)
34 -- Validated: Formula Operands - Optional, but check correct setup
35 -- OKLRLTNB.pls - OKL_AM_LEASE_TRMNT_PVT
36 -- Not Validated: Evegreen Eligibility - Optional; non-AM rule
37 -- Not Validated: Tax Owner - Optional; currently not used; non-AM rule
38 -- OKLRPTFB.pls - OKL_AM_CONTRACT_PRTFL_PVT
39 -- Validated: Budget Amount - Mandatory plus check correct setup
40 -- Validated: Strategy - Mandatory
41 -- Validated: Assignment Group - Mandatory
42 -- Validated: Execution Due Date - Mandatory
43 -- Not Validated: Approval Requirement - Optional
44 -- OKLRQWFB.pls - OKL_AM_QUOTES_WF
45 -- Not Validated: Bill of Sale - Optional
46 -- Not Validated: Title Filing - Optional
47 -- Not Validated: Partial Quote - Optional
48 -- Validated: Gain and Loss - Optional, but check correct setup
49 -- OKLRRQUB.pls - OKL_AM_REPURCHASE_ASSET_PVT
50 -- Validated: Quote Effectivity - Mandatory, validated in CREATE_QUOTE
51 -- OKLRRWFB.pls - OKL_AM_ASSET_RETURN_WF
52 -- Not Validated: 3rd Party Custodian - Optional; non-AM rule
53 -- OKLRTATB.pls - OKL_AM_AMORTIZE_PVT
54 -- Not Validated: Tax Owner - Optional; currently not used; non-AM rule
55 --
56 -- End of comments
57
58 -- GLOBAL VARIABLES
59 G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
60 G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
61 G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
62 G_MODULE_NAME CONSTANT VARCHAR2(500) :=
63 'okl.am.plsql.okl_am_qa_data_integrity_pvt.';
64
65 ---------------------------------------------------------------------------
66 -- GLOBAL DATASTRUCTURES
67 ---------------------------------------------------------------------------
68
69 SUBTYPE taiv_rec_type IS okl_trx_ar_invoices_pub.taiv_rec_type;
70 SUBTYPE rulv_rec_type IS okl_rule_pub.rulv_rec_type;
71 SUBTYPE qtev_rec_type IS okl_trx_quotes_pub.qtev_rec_type;
72 SUBTYPE qpyv_tbl_type IS okl_quote_parties_pub.qpyv_tbl_type;
73
74
75 -- Start of comments
76 --
77 -- Procedure Name : get_repurchase_agreement
78 -- Description : Get the repurchase agreement Y/N flag
79 -- Note : Copied from OKL_AM_ASSET_RETURN_PVT
80 -- Business Rules :
81 -- Parameters : Contract Id
82 -- Version : 1.0
83 -- End of comments
84
85 FUNCTION get_repurchase_agreement (
86 p_chr_id IN NUMBER)
87 RETURN VARCHAR2 AS
88
89 --Check if Vendor program is attached to the Lease contract
90 CURSOR l_khr_csr (cp_chr_id IN NUMBER) IS
91 SELECT khr.khr_id prog_khr_id
92 FROM okl_k_headers khr
93 WHERE khr.id = cp_chr_id;
94
95 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
96 l_rep_agreement_yn VARCHAR2(1) := 'N';
97 l_program_khr_id NUMBER := NULL;
98 l_rulv_rec rulv_rec_type;
99 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'get_repurchase_agreement';
100 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
101 G_LEVEL_EXCEPTION);
102 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
103 G_LEVEL_PROCEDURE);
104 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
105 G_LEVEL_STATEMENT);
106
107 BEGIN
108 IF (is_debug_procedure_on) THEN
109 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
110 END IF;
111 IF (is_debug_statement_on) THEN
112 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
113 END IF;
114
115 OPEN l_khr_csr (p_chr_id);
116 FETCH l_khr_csr INTO l_program_khr_id;
117 CLOSE l_khr_csr;
118
119 IF l_program_khr_id IS NOT NULL THEN
120
121 IF (is_debug_statement_on) THEN
122 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
123 END IF;
124 okl_am_util_pvt.get_rule_record(
125 p_rgd_code => 'AMREPQ',
126 p_rdf_code => 'AMARQC',
127 p_chr_id => p_chr_id,
128 p_cle_id => NULL,
129 p_message_yn => FALSE,
130 x_rulv_rec => l_rulv_rec,
131 x_return_status => l_return_status);
132 IF (is_debug_statement_on) THEN
133 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
134 END IF;
135
136 IF l_return_status = OKL_API.G_RET_STS_SUCCESS THEN
137 IF l_rulv_rec.rule_information1 IS NOT NULL
138 AND l_rulv_rec.rule_information1 <> OKL_API.G_MISS_CHAR
139 THEN
140 l_rep_agreement_yn :=
141 l_rulv_rec.rule_information1;
142 END IF;
143 END IF;
144 END IF;
145 IF (is_debug_procedure_on) THEN
146 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
147 END IF;
148 IF (is_debug_statement_on) THEN
149 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'Returning l_rep_agreement_yn : ' || l_rep_agreement_yn);
150 END IF;
151
152 RETURN l_rep_agreement_yn;
153
154 EXCEPTION
155
156 WHEN OTHERS THEN
157 IF (is_debug_exception_on) THEN
158 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
159 END IF;
160
161 -- close open cursors
162 IF l_khr_csr%ISOPEN THEN
163 CLOSE l_khr_csr;
164 END IF;
165
166 -- store SQL error message on message stack for caller
167 OKL_API.SET_MESSAGE (
168 p_app_name => G_APP_NAME
169 ,p_msg_name => G_UNEXPECTED_ERROR
170 ,p_token1 => G_SQLCODE_TOKEN
171 ,p_token1_value => sqlcode
172 ,p_token2 => G_SQLERRM_TOKEN
173 ,p_token2_value => sqlerrm);
174
175 RETURN 'N';
176
177 END get_repurchase_agreement;
178
179
180 -- Start of comments
181 --
182 -- Procedure Name : check_quote_effectivity
183 -- Description : Check correct values entered for Quote Effectivity rules
184 -- Business Rules :
185 -- Parameters : Quote Effective Days, Quote Maximum Effective Days
186 -- Version : 1.0
187 -- End of comments
188
189 PROCEDURE check_quote_effectivity (
190 p_rule_info1 IN VARCHAR2,
191 p_rule_info2 IN VARCHAR2,
192 x_return_status OUT NOCOPY VARCHAR2) IS
193
194 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
195 l_quote_eff_days NUMBER := NULL;
196 l_quote_eff_max_days NUMBER := NULL;
197 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_quote_effectivity';
198 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
199 G_LEVEL_EXCEPTION);
200 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
201 G_LEVEL_PROCEDURE);
202 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
203 G_LEVEL_STATEMENT);
204
205 BEGIN
206 IF (is_debug_procedure_on) THEN
207 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
208 END IF;
209 IF (is_debug_statement_on) THEN
210 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rule_info1: '||p_rule_info1);
211 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rule_info2: '||p_rule_info2);
212 END IF;
213
214 IF p_rule_info1 IS NOT NULL
215 AND p_rule_info1 <> G_MISS_CHAR THEN
216 l_quote_eff_days := to_number (p_rule_info1);
217 ELSE
218 l_return_status := OKL_API.G_RET_STS_ERROR;
219 OKC_API.SET_MESSAGE (
220 p_app_name => G_OKC_APP_NAME,
221 p_msg_name => G_REQUIRED_VALUE,
222 p_token1 => G_COL_NAME_TOKEN,
223 p_token1_value => 'Quote Effective Days');
224 END IF;
225
226 IF l_quote_eff_days <= 0 THEN
227 l_return_status := OKL_API.G_RET_STS_ERROR;
228 OKC_API.SET_MESSAGE (
229 p_app_name => G_OKC_APP_NAME,
230 p_msg_name => G_INVALID_VALUE,
231 p_token1 => G_COL_NAME_TOKEN,
232 p_token1_value => 'Quote Effective Days');
233 END IF;
234
235 IF p_rule_info2 IS NOT NULL
236 AND p_rule_info2 <> G_MISS_CHAR THEN
237 l_quote_eff_max_days := p_rule_info2;
238 ELSE
239 l_return_status := OKL_API.G_RET_STS_ERROR;
240 OKC_API.SET_MESSAGE (
241 p_app_name => G_OKC_APP_NAME,
242 p_msg_name => G_REQUIRED_VALUE,
243 p_token1 => G_COL_NAME_TOKEN,
244 p_token1_value => 'Quote Effective Maximum Days');
245 END IF;
246
247 IF l_quote_eff_max_days <= 0 THEN
248 l_return_status := OKL_API.G_RET_STS_ERROR;
249 OKC_API.SET_MESSAGE (
250 p_app_name => G_OKC_APP_NAME,
251 p_msg_name => G_INVALID_VALUE,
252 p_token1 => G_COL_NAME_TOKEN,
253 p_token1_value => 'Quote Effective Maximum Days');
254 END IF;
255
256 IF l_quote_eff_days > l_quote_eff_max_days THEN
257
258 l_return_status := OKL_API.G_RET_STS_ERROR;
259 -- Please enter a value in Column COL_NAME1
260 -- that is less than the value of Column COL_NAME2.
261 OKC_API.SET_MESSAGE (
262 p_app_name => G_APP_NAME
263 ,p_msg_name => 'OKL_LESS_THAN'
264 ,p_token1 => 'COL_NAME1'
265 ,p_token1_value => 'Quote Effective Days'
266 ,p_token2 => 'COL_NAME2'
267 ,p_token2_value => 'Quote Effective Maximum Days');
268
269 END IF;
270
271 x_return_status := l_return_status;
272 IF (is_debug_procedure_on) THEN
273 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
274 END IF;
275
276 EXCEPTION
277
278 WHEN OTHERS THEN
279 IF (is_debug_exception_on) THEN
280 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
281 END IF;
282
283 -- store SQL error message on message stack for caller
284 OKL_API.SET_MESSAGE (
285 p_app_name => G_APP_NAME
286 ,p_msg_name => G_UNEXPECTED_ERROR
287 ,p_token1 => G_SQLCODE_TOKEN
288 ,p_token1_value => sqlcode
289 ,p_token2 => G_SQLERRM_TOKEN
290 ,p_token2_value => sqlerrm);
291
292 -- notify caller of an UNEXPECTED error
293 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
294
295 END check_quote_effectivity;
296
297
298 -- Start of comments
299 --
300 -- Procedure Name : check_rule_value
301 -- Description : Check Formula/Amount type rules are setup correctly
302 -- Business Rules :
303 -- Parameters : Contract Id, Rule Group Code, Rule Code
304 -- Version : 1.0
305 -- 09-02-2008 rbruno bug 6471193, added optional new parameter p_option_type and
306 --logic to handle invalid
307 -- combinations of options under TC "End of Term Purchase Option, Contract"
308 -- 11-13-2008 rbruno bug 7569441, added logic to proper handle purchase option values for
309 -- "Fair Market Value" purchase option
310 -- End of comments
311
312 PROCEDURE check_rule_value (
313 p_calc_option IN VARCHAR2,
314 p_fixed_value IN VARCHAR2,
315 p_formula_name IN VARCHAR2,
316 p_option_type IN VARCHAR2 := G_MISS_CHAR, -- rbruno
317 p_rgd_code IN VARCHAR2,
318 p_rdf_code IN VARCHAR2,
319 x_return_status OUT NOCOPY VARCHAR2) IS
320
321 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
322 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_rule_value';
323 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
324 G_LEVEL_EXCEPTION);
325 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
326 G_LEVEL_PROCEDURE);
327 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
328 G_LEVEL_STATEMENT);
329
330 BEGIN
331 IF (is_debug_procedure_on) THEN
332 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
333 END IF;
334 IF (is_debug_statement_on) THEN
335 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_calc_option: '||p_calc_option);
336 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_fixed_value: '||p_fixed_value);
337 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_formula_name: '||p_formula_name);
338 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgd_code: '||p_rgd_code);
339 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rdf_code: '||p_rdf_code);
340 END IF;
341
342
343
344 -- begin rbruno bug fix 6471193
345 IF (NVL(p_rdf_code,G_MISS_CHAR) = 'AMBPOC') and p_option_type <> G_MISS_CHAR THEN
346
347
348 -- If purchase option type = $1 Buyout
349 -- then Purchase Option :Use Fixed Amount
350 -- Purchase Option Amount :1
351
352 IF p_option_type = '$1BO'
353 AND p_calc_option = 'USE_FIXED_AMOUNT'
354 AND p_fixed_value = '1' AND nvl(p_formula_name,G_MISS_CHAR) =
355 G_MISS_CHAR THEN
356
357 l_return_status := OKL_API.G_RET_STS_SUCCESS;
358
359 -- If purchase option type = Fair Market Value
360 -- then Purchase Option :Use Fixed Amount or Use Formula
361 -- Purchase Option Amount :any amount except zero if Purchase
362 -- Option=Use Fixed Amount
363
364
365 ELSIF p_option_type = 'FMV' THEN
366 -- rbruno 7569441 change begin
367 -- rbruno 7591732 --commented if
368 --If (p_calc_option = 'USE_FIXED_AMOUNT' AND nvl(p_fixed_value,G_MISS_NUM) <> G_MISS_NUM AND nvl(p_formula_name,G_MISS_CHAR) = G_MISS_CHAR)
369 -- OR (p_calc_option = 'USE_FORMULA' AND nvl(p_formula_name,G_MISS_CHAR) <> G_MISS_CHAR AND nvl(p_fixed_value,G_MISS_NUM) = G_MISS_NUM) THEN
370
371
372 -- rbruno 7591732 change begin
373 If (p_calc_option = 'NOT_APPLICABLE' AND nvl(p_fixed_value,G_MISS_NUM) = G_MISS_NUM AND nvl(p_formula_name,G_MISS_CHAR) = G_MISS_CHAR) THEN
374 -- rbruno 7591732 change end
375 l_return_status := OKL_API.G_RET_STS_SUCCESS;
376
377 Else
378
379 okl_am_util_pvt.set_invalid_rule_message (
380 p_rgd_code => p_rgd_code,
381 p_rdf_code => p_rdf_code);
382
383 l_return_status := OKL_API.G_RET_STS_ERROR;
384
385 END IF;
386 -- rbruno 7569441 change end
387
388 -- If purchase option type = Fixed Purchase Option
389 -- then Purchase Option :Use Fixed Amount
390 -- Purchase Option Amount : Any amount except zero
391
392
393 ELSIF p_option_type = 'FPO'
394 AND p_calc_option = 'USE_FIXED_AMOUNT'
395 AND to_number(NVL (p_fixed_value,'0')) > 0 AND
396 nvl(p_formula_name,G_MISS_CHAR) = G_MISS_CHAR THEN
397
398 l_return_status := OKL_API.G_RET_STS_SUCCESS;
399
400 -- If purchase option type = None
401 -- then Purchase Option :Not Applicable
402
403 ELSIF p_option_type = 'NONE'
404 AND p_calc_option = 'NOT_APPLICABLE' THEN
405
406 l_return_status := OKL_API.G_RET_STS_SUCCESS;
407
408
409
410 ELSE -- Invalid combination of values
411
412 IF (is_debug_statement_on) THEN
413 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.set_invalid_rule_message');
414 END IF;
415 okl_am_util_pvt.set_invalid_rule_message (
416 p_rgd_code => p_rgd_code,
417 p_rdf_code => p_rdf_code);
418 IF (is_debug_statement_on) THEN
419 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.set_invalid_rule_message');
420 END IF;
421
422 l_return_status := OKL_API.G_RET_STS_ERROR;
423
424 END IF;
425
426
427
428 ELSE -- end rbruno bug fix 6471193
429
430
431 IF p_calc_option = 'NOT_APPLICABLE'
432 AND NVL (p_fixed_value, G_MISS_CHAR) = G_MISS_CHAR
433 AND NVL (p_formula_name, G_MISS_CHAR) = G_MISS_CHAR THEN
434
435 l_return_status := OKL_API.G_RET_STS_SUCCESS;
436
437 ELSIF p_calc_option = 'USE_FIXED_AMOUNT'
438 AND NVL (p_fixed_value, G_MISS_CHAR) <> G_MISS_CHAR
439 AND NVL (p_formula_name, G_MISS_CHAR) = G_MISS_CHAR THEN
440
441 l_return_status := OKL_API.G_RET_STS_SUCCESS;
442
443 ELSIF p_calc_option = 'USE_FORMULA'
444 AND NVL (p_fixed_value, G_MISS_CHAR) = G_MISS_CHAR
445 AND NVL (p_formula_name, G_MISS_CHAR) <> G_MISS_CHAR THEN
446
447 l_return_status := OKL_API.G_RET_STS_SUCCESS;
448
449 ELSE
450
451 -- Invalid combination of values
452 IF (is_debug_statement_on) THEN
453 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.set_invalid_rule_message');
454 END IF;
455 okl_am_util_pvt.set_invalid_rule_message (
456 p_rgd_code => p_rgd_code,
457 p_rdf_code => p_rdf_code);
458 IF (is_debug_statement_on) THEN
459 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.set_invalid_rule_message');
460 END IF;
461
462 l_return_status := OKL_API.G_RET_STS_ERROR;
463
464 END IF;
465 END IF;
466
467 x_return_status := l_return_status;
468 IF (is_debug_procedure_on) THEN
469 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
470 END IF;
471
472 EXCEPTION
473
474 WHEN OTHERS THEN
475 IF (is_debug_exception_on) THEN
476 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
477 || sqlcode || ' , SQLERRM : ' || sqlerrm);
478 END IF;
479
480 -- store SQL error message on message stack for caller
481 OKL_API.SET_MESSAGE (
482 p_app_name => G_APP_NAME
483 ,p_msg_name => G_UNEXPECTED_ERROR
484 ,p_token1 => G_SQLCODE_TOKEN
485 ,p_token1_value => sqlcode
486 ,p_token2 => G_SQLERRM_TOKEN
487 ,p_token2_value => sqlerrm);
488
489 -- notify caller of an UNEXPECTED error
490 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
491
492 END check_rule_value;
493
494
495 -- Start of comments
496 --
497 -- Procedure Name : check_rule_setup
498 -- Description : Check Formula/Amount type rules are setup correctly
499 -- Business Rules :
500 -- Parameters : Contract Id, Rule Group Code, Rule Code
501 -- Version : 1.0
502 -- End of comments
503
504 PROCEDURE check_rule_setup (
505 p_rgd_code IN VARCHAR2,
506 p_rdf_code IN VARCHAR2,
507 p_chr_id IN NUMBER,
508 x_return_status OUT NOCOPY VARCHAR2) IS
509
510 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
511 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
512 l_rulv_rec rulv_rec_type;
513 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_rule_setup';
514 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
515 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
516 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
517
518 BEGIN
519 IF (is_debug_procedure_on) THEN
520 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
521 END IF;
522 IF (is_debug_statement_on) THEN
523 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgd_code: '||p_rgd_code);
524 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rdf_code: '||p_rdf_code);
525 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
526 END IF;
527
528 IF (is_debug_statement_on) THEN
529 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
530 END IF;
531 okl_am_util_pvt.get_rule_record (
532 p_rgd_code => p_rgd_code,
533 p_rdf_code => p_rdf_code,
534 p_chr_id => p_chr_id,
535 p_cle_id => NULL,
536 p_message_yn => FALSE,
537 x_rulv_rec => l_rulv_rec,
538 x_return_status => l_return_status);
539 IF (is_debug_statement_on) THEN
540 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
541 END IF;
542
543 -- If rule is not found, return Success
544 -- If rule is found, check its setup
545 IF l_return_status = OKL_API.G_RET_STS_SUCCESS THEN
546
547 -- ********************************************************
548 -- Evalute rule record: not_applicable, constant or formula
549 -- The field INFO1 indicated if the rule is either
550 -- not applicable (evaluated to null), equals to a
551 -- constant value, or equals to a value of a formula.
552 -- The field INFO2 allows to specify the value of a
553 -- the constant. The field INFO3 allows to specify a
554 -- formula to use for calculations.
555 -- ********************************************************
556
557 check_rule_value (
558 p_calc_option => l_rulv_rec.rule_information1,
559 p_fixed_value => l_rulv_rec.rule_information2,
560 p_formula_name => l_rulv_rec.rule_information3,
561
562 p_rgd_code => p_rgd_code,
563 p_rdf_code => p_rdf_code,
564 x_return_status => l_return_status);
565
566 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
567 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR
568 THEN
569 l_overall_status := l_return_status;
570 END IF;
571 END IF;
572
573 -- Some rules store maximum allowed value
574 IF p_rdf_code IN ('AMCTPE','AMBPOC') THEN
575
576 check_rule_value (
577 p_calc_option => l_rulv_rec.rule_information5,
578 p_fixed_value => l_rulv_rec.rule_information6,
579 p_formula_name => l_rulv_rec.rule_information7,
580 p_rgd_code => p_rgd_code,
581 p_rdf_code => p_rdf_code,
582 x_return_status => l_return_status);
583
584 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
585 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR
586 THEN
587 l_overall_status := l_return_status;
588 END IF;
589 END IF;
590
591 END IF;
592
593 -- Some rules store minimum allowed value
594 IF p_rdf_code IN ('AMBPOC') THEN
595
596 check_rule_value (
597 p_calc_option => l_rulv_rec.rule_information8,
598 p_fixed_value => l_rulv_rec.rule_information9,
599 p_formula_name => l_rulv_rec.rule_information10,
600 p_rgd_code => p_rgd_code,
601 p_rdf_code => p_rdf_code,
602 x_return_status => l_return_status);
603
604 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
605 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR
606 THEN
607 l_overall_status := l_return_status;
608 END IF;
609 END IF;
610
611 END IF;
612
613 END IF;
614
615 x_return_status := l_overall_status;
616 IF (is_debug_procedure_on) THEN
617 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
618 END IF;
619
620 EXCEPTION
621
622 WHEN OTHERS THEN
623 IF (is_debug_exception_on) THEN
624 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
625 END IF;
626
627 -- store SQL error message on message stack for caller
628 OKL_API.SET_MESSAGE (
629 p_app_name => G_APP_NAME
630 ,p_msg_name => G_UNEXPECTED_ERROR
631 ,p_token1 => G_SQLCODE_TOKEN
632 ,p_token1_value => sqlcode
633 ,p_token2 => G_SQLERRM_TOKEN
634 ,p_token2_value => sqlerrm);
635
636 -- notify caller of an UNEXPECTED error
637 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
638
639 END check_rule_setup;
640
641
642 -- Start of comments
643 --
644 -- Procedure Name : check_contract_portfolio
645 -- Description : Check contract portfolio rules
646 -- Business Rules :
647 -- Parameters : Contract Id
648 -- Version : 1.0
649 -- End of comments
650
651 PROCEDURE check_contract_portfolio (
652 x_return_status OUT NOCOPY VARCHAR2,
653 p_chr_id IN NUMBER) IS
654
655 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
656 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
657 l_rulv_rec rulv_rec_type;
658 l_rgd_code VARCHAR2(30) := 'AMCOPO'; -- Contract Portfolio RG
659 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_contract_portfolio';
660 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
661 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
662 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
663
664 BEGIN
665 IF (is_debug_procedure_on) THEN
666 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
667 END IF;
668 IF (is_debug_statement_on) THEN
669 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
670 END IF;
671
672 -- *************
673 -- Budget Amount
674 -- *************
675
676 IF (is_debug_statement_on) THEN
677 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
678 END IF;
679 okl_am_util_pvt.get_rule_record (
680 p_rgd_code => l_rgd_code,
681 p_rdf_code => 'AMPRBA',
682 p_chr_id => p_chr_id,
683 p_cle_id => NULL,
684 p_message_yn => TRUE,
685 x_rulv_rec => l_rulv_rec,
686 x_return_status => l_return_status);
687 IF (is_debug_statement_on) THEN
688 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
689 END IF;
690
691 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
692 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
693 l_overall_status := l_return_status;
694 END IF;
695 END IF;
696
697 check_rule_setup (
698 p_rgd_code => l_rgd_code,
699 p_rdf_code => 'AMPRBA',
700 p_chr_id => p_chr_id,
701 x_return_status => l_return_status);
702
703 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
704 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
705 l_overall_status := l_return_status;
706 END IF;
707 END IF;
708
709 -- ********
710 -- Strategy
711 -- ********
712
713 IF (is_debug_statement_on) THEN
714 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
715 END IF;
716 okl_am_util_pvt.get_rule_record(
717 p_rgd_code => l_rgd_code,
718 p_rdf_code => 'AMPRST',
719 p_chr_id => p_chr_id,
720 p_cle_id => NULL,
721 p_message_yn => TRUE,
722 x_rulv_rec => l_rulv_rec,
723 x_return_status => l_return_status);
724 IF (is_debug_statement_on) THEN
725 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
726 END IF;
727
728 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
729 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
730 l_overall_status := l_return_status;
731 END IF;
732 END IF;
733
734 -- ****************
735 -- Assignment Group
736 -- ****************
737
738 IF (is_debug_statement_on) THEN
739 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
740 END IF;
741 okl_am_util_pvt.get_rule_record(
742 p_rgd_code => l_rgd_code,
743 p_rdf_code => 'AMPRAG',
744 p_chr_id => p_chr_id,
745 p_cle_id => NULL,
746 p_message_yn => TRUE,
747 x_rulv_rec => l_rulv_rec,
748 x_return_status => l_return_status);
749 IF (is_debug_statement_on) THEN
750 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
751 END IF;
752
753 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
754 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
755 l_overall_status := l_return_status;
756 END IF;
757 END IF;
758
759 -- ******************
760 -- Execution Due Date
761 -- ******************
762
763 IF (is_debug_statement_on) THEN
764 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
765 END IF;
766 okl_am_util_pvt.get_rule_record(
767 p_rgd_code => l_rgd_code,
768 p_rdf_code => 'AMPRED',
769 p_chr_id => p_chr_id,
770 p_cle_id => NULL,
771 p_message_yn => TRUE,
772 x_rulv_rec => l_rulv_rec,
773 x_return_status => l_return_status);
774 IF (is_debug_statement_on) THEN
775 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
776 END IF;
777
778 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
779 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
780 l_overall_status := l_return_status;
781 END IF;
782 END IF;
783
784 x_return_status := l_overall_status;
785 IF (is_debug_procedure_on) THEN
786 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
787 END IF;
788
789 EXCEPTION
790
791 WHEN OTHERS THEN
792 IF (is_debug_exception_on) THEN
793 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' ||
794 sqlerrm);
795 END IF;
796
797 -- store SQL error message on message stack for caller
798 OKL_API.SET_MESSAGE (
799 p_app_name => G_APP_NAME
800 ,p_msg_name => G_UNEXPECTED_ERROR
801 ,p_token1 => G_SQLCODE_TOKEN
802 ,p_token1_value => sqlcode
803 ,p_token2 => G_SQLERRM_TOKEN
804 ,p_token2_value => sqlerrm);
805
806 -- notify caller of an UNEXPECTED error
807 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
808
809 END check_contract_portfolio;
810
811
812 -- Start of comments
813 --
814 -- Procedure Name : check_calculate_quote
815 -- Description : Check rules for quote calculations
816 -- Business Rules :
817 -- Parameters : Contract Id
818 -- Version : 1.0
819 -- End of comments
820
821 PROCEDURE check_calculate_quote (
822 x_return_status OUT NOCOPY VARCHAR2,
823 p_chr_id IN NUMBER) IS
824
825 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
826 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
827 l_rulv_rec rulv_rec_type;
828 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_calculate_quote';
829 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
830 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
831 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
832
833 BEGIN
834 IF (is_debug_procedure_on) THEN
835 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
836 END IF;
837 IF (is_debug_statement_on) THEN
838 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
839 END IF;
840
841 -- ***************************************
842 -- Top End of Term Purchase Option Formula
843 -- ***************************************
844
845 IF (is_debug_statement_on) THEN
846 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
847 END IF;
848 okl_am_util_pvt.get_rule_record(
849 p_rgd_code => 'AMTFOC',
850 p_rdf_code => 'AMBPOC',
851 p_chr_id => p_chr_id,
852 p_cle_id => NULL,
853 p_message_yn => TRUE,
854 x_rulv_rec => l_rulv_rec,
855 x_return_status => l_return_status);
856 IF (is_debug_statement_on) THEN
857 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
858 END IF;
859
860 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
861 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
862 l_overall_status := l_return_status;
863 END IF;
864 END IF;
865
866 -- **********************************************************
867 -- Setup of Rules included into Top Early Termination Formula
868 -- **********************************************************
869
870 -- Contract Obligation
871 check_rule_setup (
872 p_rgd_code => 'AMTEWC',
873 p_rdf_code => 'AMBCOC',
874 p_chr_id => p_chr_id,
875 x_return_status => l_return_status);
876
877 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
878 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
879 l_overall_status := l_return_status;
880 END IF;
881 END IF;
882
883 -- Return Fee
884 check_rule_setup (
885 p_rgd_code => 'AMTEWC',
886 p_rdf_code => 'AMCRFE',
887 p_chr_id => p_chr_id,
888 x_return_status => l_return_status);
889
890 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
891 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
892 l_overall_status := l_return_status;
893 END IF;
894 END IF;
895
896 -- Rollover Incentive
897 check_rule_setup (
898 p_rgd_code => 'AMTEWC',
899 p_rdf_code => 'AMCRIN',
900 p_chr_id => p_chr_id,
901 x_return_status => l_return_status);
902
903 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
904 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
905 l_overall_status := l_return_status;
906 END IF;
907 END IF;
908
909 -- Estimated Property Tax
910 check_rule_setup (
911 p_rgd_code => 'AMTEWC',
912 p_rdf_code => 'AMPRTX',
913 p_chr_id => p_chr_id,
914 x_return_status => l_return_status);
915
916 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
917 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
918 l_overall_status := l_return_status;
919 END IF;
920 END IF;
921
922 -- Security Deposit Disposition
923 check_rule_setup (
924 p_rgd_code => 'AMTEWC',
925 p_rdf_code => 'AMCSDD',
926 p_chr_id => p_chr_id,
927 x_return_status => l_return_status);
928
929 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
930 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
931 l_overall_status := l_return_status;
932 END IF;
933 END IF;
934
935 -- Quote Fee
936 check_rule_setup (
937 p_rgd_code => 'AMTEWC',
938 p_rdf_code => 'AMCQFE',
939 p_chr_id => p_chr_id,
940 x_return_status => l_return_status);
941
942 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
943 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
944 l_overall_status := l_return_status;
945 END IF;
946 END IF;
947
948 -- Quote Discount Rate
949 check_rule_setup (
950 p_rgd_code => 'AMTEWC',
951 p_rdf_code => 'AMCQDR',
952 p_chr_id => p_chr_id,
953 x_return_status => l_return_status);
954
955 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
956 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
957 l_overall_status := l_return_status;
958 END IF;
959 END IF;
960
961 -- Termination Penalty
962 check_rule_setup (
963 p_rgd_code => 'AMTEWC',
964 p_rdf_code => 'AMCTPE',
965 p_chr_id => p_chr_id,
966 x_return_status => l_return_status);
967
968 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
969 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
970 l_overall_status := l_return_status;
971 END IF;
972 END IF;
973
974 -- ****************************************************************
975 -- Setup of Rules included into Top End of Term Termination Formula
976 -- ****************************************************************
977
978 -- Contract Obligation
979 check_rule_setup (
980 p_rgd_code => 'AMTFWC',
981 p_rdf_code => 'AMBCOC',
982 p_chr_id => p_chr_id,
983 x_return_status => l_return_status);
984
985 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
986 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
987 l_overall_status := l_return_status;
988 END IF;
989 END IF;
990
991 -- Return Fee
992 check_rule_setup (
993 p_rgd_code => 'AMTFWC',
994 p_rdf_code => 'AMCRFE',
995 p_chr_id => p_chr_id,
996 x_return_status => l_return_status);
997
998 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
999 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1000 l_overall_status := l_return_status;
1001 END IF;
1002 END IF;
1003
1004 -- Rollover Incentive
1005 check_rule_setup (
1006 p_rgd_code => 'AMTFWC',
1007 p_rdf_code => 'AMCRIN',
1008 p_chr_id => p_chr_id,
1009 x_return_status => l_return_status);
1010
1011 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1012 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1013 l_overall_status := l_return_status;
1014 END IF;
1015 END IF;
1016
1017 -- Estimated Property Tax
1018 check_rule_setup (
1019 p_rgd_code => 'AMTFWC',
1020 p_rdf_code => 'AMPRTX',
1021 p_chr_id => p_chr_id,
1022 x_return_status => l_return_status);
1023
1024 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1025 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1026 l_overall_status := l_return_status;
1027 END IF;
1028 END IF;
1029
1030 -- Security Deposit Disposition
1031 check_rule_setup (
1032 p_rgd_code => 'AMTFWC',
1033 p_rdf_code => 'AMCSDD',
1034 p_chr_id => p_chr_id,
1035 x_return_status => l_return_status);
1036
1037 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1038 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1039 l_overall_status := l_return_status;
1040 END IF;
1041 END IF;
1042
1043 -- Quote Fee
1044 check_rule_setup (
1045 p_rgd_code => 'AMTFWC',
1046 p_rdf_code => 'AMCQFE',
1047 p_chr_id => p_chr_id,
1048 x_return_status => l_return_status);
1049
1050 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1051 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1052 l_overall_status := l_return_status;
1053 END IF;
1054 END IF;
1055
1056 -- Quote Discount Rate
1057 check_rule_setup (
1058 p_rgd_code => 'AMTFWC',
1059 p_rdf_code => 'AMCQDR',
1060 p_chr_id => p_chr_id,
1061 x_return_status => l_return_status);
1062
1063 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1064 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1065 l_overall_status := l_return_status;
1066 END IF;
1067 END IF;
1068
1069 -- Termination Penalty
1070 check_rule_setup (
1071 p_rgd_code => 'AMTFWC',
1072 p_rdf_code => 'AMCTPE',
1073 p_chr_id => p_chr_id,
1074 x_return_status => l_return_status);
1075
1076 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1077 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1078 l_overall_status := l_return_status;
1079 END IF;
1080 END IF;
1081
1082 -- **************************************************************
1083 -- Setup of Rules included into Top Early Purchase Option Formula
1084 -- **************************************************************
1085
1086 -- Purchase Option Amount
1087 check_rule_setup (
1088 p_rgd_code => 'AMTEOC',
1089 p_rdf_code => 'AMBPOC',
1090 p_chr_id => p_chr_id,
1091 x_return_status => l_return_status);
1092
1093 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1094 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1095 l_overall_status := l_return_status;
1096 END IF;
1097 END IF;
1098
1099 -- ********************************************************************
1100 -- Setup of Rules included into Top End of Term Purchase Option Formula
1101 -- ********************************************************************
1102
1103 -- Purchase Option Amount
1104 check_rule_setup (
1105 p_rgd_code => 'AMTFOC',
1106 p_rdf_code => 'AMBPOC',
1107 p_chr_id => p_chr_id,
1108 x_return_status => l_return_status);
1109
1110 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1111 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1112 l_overall_status := l_return_status;
1113 END IF;
1114 END IF;
1115
1116 -- ***************************************************
1117 -- Setup of Rules included into Top Repurchase Formula
1118 -- ***************************************************
1119
1120 -- Sale Price
1121 check_rule_setup (
1122 p_rgd_code => 'AMREPQ',
1123 p_rdf_code => 'AMBSPR',
1124 p_chr_id => p_chr_id,
1125 x_return_status => l_return_status);
1126
1127 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1128 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1129 l_overall_status := l_return_status;
1130 END IF;
1131 END IF;
1132
1133 -- Quote Fee
1134 check_rule_setup (
1135 p_rgd_code => 'AMREPQ',
1136 p_rdf_code => 'AMCQFE',
1137 p_chr_id => p_chr_id,
1138 x_return_status => l_return_status);
1139
1140 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1141 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1142 l_overall_status := l_return_status;
1143 END IF;
1144 END IF;
1145
1146 -- Quote Discount Rate
1147 check_rule_setup (
1148 p_rgd_code => 'AMREPQ',
1149 p_rdf_code => 'AMCQDR',
1150 p_chr_id => p_chr_id,
1151 x_return_status => l_return_status);
1152
1153 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1154 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1155 l_overall_status := l_return_status;
1156 END IF;
1157 END IF;
1158
1159 x_return_status := l_overall_status;
1160 IF (is_debug_procedure_on) THEN
1161 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1162 END IF;
1163
1164 EXCEPTION
1165
1166 WHEN OTHERS THEN
1167 IF (is_debug_exception_on) THEN
1168 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1169 END IF;
1170
1171 -- store SQL error message on message stack for caller
1172 OKL_API.SET_MESSAGE (
1173 p_app_name => G_APP_NAME
1174 ,p_msg_name => G_UNEXPECTED_ERROR
1175 ,p_token1 => G_SQLCODE_TOKEN
1176 ,p_token1_value => sqlcode
1177 ,p_token2 => G_SQLERRM_TOKEN
1178 ,p_token2_value => sqlerrm);
1179
1180 -- notify caller of an UNEXPECTED error
1181 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1182
1183 END check_calculate_quote;
1184
1185
1186 -- Start of comments
1187 --
1188 -- Procedure Name : check_create_quote
1189 -- Description : Check termination and repurchase quote creation rules
1190 -- Business Rules :
1191 -- Parameters : Contract Id
1192 -- Version : 1.0
1193 -- End of comments
1194
1195 PROCEDURE check_create_quote (
1196 x_return_status OUT NOCOPY VARCHAR2,
1197 p_chr_id IN NUMBER) IS
1198
1199 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1200 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1201 l_rulv_rec rulv_rec_type;
1202 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_create_quote';
1203 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1204 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1205 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1206
1207 BEGIN
1208 IF (is_debug_procedure_on) THEN
1209 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1210 END IF;
1211 IF (is_debug_statement_on) THEN
1212 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
1213 END IF;
1214
1215 -- *******************************************************
1216 -- Quote Effectivity for Termination and Repurchase Quotes
1217 -- *******************************************************
1218
1219 IF (is_debug_statement_on) THEN
1220 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
1221 END IF;
1222 okl_am_util_pvt.get_rule_record(
1223 p_rgd_code => 'AMTQPR',
1224 p_rdf_code => 'AMQTEF',
1225 p_chr_id => p_chr_id,
1226 p_cle_id => NULL,
1227 p_message_yn => TRUE,
1228 x_rulv_rec => l_rulv_rec,
1229 x_return_status => l_return_status);
1230 IF (is_debug_statement_on) THEN
1231 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
1232 END IF;
1233
1234 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1235 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1236 l_overall_status := l_return_status;
1237 END IF;
1238 END IF;
1239
1240 IF l_return_status = OKL_API.G_RET_STS_SUCCESS THEN
1241
1242 check_quote_effectivity (
1243 p_rule_info1 => l_rulv_rec.rule_information1,
1244 p_rule_info2 => l_rulv_rec.rule_information2,
1245 x_return_status => l_return_status);
1246
1247 END IF;
1248
1249 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1250 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1251 l_overall_status := l_return_status;
1252 END IF;
1253 END IF;
1254
1255 -- *********************************
1256 -- Term Status for Termination Quote
1257 -- *********************************
1258
1259 IF (is_debug_statement_on) THEN
1260 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
1261 END IF;
1262 okl_am_util_pvt.get_rule_record(
1263 p_rgd_code => 'AMTQPR',
1264 p_rdf_code => 'AMTSET',
1265 p_chr_id => p_chr_id,
1266 p_cle_id => NULL,
1267 p_message_yn => TRUE,
1268 x_rulv_rec => l_rulv_rec,
1269 x_return_status => l_return_status);
1270 IF (is_debug_statement_on) THEN
1271 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
1272 END IF;
1273
1274 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1275 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1276 l_overall_status := l_return_status;
1277 END IF;
1278 END IF;
1279
1280 x_return_status := l_overall_status;
1281 IF (is_debug_procedure_on) THEN
1282 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1283 END IF;
1284
1285 EXCEPTION
1286
1287 WHEN OTHERS THEN
1288 IF (is_debug_exception_on) THEN
1289 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1290 END IF;
1291
1292 -- store SQL error message on message stack for caller
1293 OKL_API.SET_MESSAGE (
1294 p_app_name => G_APP_NAME
1295 ,p_msg_name => G_UNEXPECTED_ERROR
1296 ,p_token1 => G_SQLCODE_TOKEN
1297 ,p_token1_value => sqlcode
1298 ,p_token2 => G_SQLERRM_TOKEN
1299 ,p_token2_value => sqlerrm);
1300
1301 -- notify caller of an UNEXPECTED error
1302 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1303
1304 END check_create_quote;
1305
1306
1307 -- Start of comments
1308 --
1309 -- Procedure Name : check_quote_wf
1310 -- Description : Check quote workflow rules
1311 -- Business Rules :
1312 -- Parameters : Contract Id
1313 -- Version : 1.0
1314 -- End of comments
1315
1316 PROCEDURE check_quote_wf (
1317 x_return_status OUT NOCOPY VARCHAR2,
1318 p_chr_id IN NUMBER) IS
1319
1320 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1321 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1322 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_quote_wf';
1323 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1324 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1325 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1326
1327 BEGIN
1328 IF (is_debug_procedure_on) THEN
1329 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1330 END IF;
1331 IF (is_debug_statement_on) THEN
1332 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
1333 END IF;
1334
1335 -- *************
1336 -- Gain and Loss
1337 -- *************
1338
1339 check_rule_setup (
1340 p_rgd_code => 'AMTGAL',
1341 p_rdf_code => 'AMGALO',
1342 p_chr_id => p_chr_id,
1343 x_return_status => l_return_status);
1344
1345 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1346 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1347 l_overall_status := l_return_status;
1348 END IF;
1349 END IF;
1350
1351 x_return_status := l_overall_status;
1352 IF (is_debug_procedure_on) THEN
1353 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1354 END IF;
1355
1356 EXCEPTION
1357
1358 WHEN OTHERS THEN
1359 IF (is_debug_exception_on) THEN
1360 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1361 END IF;
1362
1363 -- store SQL error message on message stack for caller
1364 OKL_API.SET_MESSAGE (
1365 p_app_name => G_APP_NAME
1366 ,p_msg_name => G_UNEXPECTED_ERROR
1367 ,p_token1 => G_SQLCODE_TOKEN
1368 ,p_token1_value => sqlcode
1369 ,p_token2 => G_SQLERRM_TOKEN
1370 ,p_token2_value => sqlerrm);
1371
1372 -- notify caller of an UNEXPECTED error
1373 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1374
1375 END check_quote_wf;
1376
1377
1378 -- Start of comments
1379 --
1380 -- Procedure Name : check_termin_quote_parties
1381 -- Description : Check Termination Quote Parties
1382 -- Business Rules :
1383 -- Parameters : Contract Id
1384 -- Version : 1.0
1385 -- End of comments
1386
1387 PROCEDURE check_termin_quote_parties (
1388 x_return_status OUT NOCOPY VARCHAR2,
1389 p_chr_id IN NUMBER) IS
1390
1391 -- Get vendors attached to Lease contract
1392 CURSOR l_vendor_csr (cp_chr_id NUMBER) IS
1393 SELECT pr.id cpl_id
1394 FROM okc_k_party_roles_b pr
1395 WHERE pr.rle_code = 'OKL_VENDOR'
1396 AND pr.cle_id IS NULL
1397 AND pr.chr_id = cp_chr_id
1398 AND pr.dnz_chr_id = cp_chr_id;
1399
1400 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1401 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1402
1403 l_qtev_rec qtev_rec_type; -- Quote Header
1404 l_qpyv_tbl qpyv_tbl_type; -- Quote Parties
1405 l_taiv_rec taiv_rec_type; -- Billing Header
1406 e_taiv_rec taiv_rec_type; -- Empty Billing Header
1407 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_termin_quote_parties';
1408 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1409 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1410 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1411
1412 BEGIN
1413 IF (is_debug_procedure_on) THEN
1414 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1415 END IF;
1416 IF (is_debug_statement_on) THEN
1417 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
1418 END IF;
1419
1420 -- ********************************************
1421 -- Validate all quote parties using setup rules
1422 -- ********************************************
1423
1424 l_qtev_rec.khr_id := p_chr_id;
1425
1426 IF (is_debug_statement_on) THEN
1427 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_parties_pvt.create_quote_parties');
1428 END IF;
1429 -- The procedure will issue warning messages
1430 okl_am_parties_pvt.create_quote_parties (
1431 p_qtev_rec => l_qtev_rec,
1432 p_validate_only => TRUE,
1433 x_qpyv_tbl => l_qpyv_tbl,
1434 x_return_status => l_return_status);
1435 IF (is_debug_statement_on) THEN
1436 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_parties_pvt.create_quote_parties , return status: ' || l_return_status);
1437 END IF;
1438
1439 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1440 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1441 l_overall_status := l_return_status;
1442 END IF;
1443 END IF;
1444
1445 -- ********************************************************
1446 -- Check if vendor billiing rules are set for Lease Vendors
1447 -- ********************************************************
1448
1449 FOR l_vendor_rec IN l_vendor_csr (p_chr_id) LOOP
1450
1451 l_taiv_rec := e_taiv_rec;
1452 l_taiv_rec.khr_id := p_chr_id;
1453
1454 IF (is_debug_statement_on) THEN
1455 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_invoices_pvt.get_vendor_billing_info');
1456 END IF;
1457 -- The procedure will issue warning messages
1458 okl_am_invoices_pvt.get_vendor_billing_info (
1459 p_cpl_id => l_vendor_rec.cpl_id,
1460 px_taiv_rec => l_taiv_rec,
1461 x_return_status => l_return_status);
1462 IF (is_debug_statement_on) THEN
1463 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_invoices_pvt.get_vendor_billing_info , return status: ' || l_return_status);
1464 END IF;
1465
1466 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1467 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR
1468 THEN
1469 l_overall_status := l_return_status;
1470 END IF;
1471 END IF;
1472
1473 END LOOP;
1474
1475 x_return_status := l_overall_status;
1476 IF (is_debug_procedure_on) THEN
1477 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1478 END IF;
1479
1480 EXCEPTION
1481
1482 WHEN OTHERS THEN
1483 IF (is_debug_exception_on) THEN
1484 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1485 END IF;
1486
1487 -- close open cursors
1488 IF l_vendor_csr%ISOPEN THEN
1489 CLOSE l_vendor_csr;
1490 END IF;
1491
1492 -- store SQL error message on message stack for caller
1493 OKL_API.SET_MESSAGE (
1494 p_app_name => G_APP_NAME
1495 ,p_msg_name => G_UNEXPECTED_ERROR
1496 ,p_token1 => G_SQLCODE_TOKEN
1497 ,p_token1_value => sqlcode
1498 ,p_token2 => G_SQLERRM_TOKEN
1499 ,p_token2_value => sqlerrm);
1500
1501 -- notify caller of an UNEXPECTED error
1502 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1503
1504 END check_termin_quote_parties;
1505
1506
1507 -- Start of comments
1508 --
1509 -- Procedure Name : check_repurch_quote_parties
1510 -- Description : Check Repurchase Quote Parties
1511 -- Business Rules :
1512 -- Parameters : Contract Id
1513 -- Version : 1.0
1514 -- End of comments
1515
1516 PROCEDURE check_repurch_quote_parties (
1517 x_return_status OUT NOCOPY VARCHAR2,
1518 p_chr_id IN NUMBER) IS
1519
1520 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1521 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1522
1523 l_qtev_rec qtev_rec_type; -- Quote Header
1524 l_qpyv_tbl qpyv_tbl_type; -- Quote Parties
1525 l_taiv_rec taiv_rec_type; -- Billing Header
1526 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_repurch_quote_parties';
1527 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1528 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1529 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1530
1531 BEGIN
1532 IF (is_debug_procedure_on) THEN
1533 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1534 END IF;
1535 IF (is_debug_statement_on) THEN
1536 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
1537 END IF;
1538
1539 IF get_repurchase_agreement (p_chr_id) = 'Y' THEN
1540
1541 -- **********************************************
1542 -- Validate a vendor partner as a quote recipient
1543 -- **********************************************
1544
1545 l_qtev_rec.khr_id := p_chr_id;
1546
1547 IF (is_debug_statement_on) THEN
1548 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_parties_pvt.create_partner_as_recipient');
1549 END IF;
1550 -- The procedure will issue error messages if needed
1551 okl_am_parties_pvt.create_partner_as_recipient (
1552 p_qtev_rec => l_qtev_rec,
1553 p_validate_only => TRUE,
1554 x_qpyv_tbl => l_qpyv_tbl,
1555 x_return_status => l_return_status);
1556 IF (is_debug_statement_on) THEN
1557 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_parties_pvt.create_partner_as_recipient , return status: ' || l_return_status);
1558 END IF;
1559
1560 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1561 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1562 l_overall_status := l_return_status;
1563 END IF;
1564 END IF;
1565
1566 -- *********************************************************
1567 -- Check if vendor billiing rules are set for Program Vendor
1568 -- *********************************************************
1569
1570 l_taiv_rec.khr_id := p_chr_id;
1571
1572 IF (is_debug_statement_on) THEN
1573 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_invoices_pvt.get_vendor_billing_info');
1574 END IF;
1575 -- The procedure will issue error messages if needed
1576 okl_am_invoices_pvt.get_vendor_billing_info (
1577 px_taiv_rec => l_taiv_rec,
1578 x_return_status => l_return_status);
1579 IF (is_debug_statement_on) THEN
1580 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_invoices_pvt.get_vendor_billing_info , return status: ' || l_return_status);
1581 END IF;
1582
1583 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1584 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR
1585 THEN
1586 l_overall_status := l_return_status;
1587 END IF;
1588 END IF;
1589
1590 END IF;
1591
1592 x_return_status := l_overall_status;
1593 IF (is_debug_procedure_on) THEN
1594 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1595 END IF;
1596
1597 EXCEPTION
1598
1599 WHEN OTHERS THEN
1600 IF (is_debug_exception_on) THEN
1601 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1602 END IF;
1603
1604 -- store SQL error message on message stack for caller
1605 OKL_API.SET_MESSAGE (
1606 p_app_name => G_APP_NAME
1607 ,p_msg_name => G_UNEXPECTED_ERROR
1608 ,p_token1 => G_SQLCODE_TOKEN
1609 ,p_token1_value => sqlcode
1610 ,p_token2 => G_SQLERRM_TOKEN
1611 ,p_token2_value => sqlerrm);
1612
1613 -- notify caller of an UNEXPECTED error
1614 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1615
1616 END check_repurch_quote_parties;
1617
1618
1619 -- Start of comments
1620 --
1621 -- Procedure Name : check_bill_to_address
1622 -- Description : Check Customer Bill To Address
1623 -- Business Rules :
1624 -- Parameters : Contract Id
1625 -- Version : 1.0
1626 -- End of comments
1627
1628 PROCEDURE check_bill_to_address (
1629 x_return_status OUT NOCOPY VARCHAR2,
1630 p_chr_id IN NUMBER) IS
1631
1632 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1633 l_bill_to_address_rec okx_cust_site_uses_v%ROWTYPE;
1634 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_bill_to_address';
1635 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1636 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1637 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1638
1639 BEGIN
1640 IF (is_debug_procedure_on) THEN
1641 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1642 END IF;
1643 IF (is_debug_statement_on) THEN
1644 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
1645 END IF;
1646
1647 IF (is_debug_statement_on) THEN
1648 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_bill_to_address');
1649 END IF;
1650 okl_am_util_pvt.get_bill_to_address (
1651 p_contract_id => p_chr_id,
1652 x_bill_to_address_rec => l_bill_to_address_rec,
1653 x_return_status => l_return_status);
1654 IF (is_debug_statement_on) THEN
1655 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_bill_to_address , return status: ' || l_return_status);
1656 END IF;
1657
1658 x_return_status := l_return_status;
1659 IF (is_debug_procedure_on) THEN
1660 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1661 END IF;
1662
1663 EXCEPTION
1664
1665 WHEN OTHERS THEN
1666 IF (is_debug_exception_on) THEN
1667 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1668 END IF;
1669
1670 -- store SQL error message on message stack for caller
1671 OKL_API.SET_MESSAGE (
1672 p_app_name => G_APP_NAME
1673 ,p_msg_name => G_UNEXPECTED_ERROR
1674 ,p_token1 => G_SQLCODE_TOKEN
1675 ,p_token1_value => sqlcode
1676 ,p_token2 => G_SQLERRM_TOKEN
1677 ,p_token2_value => sqlerrm);
1678
1679 -- notify caller of an UNEXPECTED error
1680 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1681
1682 END check_bill_to_address;
1683
1684
1685 -- Start of comments
1686 --
1687 -- Procedure Name : check_sec_dep_disp
1688 -- Description : Check Security Deposit Disposition Rule
1689 -- Business Rules :
1690 -- Parameters : Contract Id
1691 -- Version : 1.0
1692 -- End of comments
1693
1694 PROCEDURE check_sec_dep_disp (
1695 x_return_status OUT NOCOPY VARCHAR2,
1696 p_chr_id IN NUMBER) IS
1697
1698 -- Get default date format
1699 CURSOR l_date_format_csr IS
1700 SELECT SYS_CONTEXT ('USERENV','NLS_DATE_FORMAT')
1701 FROM dual;
1702
1703 -- Get contract end date
1704 CURSOR l_contract_csr (cp_chr_id NUMBER) IS
1705 SELECT end_date
1706 FROM okc_k_headers_b
1707 WHERE id = cp_chr_id;
1708
1709 l_rulv_rec rulv_rec_type;
1710 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1711
1712 -- Values stored in Security Deposit Rule
1713 l_held_until_maturity VARCHAR2(1);
1714 l_held_until_date DATE;
1715
1716 l_date_format VARCHAR2(100);
1717 l_contract_end_date DATE;
1718 l_sysdate DATE := SYSDATE;
1719 l_calculate_sdd BOOLEAN;
1720 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_sec_dep_disp';
1721 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1722 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1723 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1724
1725 BEGIN
1726 IF (is_debug_procedure_on) THEN
1727 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1728 END IF;
1729 IF (is_debug_statement_on) THEN
1730 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
1731 END IF;
1732
1733 -- *************************
1734 -- Get Security Deposit Rule
1735 -- *************************
1736
1737 IF (is_debug_statement_on) THEN
1738 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
1739 END IF;
1740 okl_am_util_pvt.get_rule_record (
1741 p_rgd_code => 'LASDEP',
1742 p_rdf_code => 'LASDEP',
1743 p_chr_id => p_chr_id,
1744 p_cle_id => NULL,
1745 x_rulv_rec => l_rulv_rec,
1746 x_return_status => l_return_status,
1747 p_message_yn => FALSE);
1748 IF (is_debug_statement_on) THEN
1749 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
1750 END IF;
1751
1752 IF l_return_status = OKL_API.G_RET_STS_SUCCESS THEN
1753
1754 OPEN l_contract_csr (p_chr_id);
1755 FETCH l_contract_csr INTO l_contract_end_date;
1756 CLOSE l_contract_csr;
1757
1758 l_held_until_maturity := l_rulv_rec.rule_information2;
1759
1760 OPEN l_date_format_csr;
1761 FETCH l_date_format_csr INTO l_date_format;
1762 CLOSE l_date_format_csr;
1763
1764 -- Security Deposit is hold till pre-defined date
1765 l_held_until_date := to_date (
1766 l_rulv_rec.rule_information5, l_date_format);
1767
1768 -- If held_until_date is given, it should be greater then contract end_date
1769 -- If held_until_date is not given, it will be defaulted to contract_end_date
1770 IF l_held_until_maturity = 'Y'
1771 AND l_held_until_date IS NOT NULL
1772 AND l_held_until_date <> G_MISS_DATE
1773 AND l_held_until_date < l_contract_end_date THEN
1774
1775 l_return_status := OKL_API.G_RET_STS_ERROR;
1776 OKC_API.SET_MESSAGE (
1777 p_app_name => G_OKC_APP_NAME,
1778 p_msg_name => G_INVALID_VALUE,
1779 p_token1 => G_COL_NAME_TOKEN,
1780 p_token1_value => 'Security Deposit Held Until Date');
1781
1782 END IF;
1783
1784 ELSE
1785 -- The rule is optional
1786 l_return_status := OKL_API.G_RET_STS_SUCCESS;
1787 END IF;
1788
1789 x_return_status := l_return_status;
1790 IF (is_debug_procedure_on) THEN
1791 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1792 END IF;
1793
1794 EXCEPTION
1795
1796 WHEN OTHERS THEN
1797 IF (is_debug_exception_on) THEN
1798 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1799 END IF;
1800
1801 -- Close open cursors
1802
1803 IF l_date_format_csr%ISOPEN THEN
1804 CLOSE l_date_format_csr;
1805 END IF;
1806
1807 IF l_contract_csr%ISOPEN THEN
1808 CLOSE l_contract_csr;
1809 END IF;
1810
1811 -- store SQL error message on message stack for caller
1812 OKL_API.SET_MESSAGE (
1813 p_app_name => OKL_API.G_APP_NAME,
1814 p_msg_name => 'OKL_CONTRACTS_UNEXPECTED_ERROR',
1815 p_token1 => 'SQLCODE',
1816 p_token1_value => SQLCODE,
1817 p_token2 => 'SQLERRM',
1818 p_token2_value => SQLERRM);
1819
1820 END check_sec_dep_disp;
1821
1822
1823 -- Start of comments
1824 --
1825 -- Procedure Name : check_am_rule_format
1826 -- Description : Check correct format of rules used by AM
1827 -- Business Rules :
1828 -- Parameters : Contract Id, Rule record
1829 -- Version : 1.0
1830 -- End of comments
1831
1832 PROCEDURE check_am_rule_format (
1833 x_return_status OUT NOCOPY VARCHAR2,
1834 p_chr_id IN NUMBER,
1835 p_rgr_rec IN rgr_rec_type) IS
1836
1837 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1838 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1839 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_am_rule_format';
1840 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1841 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1842 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1843
1844 BEGIN
1845 IF (is_debug_procedure_on) THEN
1846 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1847 END IF;
1848 IF (is_debug_statement_on) THEN
1849 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
1850 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information_category: ' || p_rgr_rec.rule_information_category);
1851 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rgd_code: ' || p_rgr_rec.rgd_code);
1852 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information1: ' || p_rgr_rec.rule_information1);
1853 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information2: ' || p_rgr_rec.rule_information2);
1854 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information3: ' || p_rgr_rec.rule_information3);
1855 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information4: ' || p_rgr_rec.rule_information4);
1856 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information5: ' || p_rgr_rec.rule_information5);
1857 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information6: ' || p_rgr_rec.rule_information6);
1858 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information7: ' || p_rgr_rec.rule_information7);
1859 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information8: ' || p_rgr_rec.rule_information8);
1860 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information9: ' || p_rgr_rec.rule_information9);
1861 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information10: ' || p_rgr_rec.rule_information10);
1862 END IF;
1863
1864
1865 -- **************************************************
1866 -- Formula-Amount rules used for various calculations
1867 -- **************************************************
1868
1869 IF p_rgr_rec.rule_information_category IN
1870 ('AMPRBA','AMGALO','AMBCOC','AMCRFE','AMCRIN','AMPRTX',
1871 'AMCSDD','AMCQFE','AMCQDR','AMCTPE','AMBPOC','AMBSPR') THEN
1872
1873 -- ********************************************************
1874 -- Evalute rule record: not_applicable, constant or formula
1875 -- The field INFO1 indicated if the rule is either
1876 -- not applicable (evaluated to null), equals to a
1877 -- constant value, or equals to a value of a formula.
1878 -- The field INFO2 allows to specify the value of a
1879 -- the constant. The field INFO3 allows to specify a
1880 -- formula to use for calculations.
1881 -- ********************************************************
1882
1883
1884 -- Changed this call to add new parameter p_option_type
1885 -- rbruno bug fix 6471193
1886
1887 check_rule_value (
1888 p_calc_option => p_rgr_rec.rule_information1,
1889 p_fixed_value => p_rgr_rec.rule_information2,
1890 p_formula_name => p_rgr_rec.rule_information3,
1891 p_option_type => p_rgr_rec.rule_information11,
1892 p_rgd_code => p_rgr_rec.rgd_code,
1893 p_rdf_code => p_rgr_rec.rule_information_category,
1894 x_return_status => l_return_status);
1895
1896 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1897 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1898 l_overall_status := l_return_status;
1899 END IF;
1900 END IF;
1901
1902 -- Some rules store maximum allowed value
1903 IF p_rgr_rec.rule_information_category IN ('AMCTPE','AMBPOC') THEN
1904
1905 check_rule_value (
1906 p_calc_option => p_rgr_rec.rule_information5,
1907 p_fixed_value => p_rgr_rec.rule_information6,
1908 p_formula_name => p_rgr_rec.rule_information7,
1909 p_rgd_code => p_rgr_rec.rgd_code,
1910 p_rdf_code => p_rgr_rec.rule_information_category,
1911 x_return_status => l_return_status);
1912
1913 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1914 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1915 l_overall_status := l_return_status;
1916 END IF;
1917 END IF;
1918
1919 END IF;
1920
1921 -- Some rules store minimum allowed value
1922 IF p_rgr_rec.rule_information_category IN ('AMBPOC') THEN
1923
1924 check_rule_value (
1925 p_calc_option => p_rgr_rec.rule_information8,
1926 p_fixed_value => p_rgr_rec.rule_information9,
1927 p_formula_name => p_rgr_rec.rule_information10,
1928 p_rgd_code => p_rgr_rec.rgd_code,
1929 p_rdf_code => p_rgr_rec.rule_information_category,
1930 x_return_status => l_return_status);
1931
1932 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1933 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1934 l_overall_status := l_return_status;
1935 END IF;
1936 END IF;
1937
1938 END IF;
1939
1940 -- rkuttiya 16-SEP-2003 added following code for Bug:2794685
1941 --Some rules store tolerance values
1942 IF p_rgr_rec.rule_information_category IN ('AMGALO') THEN
1943 check_rule_value (
1944 p_calc_option => p_rgr_rec.rule_information7,
1945 p_fixed_value => p_rgr_rec.rule_information4,
1946 p_formula_name => p_rgr_rec.rule_information6,
1947 p_rgd_code => p_rgr_rec.rgd_code,
1948 p_rdf_code => p_rgr_rec.rule_information_category,
1949 x_return_status => l_return_status);
1950
1951 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1952 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1953 l_overall_status := l_return_status;
1954 END IF;
1955 END IF;
1956
1957 END IF;
1958 --rkuttiya end;
1959
1960 END IF;
1961
1962 -- *******************************************************
1963 -- Quote Effectivity for Termination and Repurchase Quotes
1964 -- *******************************************************
1965
1966 IF p_rgr_rec.rule_information_category = 'AMQTEF' THEN
1967
1968 check_quote_effectivity (
1969 p_rule_info1 => p_rgr_rec.rule_information1,
1970 p_rule_info2 => p_rgr_rec.rule_information2,
1971 x_return_status => l_return_status);
1972
1973 END IF;
1974
1975 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1976 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1977 l_overall_status := l_return_status;
1978 END IF;
1979 END IF;
1980
1981 x_return_status := l_overall_status;
1982 IF (is_debug_procedure_on) THEN
1983 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1984 END IF;
1985
1986 EXCEPTION
1987
1988 WHEN OTHERS THEN
1989 IF (is_debug_exception_on) THEN
1990 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1991 END IF;
1992
1993 -- store SQL error message on message stack for caller
1994 OKL_API.SET_MESSAGE (
1995 p_app_name => G_APP_NAME
1996 ,p_msg_name => G_UNEXPECTED_ERROR
1997 ,p_token1 => G_SQLCODE_TOKEN
1998 ,p_token1_value => sqlcode
1999 ,p_token2 => G_SQLERRM_TOKEN
2000 ,p_token2_value => sqlerrm);
2001
2002 -- notify caller of an UNEXPECTED error
2003 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2004
2005 END check_am_rule_format;
2006
2007
2008 -- Start of comments
2009 --
2010 -- Procedure Name : check_rule_constraints
2011 -- Description : Mandatory checks for values of contract rules used by AM
2012 -- Business Rules :
2013 -- Parameters : Contract Id
2014 -- Version : 1.0
2015 -- End of comments
2016
2017 PROCEDURE check_rule_constraints (
2018 x_return_status OUT NOCOPY VARCHAR2,
2019 p_chr_id IN NUMBER) IS
2020
2021 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2022 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2023 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_rule_constraints';
2024 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
2025 G_LEVEL_EXCEPTION);
2026 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
2027 G_LEVEL_PROCEDURE);
2028 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
2029 G_LEVEL_STATEMENT);
2030
2031 BEGIN
2032 IF (is_debug_procedure_on) THEN
2033 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
2034 END IF;
2035 IF (is_debug_statement_on) THEN
2036 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
2037 END IF;
2038
2039 check_bill_to_address (
2040 x_return_status => l_return_status,
2041 p_chr_id => p_chr_id);
2042
2043 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2044 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
2045 l_overall_status := l_return_status;
2046 END IF;
2047 END IF;
2048
2049 check_create_quote (
2050 x_return_status => l_return_status,
2051 p_chr_id => p_chr_id);
2052
2053 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2054 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
2055 l_overall_status := l_return_status;
2056 END IF;
2057 END IF;
2058
2059 check_calculate_quote (
2060 x_return_status => l_return_status,
2061 p_chr_id => p_chr_id);
2062
2063 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2064 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
2065 l_overall_status := l_return_status;
2066 END IF;
2067 END IF;
2068
2069 check_repurch_quote_parties (
2070 x_return_status => l_return_status,
2071 p_chr_id => p_chr_id);
2072
2073 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2074 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
2075 l_overall_status := l_return_status;
2076 END IF;
2077 END IF;
2078
2079 check_sec_dep_disp (
2080 x_return_status => l_return_status,
2081 p_chr_id => p_chr_id);
2082
2083 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2084 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
2085 l_overall_status := l_return_status;
2086 END IF;
2087 END IF;
2088
2089 check_contract_portfolio (
2090 x_return_status => l_return_status,
2091 p_chr_id => p_chr_id);
2092
2093 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2094 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
2095 l_overall_status := l_return_status;
2096 END IF;
2097 END IF;
2098
2099 check_quote_wf (
2100 x_return_status => l_return_status,
2101 p_chr_id => p_chr_id);
2102
2103 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2104 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
2105 l_overall_status := l_return_status;
2106 END IF;
2107 END IF;
2108
2109 x_return_status := l_overall_status;
2110 IF (is_debug_procedure_on) THEN
2111 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
2112 END IF;
2113
2114 EXCEPTION
2115
2116 WHEN OTHERS THEN
2117 IF (is_debug_exception_on) THEN
2118 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
2119 END IF;
2120
2121 -- store SQL error message on message stack for caller
2122 OKL_API.SET_MESSAGE (
2123 p_app_name => G_APP_NAME
2124 ,p_msg_name => G_UNEXPECTED_ERROR
2125 ,p_token1 => G_SQLCODE_TOKEN
2126 ,p_token1_value => sqlcode
2127 ,p_token2 => G_SQLERRM_TOKEN
2128 ,p_token2_value => sqlerrm);
2129
2130 -- notify caller of an UNEXPECTED error
2131 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2132
2133 END check_rule_constraints;
2134
2135
2136 -- Start of comments
2137 --
2138 -- Procedure Name : check_warning_constraints
2139 -- Description : Optional checks for values of contract rules used by AM
2140 -- Business Rules :
2141 -- Parameters : Contract Id
2142 -- Version : 1.0
2143 -- End of comments
2144
2145 PROCEDURE check_warning_constraints (
2146 x_return_status OUT NOCOPY VARCHAR2,
2147 p_chr_id IN NUMBER) IS
2148
2149 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2150 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2151 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_warning_constraints';
2152 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
2153 G_LEVEL_EXCEPTION);
2154 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
2155 G_LEVEL_PROCEDURE);
2156 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
2157 G_LEVEL_STATEMENT);
2158
2159 BEGIN
2160 IF (is_debug_procedure_on) THEN
2161 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
2162 END IF;
2163 IF (is_debug_statement_on) THEN
2164 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
2165 END IF;
2166
2167 check_termin_quote_parties (
2168 x_return_status => l_return_status,
2169 p_chr_id => p_chr_id);
2170
2171 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2172 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
2173 l_overall_status := l_return_status;
2174 END IF;
2175 END IF;
2176
2177 x_return_status := l_overall_status;
2178 IF (is_debug_procedure_on) THEN
2179 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
2180 END IF;
2181
2182 EXCEPTION
2183
2184 WHEN OTHERS THEN
2185 IF (is_debug_exception_on) THEN
2186 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
2187 END IF;
2188
2189 -- store SQL error message on message stack for caller
2190 OKL_API.SET_MESSAGE (
2191 p_app_name => G_APP_NAME
2192 ,p_msg_name => G_UNEXPECTED_ERROR
2193 ,p_token1 => G_SQLCODE_TOKEN
2194 ,p_token1_value => sqlcode
2195 ,p_token2 => G_SQLERRM_TOKEN
2196 ,p_token2_value => sqlerrm);
2197
2198 -- notify caller of an UNEXPECTED error
2199 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2200
2201 END check_warning_constraints;
2202
2203
2204 END okl_am_qa_data_integrity_pvt;