[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.5 2009/11/06 11:49:44 smadhava 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 -- smadhava Added - Bug# 9044139
376 if (((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))
377 or (p_calc_option = 'NOT_APPLICABLE')) THEN
378 l_return_status := OKL_API.G_RET_STS_SUCCESS;
379
380 Else
381
382 okl_am_util_pvt.set_invalid_rule_message (
383 p_rgd_code => p_rgd_code,
384 p_rdf_code => p_rdf_code);
385
386 l_return_status := OKL_API.G_RET_STS_ERROR;
387
388 END IF;
389 -- rbruno 7569441 change end
390
391 -- If purchase option type = Fixed Purchase Option
392 -- then Purchase Option :Use Fixed Amount
393 -- Purchase Option Amount : Any amount except zero
394
395
396 -- smadhava - Modified for - Bug# 9044139
397 --ELSIF p_option_type = 'FPO'
398 --AND p_calc_option = 'USE_FIXED_AMOUNT'
399 --AND to_number(NVL (p_fixed_value,'0')) > 0 AND
400 -- nvl(p_formula_name,G_MISS_CHAR) = G_MISS_CHAR THEN
401 ELSIF p_option_type = 'FPO'
402 AND ((p_calc_option = 'USE_FIXED_AMOUNT'
403 AND to_number(NVL (p_fixed_value,'0')) > 0
404 AND nvl(p_formula_name,G_MISS_CHAR) = G_MISS_CHAR)
405 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)))
406 OR (p_calc_option = 'NOT_APPLICABLE')) THEN
407
408 l_return_status := OKL_API.G_RET_STS_SUCCESS;
409
410 -- If purchase option type = None
411 -- then Purchase Option :Not Applicable
412
413 ELSIF p_option_type = 'NONE'
414 AND p_calc_option = 'NOT_APPLICABLE' THEN
415
416 l_return_status := OKL_API.G_RET_STS_SUCCESS;
417
418
419
420 ELSE -- Invalid combination of values
421
422 IF (is_debug_statement_on) THEN
423 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.set_invalid_rule_message');
424 END IF;
425 okl_am_util_pvt.set_invalid_rule_message (
426 p_rgd_code => p_rgd_code,
427 p_rdf_code => p_rdf_code);
428 IF (is_debug_statement_on) THEN
429 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.set_invalid_rule_message');
430 END IF;
431
432 l_return_status := OKL_API.G_RET_STS_ERROR;
433
434 END IF;
435
436
437
438 ELSE -- end rbruno bug fix 6471193
439
440
441 IF p_calc_option = 'NOT_APPLICABLE'
442 AND NVL (p_fixed_value, G_MISS_CHAR) = G_MISS_CHAR
443 AND NVL (p_formula_name, G_MISS_CHAR) = G_MISS_CHAR THEN
444
445 l_return_status := OKL_API.G_RET_STS_SUCCESS;
446
447 ELSIF p_calc_option = 'USE_FIXED_AMOUNT'
448 AND NVL (p_fixed_value, G_MISS_CHAR) <> G_MISS_CHAR
449 AND NVL (p_formula_name, G_MISS_CHAR) = G_MISS_CHAR THEN
450
451 l_return_status := OKL_API.G_RET_STS_SUCCESS;
452
453 ELSIF p_calc_option = 'USE_FORMULA'
454 AND NVL (p_fixed_value, G_MISS_CHAR) = G_MISS_CHAR
455 AND NVL (p_formula_name, G_MISS_CHAR) <> G_MISS_CHAR THEN
456
457 l_return_status := OKL_API.G_RET_STS_SUCCESS;
458
459 ELSE
460
461 -- Invalid combination of values
462 IF (is_debug_statement_on) THEN
463 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.set_invalid_rule_message');
464 END IF;
465 okl_am_util_pvt.set_invalid_rule_message (
466 p_rgd_code => p_rgd_code,
467 p_rdf_code => p_rdf_code);
468 IF (is_debug_statement_on) THEN
469 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.set_invalid_rule_message');
470 END IF;
471
472 l_return_status := OKL_API.G_RET_STS_ERROR;
473
474 END IF;
475 END IF;
476
477 x_return_status := l_return_status;
478 IF (is_debug_procedure_on) THEN
479 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
480 END IF;
481
482 EXCEPTION
483
484 WHEN OTHERS THEN
485 IF (is_debug_exception_on) THEN
486 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
487 || sqlcode || ' , SQLERRM : ' || sqlerrm);
488 END IF;
489
490 -- store SQL error message on message stack for caller
491 OKL_API.SET_MESSAGE (
492 p_app_name => G_APP_NAME
493 ,p_msg_name => G_UNEXPECTED_ERROR
494 ,p_token1 => G_SQLCODE_TOKEN
495 ,p_token1_value => sqlcode
496 ,p_token2 => G_SQLERRM_TOKEN
497 ,p_token2_value => sqlerrm);
498
499 -- notify caller of an UNEXPECTED error
500 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
501
502 END check_rule_value;
503
504
505 -- Start of comments
506 --
507 -- Procedure Name : check_rule_setup
508 -- Description : Check Formula/Amount type rules are setup correctly
509 -- Business Rules :
510 -- Parameters : Contract Id, Rule Group Code, Rule Code
511 -- Version : 1.0
512 -- End of comments
513
514 PROCEDURE check_rule_setup (
515 p_rgd_code IN VARCHAR2,
516 p_rdf_code IN VARCHAR2,
517 p_chr_id IN NUMBER,
518 x_return_status OUT NOCOPY VARCHAR2) IS
519
520 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
521 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
522 l_rulv_rec rulv_rec_type;
523 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_rule_setup';
524 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
525 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
526 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
527
528 BEGIN
529 IF (is_debug_procedure_on) THEN
530 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
531 END IF;
532 IF (is_debug_statement_on) THEN
533 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgd_code: '||p_rgd_code);
534 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rdf_code: '||p_rdf_code);
535 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
536 END IF;
537
538 IF (is_debug_statement_on) THEN
539 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
540 END IF;
541 okl_am_util_pvt.get_rule_record (
542 p_rgd_code => p_rgd_code,
543 p_rdf_code => p_rdf_code,
544 p_chr_id => p_chr_id,
545 p_cle_id => NULL,
546 p_message_yn => FALSE,
547 x_rulv_rec => l_rulv_rec,
548 x_return_status => l_return_status);
549 IF (is_debug_statement_on) THEN
550 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
551 END IF;
552
553 -- If rule is not found, return Success
554 -- If rule is found, check its setup
555 IF l_return_status = OKL_API.G_RET_STS_SUCCESS THEN
556
557 -- ********************************************************
558 -- Evalute rule record: not_applicable, constant or formula
559 -- The field INFO1 indicated if the rule is either
560 -- not applicable (evaluated to null), equals to a
561 -- constant value, or equals to a value of a formula.
562 -- The field INFO2 allows to specify the value of a
563 -- the constant. The field INFO3 allows to specify a
564 -- formula to use for calculations.
565 -- ********************************************************
566
567 check_rule_value (
568 p_calc_option => l_rulv_rec.rule_information1,
569 p_fixed_value => l_rulv_rec.rule_information2,
570 p_formula_name => l_rulv_rec.rule_information3,
571
572 p_rgd_code => p_rgd_code,
573 p_rdf_code => p_rdf_code,
574 x_return_status => l_return_status);
575
576 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
577 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR
578 THEN
579 l_overall_status := l_return_status;
580 END IF;
581 END IF;
582
583 -- Some rules store maximum allowed value
584 IF p_rdf_code IN ('AMCTPE','AMBPOC') THEN
585
586 check_rule_value (
587 p_calc_option => l_rulv_rec.rule_information5,
588 p_fixed_value => l_rulv_rec.rule_information6,
589 p_formula_name => l_rulv_rec.rule_information7,
590 p_rgd_code => p_rgd_code,
591 p_rdf_code => p_rdf_code,
592 x_return_status => l_return_status);
593
594 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
595 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR
596 THEN
597 l_overall_status := l_return_status;
598 END IF;
599 END IF;
600
601 END IF;
602
603 -- Some rules store minimum allowed value
604 IF p_rdf_code IN ('AMBPOC') THEN
605
606 check_rule_value (
607 p_calc_option => l_rulv_rec.rule_information8,
608 p_fixed_value => l_rulv_rec.rule_information9,
609 p_formula_name => l_rulv_rec.rule_information10,
610 p_rgd_code => p_rgd_code,
611 p_rdf_code => p_rdf_code,
612 x_return_status => l_return_status);
613
614 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
615 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR
616 THEN
617 l_overall_status := l_return_status;
618 END IF;
619 END IF;
620
621 END IF;
622
623 END IF;
624
625 x_return_status := l_overall_status;
626 IF (is_debug_procedure_on) THEN
627 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
628 END IF;
629
630 EXCEPTION
631
632 WHEN OTHERS THEN
633 IF (is_debug_exception_on) THEN
634 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
635 END IF;
636
637 -- store SQL error message on message stack for caller
638 OKL_API.SET_MESSAGE (
639 p_app_name => G_APP_NAME
640 ,p_msg_name => G_UNEXPECTED_ERROR
641 ,p_token1 => G_SQLCODE_TOKEN
642 ,p_token1_value => sqlcode
643 ,p_token2 => G_SQLERRM_TOKEN
644 ,p_token2_value => sqlerrm);
645
646 -- notify caller of an UNEXPECTED error
647 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
648
649 END check_rule_setup;
650
651
652 -- Start of comments
653 --
654 -- Procedure Name : check_contract_portfolio
655 -- Description : Check contract portfolio rules
656 -- Business Rules :
657 -- Parameters : Contract Id
658 -- Version : 1.0
659 -- End of comments
660
661 PROCEDURE check_contract_portfolio (
662 x_return_status OUT NOCOPY VARCHAR2,
663 p_chr_id IN NUMBER) IS
664
665 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
666 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
667 l_rulv_rec rulv_rec_type;
668 l_rgd_code VARCHAR2(30) := 'AMCOPO'; -- Contract Portfolio RG
669 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_contract_portfolio';
670 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
671 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
672 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
673
674 BEGIN
675 IF (is_debug_procedure_on) THEN
676 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
677 END IF;
678 IF (is_debug_statement_on) THEN
679 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
680 END IF;
681
682 -- *************
683 -- Budget Amount
684 -- *************
685
686 IF (is_debug_statement_on) THEN
687 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
688 END IF;
689 okl_am_util_pvt.get_rule_record (
690 p_rgd_code => l_rgd_code,
691 p_rdf_code => 'AMPRBA',
692 p_chr_id => p_chr_id,
693 p_cle_id => NULL,
694 p_message_yn => TRUE,
695 x_rulv_rec => l_rulv_rec,
696 x_return_status => l_return_status);
697 IF (is_debug_statement_on) THEN
698 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
699 END IF;
700
701 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
702 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
703 l_overall_status := l_return_status;
704 END IF;
705 END IF;
706
707 check_rule_setup (
708 p_rgd_code => l_rgd_code,
709 p_rdf_code => 'AMPRBA',
710 p_chr_id => p_chr_id,
711 x_return_status => l_return_status);
712
713 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
714 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
715 l_overall_status := l_return_status;
716 END IF;
717 END IF;
718
719 -- ********
720 -- Strategy
721 -- ********
722
723 IF (is_debug_statement_on) THEN
724 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
725 END IF;
726 okl_am_util_pvt.get_rule_record(
727 p_rgd_code => l_rgd_code,
728 p_rdf_code => 'AMPRST',
729 p_chr_id => p_chr_id,
730 p_cle_id => NULL,
731 p_message_yn => TRUE,
732 x_rulv_rec => l_rulv_rec,
733 x_return_status => l_return_status);
734 IF (is_debug_statement_on) THEN
735 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
736 END IF;
737
738 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
739 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
740 l_overall_status := l_return_status;
741 END IF;
742 END IF;
743
744 -- ****************
745 -- Assignment Group
746 -- ****************
747
748 IF (is_debug_statement_on) THEN
749 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
750 END IF;
751 okl_am_util_pvt.get_rule_record(
752 p_rgd_code => l_rgd_code,
753 p_rdf_code => 'AMPRAG',
754 p_chr_id => p_chr_id,
755 p_cle_id => NULL,
756 p_message_yn => TRUE,
757 x_rulv_rec => l_rulv_rec,
758 x_return_status => l_return_status);
759 IF (is_debug_statement_on) THEN
760 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
761 END IF;
762
763 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
764 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
765 l_overall_status := l_return_status;
766 END IF;
767 END IF;
768
769 -- ******************
770 -- Execution Due Date
771 -- ******************
772
773 IF (is_debug_statement_on) THEN
774 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
775 END IF;
776 okl_am_util_pvt.get_rule_record(
777 p_rgd_code => l_rgd_code,
778 p_rdf_code => 'AMPRED',
779 p_chr_id => p_chr_id,
780 p_cle_id => NULL,
781 p_message_yn => TRUE,
782 x_rulv_rec => l_rulv_rec,
783 x_return_status => l_return_status);
784 IF (is_debug_statement_on) THEN
785 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
786 END IF;
787
788 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
789 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
790 l_overall_status := l_return_status;
791 END IF;
792 END IF;
793
794 x_return_status := l_overall_status;
795 IF (is_debug_procedure_on) THEN
796 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
797 END IF;
798
799 EXCEPTION
800
801 WHEN OTHERS THEN
802 IF (is_debug_exception_on) THEN
803 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' ||
804 sqlerrm);
805 END IF;
806
807 -- store SQL error message on message stack for caller
808 OKL_API.SET_MESSAGE (
809 p_app_name => G_APP_NAME
810 ,p_msg_name => G_UNEXPECTED_ERROR
811 ,p_token1 => G_SQLCODE_TOKEN
812 ,p_token1_value => sqlcode
813 ,p_token2 => G_SQLERRM_TOKEN
814 ,p_token2_value => sqlerrm);
815
816 -- notify caller of an UNEXPECTED error
817 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
818
819 END check_contract_portfolio;
820
821
822 -- Start of comments
823 --
824 -- Procedure Name : check_calculate_quote
825 -- Description : Check rules for quote calculations
826 -- Business Rules :
827 -- Parameters : Contract Id
828 -- Version : 1.0
829 -- End of comments
830
831 PROCEDURE check_calculate_quote (
832 x_return_status OUT NOCOPY VARCHAR2,
833 p_chr_id IN NUMBER) IS
834
835 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
836 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
837 l_rulv_rec rulv_rec_type;
838 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_calculate_quote';
839 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
840 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
841 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
842
843 BEGIN
844 IF (is_debug_procedure_on) THEN
845 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
846 END IF;
847 IF (is_debug_statement_on) THEN
848 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
849 END IF;
850
851 -- ***************************************
852 -- Top End of Term Purchase Option Formula
853 -- ***************************************
854
855 IF (is_debug_statement_on) THEN
856 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
857 END IF;
858 okl_am_util_pvt.get_rule_record(
859 p_rgd_code => 'AMTFOC',
860 p_rdf_code => 'AMBPOC',
861 p_chr_id => p_chr_id,
862 p_cle_id => NULL,
863 p_message_yn => TRUE,
864 x_rulv_rec => l_rulv_rec,
865 x_return_status => l_return_status);
866 IF (is_debug_statement_on) THEN
867 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
868 END IF;
869
870 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
871 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
872 l_overall_status := l_return_status;
873 END IF;
874 END IF;
875
876 -- **********************************************************
877 -- Setup of Rules included into Top Early Termination Formula
878 -- **********************************************************
879
880 -- Contract Obligation
881 check_rule_setup (
882 p_rgd_code => 'AMTEWC',
883 p_rdf_code => 'AMBCOC',
884 p_chr_id => p_chr_id,
885 x_return_status => l_return_status);
886
887 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
888 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
889 l_overall_status := l_return_status;
890 END IF;
891 END IF;
892
893 -- Return Fee
894 check_rule_setup (
895 p_rgd_code => 'AMTEWC',
896 p_rdf_code => 'AMCRFE',
897 p_chr_id => p_chr_id,
898 x_return_status => l_return_status);
899
900 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
901 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
902 l_overall_status := l_return_status;
903 END IF;
904 END IF;
905
906 -- Rollover Incentive
907 check_rule_setup (
908 p_rgd_code => 'AMTEWC',
909 p_rdf_code => 'AMCRIN',
910 p_chr_id => p_chr_id,
911 x_return_status => l_return_status);
912
913 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
914 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
915 l_overall_status := l_return_status;
916 END IF;
917 END IF;
918
919 -- Estimated Property Tax
920 check_rule_setup (
921 p_rgd_code => 'AMTEWC',
922 p_rdf_code => 'AMPRTX',
923 p_chr_id => p_chr_id,
924 x_return_status => l_return_status);
925
926 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
927 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
928 l_overall_status := l_return_status;
929 END IF;
930 END IF;
931
932 -- Security Deposit Disposition
933 check_rule_setup (
934 p_rgd_code => 'AMTEWC',
935 p_rdf_code => 'AMCSDD',
936 p_chr_id => p_chr_id,
937 x_return_status => l_return_status);
938
939 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
940 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
941 l_overall_status := l_return_status;
942 END IF;
943 END IF;
944
945 -- Quote Fee
946 check_rule_setup (
947 p_rgd_code => 'AMTEWC',
948 p_rdf_code => 'AMCQFE',
949 p_chr_id => p_chr_id,
950 x_return_status => l_return_status);
951
952 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
953 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
954 l_overall_status := l_return_status;
955 END IF;
956 END IF;
957
958 -- Quote Discount Rate
959 check_rule_setup (
960 p_rgd_code => 'AMTEWC',
961 p_rdf_code => 'AMCQDR',
962 p_chr_id => p_chr_id,
963 x_return_status => l_return_status);
964
965 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
966 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
967 l_overall_status := l_return_status;
968 END IF;
969 END IF;
970
971 -- Termination Penalty
972 check_rule_setup (
973 p_rgd_code => 'AMTEWC',
974 p_rdf_code => 'AMCTPE',
975 p_chr_id => p_chr_id,
976 x_return_status => l_return_status);
977
978 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
979 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
980 l_overall_status := l_return_status;
981 END IF;
982 END IF;
983
984 -- ****************************************************************
985 -- Setup of Rules included into Top End of Term Termination Formula
986 -- ****************************************************************
987
988 -- Contract Obligation
989 check_rule_setup (
990 p_rgd_code => 'AMTFWC',
991 p_rdf_code => 'AMBCOC',
992 p_chr_id => p_chr_id,
993 x_return_status => l_return_status);
994
995 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
996 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
997 l_overall_status := l_return_status;
998 END IF;
999 END IF;
1000
1001 -- Return Fee
1002 check_rule_setup (
1003 p_rgd_code => 'AMTFWC',
1004 p_rdf_code => 'AMCRFE',
1005 p_chr_id => p_chr_id,
1006 x_return_status => l_return_status);
1007
1008 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1009 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1010 l_overall_status := l_return_status;
1011 END IF;
1012 END IF;
1013
1014 -- Rollover Incentive
1015 check_rule_setup (
1016 p_rgd_code => 'AMTFWC',
1017 p_rdf_code => 'AMCRIN',
1018 p_chr_id => p_chr_id,
1019 x_return_status => l_return_status);
1020
1021 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1022 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1023 l_overall_status := l_return_status;
1024 END IF;
1025 END IF;
1026
1027 -- Estimated Property Tax
1028 check_rule_setup (
1029 p_rgd_code => 'AMTFWC',
1030 p_rdf_code => 'AMPRTX',
1031 p_chr_id => p_chr_id,
1032 x_return_status => l_return_status);
1033
1034 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1035 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1036 l_overall_status := l_return_status;
1037 END IF;
1038 END IF;
1039
1040 -- Security Deposit Disposition
1041 check_rule_setup (
1042 p_rgd_code => 'AMTFWC',
1043 p_rdf_code => 'AMCSDD',
1044 p_chr_id => p_chr_id,
1045 x_return_status => l_return_status);
1046
1047 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1048 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1049 l_overall_status := l_return_status;
1050 END IF;
1051 END IF;
1052
1053 -- Quote Fee
1054 check_rule_setup (
1055 p_rgd_code => 'AMTFWC',
1056 p_rdf_code => 'AMCQFE',
1057 p_chr_id => p_chr_id,
1058 x_return_status => l_return_status);
1059
1060 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1061 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1062 l_overall_status := l_return_status;
1063 END IF;
1064 END IF;
1065
1066 -- Quote Discount Rate
1067 check_rule_setup (
1068 p_rgd_code => 'AMTFWC',
1069 p_rdf_code => 'AMCQDR',
1070 p_chr_id => p_chr_id,
1071 x_return_status => l_return_status);
1072
1073 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1074 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1075 l_overall_status := l_return_status;
1076 END IF;
1077 END IF;
1078
1079 -- Termination Penalty
1080 check_rule_setup (
1081 p_rgd_code => 'AMTFWC',
1082 p_rdf_code => 'AMCTPE',
1083 p_chr_id => p_chr_id,
1084 x_return_status => l_return_status);
1085
1086 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1087 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1088 l_overall_status := l_return_status;
1089 END IF;
1090 END IF;
1091
1092 -- **************************************************************
1093 -- Setup of Rules included into Top Early Purchase Option Formula
1094 -- **************************************************************
1095
1096 -- Purchase Option Amount
1097 check_rule_setup (
1098 p_rgd_code => 'AMTEOC',
1099 p_rdf_code => 'AMBPOC',
1100 p_chr_id => p_chr_id,
1101 x_return_status => l_return_status);
1102
1103 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1104 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1105 l_overall_status := l_return_status;
1106 END IF;
1107 END IF;
1108
1109 -- ********************************************************************
1110 -- Setup of Rules included into Top End of Term Purchase Option Formula
1111 -- ********************************************************************
1112
1113 -- Purchase Option Amount
1114 check_rule_setup (
1115 p_rgd_code => 'AMTFOC',
1116 p_rdf_code => 'AMBPOC',
1117 p_chr_id => p_chr_id,
1118 x_return_status => l_return_status);
1119
1120 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1121 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1122 l_overall_status := l_return_status;
1123 END IF;
1124 END IF;
1125
1126 -- ***************************************************
1127 -- Setup of Rules included into Top Repurchase Formula
1128 -- ***************************************************
1129
1130 -- Sale Price
1131 check_rule_setup (
1132 p_rgd_code => 'AMREPQ',
1133 p_rdf_code => 'AMBSPR',
1134 p_chr_id => p_chr_id,
1135 x_return_status => l_return_status);
1136
1137 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1138 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1139 l_overall_status := l_return_status;
1140 END IF;
1141 END IF;
1142
1143 -- Quote Fee
1144 check_rule_setup (
1145 p_rgd_code => 'AMREPQ',
1146 p_rdf_code => 'AMCQFE',
1147 p_chr_id => p_chr_id,
1148 x_return_status => l_return_status);
1149
1150 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1151 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1152 l_overall_status := l_return_status;
1153 END IF;
1154 END IF;
1155
1156 -- Quote Discount Rate
1157 check_rule_setup (
1158 p_rgd_code => 'AMREPQ',
1159 p_rdf_code => 'AMCQDR',
1160 p_chr_id => p_chr_id,
1161 x_return_status => l_return_status);
1162
1163 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1164 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1165 l_overall_status := l_return_status;
1166 END IF;
1167 END IF;
1168
1169 x_return_status := l_overall_status;
1170 IF (is_debug_procedure_on) THEN
1171 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1172 END IF;
1173
1174 EXCEPTION
1175
1176 WHEN OTHERS THEN
1177 IF (is_debug_exception_on) THEN
1178 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1179 END IF;
1180
1181 -- store SQL error message on message stack for caller
1182 OKL_API.SET_MESSAGE (
1183 p_app_name => G_APP_NAME
1184 ,p_msg_name => G_UNEXPECTED_ERROR
1185 ,p_token1 => G_SQLCODE_TOKEN
1186 ,p_token1_value => sqlcode
1187 ,p_token2 => G_SQLERRM_TOKEN
1188 ,p_token2_value => sqlerrm);
1189
1190 -- notify caller of an UNEXPECTED error
1191 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1192
1193 END check_calculate_quote;
1194
1195
1196 -- Start of comments
1197 --
1198 -- Procedure Name : check_create_quote
1199 -- Description : Check termination and repurchase quote creation rules
1200 -- Business Rules :
1201 -- Parameters : Contract Id
1202 -- Version : 1.0
1203 -- End of comments
1204
1205 PROCEDURE check_create_quote (
1206 x_return_status OUT NOCOPY VARCHAR2,
1207 p_chr_id IN NUMBER) IS
1208
1209 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1210 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1211 l_rulv_rec rulv_rec_type;
1212 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_create_quote';
1213 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1214 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1215 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1216
1217 BEGIN
1218 IF (is_debug_procedure_on) THEN
1219 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1220 END IF;
1221 IF (is_debug_statement_on) THEN
1222 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
1223 END IF;
1224
1225 -- *******************************************************
1226 -- Quote Effectivity for Termination and Repurchase Quotes
1227 -- *******************************************************
1228
1229 IF (is_debug_statement_on) THEN
1230 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
1231 END IF;
1232 okl_am_util_pvt.get_rule_record(
1233 p_rgd_code => 'AMTQPR',
1234 p_rdf_code => 'AMQTEF',
1235 p_chr_id => p_chr_id,
1236 p_cle_id => NULL,
1237 p_message_yn => TRUE,
1238 x_rulv_rec => l_rulv_rec,
1239 x_return_status => l_return_status);
1240 IF (is_debug_statement_on) THEN
1241 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
1242 END IF;
1243
1244 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1245 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1246 l_overall_status := l_return_status;
1247 END IF;
1248 END IF;
1249
1250 IF l_return_status = OKL_API.G_RET_STS_SUCCESS THEN
1251
1252 check_quote_effectivity (
1253 p_rule_info1 => l_rulv_rec.rule_information1,
1254 p_rule_info2 => l_rulv_rec.rule_information2,
1255 x_return_status => l_return_status);
1256
1257 END IF;
1258
1259 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1260 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1261 l_overall_status := l_return_status;
1262 END IF;
1263 END IF;
1264
1265 -- *********************************
1266 -- Term Status for Termination Quote
1267 -- *********************************
1268
1269 IF (is_debug_statement_on) THEN
1270 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
1271 END IF;
1272 okl_am_util_pvt.get_rule_record(
1273 p_rgd_code => 'AMTQPR',
1274 p_rdf_code => 'AMTSET',
1275 p_chr_id => p_chr_id,
1276 p_cle_id => NULL,
1277 p_message_yn => TRUE,
1278 x_rulv_rec => l_rulv_rec,
1279 x_return_status => l_return_status);
1280 IF (is_debug_statement_on) THEN
1281 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
1282 END IF;
1283
1284 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1285 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1286 l_overall_status := l_return_status;
1287 END IF;
1288 END IF;
1289
1290 x_return_status := l_overall_status;
1291 IF (is_debug_procedure_on) THEN
1292 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1293 END IF;
1294
1295 EXCEPTION
1296
1297 WHEN OTHERS THEN
1298 IF (is_debug_exception_on) THEN
1299 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1300 END IF;
1301
1302 -- store SQL error message on message stack for caller
1303 OKL_API.SET_MESSAGE (
1304 p_app_name => G_APP_NAME
1305 ,p_msg_name => G_UNEXPECTED_ERROR
1306 ,p_token1 => G_SQLCODE_TOKEN
1307 ,p_token1_value => sqlcode
1308 ,p_token2 => G_SQLERRM_TOKEN
1309 ,p_token2_value => sqlerrm);
1310
1311 -- notify caller of an UNEXPECTED error
1312 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1313
1314 END check_create_quote;
1315
1316
1317 -- Start of comments
1318 --
1319 -- Procedure Name : check_quote_wf
1320 -- Description : Check quote workflow rules
1321 -- Business Rules :
1322 -- Parameters : Contract Id
1323 -- Version : 1.0
1324 -- End of comments
1325
1326 PROCEDURE check_quote_wf (
1327 x_return_status OUT NOCOPY VARCHAR2,
1328 p_chr_id IN NUMBER) IS
1329
1330 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1331 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1332 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_quote_wf';
1333 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1334 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1335 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1336
1337 BEGIN
1338 IF (is_debug_procedure_on) THEN
1339 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1340 END IF;
1341 IF (is_debug_statement_on) THEN
1342 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
1343 END IF;
1344
1345 -- *************
1346 -- Gain and Loss
1347 -- *************
1348
1349 check_rule_setup (
1350 p_rgd_code => 'AMTGAL',
1351 p_rdf_code => 'AMGALO',
1352 p_chr_id => p_chr_id,
1353 x_return_status => l_return_status);
1354
1355 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1356 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1357 l_overall_status := l_return_status;
1358 END IF;
1359 END IF;
1360
1361 x_return_status := l_overall_status;
1362 IF (is_debug_procedure_on) THEN
1363 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1364 END IF;
1365
1366 EXCEPTION
1367
1368 WHEN OTHERS THEN
1369 IF (is_debug_exception_on) THEN
1370 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1371 END IF;
1372
1373 -- store SQL error message on message stack for caller
1374 OKL_API.SET_MESSAGE (
1375 p_app_name => G_APP_NAME
1376 ,p_msg_name => G_UNEXPECTED_ERROR
1377 ,p_token1 => G_SQLCODE_TOKEN
1378 ,p_token1_value => sqlcode
1379 ,p_token2 => G_SQLERRM_TOKEN
1380 ,p_token2_value => sqlerrm);
1381
1382 -- notify caller of an UNEXPECTED error
1383 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1384
1385 END check_quote_wf;
1386
1387
1388 -- Start of comments
1389 --
1390 -- Procedure Name : check_termin_quote_parties
1391 -- Description : Check Termination Quote Parties
1392 -- Business Rules :
1393 -- Parameters : Contract Id
1394 -- Version : 1.0
1395 -- End of comments
1396
1397 PROCEDURE check_termin_quote_parties (
1398 x_return_status OUT NOCOPY VARCHAR2,
1399 p_chr_id IN NUMBER) IS
1400
1401 -- Get vendors attached to Lease contract
1402 CURSOR l_vendor_csr (cp_chr_id NUMBER) IS
1403 SELECT pr.id cpl_id
1404 FROM okc_k_party_roles_b pr
1405 WHERE pr.rle_code = 'OKL_VENDOR'
1406 AND pr.cle_id IS NULL
1407 AND pr.chr_id = cp_chr_id
1408 AND pr.dnz_chr_id = cp_chr_id;
1409
1410 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1411 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1412
1413 l_qtev_rec qtev_rec_type; -- Quote Header
1414 l_qpyv_tbl qpyv_tbl_type; -- Quote Parties
1415 l_taiv_rec taiv_rec_type; -- Billing Header
1416 e_taiv_rec taiv_rec_type; -- Empty Billing Header
1417 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_termin_quote_parties';
1418 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1419 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1420 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1421
1422 BEGIN
1423 IF (is_debug_procedure_on) THEN
1424 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1425 END IF;
1426 IF (is_debug_statement_on) THEN
1427 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
1428 END IF;
1429
1430 -- ********************************************
1431 -- Validate all quote parties using setup rules
1432 -- ********************************************
1433
1434 l_qtev_rec.khr_id := p_chr_id;
1435
1436 IF (is_debug_statement_on) THEN
1437 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_parties_pvt.create_quote_parties');
1438 END IF;
1439 -- The procedure will issue warning messages
1440 okl_am_parties_pvt.create_quote_parties (
1441 p_qtev_rec => l_qtev_rec,
1442 p_validate_only => TRUE,
1443 x_qpyv_tbl => l_qpyv_tbl,
1444 x_return_status => l_return_status);
1445 IF (is_debug_statement_on) THEN
1446 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_parties_pvt.create_quote_parties , return status: ' || l_return_status);
1447 END IF;
1448
1449 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1450 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1451 l_overall_status := l_return_status;
1452 END IF;
1453 END IF;
1454
1455 -- ********************************************************
1456 -- Check if vendor billiing rules are set for Lease Vendors
1457 -- ********************************************************
1458
1459 FOR l_vendor_rec IN l_vendor_csr (p_chr_id) LOOP
1460
1461 l_taiv_rec := e_taiv_rec;
1462 l_taiv_rec.khr_id := p_chr_id;
1463
1464 IF (is_debug_statement_on) THEN
1465 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_invoices_pvt.get_vendor_billing_info');
1466 END IF;
1467 -- The procedure will issue warning messages
1468 okl_am_invoices_pvt.get_vendor_billing_info (
1469 p_cpl_id => l_vendor_rec.cpl_id,
1470 px_taiv_rec => l_taiv_rec,
1471 x_return_status => l_return_status);
1472 IF (is_debug_statement_on) THEN
1473 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);
1474 END IF;
1475
1476 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1477 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR
1478 THEN
1479 l_overall_status := l_return_status;
1480 END IF;
1481 END IF;
1482
1483 END LOOP;
1484
1485 x_return_status := l_overall_status;
1486 IF (is_debug_procedure_on) THEN
1487 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1488 END IF;
1489
1490 EXCEPTION
1491
1492 WHEN OTHERS THEN
1493 IF (is_debug_exception_on) THEN
1494 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1495 END IF;
1496
1497 -- close open cursors
1498 IF l_vendor_csr%ISOPEN THEN
1499 CLOSE l_vendor_csr;
1500 END IF;
1501
1502 -- store SQL error message on message stack for caller
1503 OKL_API.SET_MESSAGE (
1504 p_app_name => G_APP_NAME
1505 ,p_msg_name => G_UNEXPECTED_ERROR
1506 ,p_token1 => G_SQLCODE_TOKEN
1507 ,p_token1_value => sqlcode
1508 ,p_token2 => G_SQLERRM_TOKEN
1509 ,p_token2_value => sqlerrm);
1510
1511 -- notify caller of an UNEXPECTED error
1512 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1513
1514 END check_termin_quote_parties;
1515
1516
1517 -- Start of comments
1518 --
1519 -- Procedure Name : check_repurch_quote_parties
1520 -- Description : Check Repurchase Quote Parties
1521 -- Business Rules :
1522 -- Parameters : Contract Id
1523 -- Version : 1.0
1524 -- End of comments
1525
1526 PROCEDURE check_repurch_quote_parties (
1527 x_return_status OUT NOCOPY VARCHAR2,
1528 p_chr_id IN NUMBER) IS
1529
1530 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1531 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1532
1533 l_qtev_rec qtev_rec_type; -- Quote Header
1534 l_qpyv_tbl qpyv_tbl_type; -- Quote Parties
1535 l_taiv_rec taiv_rec_type; -- Billing Header
1536 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_repurch_quote_parties';
1537 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1538 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1539 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1540
1541 BEGIN
1542 IF (is_debug_procedure_on) THEN
1543 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1544 END IF;
1545 IF (is_debug_statement_on) THEN
1546 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
1547 END IF;
1548
1549 IF get_repurchase_agreement (p_chr_id) = 'Y' THEN
1550
1551 -- **********************************************
1552 -- Validate a vendor partner as a quote recipient
1553 -- **********************************************
1554
1555 l_qtev_rec.khr_id := p_chr_id;
1556
1557 IF (is_debug_statement_on) THEN
1558 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_parties_pvt.create_partner_as_recipient');
1559 END IF;
1560 -- The procedure will issue error messages if needed
1561 okl_am_parties_pvt.create_partner_as_recipient (
1562 p_qtev_rec => l_qtev_rec,
1563 p_validate_only => TRUE,
1564 x_qpyv_tbl => l_qpyv_tbl,
1565 x_return_status => l_return_status);
1566 IF (is_debug_statement_on) THEN
1567 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);
1568 END IF;
1569
1570 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1571 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1572 l_overall_status := l_return_status;
1573 END IF;
1574 END IF;
1575
1576 -- *********************************************************
1577 -- Check if vendor billiing rules are set for Program Vendor
1578 -- *********************************************************
1579
1580 l_taiv_rec.khr_id := p_chr_id;
1581
1582 IF (is_debug_statement_on) THEN
1583 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_invoices_pvt.get_vendor_billing_info');
1584 END IF;
1585 -- The procedure will issue error messages if needed
1586 okl_am_invoices_pvt.get_vendor_billing_info (
1587 px_taiv_rec => l_taiv_rec,
1588 x_return_status => l_return_status);
1589 IF (is_debug_statement_on) THEN
1590 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);
1591 END IF;
1592
1593 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1594 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR
1595 THEN
1596 l_overall_status := l_return_status;
1597 END IF;
1598 END IF;
1599
1600 END IF;
1601
1602 x_return_status := l_overall_status;
1603 IF (is_debug_procedure_on) THEN
1604 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1605 END IF;
1606
1607 EXCEPTION
1608
1609 WHEN OTHERS THEN
1610 IF (is_debug_exception_on) THEN
1611 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1612 END IF;
1613
1614 -- store SQL error message on message stack for caller
1615 OKL_API.SET_MESSAGE (
1616 p_app_name => G_APP_NAME
1617 ,p_msg_name => G_UNEXPECTED_ERROR
1618 ,p_token1 => G_SQLCODE_TOKEN
1619 ,p_token1_value => sqlcode
1620 ,p_token2 => G_SQLERRM_TOKEN
1621 ,p_token2_value => sqlerrm);
1622
1623 -- notify caller of an UNEXPECTED error
1624 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1625
1626 END check_repurch_quote_parties;
1627
1628
1629 -- Start of comments
1630 --
1631 -- Procedure Name : check_bill_to_address
1632 -- Description : Check Customer Bill To Address
1633 -- Business Rules :
1634 -- Parameters : Contract Id
1635 -- Version : 1.0
1636 -- End of comments
1637
1638 PROCEDURE check_bill_to_address (
1639 x_return_status OUT NOCOPY VARCHAR2,
1640 p_chr_id IN NUMBER) IS
1641
1642 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1643 l_bill_to_address_rec okx_cust_site_uses_v%ROWTYPE;
1644 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_bill_to_address';
1645 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1646 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1647 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1648
1649 BEGIN
1650 IF (is_debug_procedure_on) THEN
1651 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1652 END IF;
1653 IF (is_debug_statement_on) THEN
1654 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
1655 END IF;
1656
1657 IF (is_debug_statement_on) THEN
1658 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_bill_to_address');
1659 END IF;
1660 okl_am_util_pvt.get_bill_to_address (
1661 p_contract_id => p_chr_id,
1662 x_bill_to_address_rec => l_bill_to_address_rec,
1663 x_return_status => l_return_status);
1664 IF (is_debug_statement_on) THEN
1665 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);
1666 END IF;
1667
1668 x_return_status := l_return_status;
1669 IF (is_debug_procedure_on) THEN
1670 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1671 END IF;
1672
1673 EXCEPTION
1674
1675 WHEN OTHERS THEN
1676 IF (is_debug_exception_on) THEN
1677 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1678 END IF;
1679
1680 -- store SQL error message on message stack for caller
1681 OKL_API.SET_MESSAGE (
1682 p_app_name => G_APP_NAME
1683 ,p_msg_name => G_UNEXPECTED_ERROR
1684 ,p_token1 => G_SQLCODE_TOKEN
1685 ,p_token1_value => sqlcode
1686 ,p_token2 => G_SQLERRM_TOKEN
1687 ,p_token2_value => sqlerrm);
1688
1689 -- notify caller of an UNEXPECTED error
1690 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1691
1692 END check_bill_to_address;
1693
1694
1695 -- Start of comments
1696 --
1697 -- Procedure Name : check_sec_dep_disp
1698 -- Description : Check Security Deposit Disposition Rule
1699 -- Business Rules :
1700 -- Parameters : Contract Id
1701 -- Version : 1.0
1702 -- End of comments
1703
1704 PROCEDURE check_sec_dep_disp (
1705 x_return_status OUT NOCOPY VARCHAR2,
1706 p_chr_id IN NUMBER) IS
1707
1708 -- Get default date format
1709 CURSOR l_date_format_csr IS
1710 SELECT SYS_CONTEXT ('USERENV','NLS_DATE_FORMAT')
1711 FROM dual;
1712
1713 -- Get contract end date
1714 CURSOR l_contract_csr (cp_chr_id NUMBER) IS
1715 SELECT end_date
1716 FROM okc_k_headers_b
1717 WHERE id = cp_chr_id;
1718
1719 l_rulv_rec rulv_rec_type;
1720 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1721
1722 -- Values stored in Security Deposit Rule
1723 l_held_until_maturity VARCHAR2(1);
1724 l_held_until_date DATE;
1725
1726 l_date_format VARCHAR2(100);
1727 l_contract_end_date DATE;
1728 l_sysdate DATE := SYSDATE;
1729 l_calculate_sdd BOOLEAN;
1730 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_sec_dep_disp';
1731 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1732 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1733 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1734
1735 BEGIN
1736 IF (is_debug_procedure_on) THEN
1737 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1738 END IF;
1739 IF (is_debug_statement_on) THEN
1740 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
1741 END IF;
1742
1743 -- *************************
1744 -- Get Security Deposit Rule
1745 -- *************************
1746
1747 IF (is_debug_statement_on) THEN
1748 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_rule_record');
1749 END IF;
1750 okl_am_util_pvt.get_rule_record (
1751 p_rgd_code => 'LASDEP',
1752 p_rdf_code => 'LASDEP',
1753 p_chr_id => p_chr_id,
1754 p_cle_id => NULL,
1755 x_rulv_rec => l_rulv_rec,
1756 x_return_status => l_return_status,
1757 p_message_yn => FALSE);
1758 IF (is_debug_statement_on) THEN
1759 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_rule_record , return status: ' || l_return_status);
1760 END IF;
1761
1762 IF l_return_status = OKL_API.G_RET_STS_SUCCESS THEN
1763
1764 OPEN l_contract_csr (p_chr_id);
1765 FETCH l_contract_csr INTO l_contract_end_date;
1766 CLOSE l_contract_csr;
1767
1768 l_held_until_maturity := l_rulv_rec.rule_information2;
1769
1770 OPEN l_date_format_csr;
1771 FETCH l_date_format_csr INTO l_date_format;
1772 CLOSE l_date_format_csr;
1773
1774 -- Security Deposit is hold till pre-defined date
1775 l_held_until_date := to_date (
1776 l_rulv_rec.rule_information5, l_date_format);
1777
1778 -- If held_until_date is given, it should be greater then contract end_date
1779 -- If held_until_date is not given, it will be defaulted to contract_end_date
1780 IF l_held_until_maturity = 'Y'
1781 AND l_held_until_date IS NOT NULL
1782 AND l_held_until_date <> G_MISS_DATE
1783 AND l_held_until_date < l_contract_end_date THEN
1784
1785 l_return_status := OKL_API.G_RET_STS_ERROR;
1786 OKC_API.SET_MESSAGE (
1787 p_app_name => G_OKC_APP_NAME,
1788 p_msg_name => G_INVALID_VALUE,
1789 p_token1 => G_COL_NAME_TOKEN,
1790 p_token1_value => 'Security Deposit Held Until Date');
1791
1792 END IF;
1793
1794 ELSE
1795 -- The rule is optional
1796 l_return_status := OKL_API.G_RET_STS_SUCCESS;
1797 END IF;
1798
1799 x_return_status := l_return_status;
1800 IF (is_debug_procedure_on) THEN
1801 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1802 END IF;
1803
1804 EXCEPTION
1805
1806 WHEN OTHERS THEN
1807 IF (is_debug_exception_on) THEN
1808 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
1809 END IF;
1810
1811 -- Close open cursors
1812
1813 IF l_date_format_csr%ISOPEN THEN
1814 CLOSE l_date_format_csr;
1815 END IF;
1816
1817 IF l_contract_csr%ISOPEN THEN
1818 CLOSE l_contract_csr;
1819 END IF;
1820
1821 -- store SQL error message on message stack for caller
1822 OKL_API.SET_MESSAGE (
1823 p_app_name => OKL_API.G_APP_NAME,
1824 p_msg_name => 'OKL_CONTRACTS_UNEXPECTED_ERROR',
1825 p_token1 => 'SQLCODE',
1826 p_token1_value => SQLCODE,
1827 p_token2 => 'SQLERRM',
1828 p_token2_value => SQLERRM);
1829
1830 END check_sec_dep_disp;
1831
1832
1833 -- Start of comments
1834 --
1835 -- Procedure Name : check_am_rule_format
1836 -- Description : Check correct format of rules used by AM
1837 -- Business Rules :
1838 -- Parameters : Contract Id, Rule record
1839 -- Version : 1.0
1840 -- End of comments
1841
1842 PROCEDURE check_am_rule_format (
1843 x_return_status OUT NOCOPY VARCHAR2,
1844 p_chr_id IN NUMBER,
1845 p_rgr_rec IN rgr_rec_type) IS
1846
1847 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1848 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1849 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_am_rule_format';
1850 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1851 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1852 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1853
1854 BEGIN
1855 IF (is_debug_procedure_on) THEN
1856 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1857 END IF;
1858 IF (is_debug_statement_on) THEN
1859 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
1860 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);
1861 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rgd_code: ' || p_rgr_rec.rgd_code);
1862 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information1: ' || p_rgr_rec.rule_information1);
1863 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information2: ' || p_rgr_rec.rule_information2);
1864 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information3: ' || p_rgr_rec.rule_information3);
1865 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information4: ' || p_rgr_rec.rule_information4);
1866 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information5: ' || p_rgr_rec.rule_information5);
1867 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information6: ' || p_rgr_rec.rule_information6);
1868 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information7: ' || p_rgr_rec.rule_information7);
1869 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information8: ' || p_rgr_rec.rule_information8);
1870 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information9: ' || p_rgr_rec.rule_information9);
1871 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_rgr_rec.rule_information10: ' || p_rgr_rec.rule_information10);
1872 END IF;
1873
1874
1875 -- **************************************************
1876 -- Formula-Amount rules used for various calculations
1877 -- **************************************************
1878
1879 IF p_rgr_rec.rule_information_category IN
1880 ('AMPRBA','AMGALO','AMBCOC','AMCRFE','AMCRIN','AMPRTX',
1881 'AMCSDD','AMCQFE','AMCQDR','AMCTPE','AMBPOC','AMBSPR') THEN
1882
1883 -- ********************************************************
1884 -- Evalute rule record: not_applicable, constant or formula
1885 -- The field INFO1 indicated if the rule is either
1886 -- not applicable (evaluated to null), equals to a
1887 -- constant value, or equals to a value of a formula.
1888 -- The field INFO2 allows to specify the value of a
1889 -- the constant. The field INFO3 allows to specify a
1890 -- formula to use for calculations.
1891 -- ********************************************************
1892
1893
1894 -- Changed this call to add new parameter p_option_type
1895 -- rbruno bug fix 6471193
1896
1897 check_rule_value (
1898 p_calc_option => p_rgr_rec.rule_information1,
1899 p_fixed_value => p_rgr_rec.rule_information2,
1900 p_formula_name => p_rgr_rec.rule_information3,
1901 p_option_type => p_rgr_rec.rule_information11,
1902 p_rgd_code => p_rgr_rec.rgd_code,
1903 p_rdf_code => p_rgr_rec.rule_information_category,
1904 x_return_status => l_return_status);
1905
1906 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1907 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1908 l_overall_status := l_return_status;
1909 END IF;
1910 END IF;
1911
1912 -- Some rules store maximum allowed value
1913 IF p_rgr_rec.rule_information_category IN ('AMCTPE','AMBPOC') THEN
1914
1915 check_rule_value (
1916 p_calc_option => p_rgr_rec.rule_information5,
1917 p_fixed_value => p_rgr_rec.rule_information6,
1918 p_formula_name => p_rgr_rec.rule_information7,
1919 p_rgd_code => p_rgr_rec.rgd_code,
1920 p_rdf_code => p_rgr_rec.rule_information_category,
1921 x_return_status => l_return_status);
1922
1923 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1924 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1925 l_overall_status := l_return_status;
1926 END IF;
1927 END IF;
1928
1929 END IF;
1930
1931 -- Some rules store minimum allowed value
1932 IF p_rgr_rec.rule_information_category IN ('AMBPOC') THEN
1933
1934 check_rule_value (
1935 p_calc_option => p_rgr_rec.rule_information8,
1936 p_fixed_value => p_rgr_rec.rule_information9,
1937 p_formula_name => p_rgr_rec.rule_information10,
1938 p_rgd_code => p_rgr_rec.rgd_code,
1939 p_rdf_code => p_rgr_rec.rule_information_category,
1940 x_return_status => l_return_status);
1941
1942 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1943 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1944 l_overall_status := l_return_status;
1945 END IF;
1946 END IF;
1947
1948 END IF;
1949
1950 -- rkuttiya 16-SEP-2003 added following code for Bug:2794685
1951 --Some rules store tolerance values
1952 IF p_rgr_rec.rule_information_category IN ('AMGALO') THEN
1953 check_rule_value (
1954 p_calc_option => p_rgr_rec.rule_information7,
1955 p_fixed_value => p_rgr_rec.rule_information4,
1956 p_formula_name => p_rgr_rec.rule_information6,
1957 p_rgd_code => p_rgr_rec.rgd_code,
1958 p_rdf_code => p_rgr_rec.rule_information_category,
1959 x_return_status => l_return_status);
1960
1961 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1962 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1963 l_overall_status := l_return_status;
1964 END IF;
1965 END IF;
1966
1967 END IF;
1968 --rkuttiya end;
1969
1970 END IF;
1971
1972 -- *******************************************************
1973 -- Quote Effectivity for Termination and Repurchase Quotes
1974 -- *******************************************************
1975
1976 IF p_rgr_rec.rule_information_category = 'AMQTEF' THEN
1977
1978 check_quote_effectivity (
1979 p_rule_info1 => p_rgr_rec.rule_information1,
1980 p_rule_info2 => p_rgr_rec.rule_information2,
1981 x_return_status => l_return_status);
1982
1983 END IF;
1984
1985 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1986 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
1987 l_overall_status := l_return_status;
1988 END IF;
1989 END IF;
1990
1991 x_return_status := l_overall_status;
1992 IF (is_debug_procedure_on) THEN
1993 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
1994 END IF;
1995
1996 EXCEPTION
1997
1998 WHEN OTHERS THEN
1999 IF (is_debug_exception_on) THEN
2000 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
2001 END IF;
2002
2003 -- store SQL error message on message stack for caller
2004 OKL_API.SET_MESSAGE (
2005 p_app_name => G_APP_NAME
2006 ,p_msg_name => G_UNEXPECTED_ERROR
2007 ,p_token1 => G_SQLCODE_TOKEN
2008 ,p_token1_value => sqlcode
2009 ,p_token2 => G_SQLERRM_TOKEN
2010 ,p_token2_value => sqlerrm);
2011
2012 -- notify caller of an UNEXPECTED error
2013 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2014
2015 END check_am_rule_format;
2016
2017
2018 -- Start of comments
2019 --
2020 -- Procedure Name : check_rule_constraints
2021 -- Description : Mandatory checks for values of contract rules used by AM
2022 -- Business Rules :
2023 -- Parameters : Contract Id
2024 -- Version : 1.0
2025 -- End of comments
2026
2027 PROCEDURE check_rule_constraints (
2028 x_return_status OUT NOCOPY VARCHAR2,
2029 p_chr_id IN NUMBER) IS
2030
2031 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2032 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2033 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_rule_constraints';
2034 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
2035 G_LEVEL_EXCEPTION);
2036 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
2037 G_LEVEL_PROCEDURE);
2038 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
2039 G_LEVEL_STATEMENT);
2040
2041 BEGIN
2042 IF (is_debug_procedure_on) THEN
2043 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
2044 END IF;
2045 IF (is_debug_statement_on) THEN
2046 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
2047 END IF;
2048
2049 check_bill_to_address (
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_create_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_calculate_quote (
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_repurch_quote_parties (
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_sec_dep_disp (
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_contract_portfolio (
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 check_quote_wf (
2110 x_return_status => l_return_status,
2111 p_chr_id => p_chr_id);
2112
2113 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2114 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
2115 l_overall_status := l_return_status;
2116 END IF;
2117 END IF;
2118
2119 x_return_status := l_overall_status;
2120 IF (is_debug_procedure_on) THEN
2121 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
2122 END IF;
2123
2124 EXCEPTION
2125
2126 WHEN OTHERS THEN
2127 IF (is_debug_exception_on) THEN
2128 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
2129 END IF;
2130
2131 -- store SQL error message on message stack for caller
2132 OKL_API.SET_MESSAGE (
2133 p_app_name => G_APP_NAME
2134 ,p_msg_name => G_UNEXPECTED_ERROR
2135 ,p_token1 => G_SQLCODE_TOKEN
2136 ,p_token1_value => sqlcode
2137 ,p_token2 => G_SQLERRM_TOKEN
2138 ,p_token2_value => sqlerrm);
2139
2140 -- notify caller of an UNEXPECTED error
2141 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2142
2143 END check_rule_constraints;
2144
2145
2146 -- Start of comments
2147 --
2148 -- Procedure Name : check_warning_constraints
2149 -- Description : Optional checks for values of contract rules used by AM
2150 -- Business Rules :
2151 -- Parameters : Contract Id
2152 -- Version : 1.0
2153 -- End of comments
2154
2155 PROCEDURE check_warning_constraints (
2156 x_return_status OUT NOCOPY VARCHAR2,
2157 p_chr_id IN NUMBER) IS
2158
2159 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2160 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2161 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_warning_constraints';
2162 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
2163 G_LEVEL_EXCEPTION);
2164 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
2165 G_LEVEL_PROCEDURE);
2166 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name,
2167 G_LEVEL_STATEMENT);
2168
2169 BEGIN
2170 IF (is_debug_procedure_on) THEN
2171 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
2172 END IF;
2173 IF (is_debug_statement_on) THEN
2174 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_chr_id: '||p_chr_id);
2175 END IF;
2176
2177 check_termin_quote_parties (
2178 x_return_status => l_return_status,
2179 p_chr_id => p_chr_id);
2180
2181 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2182 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
2183 l_overall_status := l_return_status;
2184 END IF;
2185 END IF;
2186
2187 x_return_status := l_overall_status;
2188 IF (is_debug_procedure_on) THEN
2189 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'End(-)');
2190 END IF;
2191
2192 EXCEPTION
2193
2194 WHEN OTHERS THEN
2195 IF (is_debug_exception_on) THEN
2196 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: ' || sqlcode || ' , SQLERRM : ' || sqlerrm);
2197 END IF;
2198
2199 -- store SQL error message on message stack for caller
2200 OKL_API.SET_MESSAGE (
2201 p_app_name => G_APP_NAME
2202 ,p_msg_name => G_UNEXPECTED_ERROR
2203 ,p_token1 => G_SQLCODE_TOKEN
2204 ,p_token1_value => sqlcode
2205 ,p_token2 => G_SQLERRM_TOKEN
2206 ,p_token2_value => sqlerrm);
2207
2208 -- notify caller of an UNEXPECTED error
2209 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2210
2211 END check_warning_constraints;
2212
2213
2214 END okl_am_qa_data_integrity_pvt;