DBA Data[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;