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