DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSC_PROFILE_ENGINE_PKG

Source


1 PACKAGE BODY CSC_Profile_Engine_PKG AS
2 /* $Header: csccpepb.pls 120.37 2010/10/22 05:18:48 mpathani ship $ */
3 
4 			--
5 			-- Constant values
6 			--
7 			debug       CONSTANT BOOLEAN 	  := FALSE; -- Run engine in debug or normal mode
8 			date_format CONSTANT VARCHAR2(30) := 'YYYY/MM/DD HH24:MI:SS';
9 			--
10 			-- Global variables
11 			--
12 			warning_msg	VARCHAR2(2000)  := ''; -- non-fatal error messages
13 			error_flag	BOOLEAN 	:= FALSE; -- error evaluating one or more blk/chk
14 			--user_id		NUMBER;
15 			--login_id		NUMBER;
16 
17 			--up_total	Number := 0;
18 			--ip_total	Number := 0;
19 			--ua_total	NUmber := 0;
20 			--ia_total	Number := 0;
21 
22 			--g_for_insert	Varchar2(1) := 'Y';
23 			--g_for_party	Varchar2(1) := 'Y';
24 			--period_date	Date := null;
25 
26 			g_error		Varchar2(2000);
27 
28 			--
29 			-- Utility to delete all records in pl/sql tables
30 			--
31 PROCEDURE Table_Delete;
32 
33 
34 --
35 -- Run_Engine
36 --   Loop through all the effective profile checks and evaluate the results
37 --   for each party and account.
38 --   This program can be called in:
39 --      a. customer profile setup form, when changes takes place on the profile definition
40 --      b. customer profile and dashboard window, when refresh button is clicked.
41 --      c. Stand alone as a concurrent program
42 --         note: if no parameters are passed it is assumed that the package will be run
43 --               as a concurrent program. and will update all results for party and account.
44 -- IN
45 --  p_block_tbl - if there are changes in the setup in the profile checks (blocks),
46 --                a table of profile checks is passed.
47 --  p_check_tbl - if there are changes in the setup in the check variable, a table of check
48 --                variables is passed.
49 --  p_party_id
50 --  p_acct_id
51 --  p_group_id
52 --	 -- this parameters is used when the refresh button is pressed. only those profile
53 --	    checks, check variables that falls into the group for that party or account will
54 --	    be calculated.
55 -- OUT
56 --   errbuf - return any error messages
57 --   retcode - return completion status (returns 0 for success, 1 for success
58 --             with warnings, and 2 for error)
59 -- ------------------------ -------------------------
60 --  Changed the Run_Engine procedure for ER#8473903
61 --  Added the p_psite_id parameter  for Party_site_id input.
62 -- The above parameter is used to process the Customer profiles at  site level.
63 --- --------------------------------------------------
64 
65 PROCEDURE Run_Engine (p_errbuf		OUT NOCOPY VARCHAR2,
66 						    p_retcode		OUT NOCOPY NUMBER,
67 						    p_party_id		IN  NUMBER,
68 			                            p_acct_id		IN  NUMBER,
69 					            p_psite_id		IN   NUMBER DEFAULT NULL, -- added by spamujul for ER#8473903
70 		                                    p_group_id	IN  NUMBER
71 						    ) IS
72 
73 			  v_block_count		NUMBER := 0;
74 			  v_check_count		NUMBER := 0;
75 			  v_errbuf			Varchar2(240);
76 			  v_retcode			Number;
77 			  v_exception			BOOLEAN;
78 			  v_date				Date := null;
79 			  --l_period_date	Date := null;
80 			  l_up_total			Number := 0;
81 			  l_ip_total			Number := 0;
82 			  l_ua_total			NUmber := 0;
83 			  l_ia_total			Number := 0;
84 			  l_us_total			Number := 0; -- added by spamujul for ER#8473903
85 			  l_is_total			Number := 0; -- added by spamujul for ER#8473903
86 			  l_custom_hook_enabled varchar2(1);         /* added for Custom Hook Enhancement */
87 			  l_ref_cursor csc_utils.Party_Ref_Cur_Type; /* added for Custom Hook Enhancement */
88 			  l_party_rec csc_utils.Prof_Rec_Type;       /* added for Custom Hook Enhancement */
89 			  l_party_id			Number;
90 
91 BEGIN
92 
93 		   -- Default user and login IDs
94 		   --user_id  := fnd_global.user_id;
95 		   --login_id := fnd_global.login_id;
96 
97 		   l_up_total	:=  0;
98 		   l_ip_total	:=  0;
99 		   l_ua_total	:=  0;
100 		   l_ia_total	:=  0;
101 		   l_us_total	:= 0;		-- added by spamujul for ER#8473903
102 		   l_is_total	:= 0;		 -- added by spamujul for ER#8473903
103 		   table_delete;
104 
105     /*************************************************************************************
106 				START OF CUSTOM HOOK ENHANCEMENT
107    CSC_PROF_PARTY_SQL_CUHK will be invoked to get the select statement for fetching party
108    records by the profile engine.
109    *************************************************************************************/
110 	   l_custom_hook_enabled := 'N';
111 	   IF  p_party_id IS NULL THEN
112 	      IF JTF_USR_HKS.ok_to_execute('CSC_PROF_PARTY_SQL_CUHK','GET_PARTY_SQL_PRE','B','C') THEN
113 		   l_custom_hook_enabled := 'Y';
114 		   CSC_PROF_PARTY_SQL_CUHK.Get_Party_Sql_Pre(l_ref_cursor);
115 		LOOP
116 			FETCH l_ref_cursor INTO l_party_id;
117 			EXIT WHEN l_ref_cursor%NOTFOUND;
118 			IF l_party_id is not NULL then
119 				IF p_group_id is NULL then
120 					Evaluate_Checks3(l_party_id,
121 									    null,
122 									    null,
123 									    NULL, -- added by spamujul for ER#8473903
124 									    v_errbuf,
125 									    v_retcode
126 									    );
127 			       ELSE /* group_id is not null */
128 					Evaluate_Checks2(l_party_id,
129 										null,
130 										NULL, -- added by spamujul for ER#8473903
131 										p_group_id,
132 										'N',
133 										v_errbuf,
134 										v_retcode
135 									);
136 			       END IF;
137 			 END IF;
138 			p_errbuf  := v_errbuf;
139 			p_retcode := v_retcode;
140 		END LOOP;
141 		ELSE
142 			l_custom_hook_enabled := 'N';
143 		END IF; /* IF JTF_USR_HKS.ok_to_execute */
144 	   END IF; /*  IF  p_party_id IS NULL */
145 
146 	    IF l_custom_hook_enabled = 'N' THEN
147 	    /*Existing logic is used */
148 	   /*******************************************************************************************
149 					END OF CUSTOM HOOK ENHANCEMENT
150 	   ********************************************************************************************/
151 		IF (p_party_id is null and p_group_id is NULL ) THEN
152   			-- Populate the check results table for all parties and accounts for type 'B'
153 		        Evaluate_Checks1_Var;
154 		        IF g_check_no_batch = 'Y' THEN
155 				  -- Call Evaluate_Blocks1_No_Batch and Evaluate_Checks1_No_Batch
156 				  -- to process profile variables with no batch sql stmnt for type Variable ('B')
157 				   Evaluate_Blocks1_No_Batch(l_up_total,
158 											 l_ip_total,
159 											 l_ua_total,
160 											 l_ia_total
161 											 ,l_us_total, -- added by spamujul for ER#8473903
162 											  l_is_total -- added by spamujul for ER#8473903
163 											 );
164 				   Evaluate_Checks1_No_Batch(v_errbuf, v_retcode);
165 				   p_errbuf := v_errbuf;
166 				   p_retcode := v_retcode;
167 			END IF;
168 			-- Populate the check results table for all parties and accounts for type 'T'
169 			Evaluate_Checks1_Rule(v_errbuf, v_retcode);
170 			p_errbuf := v_errbuf;
171 			p_retcode := v_retcode;
172 			-- Call Relationship Plan Engine
173 			Csc_Plan_Assignment_Pkg.Run_Plan_Engine (v_errbuf, v_retcode, null, null, null, null);
174 		  ELSIF (p_party_id IS NOT NULL and p_group_id IS NOT NULL) THEN
175 			-- Evaluate for this party Alone, only for Valid checks present in the given group
176 			    Evaluate_Checks2(p_party_id		=> p_party_id,
177 								 p_acct_id		=>  p_acct_id,
178 								 p_psite_id		=> p_psite_id,-- added by spamujul for ER#8473903
179 								 p_group_id		=> p_group_id,
180 								 p_critical_flag	=> 'N',
181 							         errbuf			=> v_errbuf,
182 							         retcode			=> v_retcode);
183 			party_id_plan_table(1) 	 := p_party_id;
184 			account_id_plan_table(1) := p_acct_id;
185 			-- Commented the following code for bug 8471528 by spamujul
186 			--Csc_Plan_Assignment_Pkg.Run_Plan_Engine (v_errbuf, v_retcode, null, null, p_party_id, null); -- added by mpathani for bug 6928322
187 			   Csc_Plan_Assignment_Pkg.Run_Plan_Engine (v_errbuf, v_retcode, null, null, p_party_id, p_acct_id); -- Fix bug 8471528 by spamujul
188 		 ELSIF (p_party_id IS NOT NULL and p_group_id is null ) THEN
189 			-- Evaluate for all Valid Checks and For this party ;
190 			Evaluate_Checks3(p_party_id,
191 						      p_acct_id,
192 						      p_psite_id, -- added by spamujul for ER#8473903
193 						      p_group_id,
194 						      v_errbuf,
195 						      v_retcode
196 						      );
197 			party_id_plan_table(1)   := p_party_id;
198 			account_id_plan_table(1) := p_acct_id;
199 			-- Commented the following code for bug 8471528 by spamujul
200 			--Csc_Plan_Assignment_Pkg.Run_Plan_Engine (v_errbuf, v_retcode, null, null, p_party_id, null); -- added by mpathani for bug 6928322
201 			 Csc_Plan_Assignment_Pkg.Run_Plan_Engine (v_errbuf, v_retcode, null, null, p_party_id, p_acct_id); -- Fix bug 8471528 by spamujul
202 
203 		ELSIF (p_party_id IS NULL and p_group_id is NOT null ) THEN -- added for 1850508
204 			-- Assume Group is given, but party and Account are null , Process for all parties
205 			-- This is specifically for cases, where the customers can start 'n' concurrent pgms
206 			-- for different groups.
207 			-- Populate the check results table for all parties and accounts
208 			Evaluate_Checks4_Var(p_Group_id);
209 			-- Call Evaluate_Blocks4_No_Batch and Evaluate_Checks4_No_Batch
210 			-- to process profile variables with no batch sql stmnt
211 			IF g_check_no_batch = 'Y' THEN
212 				   Evaluate_Blocks4_No_Batch(l_up_total,
213 										 l_ip_total,
214 										 l_ua_total,
215 										 l_ia_total,
216 										 l_us_total, -- added by spamujul for ER#8473903
217 										 l_is_total, -- added by spamujul for ER#8473903
218 										 p_group_id);
219 				   Evaluate_Checks4_No_Batch(v_errbuf, v_retcode, p_Group_id);
220 				   p_errbuf := v_errbuf;
221 				   p_retcode := v_retcode;
222 			END IF;
223 			Evaluate_Checks4_Rule(v_errbuf, v_retcode, p_Group_id);
224 			p_errbuf := v_errbuf;
225 			p_retcode := v_retcode;
226 
227 			-- Call Relationship Plan Engine
228 			-- Check How to call Plans engine
229 			-- Csc_Plan_Assignment_Pkg.Run_Plan_Engine (v_errbuf, v_retcode, null, null, null, null);
230 		END IF;
231 	END IF; /* IF l_custom_hook_enabled = 'N' */
232 Exception
233 	when others then
234 		table_delete;
235 		g_error := sqlcode || ' ' || sqlerrm;
236 		fnd_file.put_line(fnd_file.log , g_error);
237 END Run_Engine;
238 
239   --
240   -- Bug 1942032 to run engine as a concurrent program - overloaded procedure when
241   -- Account Id is removed from conc. program parameters.
242   --
243   PROCEDURE Run_Engine (p_errbuf		OUT NOCOPY VARCHAR2,
244     		      				      p_retcode	OUT NOCOPY NUMBER,
245 						      p_party_id	IN  NUMBER,
246 						      p_group_id	IN  NUMBER ) Is
247 
248   begin
249 			   run_engine(p_errbuf 		=> p_errbuf,
250 						      p_retcode 	=> p_retcode,
251 						      p_party_id	=> p_party_id,
252 						      p_acct_id		=> NULL,
253 						      p_psite_id	=> NULL, -- added by spamujul for ER#8473903
254 						      p_group_id	=> p_group_id
255 				      );
256   End Run_engine;
257 
258 /* added the overloaded procedure for JIT enhancement */
259 PROCEDURE Run_Engine_jit (p_party_id		IN NUMBER,
260 							  p_acct_id		IN NUMBER,
261 				   		          p_psite_id		IN   NUMBER DEFAULT NULL, -- added by spamujul for ER#8473903
262 							  p_group_id		IN NUMBER,
263 			  			          p_critical_flag	IN VARCHAR2,
264 							  p_party_type	IN VARCHAR2 DEFAULT 'CUSTOMER'
265 							  ) IS
266 			   v_errbuf  VARCHAR2(240);
267 			   v_retcode NUMBER;
268 BEGIN
269 	/* If party_type is customer -then g_dashboard_for_employee is Y else N */
270 	 IF upper(p_party_type) ='CUSTOMER' then
271 	     g_dashboard_for_employee := 'N';
272 	 elsif upper(p_party_type) ='EMPLOYEE' then
273 	     g_dashboard_for_employee := 'Y';
274 	 else
275 	     g_dashboard_for_employee := ' ';
276 	 end if;
277 	Evaluate_Checks2(p_party_id		=> p_party_id,
278 				     p_acct_id			=> p_acct_id,
279 				     p_psite_id		=> p_psite_id, -- added by spamujul for ER#8473903
280 				     p_group_id		=> p_group_id,
281 				     p_critical_flag		=> p_critical_flag,
282 				     errbuf				=> v_errbuf,
283 				     retcode			=> v_retcode);
284 END Run_Engine_jit;
285 
286 /* Overloaded procedure for R12 Employee HelpDesk Modifications */
287 PROCEDURE Run_Engine_All (p_errbuf		OUT	NOCOPY VARCHAR2,
288     					                   p_retcode		OUT	NOCOPY NUMBER,
289 					                   p_party_type	IN		VARCHAR2,
290 					                   p_party_id          IN		NUMBER,
291 					                   p_group_id        IN		NUMBER
292 							   )
293 							IS
294 BEGIN
295 /* If party_type is customer -then g_dashboard_for_employee is Y else N */
296 	 IF upper(p_party_type) ='CUSTOMER' then
297 	     g_dashboard_for_employee := 'N';
298 	 elsif upper(p_party_type) ='EMPLOYEE' then
299 	     g_dashboard_for_employee := 'Y';
300 	 else
301 	     g_dashboard_for_employee := ' ';
302 	 end if;
303 	 run_engine(p_errbuf 			=> p_errbuf,
304 		      p_retcode 			=> p_retcode,
305 	              p_party_id			=> p_party_id,
306 	              p_acct_id				=> null,
307 		      p_psite_id			=> NULL, -- added by spamujul for ER#8473903
308 		      p_group_id			=> p_group_id);
309 END Run_Engine_All;
310 --
311 -- Evaluate_Checks1_Var
312 --   Loop through all checks and evaluate the results
313 --   for each customer and account for type 'B'(Variable)
314 --   Processing if only Batch_Sql_Stmnt is not null
315 --   if check_id is null, party_id is null, account_id is null
316 --	      and block_id is null
317 --
318 
319 PROCEDURE Evaluate_Checks1_Var
320 			IS
321 		  chk_id					Number;
322 		  chk_name				Varchar2(240);
323 		  sel_blk_id				Number;
324 		  data_type				Varchar2(90);
325 		  fmt_mask				Varchar2(90);
326 		  rule					Varchar2(32767);
327 		  chk_u_l_flag			Varchar2(3);
328 		  Thd_grade				Varchar2(9);
329 		  truncate_flag			Varchar2(1)		:= 'N';
330 		  blk_id					Number := null;
331 		  sql_stmt				Varchar2(2000)	:= null;
332 		  batch_sql_stmnt		Varchar2(4000)  := null;
333 		  curr_code				Varchar2(15)		:= null;
334 		  v_party_in_sql			Number := 0;
335 		  v_acct_in_sql			Number := 0;
336 		  v_psite_in_sql			Number:=0; 	-- Added by spamujul for ER#8473903
337 		  v_party_id				Number;
338 		  v_check_level			Varchar2(10);
339 		  curr_date				DATE := SYSDATE;
340 		  insert_stmnt			VARCHAR2(4000);
341 		  insert_stmnt_sum		VARCHAR2(4000);
342 		  insert_stmnt_final		VARCHAR2(4000);
343 		  insert_stmnt_party		VARCHAR2(4000);
344 		  insert_stmnt_acct		VARCHAR2(4000);
345 		--Fix bug#7329039 by mpathani
346 		--select_clause       VARCHAR2(100);
347 		--v_select_clause     VARCHAR2(100);
348 		  select_clause			VARCHAR2(2000);
349 		  v_select_clause			VARCHAR2(2000);
350 		  Range_Low_Value		VARCHAR2(240);
351 		  Range_High_Value		VARCHAR2(240);
352 		  val						VARCHAR2(240) := null;
353 		  /* variables for columns of insert statement */
354 		  c_fmt_mask			VARCHAR2(1000);
355 		  c_grade				VARCHAR2(1000);
356 		  c_curr_code			VARCHAR2(1000);
357 		  c_threshold				VARCHAR2(1000);
358 		  c_rating				VARCHAR2(1000);
359 		  c_color					VARCHAR2(1000);
360 		  v_count				NUMBER;
361 		  v_chk_count			NUMBER;
362 		  v_batch_count			NUMBER;
363 		-- varlables for getting CSC schema name
364 		  v_schema_status		VARCHAR2(1);
365 		  v_industry				VARCHAR2(1);
366 		  v_schema_name		VARCHAR2(30);
367 		  v_get_appl				BOOLEAN;
368 		-- variables to build the batch sql for summation
369 		  v_select_pos			number;
370 		  v_select_length			number;
371 		  v_from_pos				number;
372 		  v_from_sum			varchar2(2000);
373 		  v_select_sum			varchar2(2000) := 'SELECT hz.party_id, null,NULL,  '; -- Added 'NULL' for party_site_id  by spamujul for ER#8473903
374 		  v_group_pos			number;
375 		  v_group				varchar2(2000) := 'GROUP BY hz.party_id';
376 		  return_status			varchar2(50);
377 		-- variables for handling contact profile variables
378 		  v_where_clause_no_rel	VARCHAR2(1000) := 'HZ.PARTY_TYPE IN (' || '''' || 'PERSON' || '''' || ', ' || '''' ||  'ORGANIZATION' || '''' || ')' ;
379 		  v_where_clause_rel		VARCHAR2(1000) := 'HZ.PARTY_TYPE = ' || '''' ||'PARTY_RELATIONSHIP'|| '''' ;
380 		  TABLESEGMENT_FULL  EXCEPTION;
381 		  INDEXSEGMENT_FULL  EXCEPTION;
382 		  SNAPSHOT_TOO_OLD   EXCEPTION;
383 		  INTERNAL_ERROR		EXCEPTION;
384 		  SUMMATION_ERROR    EXCEPTION;
385 		  PRAGMA EXCEPTION_INIT(TABLESEGMENT_FULL, -1653);
386 		  PRAGMA EXCEPTION_INIT(INDEXSEGMENT_FULL, -1654);
387 		  PRAGMA EXCEPTION_INIT(SNAPSHOT_TOO_OLD, -1555);
388 		  PRAGMA EXCEPTION_INIT(INTERNAL_ERROR, -600);
389 		  checks_csr				checks_cur_var;
390 
391 		  CURSOR block_csr IS
392 		      SELECT block_id,
393 					sql_stmnt,
394 					batch_sql_stmnt,
395 					currency_code,
396 					select_clause
397 			FROM csc_prof_blocks_b a
398 		       WHERE a.block_id = sel_blk_id;
399 
400 		   Cursor val_csr3 IS
401 		     Select Range_Low_Value,
402 				Range_High_Value
403 		     From   csc_prof_check_ratings
404 		     Where  check_id = chk_id
405 		     and    check_rating_grade = thd_grade;
406 
407 		   CURSOR rating_crs IS
408 		     SELECT rating_code,
409 					check_rating_grade,
410 					color_code,
411 					range_low_value,
412 					range_high_value
413 		       FROM csc_prof_check_ratings
414 		      WHERE check_id = chk_id;
415 
416 BEGIN
417 	   COMMIT;
418 	   EXECUTE IMMEDIATE 'ALTER SESSION ENABLE PARALLEL DML';
419 	   EXECUTE IMMEDIATE 'ALTER SESSION SET SKIP_UNUSABLE_INDEXES=TRUE';
420 	   v_get_appl :=  FND_INSTALLATION.GET_APP_INFO('CSC', v_schema_status, v_industry, v_schema_name);
421 	   EXECUTE IMMEDIATE 'ALTER TABLE ' || v_schema_name || '.CSC_PROF_CHECK_RESULTS NOLOGGING';
422 	   EXECUTE IMMEDIATE 'ALTER TABLE ' || v_schema_name || '.CSC_PROF_BATCH_RESULTS2_T NOLOGGING';
423 	   EXECUTE IMMEDIATE 'ALTER TABLE ' || v_schema_name || '.CSC_PROF_BATCH_RESULTS1_T NOLOGGING';
424 	   SELECT count(*)
425 	   INTO v_chk_count
426 	   FROM csc_prof_check_results;
427 
428 	   SELECT count(*)
429 	   INTO v_batch_count
430 	   FROM CSC_PROF_BATCH_RESULTS2_T;
431 
432 	   IF v_chk_count = 0 AND v_batch_count <> 0 THEN
433 		      EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N2 UNUSABLE';
434 		      EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N3 UNUSABLE';
435 		      EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N4 UNUSABLE';
436 			INSERT /*+ PARALLEL (csc_prof_check_results, 12) */
437 			INTO csc_prof_check_results
438 					(check_results_id,
439 					  check_id,
440 					  party_id,
441 					  cust_account_id,
442 					  party_site_id, -- Added by spamujul for  ER#8473903
443 					  value,
444 					  currency_code,
445 					  grade,
446 					  created_by,
447 					  creation_date,
448 					  last_updated_by,
449 					  last_update_date,
450 					  last_update_login,
451 					  results_threshold_flag,
452 					  rating_code,
453 					  color_code
454 					 )
455 			SELECT  check_results_id,
456 					  check_id,
457 					  party_id,
458 					  cust_account_id,
459 					  party_site_id, -- Added by spamujul for  ER#8473903
460 					  value,
461 					  currency_code,
462 					  grade,
463 					  created_by,
464 					  creation_date,
465 					   last_updated_by,
466 					   last_update_date,
467 					   last_update_login,
468 					   results_threshold_flag,
469 					   rating_code,
470 					   color_code
471 				FROM  CSC_PROF_BATCH_RESULTS2_T;
472 		COMMIT;
473 		EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N2 REBUILD NOLOGGING';
474 		EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N3 REBUILD NOLOGGING';
475 		EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N4 REBUILD NOLOGGING';
476 	END IF;
477 	EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || v_schema_name ||'.CSC_PROF_BATCH_RESULTS2_T' ;
478 	IF g_dashboard_for_contact IS NULL THEN
479 		FND_PROFILE.GET('CSC_DASHBOARD_VIEW_FOR_CONTACT',g_dashboard_for_contact);
480 	END IF;
481 	/* R12 Employee HelpDesk Modifications */
482 	   /* If g_dashboard_for_employee ='Y' then honour only employee level checks.If
483 	'N',honour party_level checks with option for contact level fetched from profile option */
484 	IF g_dashboard_for_employee ='Y' THEN
485 		OPEN checks_csr FOR
486 				SELECT check_id,
487 						 select_block_id,
488 						 check_level,
489 						 data_type,
490 						 format_mask,
491 						 check_upper_lower_flag,
492 						 threshold_grade
493 				FROM csc_prof_checks_b
494 				 WHERE SYSDATE BETWEEN Nvl(start_date_active, Sysdate)
495 				AND Nvl(end_date_active, Sysdate)
496 				 AND select_type = 'B'
497 				 AND check_level IN ('EMPLOYEE');
498 	ELSIF g_dashboard_for_employee ='N' THEN
499 			IF g_dashboard_for_contact = 'Y' THEN
500 				OPEN checks_csr FOR
501 					SELECT check_id,
502 							 select_block_id,
503 							 check_level,
504 							data_type,
505 							format_mask,
506 							check_upper_lower_flag,
507 							threshold_grade
508 					FROM csc_prof_checks_b
509 			            WHERE SYSDATE BETWEEN Nvl(start_date_active, Sysdate)
510 					 AND Nvl(end_date_active, Sysdate)
511 			               AND select_type = 'B'
512 				      AND check_level IN ('PARTY',
513 									      'ACCOUNT',
514 									      'CONTACT',
515 									      'SITE' -- Added by spamujul for ER#8473903
516 									      );
517 			ELSIF g_dashboard_for_contact = 'N' THEN
518 				OPEN checks_csr FOR
519 					SELECT check_id
520 							 , select_block_id,
521 							 check_level,
522 							data_type,
523 							format_mask,
524 							check_upper_lower_flag,
525 							threshold_grade
526 					FROM csc_prof_checks_b
527 					WHERE SYSDATE BETWEEN Nvl(start_date_active, Sysdate)
528 					 AND Nvl(end_date_active, Sysdate)
529 					 AND select_type = 'B'
530 					 AND check_level IN ('PARTY',
531 										'ACCOUNT'
532 										,'SITE'   -- Added by spamujul for ER#8473903
533 										);
534 			END IF;
535 	END IF;
536 		/* End of  R12 Employee HelpDesk Modifications */
537 		LOOP
538 			FETCH checks_csr
539 			INTO chk_id,
540 				  sel_blk_id,
541 				  v_check_level,
542 				  data_type,
543 				  fmt_mask,
544 				  chk_u_l_flag,
545 				  Thd_grade;
546 		       EXIT WHEN checks_csr%notfound;
547 		     Open block_csr;
548 			Fetch block_csr
549 			INTO blk_id,
550 				  sql_stmt,
551 				  batch_sql_stmnt,
552 				  curr_code,
553 				  select_clause;
554 		       Close block_csr;
555 			IF batch_sql_stmnt IS NOT NULL THEN
556 				 IF v_check_level = 'CONTACT' THEN
557 					IF g_dashboard_for_contact = 'Y' THEN
558 						batch_sql_stmnt := UPPER(batch_sql_stmnt);
559 				                batch_sql_stmnt := REPLACE(batch_sql_stmnt, v_where_clause_no_rel, v_where_clause_rel);
560 			                END IF;
561 			         END IF;
562 			          IF sql_stmt IS NOT NULL Then
563 					 v_party_in_sql	:=	INSTR(lower(sql_stmt),':party_id',1);
564 				         v_acct_in_sql	:=	INSTR(lower(sql_stmt),':cust_account_id',1);
565 					 v_psite_in_sql	:=	INSTR(lower(sql_stmt),':party_site_id',1); -- Added by spamujul for ER#8473903
566 				 Else
567 					v_party_in_sql	:=	0;
568 					v_acct_in_sql	:=	0;
569 					v_psite_in_sql	:=	0;  -- Added by spamujul for ER#8473903
570 				End if;
571 				EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || v_schema_name ||'.CSC_PROF_BATCH_RESULTS1_T' ;
572 
573 				--insert_stmnt := 'INSERT INTO CSC_PROF_BATCH_RESULTS1_T ' || batch_sql_stmnt; -- Commented the following code by spamujul for ER#8473903
574 				-- Added the following code by spamujul for  ER#8473903
575 				insert_stmnt := 'INSERT INTO CSC_PROF_BATCH_RESULTS1_T(PARTY_ID,ACCOUNT_ID,PARTY_SITE_ID,VALUE) '  || batch_sql_stmnt;
576 			        EXECUTE IMMEDIATE (insert_stmnt);
577 				IF v_acct_in_sql <> 0 AND v_check_level = 'PARTY' THEN
578 			             v_select_pos := NULL;
579 				     v_select_length := NULL;
580 				     v_from_pos := NULL;
581 				     v_from_sum := NULL;
582 				     v_select_sum := 'SELECT hz.party_id, null,NULL,  '; -- Added 'NULL' for party_site_id  by spamujul for ER#8473903
583 				     v_select_clause := NULL;
584 				     v_group_pos := NULL;
585 				     v_select_clause := rtrim(ltrim(UPPER(select_clause)));
586 				     v_select_sum := v_select_sum || v_select_clause;
587 				     v_select_pos := instr(upper(batch_sql_stmnt), v_select_clause);
588 				     v_select_length := length(v_select_clause);
589 				     v_from_pos := v_select_pos + v_select_length;
590 				     v_from_sum := substr(batch_sql_stmnt, v_from_pos);
591 				     v_group_pos := instr(upper(v_from_sum), 'GROUP BY HZ.PARTY_ID');
592 				     v_from_sum := substr(v_from_sum, 1, v_group_pos -1);
593 				     v_from_sum := v_from_sum || v_group;
594 				     v_select_sum := v_select_sum || '  ' || v_from_sum;
595 				     -- validate the sql statement
596 				    csc_core_utils_pvt.validate_sql_stmnt( p_sql_stmnt => v_select_sum,
597                                                     x_return_status => return_status);
598 				     IF return_status = 'S' THEN
599 				     	  -- insert_stmnt_sum := 'INSERT INTO CSC_PROF_BATCH_RESULTS1_T ' || v_select_sum ;  -- Commented the following code by spamujul for ER#8473903
600 					  	-- Added the following code by spamujul for  ER#8473903
601 					      insert_stmnt_sum := 'INSERT INTO CSC_PROF_BATCH_RESULTS1_T(PARTY_ID,ACCOUNT_ID,PARTY_SITE_ID,VALUE) ' || v_select_sum ;
602 					   EXECUTE IMMEDIATE (insert_stmnt_sum);
603 				     ELSE
604 					RAISE SUMMATION_ERROR;
605 					fnd_file.put_line(fnd_file.log, 'Summation SQL failed for check_id' || chk_id);
606 				     END IF;
607 		          END IF;
608 		          IF v_check_level = 'PARTY' THEN
609 					INSERT INTO CSC_PROF_BATCH_RESULTS1_T(PARTY_ID,
610 																     ACCOUNT_ID,
611 																     PARTY_SITE_ID,-- Added by spamujul for ER#8473903
612 																     VALUE)
613 					SELECT party_id,
614 							NULL,
615 							NULL, -- Added by spamujul for ER#8473903
616 							NULL
617 					FROM hz_parties hz
618 					WHERE NOT EXISTS (SELECT 1 FROM CSC_PROF_BATCH_RESULTS1_T c
619 										WHERE c.party_id = hz.party_id
620 										AND C.PARTY_SITE_ID IS NULL -- Added by spamujul for ER#8473903
621 										)
622 						AND hz.status = 'A'
623 						AND hz.party_type IN ('PERSON', 'ORGANIZATION')
624 						;
625 			ELSIF v_check_level = 'CONTACT' THEN
626 					INSERT INTO CSC_PROF_BATCH_RESULTS1_T(PARTY_ID,
627 																     ACCOUNT_ID,
628 																     PARTY_SITE_ID,-- Added by spamujul for ER#8473903
629 																     VALUE)
630 				    SELECT party_id,
631 						     NULL,
632 						     NULL, -- Added 'NULL' for party_site_id by spamujul for ER#8473903
633 						     NULL
634 				       FROM hz_parties hz
635 				      WHERE NOT EXISTS (SELECT 1 FROM CSC_PROF_BATCH_RESULTS1_T c
636 												 WHERE c.party_id = hz.party_id
637 												 AND C.PARTY_SITE_ID IS NULL -- Added by spamujul for ER#8473903
638 												 )
639 					AND hz.status = 'A'
640 					AND hz.party_type = 'PARTY_RELATIONSHIP' ;
641 			ELSIF v_check_level = 'ACCOUNT' THEN
642 				     INSERT INTO CSC_PROF_BATCH_RESULTS1_T(PARTY_ID,
643 																 ACCOUNT_ID,
644 																  PARTY_SITE_ID,-- Added by spamujul for ER#8473903
645 																 VALUE
646 																 )
647 				     SELECT party_id,
648 						      cust_account_id,
649 						      NULL, -- Added 'NULL' for party_site_id by spamujul for ER#8473903
650 						      NULL
651 				       FROM hz_cust_accounts hz
652 				      WHERE NOT EXISTS (SELECT 1
653 										FROM CSC_PROF_BATCH_RESULTS1_T c
654 										WHERE c.account_id = hz.cust_account_id
655 										AND C.PARTY_SITE_ID IS NULL -- Added by spamujul for ER#8473903
656 										)
657 					AND hz.status = 'A'
658 					;
659 			ELSIF v_check_level = 'EMPLOYEE' THEN
660 				     INSERT INTO CSC_PROF_BATCH_RESULTS1_T(PARTY_ID,
661 																  ACCOUNT_ID,
662 																 PARTY_SITE_ID,-- Added by spamujul for ER#8473903
663 																  VALUE)
664 				     SELECT person_id,
665 						      NULL,
666 						      NULL , -- Added 'NULL' for party_site_id by spamujul for ER#8473903
667 						      NULL
668 				       FROM per_workforce_current_x hz
669 				      WHERE NOT EXISTS (SELECT 1
670 										FROM CSC_PROF_BATCH_RESULTS1_T c
671 										WHERE c.party_id = hz.person_id
672 										AND C.PARTY_SITE_ID IS NULL -- Added by spamujul for ER#8473903
673 				      ) ;
674 
675 			-- Begin fix by spamujul for  ER#8473903
676 			ELSIF v_check_level = 'SITE' THEN
677 				   INSERT INTO CSC_PROF_BATCH_RESULTS1_T(PARTY_ID,
678 															     ACCOUNT_ID,
679 															     PARTY_SITE_ID,
680 															     VALUE)
681 				     SELECT hz.party_id,
682 						      NULL,
683 						      hz.party_site_id ,
684 						      NULL
685 					FROM hz_party_sites hz
686 					WHERE NOT EXISTS (SELECT 1 FROM CSC_PROF_BATCH_RESULTS1_T c
687 												  WHERE c.party_id = hz.party_id
688 												  and c.party_site_id = hz.party_site_id)
689 					AND hz.status = 'A'
690 					AND nvl(hz.created_by_module,'XXX') <> 'SR_ONETIME';
691 		-- End fix by spamujul for  ER#8473903
692 			END IF;
693 
694           OPEN val_csr3;
695           FETCH val_csr3
696 	  INTO Range_Low_Value,
697 		    Range_High_Value;
698           IF val_csr3%NOTFOUND THEN
699              Range_Low_Value := NULL;
700              Range_High_Value := NULL;
701           END IF;
702           CLOSE val_csr3;
703 
704           SELECT COUNT(*) INTO v_count FROM csc_prof_check_ratings
705           WHERE check_id = chk_id;
706 
707           rating_tbl.delete;
708 
709           IF v_count > 0 THEN
710              OPEN rating_crs;
711              FOR a in 1..v_count LOOP
712                 FETCH rating_crs INTO rating_tbl(a);
713              END LOOP;
714              CLOSE rating_crs;
715           END IF;
716 
717           c_fmt_mask := 'CSC_Profile_Engine_PKG.format_mask(' ||
718                         '''' || curr_code || '''' || ',' ||
719                         '''' || data_type || '''' || ','||
720 	                'value, '||
721 		        ''''|| fmt_mask || '''' || ')' ;
722 
723           c_grade := 'CSC_Profile_Engine_PKG.rating_color(' ||
724                      chk_id || ', ' ||
725                      'party_id, account_id,party_site_id, value, ' || -- included 'party_site_id'  by spamujul for  ER#8473903
726                      '''' || data_type || '''' || ', ' ||
727                      '''' || 'GRADE' || '''' ||', ' ||
728                      '''' || v_count || '''' || ')'    ;
729 
730           c_curr_code := '''' || curr_code || '''';
731 
732           c_threshold := 'CSC_Profile_Engine_PKG.calc_threshold(' ||
733                          'value, '||
734 	                 '''' || Range_Low_Value || '''' || ', '||
735 	                 '''' || Range_High_Value || '''' || ', '||
736 		         '''' || data_type || '''' || ', ' ||
737 		         '''' || chk_u_l_flag || '''' || ')'   ;
738 
739           c_rating := 'CSC_Profile_Engine_PKG.rating_color(' ||
740                       chk_id || ', ' ||
741                       'party_id, account_id,party_site_id, value, ' || -- included 'party_site_id'  by spamujul for  ER#8473903
742                       '''' || data_type || '''' || ', ' ||
743                       '''' || 'RATING' || '''' ||', ' ||
744 	              '''' || v_count || '''' || ')'    ;
745 
746           c_color := 'CSC_Profile_Engine_PKG.rating_color(' ||
747                       chk_id || ', ' ||
748                      'party_id, account_id,party_site_id, value, ' || -- included 'party_site_id'  by spamujul for  ER#8473903
749                      '''' || data_type || '''' || ', ' ||
750                      '''' || 'COLOR' || '''' ||', ' ||
751                      '''' || v_count || '''' || ')'    ;
752 
753 
754           IF v_check_level = 'ACCOUNT' THEN
755              insert_stmnt_final := 'INSERT /*+ PARALLEL(CSC_PROF_BATCH_RESULTS2_T, 12) */ INTO CSC_PROF_BATCH_RESULTS2_T ' ||
756                              '(check_results_id, check_id, party_id, cust_account_id, party_site_id,value, currency_code, grade, '|| -- Inlcuded 'party_site_id' for ER#8473903
757 			     ' created_by, creation_date, last_updated_by, last_update_date, last_update_login, '||
758 			     ' results_threshold_flag, rating_code, color_code)' ||
759                              ' SELECT csc_prof_check_results_s.nextval, '
760 			      || chk_id || ', party_id, account_id,party_site_id, ' -- Inlcuded 'party_site_id' by spamujul for ER#8473903
761 			      || c_fmt_mask ||', '
762 			      || c_curr_code || ', '
763 			      || c_grade
764 			      || ', FND_GLOBAL.USER_ID, Sysdate, FND_GLOBAL.USER_ID, Sysdate, FND_GLOBAL.CONC_LOGIN_ID, '
765 			      || c_threshold ||', '
766 			      || c_rating || ', '
767 			      || c_color
768 			      ||' FROM CSC_PROF_BATCH_RESULTS1_T where nvl(account_id, -999999) <> -999999 and PARTY_SITE_ID IS NULL'; -- Inlcuded 'party_site_id' IS NULL FOR ER#8473903
769 	-- Begin fix by spamujul for ER# 8473903
770 	ELSIF  v_check_level = 'SITE' THEN
771 		insert_stmnt_final := 'INSERT /*+ PARALLEL(CSC_PROF_BATCH_RESULTS2_T, 12) */ INTO CSC_PROF_BATCH_RESULTS2_T ' ||
772                   --          '(check_results_id, check_id, party_id, cust_account_id,value, currency_code, grade, '||
773 		  -- added party_site_id in the below line for ER#8473903
774 			  '(check_results_id, check_id, party_id, cust_account_id,party_site_id, value, currency_code, grade, '|| -- Inlcuded 'party_site_id' for ER#8473903
775 			     ' created_by, creation_date, last_updated_by, last_update_date, last_update_login, '||
776 			     ' results_threshold_flag, rating_code, color_code)' ||
777                              ' SELECT csc_prof_check_results_s.nextval, '
778 			--      || chk_id || ', party_id, account_id, '
779 			 -- added party_site_id in the below line for ER#8473903
780 			      || chk_id || ', party_id, account_id,party_site_id, ' -- Inlcuded 'party_site_id' by spamujul  for ER#8473903
781 			      || c_fmt_mask ||', '
782 			      || c_curr_code || ', '
783 			      || c_grade
784 			      || ', FND_GLOBAL.USER_ID, Sysdate, FND_GLOBAL.USER_ID, Sysdate, FND_GLOBAL.CONC_LOGIN_ID, '
785 			      || c_threshold ||', '
786 			      || c_rating || ', '
787 			      || c_color
788 			      ||' FROM CSC_PROF_BATCH_RESULTS1_T where nvl(party_site_id, -999999) <> -999999 and account_id IS NULL';
789 -- End fix by spamujul for ER#8473903
790           ELSE
791              insert_stmnt_final := 'INSERT /*+ PARALLEL(CSC_PROF_BATCH_RESULTS2_T, 12) */ INTO CSC_PROF_BATCH_RESULTS2_T ' ||
792                              '(check_results_id, check_id, party_id, cust_account_id, party_site_id,value, currency_code, grade, '|| -- Inlcuded 'party_site_id' for ER#8473903
793 			     ' created_by, creation_date, last_updated_by, last_update_date, last_update_login, '||
794 			     ' results_threshold_flag, rating_code, color_code)' ||
795                              ' SELECT csc_prof_check_results_s.nextval, '
796 			      || chk_id || ', party_id, account_id,party_site_id ,'
797 			      || c_fmt_mask ||', '
798 			      || c_curr_code || ', '
799 			      || c_grade
800 			      || ', FND_GLOBAL.USER_ID, Sysdate, FND_GLOBAL.USER_ID, Sysdate, FND_GLOBAL.CONC_LOGIN_ID, '
801 			      || c_threshold ||', '
802 			      || c_rating || ', '
803 			      || c_color
804 			      ||' FROM CSC_PROF_BATCH_RESULTS1_T where account_id IS NULL and PARTY_SITE_ID IS NULL'; -- Inlcuded 'party_site_id' IS NULL FOR ER#8473903';
805           END IF;
806           EXECUTE IMMEDIATE (insert_stmnt_final);
807           COMMIT;
808       ELSE
809          /* set the global variable to Y to indicate that profile checks without batch sql exist */
810          g_check_no_batch := 'Y';
811       END IF ; /* batch_sql_stmnt IS NOT NULL */
812    END LOOP;
813    CLOSE checks_csr;
814 
815 --   INSERT /*+ PARALLEL (CSC_PROF_BATCH_RESULTS2_T, 12) */
816 /*   INTO CSC_PROF_BATCH_RESULTS2_T
817 			(check_results_id,
818 			 check_id,
819 			 party_id,
820 			 cust_account_id,
821 			 party_site_id,  -- Added by spamujul for  ER#8473903
822 			value,
823 			currency_code,
824 			grade,
825 			created_by,
826 			creation_date,
827 			last_updated_by,
828 			last_update_date,
829 			last_update_login,
830 			results_threshold_flag,
831 			rating_code,
832 			color_code
833       )
834    SELECT
835 		check_results_id,
836 		check_id,
837 		party_id,
838 		cust_account_id,
839 		party_site_id,  -- Added by spamujul for  ER#8473903
840 		value,
841 		currency_code,
842 		grade,
843 		created_by,
844 		creation_date,
845 		last_updated_by,
846 		last_update_date,
847 		last_update_login,
848 		results_threshold_flag,
849 		rating_code,
850 		color_code
851    FROM  csc_prof_check_results a
852    WHERE NOT EXISTS (SELECT null FROM csc_prof_checks_b b
853                       WHERE a.check_id = b.check_id
854                         AND b.select_type = 'B');
855 */
856    COMMIT;
857 
858    EXECUTE IMMEDIATE 'TRUNCATE TABLE '|| v_schema_name ||'.csc_prof_check_results';
859 
860 
861    EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N2 UNUSABLE';
862    EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N3 UNUSABLE';
863    EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N4 UNUSABLE';
864 
865    INSERT /*+ PARALLEL (csc_prof_check_results, 12) */
866    INTO csc_prof_check_results
867 		(check_results_id,
868 		check_id,
869 		party_id,
870 		cust_account_id,
871 		party_site_id,  -- Added by spamujul for  ER#8473903
872 		value,
873 		currency_code,
874 		grade,
875 		created_by,
876 		creation_date,
877 		last_updated_by,
878 		last_update_date,
879 		last_update_login,
880 		results_threshold_flag,
881 		rating_code,
882 		color_code
883       )
884    SELECT
885 		 check_results_id,
886 		 check_id,
887 		 party_id,
888 		 cust_account_id,
889 		 party_site_id,  -- Added by spamujul for  ER#8473903
890 		value,
891 		currency_code,
892 		grade,
893 		created_by,
894 		creation_date,
895 		last_updated_by,
896 		last_update_date,
897 		last_update_login,
898 		results_threshold_flag,
899 		rating_code,
900 		color_code
901    FROM  CSC_PROF_BATCH_RESULTS2_T;
902 
903    COMMIT;
904 
905    EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N2 REBUILD NOLOGGING';
906    EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N3 REBUILD NOLOGGING';
907    EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N4 REBUILD NOLOGGING';
908 
909    EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || v_schema_name ||'.CSC_PROF_BATCH_RESULTS2_T' ;
910 
911    EXECUTE IMMEDIATE 'ALTER SESSION DISABLE PARALLEL DML';
912    EXECUTE IMMEDIATE 'ALTER TABLE ' || v_schema_name || '.CSC_PROF_CHECK_RESULTS LOGGING';
913 
914 EXCEPTION
915         when Tablesegment_full then
916              CSC_Profile_Engine_PKG.Handle_Exception;
917              g_error := sqlcode || ' ' || sqlerrm;
918              fnd_file.put_line(fnd_file.log , g_error);
919              App_Exception.raise_exception;
920 
921         when Indexsegment_full then
922              CSC_Profile_Engine_PKG.Handle_Exception;
923              g_error := sqlcode || ' ' || sqlerrm;
924              fnd_file.put_line(fnd_file.log , g_error);
925              App_Exception.raise_exception;
926 
927         when SNAPSHOT_TOO_OLD THEN
928              CSC_Profile_Engine_PKG.Handle_Exception;
929              g_error := sqlcode || ' ' || sqlerrm;
930              fnd_file.put_line(fnd_file.log,g_error);
931              App_Exception.raise_exception;
932 
933         WHEN INTERNAL_ERROR THEN
934              CSC_Profile_Engine_PKG.Handle_Exception;
935              g_error := sqlcode || ' ' || sqlerrm;
936              fnd_file.put_line(fnd_file.log,g_error);
937              App_Exception.raise_exception;
938 
939         WHEN SUMMATION_ERROR THEN
940              CSC_Profile_Engine_PKG.Handle_Exception;
941              set_context('Evaluate_Checks1_Var',
942                          'Summation SQL failed for chk_id => '||to_char(chk_id));
943              RAISE;
944 
945 	WHEN OTHERS THEN
946              CSC_Profile_Engine_PKG.Handle_Exception;
947 	     g_error := sqlcode || ' ' || sqlerrm;
948 	     fnd_file.put_line(fnd_file.log , g_error);
949 
950 END Evaluate_Checks1_Var;
951 --
952 -- Evaluate_Checks1_No_Batch
953 --   Loop through all checks and evaluate the results
954 --   for each customer and account for type variable ('B')
955 --   The procedure is called if the Batch_Sql_Stmnt is null (for backward compatibility)
956 --   if check_id is null, party_id is null, account_id is null
957 --	      and block_id is null
958 --
959 PROCEDURE Evaluate_Checks1_No_Batch   ( errbuf	OUT	NOCOPY VARCHAR2,
960 											retcode	OUT	NOCOPY NUMBER
961 										    ) IS
962 
963 			  chk_id				Number;
964 			  chk_name			Varchar2(240);
965 			  cparty_id			Number;
966 			  ccust_acct_id		Number;
967 			  ccust_psite_id		Number;  -- added by spamujul for ER#8473903
968 			  sel_type			Varchar2(3);
969 			  sel_blk_id			Number;
970 			  data_type			Varchar2(90);
971 			  fmt_mask			Varchar2(90);
972 			  rule				Varchar2(32767);
973 			  Chk_u_l_flag		Varchar2(3);
974 			  Thd_grade			Varchar2(9);
975 			  truncate_flag		Varchar2(1) := 'N';
976 			  acct_flag			Varchar2(1);
977 			  blk_id				Number 		:= null;
978 			  blk_name			Varchar2(240)	:= null;
979 			  sql_stmt			Varchar2(2000)	:= null;
980 			  curr_code			Varchar2(15)	:= null;
981 			  v_party_in_sql		Number := 0;
982 			  v_acct_in_sql		Number := 0;
983 			  v_psite_in_sql		Number :=0; -- added by spamujul for ER#8473903
984 			  v_check_level		Varchar2(10);
985 			  l_for_insert			varchar2(1) := 'Y';
986 			  l_for_party			varchar2(1) := 'Y';
987 			  l_for_psite			Varchar2(1) := 'N';-- added by spamujul for ER#8473903
988 			  l_up_total			Number := 0;
989 			  l_ip_total			Number := 0;
990 			  l_ua_total			Number := 0;
991 			  l_ia_total			Number := 0;
992 			  l_us_total			Number :=0; -- added by spamujul for ER#8473903
993 			  l_is_total			Number :=0; -- added by spamujul for ER#8473903
994 			  v_party_id			Number;
995 
996 
997 			  CURSOR checks_csr IS
998 			  SELECT check_id, select_type, select_block_id,
999 				 data_type, format_mask,check_upper_lower_flag,
1000 					 threshold_grade, check_level
1001 			    FROM csc_prof_checks_b a
1002 			   WHERE check_id IN (SELECT check_id FROM csc_prof_group_checks)
1003 			     AND select_type = 'B'
1004 			     AND CHECK_ID =42
1005 			     AND check_level IN ('PARTY',
1006 								   'ACCOUNT',
1007 								   'SITE' --Added  'SITE' by spamujul for ER#8473903
1008 								   )
1009 			     AND EXISTS (SELECT null
1010 					   FROM csc_prof_blocks_b b
1011 					  WHERE a.select_block_id = b.block_id
1012 					    AND b.batch_sql_stmnt IS NULL)
1013 			     AND SYSDATE BETWEEN Nvl(start_date_active, SYSDATE)
1014 					     AND Nvl(end_date_active, SYSDATE);
1015 
1016 			  CURSOR cparty_csr IS
1017 			     SELECT party_id
1018 			     FROM hz_parties
1019 			    WHERE status = 'A'
1020 			    AND  PARTY_TYPE IN ('PERSON','ORGANIZATION');
1021 			    -- Person, ORG added for 1850508
1022 
1023 			  CURSOR caccount_csr IS
1024 			     SELECT party_id, cust_account_id
1025 			     FROM hz_cust_accounts
1026 			     WHERE  party_id=v_party_id
1027 			     AND  status = 'A' ;
1028 			      -- Begin fix by spamujul for NCR ER#8473903
1029 				CURSOR cpsite_csr IS
1030 				      SELECT party_id, party_site_id
1031 				      FROM hz_party_sites
1032 				      WHERE  party_id=v_party_id
1033 				      AND  status = 'A'
1034 				      AND NVL(created_by_module,'XXX') <> 'SR_ONETIME';
1035 			  -- End fix by spamujul for NCR ER#8473903
1036 			  CURSOR block_csr IS
1037 			      SELECT block_id, sql_stmnt, currency_code
1038 			      FROM csc_prof_blocks_b a
1039 			      WHERE a.block_id = sel_blk_id;
1040 
1041 			cid 		number;
1042 			val		VARCHAR2(240) := null;
1043 
1044 BEGIN
1045 		/* R12 Employee HelpDesk Modifications */
1046 
1047 		/* The processing to be done for either employee level(employee) or customer level(party,account,contact) */
1048 		IF g_dashboard_for_employee = 'N' THEN
1049 			   l_ip_total := 0;
1050 			   l_up_total := 0;
1051 			   l_ia_total := 0;
1052 			   l_ua_total := 0;
1053 			   l_us_total := 0; -- added by spamujul for ER#8473903
1054 			   l_is_total := 0; -- added by spamujul for ER#8473903
1055 			OPEN checks_csr;
1056 				LOOP
1057 					 FETCH checks_csr
1058 					  INTO      chk_id,
1059 							  sel_type,
1060 							  sel_blk_id,
1061 							  data_type,
1062 							  fmt_mask,
1063 							  chk_u_l_flag,
1064 							  Thd_grade,
1065 							  v_check_level;
1066 					 EXIT WHEN checks_csr%notfound;
1067 					  Open block_csr;
1068 						      Fetch block_csr
1069 						      INTO blk_id,
1070 								sql_stmt,
1071 								curr_code;
1072 					   Close block_csr;
1073 
1074 					      IF sql_stmt IS NOT NULL Then
1075 						 v_party_in_sql := INSTR(lower(sql_stmt),':party_id',1);
1076 						 v_acct_in_sql  := INSTR(lower(sql_stmt),':cust_account_id',1);
1077 						  v_psite_in_sql  := INSTR(lower(sql_stmt),':cust_account_id',1); -- added by spamujul for ER#8473903
1078 					      Else
1079 						 v_party_in_sql :=   0;
1080 						 v_acct_in_sql  :=   0;
1081 						 v_psite_in_sql  := 0; -- added by spamujul for ER#8473903
1082 					      End if;
1083 					      Begin
1084 							 cid := dbms_sql.open_cursor;
1085 							 dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
1086 							 dbms_sql.define_column(cid,1,val,240);
1087 							 OPEN cparty_csr;
1088 								   LOOP
1089 									    FETCH cparty_csr INTO cparty_id;
1090 									    EXIT WHEN cparty_csr%notfound;
1091 									    If v_check_level='PARTY' Then
1092 									  Evaluate_One_Check(truncate_flag,
1093 														     chk_id,
1094 														     cparty_id,
1095 														     null,
1096 														     NULL, -- added by spamujul for ER#8473903
1097 														     v_check_level,
1098 														     sel_type,
1099 														     sel_blk_id,
1100 														     data_type,
1101 														     fmt_mask,
1102 														     chk_u_l_flag,
1103 														     Thd_grade,
1104 														     rule,
1105 														     blk_id,
1106 														     sql_stmt,
1107 														     curr_code,
1108 														     l_up_total,
1109 														     l_ip_total,
1110 														     l_ua_total,
1111 														     l_ia_total ,
1112 														     l_us_total, -- added by spamujul for ER#8473903
1113 														     l_is_total, -- added by spamujul for ER#8473903
1114 														     cid);
1115 									End if;
1116 								        /* added this condition for Bug 1937730*/
1117 								        v_party_id:=cparty_id;
1118 									 IF v_check_level = 'ACCOUNT' Then
1119 										If (v_acct_in_sql = 0)  Then
1120 											 NULL;
1121 										Else
1122 											 OPEN caccount_csr;
1123 													LOOP
1124 														     FETCH caccount_csr
1125 														      INTO cparty_id, ccust_acct_id;
1126 														     EXIT WHEN caccount_csr%notfound;
1127 														     Evaluate_One_Check(truncate_flag,
1128 																			chk_id,
1129 																			cparty_id,
1130 																			ccust_acct_id,
1131 																			NULL,  -- added by spamujul for ER#8473903
1132 																			v_check_level,
1133 																			sel_type,
1134 																			sel_blk_id,
1135 																			data_type,
1136 																			fmt_mask,
1137 																			chk_u_l_flag,
1138 																			Thd_grade,
1139 																			rule,
1140 																			blk_id,
1141 																			sql_stmt,
1142 																			curr_code,
1143 																			l_up_total,
1144 																			l_ip_total,
1145 																			l_ua_total,
1146 																			l_ia_total ,
1147 																			l_us_total, -- added by spamujul for ER#8473903
1148 																			l_is_total, -- added by spamujul for ER#8473903
1149 																			cid);
1150 													 END LOOP;
1151 											CLOSE caccount_csr;
1152 										End if; -- added for 1850508
1153 									END IF;
1154 									-- Begin fix by spamujul for ER#8473903
1155 								IF v_check_level = 'SITE' THEN
1156 									IF (v_psite_in_sql = 0)  THEN
1157 											 NULL;
1158 										ELSE
1159 											OPEN cpsite_csr ;
1160 												LOOP
1161 													FETCH cpsite_csr
1162 													    INTO cparty_id,
1163 														       ccust_psite_id;
1164 													    EXIT WHEN cpsite_csr%notfound;
1165 													    Evaluate_One_Check(truncate_flag,
1166 																		chk_id,
1167 																		cparty_id,
1168 																		NULL,
1169 																		ccust_psite_id,
1170 																		v_check_level,
1171 																		sel_type,
1172 																		sel_blk_id,
1173 																		data_type,
1174 																		fmt_mask,
1175 																		chk_u_l_flag,
1176 																		Thd_grade,
1177 																		rule,
1178 																		blk_id,
1179 																		sql_stmt,
1180 																		curr_code,
1181 																		l_up_total,
1182 																		l_ip_total,
1183 																		l_ua_total
1184 																		, l_ia_total ,
1185 																		l_us_total,
1186 																		l_is_total,
1187 																		cid
1188 																		);
1189 												END LOOP;
1190 											CLOSE cpsite_csr;
1191 										END IF;
1192 								END IF;
1193 								-- End fix by spamujul for ER#8473903
1194 						END LOOP;
1195 				CLOSE cparty_csr;
1196 				 IF (dbms_sql.is_open(cid)) THEN
1197 				    dbms_sql.close_cursor(cid);
1198 				 end if;
1199 			Exception
1200 					When others then
1201 						     IF (dbms_sql.is_open(cid)) THEN
1202 							dbms_sql.close_cursor(cid);
1203 						     end if;
1204 						     set_context('Evaluate_Checks1_No_Batch',
1205 							'chk_id=>'||to_char(chk_id),
1206 							'party_id=>'||to_char(cparty_id),
1207 							'account_id=>'||to_char(ccust_acct_id)
1208 							,'party_site_id=>'||to_char(ccust_psite_id) -- added by spamujul for ER#8473903
1209 							);
1210 						     g_error := sqlcode || ' ' || sqlerrm;
1211 						     set_context(NULL, g_error);
1212 			End;
1213 		END LOOP;
1214 	CLOSE checks_csr;
1215 	   -- check if there are still records to be inserted
1216 	   IF l_ip_total <> 0 THEN
1217 		l_for_insert	:= 'Y';
1218 		l_for_party	:= 'Y';
1219 		l_for_psite	:= 'N';-- added by spamujul for ER#8473903
1220 		Insert_Update_Check_Results(l_ip_total,
1221 								 l_for_insert,
1222 								 l_for_party
1223 								,l_for_psite -- added by spamujul for ER#8473903
1224 								 );
1225 		l_ip_total :=0;
1226 	   END IF;
1227 	   -- check if there are still records to be updated
1228 	   IF l_up_total <> 0 THEN
1229 		l_for_insert	:= 'N';
1230 		l_for_party	:= 'Y';
1231 		l_for_psite	:= 'N';-- added by spamujul for ER#8473903
1232 		Insert_Update_Check_Results(l_up_total,
1233 								 l_for_insert,
1234 								 l_for_party
1235 								,l_for_psite -- added by spamujul for ER#8473903
1236 								 );
1237 		l_up_total :=0;
1238 	   END IF;
1239 
1240 	   -- check if there are still records to be inserted
1241 	   IF l_ia_total <> 0 THEN
1242 		l_for_insert	:= 'Y';
1243 		l_for_party	:= 'N';
1244 		l_for_psite	:= 'N';-- added by spamujul for ER#8473903
1245 		Insert_Update_Check_Results(l_ia_total,
1246 								  l_for_insert,
1247 								  l_for_party
1248 								 ,l_for_psite -- added by spamujul for ER#8473903
1249 								  );
1250 		l_ia_total :=0;
1251 	   END IF;
1252 	   -- check if there are still records to be updated
1253 	   IF l_ua_total <> 0 THEN
1254 		l_for_insert	:= 'N';
1255 		l_for_party	:= 'N';
1256 		l_for_psite	:= 'N';-- added by spamujul for ER#8473903
1257 		Insert_Update_Check_Results(l_ua_total,
1258 								 l_for_insert,
1259 								 l_for_party
1260 								,l_for_psite -- added by spamujul for ER#8473903
1261 								 );
1262 		l_ua_total :=0;
1263 	   END IF;
1264 	    -- Begin fix by spamujul for ER#8473903
1265 	 IF l_is_total <> 0 THEN
1266 			l_for_insert	:= 'Y';
1267 			l_for_party	:= 'N';
1268 			l_for_psite	:= 'Y';
1269 			Insert_Update_Check_Results(l_is_total,
1270 										l_for_insert,
1271 										l_for_party
1272 										,l_for_psite -- added by spamujul for ER#8473903
1273 										);
1274 			l_is_total :=0;
1275 	   END IF;
1276 	   IF l_us_total <> 0 THEN
1277 		l_for_insert	:= 'N';
1278 		l_for_party	:= 'N';
1279 		l_for_psite	:= 'N'; -- added by spamujul for ER#8473903
1280 		Insert_Update_Check_Results(l_us_total,
1281 								 l_for_insert,
1282 								 l_for_party
1283 								,l_for_psite -- added by spamujul for ER#8473903
1284 								 );
1285 		l_us_total :=0;
1286 	   END IF;
1287 	 -- End fix by spamujul ER#8473903
1288    IF g_dashboard_for_contact IS NULL THEN
1289       FND_PROFILE.GET('CSC_DASHBOARD_VIEW_FOR_CONTACT',g_dashboard_for_contact);
1290    END IF;
1291 
1292    IF g_dashboard_for_contact = 'Y' THEN
1293        l_ip_total := 0;
1294        l_up_total := 0;
1295        l_ia_total := 0;
1296        l_ua_total := 0;
1297        l_us_total := 0; -- added by spamujul for ER#8473903
1298        l_is_total := 0; -- added by spamujul for ER#8473903
1299 
1300        Evaluate_blocks_Rel(p_up_total => l_up_total,
1301 						   p_ip_total => l_ip_total,
1302 						   p_ua_total => l_ua_total,
1303 						   p_ia_total => l_ia_total,
1304 						   p_us_total => l_us_total, -- added by spamujul for ER#8473903
1305 						   p_is_total  => l_is_total , -- added by spamujul for ER#8473903
1306 						   p_no_batch_sql => 'Y' );
1307 
1308        Evaluate_checks_Rel(errbuf => errbuf,
1309                            retcode => retcode,
1310                            p_no_batch_sql => 'Y');
1311    END IF;
1312 
1313    COMMIT;
1314 
1315    -- Return 0 for successful completion, 1 for warnings, 2 for error
1316    IF (error_flag) THEN
1317       errbuf := Sqlerrm;
1318       retcode := 2;
1319    ELSIF (warning_msg <> '') THEN
1320       errbuf := warning_msg;
1321       retcode := 1;
1322    ELSE
1323       errbuf := '';
1324       retcode := 0;
1325    END IF;
1326 
1327 ELSIF g_dashboard_for_employee = 'Y' THEN
1328        l_ip_total := 0;
1329        l_up_total := 0;
1330        l_ia_total := 0;
1331        l_ua_total := 0;
1332        l_us_total := 0; -- added by spamujul for ER#8473903
1333        l_is_total := 0; -- added by spamujul for ER#8473903
1334 
1335        Evaluate_blocks_Emp(p_up_total => l_up_total,
1336                            p_ip_total => l_ip_total,
1337                            p_ua_total => l_ua_total,
1338                            p_ia_total => l_ia_total,
1339 			   p_us_total => l_us_total, -- added by spamujul for ER#8473903
1340 			   p_is_total => l_is_total, -- added by spamujul for ER#8473903
1341                            p_no_batch_sql => 'Y' );
1342 
1343        Evaluate_checks_Emp(errbuf => errbuf,
1344                            retcode => retcode,
1345                            p_no_batch_sql => 'Y');
1346 END IF;
1347 
1348    COMMIT;
1349 
1350    -- Return 0 for successful completion, 1 for warnings, 2 for error
1351    IF (error_flag) THEN
1352       errbuf := Sqlerrm;
1353       retcode := 2;
1354    ELSIF (warning_msg <> '') THEN
1355       errbuf := warning_msg;
1356       retcode := 1;
1357    ELSE
1358       errbuf := '';
1359       retcode := 0;
1360    END IF;
1361 
1362    IF (debug) THEN
1363       fnd_file.close;
1364    END IF;
1365 
1366    EXCEPTION
1367       WHEN OTHERS THEN
1368          ROLLBACK;
1369          IF (checks_csr%isopen) THEN
1370 	    CLOSE checks_csr;
1371 	 END IF;
1372 	 IF (cparty_csr%isopen) THEN
1373 	    CLOSE cparty_csr;
1374 	 END IF;
1375 	 IF (caccount_csr%isopen) THEN
1376 	    CLOSE caccount_csr;
1377 	 END IF;
1378 	 -- Begin fix by spamujul for ER#8473903
1379 	 IF (cpsite_csr%isopen) THEN
1380 	    CLOSE cpsite_csr;
1381 	 END IF;
1382 	-- End  fix by spamujul for ER#8473903
1383 	 IF (debug) THEN
1384 	    fnd_file.close;
1385 	 END IF;
1386 
1387          -- Retrieve error message into errbuf
1388          errbuf := Sqlerrm;
1389 
1390       	 -- Return 2 for error
1391          retcode := 2;
1392 
1393 	 g_error := sqlcode || ' ' || sqlerrm;
1394 	 fnd_file.put_line(fnd_file.log , g_error);
1395 
1396 /* End of R12 Employee HelpDesk Modifications */
1397 
1398 END Evaluate_Checks1_No_Batch;
1399 
1400 --
1401 -- Evaluate_Checks1_Rule
1402 --   Loop through all checks and evaluate the results
1403 --   for each customer and account for type 'T' (Rules)
1404 --   if check_id is null, party_id is null, account_id is null
1405 --	      and block_id is null
1406 --
1407 PROCEDURE Evaluate_Checks1_Rule   ( errbuf	OUT	NOCOPY VARCHAR2,
1408 									    retcode	OUT	NOCOPY NUMBER
1409 									    ) IS
1410 
1411 			  chk_id				Number;
1412 			  chk_name			Varchar2(240);
1413 			  cparty_id			Number;
1414 			  ccust_acct_id		Number;
1415 			  cpsite_id			Number; -- added by spamujul for ER#8473903
1416 			  sel_type			Varchar2(3);
1417 			  sel_blk_id			Number;
1418 			  data_type			Varchar2(90);
1419 			  fmt_mask			Varchar2(90);
1420 			  rule				Varchar2(32767);
1421 			  chk_u_l_flag		Varchar2(3);
1422 			  Thd_grade			Varchar2(9);
1423 			  truncate_flag		Varchar2(1) := 'N';
1424 			  acct_flag			Varchar2(1);
1425 			  blk_id				Number 		:= null;
1426 			  blk_name			Varchar2(240)	:= null;
1427 			  sql_stmt			Varchar2(2000)	:= null;
1428 			  curr_code			Varchar2(15)	:= null;
1429 			  v_party_in_sql		Number := 0;
1430 			  v_acct_in_sql		Number := 0;
1431 			  v_psite_in_sql		Number	:= 0; -- added by spamujul for ER#8473903
1432 			  l_for_insert			varchar2(1) := 'Y';
1433 			  l_for_party			varchar2(1) := 'Y';
1434 			  l_for_psite			Varchar2(1) := 'N'; -- added by spamujul for ER#8473903
1435 			  l_up_total			Number := 0;
1436 			  l_ip_total			Number := 0;
1437 			  l_ua_total			Number := 0;
1438 			  l_ia_total			Number := 0;
1439 			  l_us_total			Number := 0;   -- added by spamujul for ER#8473903
1440 			  l_is_total			Number := 0;   -- added by spamujul for ER#8473903
1441 			  /* added this variable for Bug 1937730*/
1442 			  v_party_id			Number;
1443 			  v_check_level		Varchar2(10);
1444 			  v_chk_count		NUMBER := 0;
1445 
1446 			  CURSOR checks_csr IS
1447 			     SELECT check_id,
1448 					      select_type,
1449 					      select_block_id,
1450 					      check_level,
1451 					      data_type,
1452 					      format_mask,
1453 					      check_upper_lower_flag,
1454 					      threshold_grade
1455 			     FROM csc_prof_checks_b
1456 			     WHERE Sysdate BETWEEN Nvl(start_date_active, Sysdate)
1457 					AND Nvl(end_date_active, Sysdate)
1458 			       AND check_level IN ('PARTY',
1459 								      'ACCOUNT'
1460 								      ,'SITE' -- added by spamujul for ER#8473903
1461 								      )
1462 			       AND select_type = 'T'
1463 			     ORDER BY check_id;
1464 
1465 			  CURSOR checks_count IS
1466 			     SELECT COUNT(*)
1467 			       FROM csc_prof_checks_b
1468 			      WHERE Sysdate BETWEEN Nvl(start_date_active, Sysdate)
1469 						     AND Nvl(end_date_active, Sysdate)
1470 				AND select_type = 'T';
1471 
1472 			  CURSOR cparty_csr IS
1473 			     SELECT party_id
1474 			     FROM hz_parties
1475 			    WHERE status = 'A'
1476 			    AND  PARTY_TYPE IN ('PERSON','ORGANIZATION');
1477 			    -- Person, ORG added for 1850508
1478 
1479 /* added this condition party_id=v_party_id for Bug 1937730*/
1480 			  CURSOR caccount_csr IS
1481 			     SELECT party_id, cust_account_id
1482 			     FROM hz_cust_accounts
1483 			     WHERE  party_id=v_party_id
1484 			     AND  status = 'A';
1485 			   -- Begin fix by spamujul for ER#8473903
1486 			   CURSOR cpsite_csr IS
1487 				      SELECT party_id, party_site_id
1488 				      FROM hz_party_sites
1489 				      WHERE  party_id=v_party_id
1490 				      AND  status = 'A'
1491 				      AND NVL(created_by_module,'XXX') <> 'SR_ONETIME';
1492 			 -- End fix by spamujul for ER#8473903
1493 
1494 			  CURSOR block_csr IS
1495 			      SELECT block_id, sql_stmnt, currency_code
1496 			      FROM csc_prof_blocks_b a
1497 			      WHERE a.block_id = sel_blk_id;
1498 
1499     -- added for 1850508
1500 			cid 		number;
1501 			val		VARCHAR2(240) := null;
1502 
1503 BEGIN
1504 
1505 		/* R12 Employee HelpDesk Modifications */
1506 
1507 		/* The processing to be done for either employee level(employee) or customer level(party,account,contact) */
1508 		IF g_dashboard_for_employee = 'N' THEN
1509 			OPEN checks_count;
1510 				   FETCH checks_count INTO v_chk_count;
1511 			CLOSE checks_count;
1512 			IF v_chk_count > 0 THEN
1513 			      /* blocks will be evaluated only if the type is T */
1514 			  -- Populate the block results table for all parties and accounts
1515 				   Evaluate_Blocks1(l_up_total,
1516 								l_ip_total,
1517 								l_ua_total,
1518 								l_ia_total
1519 								,l_us_total, -- added by spamujul for ER#8473903
1520 								l_is_total  -- added by spamujul for ER#8473903
1521 								);
1522 			   END IF;
1523 			   l_ip_total := 0;
1524 			   l_up_total := 0;
1525 			   l_ia_total := 0;
1526 			   l_ua_total := 0;
1527 			   l_us_total  := 0;  -- added by spamujul for ER#8473903
1528 			   l_ia_total   := 0;  -- added by spamujul for ER#8473903
1529 			  OPEN checks_csr;
1530 					 LOOP
1531 						   FETCH checks_csr
1532 							INTO chk_id,
1533 								   sel_type,
1534 								   sel_blk_id,
1535 								   v_check_level,
1536 								   data_type,
1537 								   fmt_mask,
1538 								   chk_u_l_flag,
1539 								   Thd_grade;
1540 						         EXIT WHEN checks_csr%notfound;
1541 							 IF (sel_type = 'T') THEN
1542 							   acct_flag := 'N';
1543 							   build_rule(acct_flag,chk_id,v_check_level, rule);
1544 							ELSIF (sel_type = 'B') THEN
1545 								   Open block_csr;
1546 									     Fetch block_csr
1547 									     INTO blk_id,
1548 											sql_stmt,
1549 											curr_code;
1550 									Close block_csr;
1551 
1552 			/* Uncommented this condition for Bug 1937730*/
1553 			   /*****************/
1554 			   IF sql_stmt IS NOT NULL Then
1555 			      v_party_in_sql := INSTR(lower(sql_stmt),':party_id',1);
1556 			      v_acct_in_sql  := INSTR(lower(sql_stmt),':cust_account_id',1);
1557 			      v_psite_in_sql  := INSTR(lower(sql_stmt),':party_site_id',1);  -- added by spamujul for ER#8473903
1558 			   Else
1559 			      v_party_in_sql	:= 0;
1560 			      v_acct_in_sql		:= 0;
1561 			       v_psite_in_sql	:= 0;  -- added by spamujul for ER#8473903
1562 			   End if;
1563 			   /***************/
1564 		END IF;
1565 		/* This begin, end exception is added mainly for exception handing for Bug 1980004*/
1566 		Begin
1567 		           IF ((sel_type='B' ) OR  (sel_type='T') ) Then -- Only valid types
1568 					cid := dbms_sql.open_cursor;
1569 					   if (sel_type = 'B') then
1570 					   	dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
1571 					   elsif (sel_type = 'T') then
1572 				           	dbms_sql.parse(cid, rule, dbms_sql.native);
1573 					   end if;
1574 					   dbms_sql.define_column(cid,1,val,240);
1575 					   -- pass the cid
1576 					   OPEN cparty_csr;
1577 							   LOOP
1578 								      FETCH cparty_csr
1579 								      INTO cparty_id;
1580 								      EXIT WHEN cparty_csr%notfound;
1581 									If v_check_level='PARTY' Then
1582 										  Evaluate_One_Check(truncate_flag,
1583 														     chk_id,
1584 														     cparty_id,
1585 														     null,
1586 														     NULL,  -- added by spamujul for ER#8473903
1587 														     v_check_level,
1588 														     sel_type,
1589 														     sel_blk_id,
1590 														     data_type,
1591 														     fmt_mask,
1592 														     chk_u_l_flag,
1593 														     Thd_grade,
1594 														     rule,
1595 														     blk_id,
1596 														     sql_stmt,
1597 														     curr_code,
1598 														     l_up_total,
1599 														     l_ip_total,
1600 														     l_ua_total,
1601 														     l_ia_total ,
1602 														     l_us_total,  -- added by spamujul for ER#8473903
1603 														     l_is_total,   -- added by spamujul for ER#8473903
1604 														     cid);
1605 									      End if;
1606 										/* added this condition for Bug 1937730*/
1607 									       v_party_id:=cparty_id;
1608 										IF (sel_type = 'T') THEN
1609 											acct_flag := 'Y';
1610 											build_rule(acct_flag,chk_id,v_check_level, rule);
1611 										END IF;
1612 										IF ((sel_type='B' ) OR (sel_type='T') ) and v_check_level='ACCOUNT' Then -- Only valid Types now
1613 											If ((v_acct_in_sql = 0) and sel_type = 'B') and v_check_level='ACCOUNT' Then -- added for 1850508
1614 											      -- Check can be made only for 'B' types,
1615 											      -- If acct is not present as bind variable, the sql might return wrong
1616 											      -- rows (party level counts) at account leve.
1617 
1618 											      --and (v_party_in_sql <> 0 and v_acct_in_sql <> 0)) OR
1619 											      --(sel_type='T') ) Then
1620 								                              NULL;
1621 											Else
1622 											      -- Loop through all parties with accounts
1623 											      -- added for 1850508
1624 											      --Open Cursor
1625 											      -- dbms_output.put_line('Opening and PArsing in checks1 Accounts Check_id -'||to_char(chk_id));
1626 											      OPEN caccount_csr;
1627 											      LOOP
1628 												   FETCH caccount_csr
1629 												   INTO cparty_id, ccust_acct_id;
1630 												   EXIT WHEN caccount_csr%notfound;
1631 												   Evaluate_One_Check(truncate_flag,
1632 																      chk_id,
1633 																      cparty_id,
1634 																      ccust_acct_id,
1635 																      NULL,  -- added by spamujul for ER#8473903
1636 																      v_check_level,
1637 																      sel_type,
1638 																      sel_blk_id,
1639 																      data_type,
1640 																      fmt_mask,
1641 																      chk_u_l_flag,
1642 																      Thd_grade,
1643 																      rule,
1644 																      blk_id,
1645 																      sql_stmt,
1646 																      curr_code,
1647 																      l_up_total,
1648 																      l_ip_total,
1649 																      l_ua_total,
1650 																      l_ia_total ,
1651 																      l_us_total,  -- added by spamujul for ER#8473903
1652 																      l_is_total,   -- added by spamujul for ER#8473903
1653 																     cid);
1654 											      END LOOP;
1655 											      CLOSE caccount_csr;
1656 										    End if; -- added for 1850508
1657 										END IF;
1658 										-- Begin fix by spamujul for ER#8473903
1659 										 v_party_id:=cparty_id;
1660 										 IF ((sel_type='B' ) OR (sel_type='T') ) AND v_check_level='SITE' THEN
1661 											IF ((v_psite_in_sql = 0) AND sel_type = 'B') AND v_check_level='SITE' THEN
1662 												NULL;
1663 											ELSE
1664 												cid := dbms_sql.open_cursor;
1665 												IF (sel_type = 'B') THEN
1666 													dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
1667 												ELSIF (sel_type = 'T') THEN
1668 													dbms_sql.parse(cid, rule, dbms_sql.native);
1669 												END IF;
1670 												 dbms_sql.define_column(cid,1,val,240);
1671 												OPEN  cpsite_csr;
1672 												LOOP
1673 													FETCH  cpsite_csr
1674 													INTO cparty_id,
1675 														 cpsite_id;
1676 													EXIT WHEN cpsite_csr%notfound;
1677 													 Evaluate_One_Check(truncate_flag,
1678 																			      chk_id,
1679 																			       cparty_id,
1680 																			       null,
1681 																			       cpsite_id,
1682 																			       v_check_level,
1683 																			       sel_type,
1684 																			       sel_blk_id,
1685 																				data_type,
1686 																				fmt_mask,
1687 																				chk_u_l_flag,
1688 																				Thd_grade,
1689 																				rule,
1690 																				blk_id,
1691 																				sql_stmt,
1692 																				curr_code,
1693 																				l_up_total,
1694 																				l_ip_total,
1695 																				l_ua_total
1696 																				, l_ia_total ,
1697 																				l_us_total,
1698 																				l_is_total,
1699 																				cid);
1700 												END LOOP;
1701 											CLOSE cpsite_csr;
1702 											IF (dbms_sql.is_open(cid)) THEN
1703 												dbms_sql.close_cursor(cid);
1704 											END IF;
1705 										END IF;
1706 									END IF;
1707 							-- End fix by  spamujul for ER#8473903
1708 								   END LOOP;
1709 						   CLOSE cparty_csr;
1710 						   IF (dbms_sql.is_open(cid)) THEN
1711 						      dbms_sql.close_cursor(cid);
1712 						   end if;
1713 					END IF;
1714 			 Exception
1715 					 When others then
1716 							  IF (dbms_sql.is_open(cid)) THEN
1717 							      dbms_sql.close_cursor(cid);
1718 							  end if;
1719 							  set_context('Evaluate_Checks1_Rule',
1720 								'chk_id=>'||to_char(chk_id),
1721 								'party_id=>'||to_char(cparty_id),
1722 								'account_id=>'||to_char(ccust_acct_id));
1723 							  g_error := sqlcode || ' ' || sqlerrm;
1724 							  set_context(NULL, g_error);
1725 			End;
1726 		 END LOOP;
1727 	CLOSE checks_csr;
1728 	   -- check if there are still records to be inserted
1729 	   IF l_ip_total <> 0 THEN
1730 		l_for_insert := 'Y';
1731 		l_for_party  := 'Y';
1732 		l_for_psite   := 'N'; -- added by spamujul for ER#8473903
1733 		Insert_Update_Check_Results(l_ip_total,
1734 								 l_for_insert,
1735 								 l_for_party
1736 								 ,l_for_psite -- added by spamujul for ER#8473903
1737 								 );
1738 		l_ip_total :=0;
1739 	   END IF;
1740 	   -- check if there are still records to be updated
1741 	   IF l_up_total <> 0 THEN
1742 		l_for_insert := 'N';
1743 		l_for_party  := 'Y';
1744 		l_for_psite   := 'N'; -- added by spamujul for ER#8473903
1745 		Insert_Update_Check_Results (l_up_total,
1746 								  l_for_insert,
1747 								  l_for_party
1748 								 ,l_for_psite -- added by spamujul for ER#8473903
1749 								  );
1750 		l_up_total :=0;
1751 	   END IF;
1752 
1753    -- check if there are still records to be inserted
1754    IF l_ia_total <> 0 THEN
1755 	l_for_insert := 'Y';
1756 	l_for_party  := 'N';
1757 	l_for_psite   := 'N'; -- added by spamujul for ER#8473903
1758 	Insert_Update_Check_Results(l_ia_total,
1759 							 l_for_insert,
1760 							 l_for_party
1761 							,l_for_psite -- added by spamujul for ER#8473903
1762 							 );
1763 	l_ia_total :=0;
1764    END IF;
1765    -- check if there are still records to be updated
1766    IF l_ua_total <> 0 THEN
1767 	l_for_insert := 'N';
1768 	l_for_party  := 'N';
1769 	l_for_psite   := 'N'; -- added by spamujul for ER#8473903
1770 	Insert_Update_Check_Results (l_ua_total,
1771 							  l_for_insert,
1772 							  l_for_party
1773 							 ,l_for_psite -- added by spamujul for ER#8473903
1774 							  );
1775 	l_ua_total :=0;
1776    END IF;
1777  -- Begin fix by spamujul for  ER#8473903
1778 	 IF l_is_total <> 0 THEN
1779 	l_for_insert := 'Y';
1780 	l_for_party  := 'N';
1781 	l_for_psite   := 'N'; -- added by spamujul for ER#8473903
1782 	Insert_Update_Check_Results(l_is_total,
1783 							 l_for_insert,
1784 							 l_for_party
1785 							,l_for_psite -- added by spamujul for ER#8473903
1786 							 );
1787 	l_is_total :=0;
1788    END IF;
1789    -- check if there are still records to be updated
1790    IF l_us_total <> 0 THEN
1791 	l_for_insert := 'N';
1792 	l_for_party  := 'N';
1793 	l_for_psite   := 'N'; -- added by spamujul for ER#8473903
1794 	Insert_Update_Check_Results (l_us_total,
1795 							  l_for_insert,
1796 							  l_for_party
1797 							 ,l_for_psite -- added by spamujul for ER#8473903
1798 							  );
1799 	l_us_total :=0;
1800    END IF;
1801  -- End fix by spamujul for  ER#8473903
1802 /* End of R12 Employee HelpDesk Modifications */
1803    IF g_dashboard_for_contact = 'Y' THEN
1804        l_ip_total := 0;
1805        l_up_total := 0;
1806        l_ia_total := 0;
1807        l_ua_total := 0;
1808        l_us_total :=0; -- added by spamujul for ER#8473903
1809        l_is_total :=0; -- added by spamujul for ER#8473903
1810 
1811        Evaluate_blocks_Rel(p_up_total => l_up_total,
1812                            p_ip_total => l_ip_total,
1813                            p_ua_total => l_ua_total,
1814                            p_ia_total => l_ia_total,
1815 			   p_us_total => l_us_total, -- added by spamujul for ER#8473903
1816 			   p_is_total => l_is_total, -- added by spamujul for ER#8473903
1817                            p_rule_only => 'Y' );
1818 
1819        Evaluate_checks_Rel(errbuf => errbuf,
1820                            retcode => retcode,
1821                            p_rule_only => 'Y');
1822    END IF;
1823 
1824    COMMIT;
1825 
1826    -- Return 0 for successful completion, 1 for warnings, 2 for error
1827    IF (error_flag) THEN
1828       errbuf := Sqlerrm;
1829       retcode := 2;
1830    ELSIF (warning_msg <> '') THEN
1831       errbuf := warning_msg;
1832       retcode := 1;
1833    ELSE
1834       errbuf := '';
1835       retcode := 0;
1836    END IF;
1837 
1838   ELSIF g_dashboard_for_employee = 'Y' THEN
1839        l_ip_total := 0;
1840        l_up_total := 0;
1841        l_ia_total := 0;
1842        l_ua_total := 0;
1843        l_us_total :=0; -- added by spamujul for ER#8473903
1844        l_is_total :=0; -- added by spamujul for ER#8473903
1845        Evaluate_blocks_Emp(p_up_total => l_up_total,
1846                            p_ip_total => l_ip_total,
1847                            p_ua_total => l_ua_total,
1848                            p_ia_total => l_ia_total,
1849 			   p_us_total => l_us_total, -- added by spamujul for ER#8473903
1850 			   p_is_total => l_is_total, -- added by spamujul for ER#8473903
1851                            p_rule_only => 'Y' );
1852 
1853        Evaluate_checks_Emp(errbuf => errbuf,
1854                            retcode => retcode,
1855                            p_rule_only => 'Y');
1856    END IF;
1857 
1858    COMMIT;
1859 
1860    -- Return 0 for successful completion, 1 for warnings, 2 for error
1861    IF (error_flag) THEN
1862       errbuf := Sqlerrm;
1863       retcode := 2;
1864    ELSIF (warning_msg <> '') THEN
1865       errbuf := warning_msg;
1866       retcode := 1;
1867    ELSE
1868       errbuf := '';
1869       retcode := 0;
1870    END IF;
1871 
1872      IF (debug) THEN
1873       fnd_file.close;
1874    END IF;
1875 
1876    EXCEPTION
1877       WHEN OTHERS THEN
1878          ROLLBACK;
1879          IF (checks_csr%isopen) THEN
1880 	    CLOSE checks_csr;
1881 	 END IF;
1882 	 IF (cparty_csr%isopen) THEN
1883 	    CLOSE cparty_csr;
1884 	 END IF;
1885 	 IF (caccount_csr%isopen) THEN
1886 	    CLOSE caccount_csr;
1887 	 END IF;
1888 	 -- Begin fix by spamujul for ER#8473903
1889 	 IF (cpsite_csr%isopen) THEN
1890 	    CLOSE cpsite_csr;
1891 	 END IF;
1892 	 -- End fix by spamujul for ER#8473903
1893 	 IF (debug) THEN
1894 	    fnd_file.close;
1895 	 END IF;
1896 
1897          -- Retrieve error message into errbuf
1898          errbuf := Sqlerrm;
1899 
1900       	 -- Return 2 for error
1901          retcode := 2;
1902 
1903 	 g_error := sqlcode || ' ' || sqlerrm;
1904 	 fnd_file.put_line(fnd_file.log , g_error);
1905 
1906 END Evaluate_Checks1_Rule;
1907 
1908 /******************************************
1909    EVALUATE_CHECKS2_JIT
1910    added this procedure for JIT enhancement -- Bug 4535407
1911    Evaluate_Checks2_JIT is called by Evaluate_Checks2.
1912    Evaluate_Checks2 will open different cursors for JIT and non-JIT flows
1913    and calls this procedure for every record
1914 ******************************************/
1915 
1916 PROCEDURE Evaluate_Checks2_JIT ( p_party_id		IN NUMBER,
1917 							 p_acct_id				IN NUMBER,
1918 							 p_psite_id				IN NUMBER DEFAULT NULL, -- Added by spamujul for ER#8473903
1919 							 p_check_id				IN NUMBER,
1920 							 p_select_type			IN VARCHAR2,
1921 							 p_select_block_id		IN NUMBER,
1922 							 p_data_type				IN VARCHAR2,
1923 							 p_format_mask			IN VARCHAR2,
1924 							 p_chk_upp_low_flag		IN VARCHAR2,
1925 							 p_threshold_grade		IN VARCHAR2,
1926 							 p_check_level			IN VARCHAR2,
1927 							 p_group_id				IN NUMBER ) IS
1928 			chk_id				NUMBER;
1929 			chk_name			VARCHAR2(240);
1930 			sel_type				VARCHAR2(3);
1931 			sel_blk_id			NUMBER;
1932 			data_type			VARCHAR2(90);
1933 			fmt_mask			VARCHAR2(90);
1934 			rule					VARCHAR2(32767);
1935 			Chk_u_l_flag		VARCHAR2(3);
1936 			Thd_grade			VARCHAR2(9);
1937 			v_block_id			NUMBER;
1938 			truncate_flag			VARCHAR2(1)		:= 'N';
1939 			acct_flag			VARCHAR2(1);
1940 			blk_id				NUMBER			:= NULL;
1941 			blk_name			VARCHAR2(240)		:= NULL;
1942 			sql_stmt			VARCHAR2(2000)	:= NULL;
1943 			curr_code			VARCHAR2(15)		:= NULL;
1944 			l_for_insert			VARCHAR2(1)		:= 'Y';
1945 			l_for_party			VARCHAR2(1)		:= 'Y';
1946 			l_for_psite			VARCHAR2(1)		:= 'N'; -- added by spamujul for ER#8473903
1947 			l_up_total			NUMBER			:= 0;
1948 			l_ip_total			NUMBER			:= 0;
1949 			l_ua_total			NUMBER			:= 0;
1950 			l_ia_total			NUMBER			:= 0;
1951 			l_us_total			NUMBER			:= 0; -- added by spamujul for ER#8473903
1952 			l_is_total			NUMBER			:= 0; -- added by spamujul for ER#8473903
1953 			v_party_in_sql		NUMBER			:= 0;
1954 			v_acct_in_sql		NUMBER			:= 0;
1955 			v_psite_in_sql		NUMBER			:= 0; -- added by spamujul for ER#8473903
1956 			v_check_level		VARCHAR2(10);
1957 			v_rel_party			NUMBER ;
1958 			v_incident_id		NUMBER			:=  p_psite_id;	-- added by spamujul for ER#8473903;
1959 			v_incident_flag		VARCHAR2(2)		:=  'Y';			-- added by spamujul for ER#8473903
1960 
1961 /* added these variable for Bug 1937730*/
1962 		   v_party_id				Number;
1963 		   cparty_id				Number;
1964 		   ccust_acct_id			Number;
1965 		   cpsite_id				Number; -- added by spamujul for ER#8473903
1966 		   cid					Number;
1967 		   val					Varchar2(240)		:= null;
1968 
1969 
1970   -- cursor to get the blocks related to the check
1971 		   CURSOR cblocks_csr IS
1972 			SELECT DISTINCT block_id
1973 			FROM            csc_prof_check_rules_b
1974 			WHERE           check_id = chk_id
1975 			      UNION
1976 			      (SELECT DISTINCT expr_to_block_id
1977 			      FROM             csc_prof_check_rules_b
1978 			      WHERE            check_id = chk_id
1979 						 );
1980 		   CURSOR block_csr IS
1981 		      SELECT block_id,
1982 				sql_stmnt,
1983 				currency_code
1984 			FROM csc_prof_blocks_b a
1985 		       WHERE a.block_id = p_select_block_id;
1986 
1987 /* added this condition party_id=v_party_id for Bug 1937730*/
1988 		   CURSOR caccount_csr IS
1989 		      SELECT party_id,
1990 				  cust_account_id
1991 			FROM hz_cust_accounts
1992 		       WHERE party_id=v_party_id
1993 			 AND status = 'A' ;
1994  -- Begin fix by spamujul for ER#8473903
1995 		  CURSOR cpsite_csr IS
1996 			 SELECT party_id,
1997 					party_site_id
1998 			  FROM   HZ_PARTY_SITES
1999 			  WHERE party_id =  v_party_id
2000 			      AND status ='A'
2001 			      AND NVL(created_by_module,'XXX') <>'SR_ONETIME';
2002      -- End fix by spamujul for ER#8473903
2003 BEGIN
2004 	   l_ip_total   :=0;
2005 	   l_up_total :=0;
2006 	   l_ia_total  :=0;
2007 	   l_ua_total :=0;
2008 	   l_us_total :=0;  -- added by spamujul for ER#8473903
2009 	   l_is_total  :=0;  -- added by spamujul for ER#8473903
2010 
2011 	   chk_id		:= p_check_id;
2012 	   sel_type	:= p_select_type;
2013 	   sel_blk_id	:= p_select_block_id;
2014 	   data_type	:= p_data_type;
2015 	   fmt_mask	:= p_format_mask;
2016 	   chk_u_l_flag := p_chk_upp_low_flag;
2017 	   thd_grade	:= p_threshold_grade;
2018 	   v_check_level := p_check_level;
2019 
2020 	   IF sel_type = 'T' then
2021 	      OPEN cblocks_csr;
2022 			LOOP
2023 			FETCH cblocks_csr into v_block_id;
2024 			EXIT when cblocks_csr%notfound;
2025 			 Evaluate_Blocks2(v_block_id,
2026 						      p_party_id,
2027 						      p_acct_id,
2028 						      p_psite_id, -- added by spamujul for ER#8473903
2029 						      l_up_total,
2030 						      l_ip_total,
2031 						      l_ua_total,
2032 						      l_ia_total
2033 						     ,l_us_total, -- added by spamujul for ER#8473903
2034 						      l_is_total  -- added by spamujul for ER#8473903
2035 						      );
2036 		      END LOOP;
2037 	      CLOSE cblocks_csr;
2038 	   END IF;
2039 	   l_ip_total :=0;
2040 	   l_up_total :=0;
2041 	   l_ia_total :=0;
2042 	   l_ua_total :=0;
2043 	   l_us_total :=0;  -- added by spamujul for ER#8473903
2044 	   l_is_total  :=0;  -- added by spamujul for ER#8473903
2045 	   IF (sel_type = 'T') THEN
2046 	      IF p_acct_id IS NULL THEN
2047 		 acct_flag := 'N';
2048 		 build_rule(acct_flag,
2049 				  chk_id,
2050 				  v_check_level,
2051 				  rule);
2052 	      ELSE
2053 		 acct_flag := 'Y';
2054 		 build_rule(acct_flag,
2055 				 chk_id,
2056 				 v_check_level,
2057 				 rule);
2058 	      END IF;
2059 	   ELSIF (sel_type = 'B') THEN
2060 	      OPEN block_csr;
2061 	      FETCH block_csr INTO blk_id, sql_stmt, curr_code;
2062 	      CLOSE block_csr;
2063 	      IF sql_stmt IS NOT NULL THEN
2064 		 v_party_in_sql		:= INSTR(lower(sql_stmt),':party_id',1);
2065 		 v_acct_in_sql		:= INSTR(lower(sql_stmt),':cust_account_id',1);
2066 		 v_psite_in_sql		:= INSTR(lower(sql_stmt),':party_site_id',1); -- added by spamujul for ER#8473903
2067 	      ELSE
2068 		 v_party_in_sql		:= 0;
2069 		 v_acct_in_sql		:= 0;
2070 		 v_psite_in_sql		:= 0; -- added by spamujul for ER#8473903
2071 	      END IF;
2072 	   END IF;
2073 	/* R12 Employee HelpDesk Modifications */
2074 	   IF v_check_level in('PARTY','CONTACT','EMPLOYEE') THEN
2075 	     -- p_cid is passed as null as Cursor has to be parsed always
2076 		Evaluate_One_Check(truncate_flag,
2077 						   chk_id,
2078 						   p_party_id,
2079 						   Null,
2080 						   NULL,  -- added by spamujul for ER#8473903
2081 						   v_check_level,
2082 						   sel_type,
2083 						   sel_blk_id,
2084 						   data_type,
2085 						   fmt_mask,
2086 						   chk_u_l_flag,
2087 						   Thd_grade,
2088 						   rule,
2089 						   blk_id,
2090 						   sql_stmt,
2091 						   curr_code,
2092 						   l_up_total,
2093 						   l_ip_total,
2094 						   l_ua_total,
2095 						   l_ia_total ,
2096 						   l_us_total,  -- added by spamujul for ER#8473903
2097 						   l_is_total,  -- added by spamujul for ER#8473903
2098 						   NULL);
2099 	   END IF;
2100 	/* End of R12 Employee HelpDesk Modifications */
2101     /* This begin, end exception is added mainly for exception handing for Bug 1980004*/
2102     /* added this condition for Bug 1937730*/
2103 	   BEGIN
2104 	      v_party_id := p_party_id;
2105 	      IF ((sel_type = 'B' ) OR (sel_type = 'T') ) and v_check_level = 'ACCOUNT' THEN -- Only valid Types now
2106 		 IF ((v_acct_in_sql = 0) and sel_type = 'B') and v_check_level = 'ACCOUNT' THEN -- added for 1850508
2107 		       -- Check can be made only for 'B' types,
2108 		       -- If acct is not present as bind variable, the sql might returnwrong
2109 		       -- rows (party level counts) at account leve.
2110 			 --and (v_party_in_sql <> 0 and v_acct_in_sql <> 0)) OR
2111 			 --(sel_type='T') ) Then
2112 		     NULL;
2113 		  ELSE
2114 		     -- Loop through all parties with accounts
2115 		     -- added for 1850508
2116 		     --Open Cursor
2117 		     -- dbms_output.put_line('Opening and PArsing in checks1 Accounts Check_id -'||to_char(chk_id));
2118 		     cid := dbms_sql.open_cursor;
2119 		     IF (sel_type = 'B') THEN
2120 			dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
2121 		     ELSIF (sel_type = 'T') THEN
2122 			dbms_sql.parse(cid, rule, dbms_sql.native);
2123 		     END IF;
2124 		     dbms_sql.define_column(cid,1,val,240);
2125 
2126 		     OPEN caccount_csr;
2127 		     LOOP
2128 			FETCH caccount_csr INTO cparty_id, ccust_acct_id;
2129 			EXIT WHEN caccount_csr%notfound;
2130 
2131 			Evaluate_One_Check(truncate_flag,
2132 							   chk_id,
2133 							   cparty_id,
2134 							   ccust_acct_id,
2135 							   NULL,  -- added by spamujul for ER#8473903
2136 							   v_check_level,
2137 							   sel_type,
2138 							   sel_blk_id,
2139 							   data_type,
2140 							   fmt_mask,
2141 							   chk_u_l_flag,
2142 							   Thd_grade,
2143 							   rule,
2144 							   blk_id,
2145 							   sql_stmt,
2146 							   curr_code,
2147 							    l_up_total,
2148 							    l_ip_total,
2149 							    l_ua_total,
2150 							    l_ia_total
2151 							    ,l_us_total,  -- added by spamujul for ER#8473903
2152 							    l_is_total	 -- added by spamujul for ER#8473903
2153 				    ,cid);
2154 		     END LOOP;
2155 		     CLOSE caccount_csr;
2156 
2157 		     IF (dbms_sql.is_open(cid)) THEN
2158 			dbms_sql.close_cursor(cid);
2159 		     END IF;
2160 
2161 		  END IF; -- added for 1850508
2162 	       END IF;
2163 	   EXCEPTION
2164 	      WHEN OTHERS THEN
2165 		 IF (dbms_sql.is_open(cid)) THEN
2166 		    dbms_sql.close_cursor(cid);
2167 		 END IF;
2168 
2169 		  set_context('Evaluate_Checks2_JIT',
2170 			'chk_id=>'||to_char(chk_id),
2171 			'party_id=>'||to_char(cparty_id),
2172 			'account_id=>'||to_char(ccust_acct_id));
2173 		  g_error := sqlcode || ' ' || sqlerrm;
2174 		  set_context(NULL, g_error);
2175 	   END;
2176 -- Begin  fix by spamujul for ER#8473903
2177             Begin
2178 	  	 v_party_id:=p_party_id;
2179 		   IF ((sel_type='B' ) OR (sel_type='T') ) AND v_check_level='SITE' THEN
2180 			IF ((v_psite_in_sql = 0) AND sel_type = 'B') AND v_check_level='SITE' THEN
2181 				NULL;
2182 			ELSE
2183 				cid := dbms_sql.open_cursor;
2184 				IF (sel_type = 'B') THEN
2185 					dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
2186 				ELSIF (sel_type = 'T') THEN
2187 					dbms_sql.parse(cid, rule, dbms_sql.native);
2188 				END IF;
2189 					 dbms_sql.define_column(cid,1,val,240);
2190 				OPEN  cpsite_csr;
2191 						LOOP
2192 							FETCH  cpsite_csr
2193 							INTO cparty_id,
2194 								 cpsite_id;
2195 							EXIT WHEN cpsite_csr%notfound;
2196 							-- Added the Following Code to If refreshed the customer profile engine for Incident Address
2197 							IF (v_incident_id IS NOT  NULL AND v_incident_id = cpsite_id)  AND  v_incident_flag <> 'N' THEN
2198 								v_incident_flag := 'N';
2199 							END IF;
2200 							 Evaluate_One_Check(truncate_flag,
2201 										       chk_id,
2202 										       cparty_id,
2203 										       NULL, -- For site level profile check, account parameter should be null
2204 										       cpsite_id,
2205 										       v_check_level,
2206 										       sel_type,
2207 										       sel_blk_id,
2208 										       data_type,
2209 											fmt_mask,
2210 											chk_u_l_flag,
2211 											Thd_grade,
2212 											rule,
2213 											blk_id,
2214 											sql_stmt,
2215 											curr_code,
2216 											l_up_total,
2217 											l_ip_total,
2218 											l_ua_total,
2219 											l_ia_total ,
2220 											l_us_total,
2221 											l_is_total,
2222 											cid);
2223 							END LOOP;
2224 					CLOSE cpsite_csr;
2225 					-- Added the following code to refresh the incident Address
2226 					IF v_incident_id IS NOT  NULL AND  v_incident_flag ='Y' THEN
2227 					    Evaluate_One_Check(truncate_flag,
2228 										       chk_id,
2229 										       p_party_id,
2230 										       NULL, -- For site level profile check, account parameter should be null
2231 										       p_psite_id,
2232 										       v_check_level,
2233 										       sel_type,
2234 										       sel_blk_id,
2235 										       data_type,
2236 											fmt_mask,
2237 											chk_u_l_flag,
2238 											Thd_grade,
2239 											rule,
2240 											blk_id,
2241 											sql_stmt,
2242 											curr_code,
2243 											l_up_total,
2244 											l_ip_total,
2245 											l_ua_total,
2246 											l_ia_total ,
2247 											l_us_total,
2248 											l_is_total,
2249 											cid);
2250 						   v_incident_flag := 'N';
2251 					END IF;
2252 					-- Ended the incident address refresh operation
2253 					IF (dbms_sql.is_open(cid)) THEN
2254 						dbms_sql.close_cursor(cid);
2255 					 end if;
2256 			END IF;
2257 		 END IF;
2258 		 Exception
2259 		When others then
2260 			 IF (dbms_sql.is_open(cid)) THEN
2261 				dbms_sql.close_cursor(cid);
2262 			end if;
2263 			set_context('Evaluate_Checks2_JIT',
2264 			'chk_id=>'||to_char(chk_id),
2265 			'party_id=>'||to_char(cparty_id),
2266 			'account_id=>'|| NULL
2267 			,'party_site_id =>'||to_char(cpsite_id)
2268 			);
2269 			g_error := sqlcode || ' ' || sqlerrm;
2270 	  	        set_context(NULL, g_error);
2271 	     End;
2272 -- End  fix by spamujul for ER#8473903
2273     IF l_ip_total <> 0 THEN
2274       l_for_insert := 'Y';
2275       l_for_party  := 'Y';
2276        l_for_psite	 :='N'; -- added by spamujul for ER#8473903
2277       Insert_Update_Check_Results(l_ip_total,
2278 						       l_for_insert,
2279 						       l_for_party
2280 						       ,l_for_psite  -- added by spamujul for ER#8473903
2281 						       );
2282       l_ip_total :=0;
2283    END IF;
2284      -- check if there are still records to be updated
2285    IF l_up_total <> 0 THEN
2286       l_for_insert := 'N';
2287       l_for_party  := 'Y';
2288       l_for_psite	 :='N'; -- added by spamujul for ER#8473903
2289       Insert_Update_Check_Results (l_up_total,
2290 							  l_for_insert,
2291 							  l_for_party
2292 							 ,l_for_psite -- added by spamujul for ER#8473903
2293 							  );
2294       l_up_total :=0;
2295    END IF;
2296 
2297    -- check if there are still records to be inserted
2298    IF l_ia_total <> 0 THEN
2299       l_for_insert := 'Y';
2300       l_for_party  := 'N';
2301       l_for_psite	 :='N'; -- added by spamujul for ER#8473903
2302       Insert_Update_Check_Results(l_ia_total,
2303 							  l_for_insert,
2304 							  l_for_party
2305 							 ,l_for_psite -- added by spamujul for ER#8473903
2306 							  );
2307       l_ia_total :=0;
2308    END IF;
2309    -- check if there are still records to be updated
2310    IF l_ua_total <> 0 THEN
2311       l_for_insert := 'N';
2312       l_for_party  := 'N';
2313       l_for_psite	 :='N'; -- added by spamujul for ER#8473903
2314       Insert_Update_Check_Results(l_ua_total,
2315 							 l_for_insert,
2316 							 l_for_party
2317 							,l_for_psite -- added by spamujul for ER#8473903
2318 							 );
2319       l_ua_total :=0;
2320    END IF;
2321     -- Begin fix by spamujul for ER#8473903
2322 	IF l_is_total <> 0 THEN
2323 		 l_for_insert := 'Y';
2324 		 l_for_party  := 'N';
2325 		 l_for_psite   := 'Y';-- added by spamujul for ER#8473903
2326 		 Insert_Update_Check_Results(l_is_total,
2327 								  l_for_insert,
2328 								  l_for_party
2329 								 ,l_for_psite -- added by spamujul for ER#8473903
2330 								  );
2331 		 l_is_total :=0;
2332    END IF;
2333 	   IF l_us_total <> 0 THEN
2334 	     l_for_insert := 'N';
2335 	     l_for_party  := 'N';
2336 	     l_for_psite   := 'Y';-- added by spamujul for ER#8473903
2337 	     Insert_Update_Check_Results(l_us_total,
2338 								 l_for_insert,
2339 								 l_for_party
2340 								,l_for_psite -- added by spamujul for ER#8473903
2341 								 );
2342 	     l_us_total :=0;
2343 	  END IF;
2344     -- End fix by spamujul for ER#8473903
2345 
2346   COMMIT;
2347 END Evaluate_Checks2_JIT;
2348 
2349 --
2350 -- Evaluate_Checks2
2351 --   Loop through all checks and evaluate the results
2352 --   for the Given Party
2353 --   if Party and Group are Provided
2354 --   Only the checks and blocks for a given group_id
2355 --   This is used when the refresh button is pressed or from JIT process
2356 --
2357 
2358 PROCEDURE Evaluate_Checks2
2359 		  ( p_party_id			IN	NUMBER,
2360 		    p_acct_id			IN	NUMBER,
2361 		    p_psite_id			IN	 NUMBER DEFAULT NULL, -- added by spamujul for ER#8473903
2362 		    p_group_id		IN	NUMBER,
2363 		    p_critical_flag		IN      VARCHAR2 DEFAULT 'N', /* added for JIT enhancement */
2364 		    errbuf				OUT	NOCOPY VARCHAR2,
2365 		    retcode			OUT	NOCOPY NUMBER ) IS
2366 
2367 	   CURSOR checks_csr IS
2368 	      SELECT check_id,
2369 				select_type,
2370 				select_block_id,
2371 				data_type,
2372 				format_mask,
2373 				check_upper_lower_flag,
2374 				threshold_grade, check_level
2375 		FROM csc_prof_checks_b chk
2376 	       WHERE check_level IN ('PARTY',
2377 							    'ACCOUNT',
2378 							    'SITE' --Added  'SITE' by spamujul for ER#8473903
2379 							    )
2380 		 AND (Sysdate BETWEEN Nvl(start_date_active, Sysdate)
2381 		      AND nvl(end_date_active, Sysdate))
2382 		 AND EXISTS ( SELECT a.check_id
2383 				FROM csc_prof_group_checks a
2384 			       WHERE a.group_id   = p_group_id
2385 				 AND chk.check_id = a.check_id);
2386 
2387 		   /* added cursor checks_crit_csr for JIT enhancement -- Bug 4535407 */
2388 		   CURSOR checks_crit_csr IS
2389 		      SELECT check_id,
2390 					select_type,
2391 					select_block_id,
2392 					data_type,
2393 					format_mask,
2394 					check_upper_lower_flag,
2395 					threshold_grade,
2396 					check_level
2397 			FROM csc_prof_checks_b chk
2398 		       WHERE check_level IN ('PARTY',
2399 								    'ACCOUNT',
2400 								    'SITE'   --  Added 'SITE' by spamujul for ER#8473903
2401  								    )
2402 			 AND (Sysdate BETWEEN Nvl(start_date_active, Sysdate)
2403 			      AND nvl(end_date_active, Sysdate))
2404 			 AND EXISTS ( SELECT a.check_id
2405 					FROM csc_prof_group_checks a
2406 				       WHERE a.group_id   = p_group_id
2407 					 AND chk.check_id = a.check_id
2408 					 AND a.critical_flag = 'Y');
2409 
2410 		   CURSOR rel_party_csr(c_party_id IN NUMBER) IS
2411 		     SELECT 1
2412 		       FROM hz_parties
2413 		      WHERE party_id = c_party_id
2414 			AND party_type = 'PARTY_RELATIONSHIP'
2415 			AND status = 'A';
2416 
2417 		   CURSOR employee_csr(c_party_id IN NUMBER) IS
2418 		     SELECT 1
2419 		       FROM per_workforce_current_x
2420 		      WHERE person_id = c_party_id;
2421 
2422 
2423 		   CURSOR rel_checks_csr IS
2424 		      SELECT check_id,
2425 					select_type,
2426 					select_block_id,
2427 					data_type,
2428 					format_mask,
2429 					check_upper_lower_flag,
2430 					threshold_grade,
2431 					check_level
2432 			FROM csc_prof_checks_b chk
2433 		       WHERE check_level  IN ( 'CONTACT',
2434 									'SITE'  --Added 'SITE'  by spamujul for ER#8473903
2435 									)
2436 			 AND (Sysdate BETWEEN Nvl(start_date_active, Sysdate)
2437 			      AND nvl(end_date_active, Sysdate))
2438 			 AND EXISTS ( SELECT a.check_id
2439 					FROM csc_prof_group_checks a
2440 				       WHERE a.group_id   = p_group_id
2441 					 AND chk.check_id = a.check_id);
2442 
2443    /* added cursor checks_csr_jit for JIT enhancement -- Bug 4535407 */
2444 		   CURSOR rel_checks_crit_csr IS
2445 		      SELECT check_id,
2446 					select_type,
2447 					select_block_id,
2448 					data_type,
2449 					format_mask,
2450 					check_upper_lower_flag,
2451 					threshold_grade,
2452 					check_level
2453 			FROM csc_prof_checks_b chk
2454 		       WHERE check_level  IN ( 'CONTACT',
2455 									'SITE' --Added 'SITE'  by spamujul for ER#8473903
2456 									)
2457 			 AND (Sysdate BETWEEN Nvl(start_date_active, Sysdate)
2458 			      AND nvl(end_date_active, Sysdate))
2459 			 AND EXISTS ( SELECT a.check_id
2460 					FROM csc_prof_group_checks a
2461 				       WHERE a.group_id   = p_group_id
2462 					 AND chk.check_id = a.check_id
2463 					 AND a.critical_flag = 'Y');
2464 
2465 		/* R12 Employee HelpDesk Modifications */
2466 		CURSOR emp_checks_csr IS
2467 		      SELECT check_id,
2468 					select_type,
2469 					select_block_id,
2470 					data_type,
2471 					format_mask,
2472 					check_upper_lower_flag,
2473 					threshold_grade,
2474 					check_level
2475 			FROM csc_prof_checks_b chk
2476 		       WHERE check_level = 'EMPLOYEE'
2477 			 AND (Sysdate BETWEEN Nvl(start_date_active, Sysdate)
2478 			      AND nvl(end_date_active, Sysdate))
2479 			 AND EXISTS ( SELECT a.check_id
2480 					FROM csc_prof_group_checks a
2481 				       WHERE a.group_id   = p_group_id
2482 					 AND chk.check_id = a.check_id);
2483 
2484 		CURSOR emp_checks_crit_csr IS
2485 		      SELECT check_id,
2486 					select_type,
2487 					select_block_id,
2488 					data_type,
2489 					format_mask,
2490 					check_upper_lower_flag,
2491 					threshold_grade,
2492 					check_level
2493 			FROM csc_prof_checks_b chk
2494 		       WHERE check_level = 'EMPLOYEE'
2495 			 AND (Sysdate BETWEEN Nvl(start_date_active, Sysdate)
2496 			      AND nvl(end_date_active, Sysdate))
2497 			 AND EXISTS ( SELECT a.check_id
2498 					FROM csc_prof_group_checks a
2499 				       WHERE a.group_id   = p_group_id
2500 					 AND chk.check_id = a.check_id
2501 					 AND a.critical_flag = 'Y');
2502 
2503 			/* End of R12 Employee HelpDesk Modifications */
2504 
2505 			   l_rel_refresh VARCHAR2(1) := 'N';
2506 			   v_rel_party   NUMBER;
2507 
2508 			   l_emp_refresh VARCHAR2(1) := 'N';
2509 			   v_emp_party   NUMBER;
2510 
2511 
2512 
2513 BEGIN
2514 	/* Moved the code to Evaluate_Checks2_JIT for JIT enhancement. -- Bug 4535407
2515 	   Logic
2516 	   -----
2517 	   IF jit_flag = 'Y' THEN
2518 	      OPEN checks_crit_csr;
2519 	      CALL Evaluate_Checks2_JIT;
2520 	   ELSE
2521 	      OPEN checks_csr;
2522 	      CALL Evaluate_Checks2_JIT;
2523 	   END IF;
2524 
2525 	*/
2526 	/* Bug 5168090 Fix - scenario where employee_id and party_id from hz_parties have the same value */
2527 	  IF g_dashboard_for_employee = 'Y' THEN
2528 		  l_emp_refresh      := 'Y';
2529 	  ELSE
2530 		  OPEN rel_party_csr(p_party_id);
2531 		  FETCH rel_party_csr
2532 		  INTO  v_rel_party;
2533 		  IF rel_party_csr%FOUND THEN
2534 			  l_rel_refresh := 'Y';
2535 		  END IF;
2536 		  CLOSE rel_party_csr;
2537 	  END IF;
2538  /* Bug 5168090 Fix */
2539 		   IF l_rel_refresh           = 'Y' THEN
2540 			IF p_critical_flag = 'Y' THEN
2541 				FOR i     IN rel_checks_crit_csr
2542 					LOOP
2543 						   Evaluate_Checks2_JIT
2544 						      ( p_party_id			=> p_party_id,
2545 							p_acct_id			=> p_acct_id,
2546 							p_psite_id			=> p_psite_id,	 --added by spamujul for ER#8473903
2547 							p_check_id			=> i.check_id,
2548 							p_select_type		=> i.select_type,
2549 							p_select_block_id	=> i.select_block_id,
2550 							p_data_type			=> i.data_type,
2551 							p_format_mask		=> i.format_mask,
2552 							p_chk_upp_low_flag => i.check_upper_lower_flag,
2553 							p_threshold_grade	=> i.threshold_grade,
2554 							p_check_level		=> i.check_level,
2555 							p_group_id			=> p_group_id
2556 						       );
2557 					END LOOP;
2558 			ELSE
2559 				FOR i IN rel_checks_csr
2560 					LOOP
2561 						   Evaluate_Checks2_JIT
2562 						      ( p_party_id			=> p_party_id,
2563 							p_acct_id			=> p_acct_id,
2564 							p_psite_id			=> p_psite_id,	--added by spamujul for ER#8473903
2565 							p_check_id			=> i.check_id,
2566 							p_select_type		=> i.select_type,
2567 							p_select_block_id	=> i.select_block_id,
2568 							p_data_type			=> i.data_type,
2569 							p_format_mask		=> i.format_mask,
2570 							p_chk_upp_low_flag => i.check_upper_lower_flag,
2571 							p_threshold_grade	=> i.threshold_grade,
2572 							p_check_level		=> i.check_level,
2573 							p_group_id			=> p_group_id
2574 						       );
2575 				  END LOOP;
2576 			END IF;
2577 		ELSIF l_emp_refresh = 'Y' THEN
2578 			/* R12 Employee HelpDesk Modifications */
2579 			IF p_critical_flag = 'Y' THEN
2580 				FOR i     IN emp_checks_crit_csr
2581 					LOOP
2582 						   Evaluate_Checks2_JIT
2583 						      ( p_party_id			=> p_party_id,
2584 							p_acct_id			=> p_acct_id,
2585 							p_psite_id			=> p_psite_id,	 --added by spamujul for ER#8473903
2586 							p_check_id			=> i.check_id,
2587 							p_select_type		 => i.select_type,
2588 							p_select_block_id	=> i.select_block_id,
2589 							p_data_type			=> i.data_type,
2590 							p_format_mask		=> i.format_mask,
2591 							p_chk_upp_low_flag => i.check_upper_lower_flag,
2592 							p_threshold_grade	 => i.threshold_grade,
2593 							p_check_level		=> i.check_level,
2594 							p_group_id			=> p_group_id
2595 						       );
2596 				  END LOOP;
2597 			ELSE
2598 				FOR i IN emp_checks_csr
2599 					LOOP
2600 						   Evaluate_Checks2_JIT
2601 						      ( p_party_id			=> p_party_id,
2602 							p_acct_id			=> p_acct_id,
2603 							p_psite_id			=> p_psite_id,	--added by spamujul for ER#8473903
2604 							p_check_id			=> i.check_id,
2605 							p_select_type		=> i.select_type,
2606 							p_select_block_id	=> i.select_block_id,
2607 							p_data_type			=> i.data_type,
2608 							p_format_mask		=> i.format_mask,
2609 							p_chk_upp_low_flag	 => i.check_upper_lower_flag,
2610 							p_threshold_grade	=> i.threshold_grade,
2611 							p_check_level		=> i.check_level,
2612 							p_group_id			=> p_group_id
2613 						       );
2614 				 END LOOP;
2615 			END IF;
2616 			/* End of R12 Employee HelpDesk Modifications */
2617 		ELSE
2618 			IF p_critical_flag = 'Y' THEN
2619 				FOR i     IN checks_crit_csr
2620 					LOOP
2621 						   Evaluate_Checks2_JIT
2622 						      ( p_party_id			=> p_party_id,
2623 							p_acct_id			=> p_acct_id,
2624 							p_psite_id			=> p_psite_id,	--added by spamujul for ER#8473903
2625 							p_check_id			=> i.check_id,
2626 							p_select_type		=> i.select_type,
2627 							p_select_block_id	=> i.select_block_id,
2628 							p_data_type			=> i.data_type,
2629 							p_format_mask		=> i.format_mask,
2630 							p_chk_upp_low_flag	=> i.check_upper_lower_flag,
2631 							p_threshold_grade	 => i.threshold_grade,
2632 							p_check_level		=> i.check_level,
2633 							p_group_id			=> p_group_id
2634 						       );
2635 				     END LOOP;
2636 			ELSE
2637 				FOR i IN checks_csr
2638 					LOOP
2639 						   Evaluate_Checks2_JIT
2640 						      ( p_party_id			=> p_party_id,
2641 							p_acct_id			=> p_acct_id,
2642 							p_psite_id			=> p_psite_id,	--added by spamujul for ER#8473903
2643 							p_check_id			=> i.check_id,
2644 							p_select_type		=> i.select_type,
2645 							p_select_block_id	 => i.select_block_id,
2646 							p_data_type			=> i.data_type,
2647 							p_format_mask		=> i.format_mask,
2648 							p_chk_upp_low_flag	=> i.check_upper_lower_flag,
2649 							p_threshold_grade	 => i.threshold_grade,
2650 							p_check_level		=> i.check_level,
2651 							p_group_id			=> p_group_id
2652 						       );
2653 				     END LOOP;
2654 			END IF;
2655 		END IF;
2656 		   -- Return 0 for successful completion, 1 for warnings, 2 for error
2657 		   IF (error_flag) THEN
2658 		      errbuf := Sqlerrm;
2659 		      retcode := 2;
2660 		   ELSIF (warning_msg <> '') THEN
2661 		      errbuf := warning_msg;
2662 		      retcode := 1;
2663 		   ELSE
2664 		      errbuf := '';
2665 		      retcode := 0;
2666 		   END IF;
2667 
2668 		   IF (debug) THEN
2669 		      fnd_file.close;
2670 		   END IF;
2671 EXCEPTION
2672 		WHEN OTHERS THEN
2673 			ROLLBACK;
2674 			 IF (checks_csr%isopen) THEN
2675 				CLOSE checks_csr;
2676 		        END IF;
2677 			IF (debug) THEN
2678 				fnd_file.close;
2679 		        END IF;
2680 			-- Retrieve error message into errbuf
2681 			errbuf := Sqlerrm;
2682 		   -- Return 2 for error
2683 		      retcode := 2;
2684 			g_error := sqlcode || ' ' || sqlerrm;
2685 			fnd_file.put_line(fnd_file.log , g_error);
2686 END Evaluate_Checks2;
2687   --
2688   -- Evaluate_Checks3
2689   --   Loop through all checks and evaluate the results
2690   --   for each customer and account.
2691   --   if check_id is null, party_id is not null or account_id is not null
2692   --         and block_id is null
2693   --   get only the checks and blocks for a given group_id
2694   --   This is used when the refresh button is pressed
2695   --
2696   PROCEDURE Evaluate_Checks3( p_party_id		IN   NUMBER,
2697 								  p_acct_id		IN   NUMBER,
2698 								  p_psite_id		IN   NUMBER DEFAULT NULL, -- added by spamujul for ER#8473903
2699 								  p_group_id		IN   NUMBER,
2700 								  errbuf			OUT NOCOPY VARCHAR2,
2701 								  retcode			OUT NOCOPY NUMBER
2702 								  ) IS
2703 
2704 				chk_id				Number;
2705 				chk_name			Varchar2(240);
2706 				sel_type				Varchar2(3);
2707 				sel_blk_id			Number;
2708 				data_type			Varchar2(90);
2709 				fmt_mask			Varchar2(90);
2710 				rule					Varchar2(32767);
2711 				Chk_u_l_flag		Varchar2(3);
2712 				Thd_grade			Varchar2(9);
2713 				v_block_id			Number;
2714 				truncate_flag			Varchar2(1)		:= 'N';
2715 				acct_flag			Varchar2(1);
2716 				blk_id				Number			:= null;
2717 				blk_name			Varchar2(240)	:= null;
2718 				sql_stmt			Varchar2(2000)	:= null;
2719 				curr_code			Varchar2(15)		:= null;
2720 				l_for_insert			varchar2(1)		:= 'Y';
2721 				l_for_party			varchar2(1)		:= 'Y';
2722 				l_for_psite			Varchar2(1)		:= 'N'; -- added by spamujul for ER#8473903
2723 				l_up_total			Number			:= 0;
2724 				l_ip_total			Number			:= 0;
2725 				l_ua_total			NUmber			:= 0;
2726 				l_ia_total			Number			:= 0;
2727 				l_us_total			Number			:= 0; -- added by spamujul for ER#8473903
2728 				l_is_total			Number			:= 0; -- added by spamujul for ER#8473903
2729 				v_party_in_sql		Number			:= 0;
2730 				v_acct_in_sql		Number			:=  0;
2731 				v_psite_in_sql		Number			:= 0; -- added by spamujul for ER#8473903
2732 				v_check_level		Varchar2(10);
2733 				 v_rel_refresh		Varchar2(1)		 := 'N';
2734 
2735 				/* added these variable for Bug 1937730*/
2736 				v_party_id			Number;
2737 				cparty_id			Number;
2738 				ccust_acct_id		Number;
2739 				cpsite_id			Number; -- added by spamujul for ER#8473903
2740 				cid					Number;
2741 				val					Varchar2(240) := null;
2742 
2743 				-- cursor to retrieve all checks that belong to that group
2744 				CURSOR checks_csr IS
2745 				  SELECT check_id,
2746 					      select_type,
2747 					      select_block_id,
2748 					      data_type,
2749 					      format_mask,
2750 					      check_upper_lower_flag,
2751 					      threshold_grade,
2752 					     check_level
2753 				  FROM csc_prof_checks_b chk
2754 				  WHERE check_level IN ('PARTY',
2755 									       'ACCOUNT',  -- Added 'SITE' by spamujul for ER#8473903
2756 									       'SITE'
2757 									       )
2758 				  AND (Sysdate BETWEEN Nvl(start_date_active, Sysdate)
2759 							  AND nvl(end_date_active, Sysdate))
2760 				  AND Exists ( SELECT a.check_id
2761 						FROM csc_prof_group_checks a
2762 						WHERE chk.check_id = a.check_id
2763 						AND sysdate between
2764 					       nvl(a.start_date_active,sysdate)
2765 					       AND nvl(a.end_date_active,sysdate));
2766 					/* R12 Employee HelpDesk Modifications */
2767 						CURSOR  checks_emp_csr IS
2768 						  SELECT check_id,
2769 								select_type,
2770 								select_block_id,
2771 								data_type,
2772 								format_mask,
2773 								check_upper_lower_flag,
2774 								threshold_grade,
2775 							check_level
2776 						  FROM csc_prof_checks_b chk
2777 						  WHERE check_level IN ('EMPLOYEE')
2778 						  AND (Sysdate BETWEEN Nvl(start_date_active, Sysdate)
2779 									  AND nvl(end_date_active, Sysdate))
2780 						  AND Exists ( SELECT a.check_id
2781 								FROM csc_prof_group_checks a
2782 								WHERE chk.check_id = a.check_id
2783 								AND sysdate between
2784 							       nvl(a.start_date_active,sysdate)
2785 							       AND nvl(a.end_date_active,sysdate));
2786 					/* End of R12 Employee HelpDesk Modifications */
2787 
2788 				-- cursor to get the blocks related to the check
2789 				 CURSOR cblocks_csr IS
2790 					  Select distinct block_id
2791 					  From csc_prof_check_rules_b
2792 					  Where check_id = chk_id
2793 					  UNION
2794 					  (Select distinct expr_to_block_id
2795 					  From csc_prof_check_rules_b
2796 					  Where check_id = chk_id);
2797 
2798 					CURSOR block_csr IS
2799 					  SELECT block_id,
2800 							sql_stmnt,
2801 							currency_code
2802 					  FROM csc_prof_blocks_b a
2803 					  WHERE a.block_id = sel_blk_id;
2804 
2805 			       /* added this condition party_id=v_party_id for Bug 1937730*/
2806 				CURSOR caccount_csr IS
2807 				  SELECT party_id, cust_account_id
2808 				  FROM hz_cust_accounts
2809 				  WHERE  party_id=v_party_id
2810 				  AND  status = 'A' ;
2811 			     -- Begin fix by spamujul for ER#8473903
2812 				CURSOR cpsite_csr IS
2813 				 SELECT party_id,party_site_id
2814 				  FROM   HZ_PARTY_SITES
2815 				  WHERE party_id = p_party_id
2816 				      AND NVL(created_by_module,'XXX') <>'SR_ONETIME';
2817 			     -- End fix by spamujul for ER#8473903
2818 
2819 			    CURSOR checks_relparty_csr IS
2820 			     SELECT check_id,
2821 					  select_type,
2822 					  select_block_id,
2823 					  data_type,
2824 					  format_mask,
2825 					  check_upper_lower_flag,
2826 					  threshold_grade,
2827 					  check_level
2828 			     FROM csc_prof_checks_b chk
2829 			     WHERE check_level  IN ( 'CONTACT',
2830 									    'SITE' -- Added'SITE' by spamujul for ER#8473903
2831 									    )
2832 			       AND (Sysdate BETWEEN Nvl(start_date_active, Sysdate)
2833 					AND nvl(end_date_active, Sysdate))
2834 			     AND Exists ( SELECT a.check_id
2835 						FROM csc_prof_group_checks a
2836 						WHERE chk.check_id = a.check_id
2837 						AND sysdate between nvl(a.start_date_active,sysdate)
2838 						AND nvl(a.end_date_active,sysdate));
2839 
2840 			  CURSOR crelparty_csr(c_party_id IN NUMBER) IS
2841 			     SELECT party_id FROM hz_parties
2842 			     WHERE party_id = c_party_id
2843 			      AND party_type = 'PARTY_RELATIONSHIP'
2844 			      AND status = 'A';
2845 
2846 BEGIN
2847 	  l_ip_total	 :=0;
2848 	  l_up_total	 :=0;
2849 	  l_ia_total	 :=0;
2850 	  l_ua_total	 :=0;
2851 	  l_us_total	 := 0;  -- added by spamujul for ER#8473903
2852 	  l_is_total	 := 0;  -- added by spamujul for ER#8473903
2853    -- Loop through check_id and update block results for a party or account
2854 	OPEN checks_csr;
2855 		LOOP
2856 			FETCH checks_csr
2857 			  INTO chk_id,
2858 				   sel_type,
2859 				   sel_blk_id,
2860 				   data_type,
2861 				   fmt_mask,
2862 				   chk_u_l_flag,
2863 				   Thd_grade,
2864 				   v_check_level;
2865 			  EXIT WHEN checks_csr%notfound;
2866 			  IF sel_type = 'T' then
2867 				OPEN cblocks_csr;
2868 				LOOP
2869 					FETCH cblocks_csr into v_block_id;
2870 					Exit when cblocks_csr%notfound;
2871 					Evaluate_Blocks2(v_block_id,
2872 						p_party_id,
2873 						p_acct_id,
2874 						p_psite_id, -- added by spamujul for ER#8473903
2875 						l_up_total,
2876 						l_ip_total,
2877 						l_ua_total,
2878 						l_ia_total
2879 					       ,l_us_total, -- added by spamujul for ER#8473903
2880 						l_is_total  -- added by spamujul for ER#8473903
2881 						);
2882 
2883 				 END LOOP;
2884 				CLOSE cblocks_csr;
2885 			END IF;
2886 		END LOOP;
2887 	CLOSE checks_csr;
2888 	  l_ip_total := 0;
2889 	  l_up_total :=0;
2890 	  l_ia_total := 0;
2891 	  l_ua_total :=0;
2892 	  l_us_total := 0;  -- added by spamujul for ER#8473903
2893 	  l_is_total  := 0;  -- added by spamujul for ER#8473903
2894 
2895 -- Loop through check_id and update check results for a party or account
2896 	  OPEN checks_csr;
2897 		LOOP
2898 			FETCH checks_csr
2899 			INTO chk_id,
2900 				 sel_type,
2901 				 sel_blk_id,
2902 				 data_type,
2903 				 fmt_mask,
2904 				 chk_u_l_flag,
2905 				 Thd_grade,
2906 				 v_check_level;
2907 			EXIT WHEN checks_csr%notfound;
2908 		  --  IF (chk_id NOT BETWEEN 21 AND 24) THEN
2909 		  IF (sel_type = 'T') THEN
2910 		     IF p_acct_id IS NULL THEN
2911 			   acct_flag := 'N';
2912 			   build_rule(acct_flag,chk_id,v_check_level, rule);
2913 		     ELSE
2914 			   acct_flag := 'Y';
2915 			   build_rule(acct_flag,chk_id,v_check_level, rule);
2916 		     END IF;
2917 
2918 		  ELSIF (sel_type = 'B') THEN
2919 			Open block_csr;
2920 			Fetch block_csr
2921 			INTO blk_id,
2922 				sql_stmt,
2923 				curr_code;
2924 			Close block_csr;
2925 
2926 			/* Uncommented this condition for Bug 1937730*/
2927 			 /******************/
2928 			 IF sql_stmt IS NOT NULL Then
2929 				v_party_in_sql := INSTR(lower(sql_stmt),':party_id',1);
2930 				v_acct_in_sql  :=  INSTR(lower(sql_stmt),':cust_account_id',1);
2931 				v_psite_in_sql :=  INSTR(lower(sql_stmt),':party_site_id',1); -- Added by spamujul for ER#8473903
2932 			 Else
2933 				v_party_in_sql := 0;
2934 				v_acct_in_sql  :=  0;
2935 				v_psite_in_sql :=  0;   -- Added by spamujul for ER#8473903
2936 			 End if;
2937 			/******************/
2938 
2939 		   END IF;
2940 
2941 	       If v_check_level='PARTY' then
2942 		  -- p_cid is passed as null as Cursor has to be parsed always
2943 			  Evaluate_One_Check(truncate_flag,
2944 							     chk_id,
2945 							     p_party_id,
2946 							     null,
2947 							     NULL,  -- added by spamujul for ER#8473903
2948 							     v_check_level,
2949 							     sel_type,
2950 							     sel_blk_id,
2951 							     data_type,
2952 							     fmt_mask,
2953 							     chk_u_l_flag,
2954 							     Thd_grade,
2955 							     rule,
2956 							     blk_id,
2957 							     sql_stmt,
2958 							     curr_code,
2959 							     l_up_total,
2960 							     l_ip_total,
2961 							     l_ua_total,
2962 							     l_ia_total ,
2963 							     l_us_total,  -- added by spamujul for ER#8473903
2964 							     l_is_total ,  -- added by spamujul for ER#8473903
2965 							     NULL );
2966 	       End if;
2967    --END IF;
2968 
2969 /* This begin, end exception is added mainly for exception handing for Bug 19800
2970 04*/
2971 
2972 	Begin
2973 		 /* added this condition for Bug 1937730*/
2974 		  v_party_id:=p_party_id;
2975 			IF ((sel_type='B' ) OR (sel_type='T') ) and v_check_level='ACCOUNT' Then -- Only valid Types now
2976 				If ((v_acct_in_sql = 0) and sel_type = 'B') and v_check_level='ACCOUNT' Then -- added for 1850508
2977 				-- Check can be made only for 'B' types,
2978 				-- If acct is not present as bind variable, the sql might returnwrong
2979 				-- rows (party level counts) at account leve.
2980 
2981 				 --and (v_party_in_sql <> 0 and v_acct_in_sql <> 0)) OR
2982 				   --(sel_type='T') ) Then
2983 					NULL;
2984 				Else
2985 					 -- Loop through all parties with accounts
2986 					 -- added for 1850508
2987 					 --Open Cursor
2988 					 -- dbms_output.put_line('Opening and PArsing in checks1 Accounts Check_id -'||to_char(chk_id));
2989 					cid := dbms_sql.open_cursor;
2990 					 if (sel_type = 'B') then
2991 						dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
2992 					 elsif (sel_type = 'T') then
2993 						dbms_sql.parse(cid, rule, dbms_sql.native);
2994 					 end if;
2995 					 dbms_sql.define_column(cid,1,val,240);
2996 
2997 					OPEN caccount_csr;
2998 						LOOP
2999 							FETCH caccount_csr
3000 							INTO cparty_id,
3001 								 ccust_acct_id;
3002 							EXIT WHEN caccount_csr%notfound;
3003 							 Evaluate_One_Check(truncate_flag,
3004 										       chk_id,
3005 										       cparty_id,
3006 										       ccust_acct_id,
3007 										       NULL,  -- added by spamujul for ER#8473903
3008 										       v_check_level,
3009 										       sel_type,
3010 										       sel_blk_id,
3011 										       data_type,
3012 											fmt_mask,
3013 											chk_u_l_flag,
3014 											Thd_grade,
3015 											rule,
3016 											blk_id,
3017 											sql_stmt,
3018 											curr_code,
3019 											l_up_total,
3020 											l_ip_total,
3021 											l_ua_total,
3022 											l_ia_total ,
3023 											l_us_total,  -- added by spamujul for ER#8473903
3024 											l_is_total,  -- added by spamujul for ER#8473903
3025 											cid);
3026 							END LOOP;
3027 					CLOSE caccount_csr;
3028 					IF (dbms_sql.is_open(cid)) THEN
3029 						dbms_sql.close_cursor(cid);
3030 					 end if;
3031 				End if; -- added for 1850508
3032 		     END IF;
3033 	   Exception
3034 		When others then
3035 			 IF (dbms_sql.is_open(cid)) THEN
3036 				dbms_sql.close_cursor(cid);
3037 			end if;
3038 			set_context('Evaluate_Checks3',
3039 			'chk_id=>'||to_char(chk_id),
3040 			'party_id=>'||to_char(cparty_id),
3041 			'account_id=>'||to_char(ccust_acct_id)
3042 			,'party_site_id =>'|| NULL -- added by spamujul for ER#8473903
3043 			);
3044 			g_error := sqlcode || ' ' || sqlerrm;
3045 			set_context(NULL, g_error);
3046 	    End;
3047 -- Begin  fix by spamujul for ER#8473903
3048             Begin
3049 		 v_party_id:=p_party_id;
3050 		 IF ((sel_type='B' ) OR (sel_type='T') ) AND v_check_level='SITE' THEN
3051 			IF ((v_psite_in_sql = 0) AND sel_type = 'B') AND v_check_level='SITE' THEN
3052 				NULL;
3053 			ELSE
3054 				cid := dbms_sql.open_cursor;
3055 				IF (sel_type = 'B') THEN
3056 					dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
3057 				ELSIF (sel_type = 'T') THEN
3058 					dbms_sql.parse(cid, rule, dbms_sql.native);
3059 				END IF;
3060 					 dbms_sql.define_column(cid,1,val,240);
3061 				OPEN  cpsite_csr;
3062 						LOOP
3063 							FETCH  cpsite_csr
3064 							INTO cparty_id,
3065 								 cpsite_id;
3066 							EXIT WHEN cpsite_csr%notfound;
3067 							 Evaluate_One_Check(truncate_flag,
3068 										       chk_id,
3069 										       cparty_id,
3070 										       NULL, -- For site level profile check, account parameter should be null
3071 										       cpsite_id,
3072 										       v_check_level,
3073 										       sel_type,
3074 										       sel_blk_id,
3075 										       data_type,
3076 											fmt_mask,
3077 											chk_u_l_flag,
3078 											Thd_grade,
3079 											rule,
3080 											blk_id,
3081 											sql_stmt,
3082 											curr_code,
3083 											l_up_total,
3084 											l_ip_total,
3085 											l_ua_total,
3086 											l_ia_total ,
3087 											l_us_total,
3088 											l_is_total,
3089 											cid);
3090 							END LOOP;
3091 					CLOSE cpsite_csr;
3092 					IF (dbms_sql.is_open(cid)) THEN
3093 						dbms_sql.close_cursor(cid);
3094 					 end if;
3095 			END IF;
3096 		 END IF;
3097 		 Exception
3098 		When others then
3099 			 IF (dbms_sql.is_open(cid)) THEN
3100 				dbms_sql.close_cursor(cid);
3101 			end if;
3102 			set_context('Evaluate_Checks3',
3103 			'chk_id=>'||to_char(chk_id),
3104 			'party_id=>'||to_char(cparty_id),
3105 			'account_id=>'|| NULL
3106 			,'party_site_id =>'||to_char(cpsite_id)
3107 			);
3108 			g_error := sqlcode || ' ' || sqlerrm;
3109 	  	        set_context(NULL, g_error);
3110 	     End;
3111 -- End  fix by spamujul for ER#8473903
3112     END LOOP;
3113    CLOSE checks_csr;
3114 
3115 
3116 
3117 /*Commented this if condition for Bug 1937730*/
3118 --   IF p_acct_id IS NULL THEN
3119     -- check if there are still records to be inserted
3120     IF l_ip_total <> 0 THEN
3121 	  l_for_insert := 'Y';
3122           l_for_party  := 'Y';
3123 	  l_for_psite   := 'N';-- added by spamujul for ER#8473903
3124 	  Insert_Update_Check_Results(l_ip_total,
3125 						       l_for_insert,
3126 						       l_for_party
3127 						       ,l_for_psite  -- added by spamujul for ER#8473903
3128 						       );
3129           l_ip_total :=0;
3130     END IF;
3131     -- check if there are still records to be updated
3132     IF l_up_total <> 0 THEN
3133 	  l_for_insert := 'N';
3134 	  l_for_party  := 'Y';
3135 	  l_for_psite   := 'N';-- added by spamujul for ER#8473903
3136 	 Insert_Update_Check_Results (l_up_total,
3137 							  l_for_insert,
3138 							  l_for_party
3139 							 ,l_for_psite -- added by spamujul for ER#8473903
3140 							  );
3141 	  l_up_total :=0;
3142     END IF;
3143 
3144  -- ELSE
3145    -- check if there are still records to be inserted
3146    IF l_ia_total <> 0 THEN
3147 	 l_for_insert := 'Y';
3148          l_for_party  := 'N';
3149 	 l_for_psite   := 'N';-- added by spamujul for ER#8473903
3150          Insert_Update_Check_Results(l_ia_total,
3151 							  l_for_insert,
3152 							  l_for_party
3153 							 ,l_for_psite -- added by spamujul for ER#8473903
3154 							  );
3155 	 l_ia_total :=0;
3156    END IF;
3157 
3158 -- check if there are still records to be updated
3159   IF l_ua_total <> 0 THEN
3160      l_for_insert := 'N';
3161      l_for_party  := 'N';
3162      l_for_psite   := 'N';-- added by spamujul for ER#8473903
3163      Insert_Update_Check_Results(l_ua_total,
3164 							 l_for_insert,
3165 							 l_for_party
3166 							,l_for_psite -- added by spamujul for ER#8473903
3167 							 );
3168      l_ua_total :=0;
3169   END IF;
3170   -- Begin fix by spamujul for ER#8473903
3171 	IF l_is_total <> 0 THEN
3172 		 l_for_insert := 'Y';
3173 		 l_for_party  := 'N';
3174 		 l_for_psite   := 'Y';-- added by spamujul for ER#8473903
3175 		 Insert_Update_Check_Results(l_is_total,
3176 								  l_for_insert,
3177 								  l_for_party
3178 								 ,l_for_psite -- added by spamujul for ER#8473903
3179 								  );
3180 		 l_is_total :=0;
3181    END IF;
3182 	   IF l_us_total <> 0 THEN
3183 	     l_for_insert := 'N';
3184 	     l_for_party  := 'N';
3185 	     l_for_psite   := 'Y';-- added by spamujul for ER#8473903
3186 	     Insert_Update_Check_Results(l_us_total,
3187 								 l_for_insert,
3188 								 l_for_party
3189 								,l_for_psite -- added by spamujul for ER#8473903
3190 								 );
3191 	     l_us_total :=0;
3192 	  END IF;
3193     -- End fix by spamujul for ER#8473903
3194   --New changes
3195   IF g_dashboard_for_contact IS NULL THEN
3196       FND_PROFILE.GET('CSC_DASHBOARD_VIEW_FOR_CONTACT',g_dashboard_for_contact);
3197   END IF;
3198   IF g_dashboard_for_contact = 'Y' THEN
3199 	   l_ip_total :=0;
3200 	   l_up_total :=0;
3201 	   l_ia_total :=0;
3202 	   l_ua_total :=0;
3203 	   l_us_total := 0;  -- added by spamujul for ER#8473903
3204 	   l_is_total := 0;   -- added by spamujul for ER#8473903
3205 	   -- Loop through check_id and update block results for a party or account
3206 		OPEN checks_relparty_csr;
3207 			LOOP
3208 				FETCH checks_relparty_csr
3209 				  INTO chk_id,
3210 						sel_type,
3211 						sel_blk_id,
3212 						data_type,
3213 						fmt_mask,
3214 						chk_u_l_flag,
3215 						Thd_grade,
3216 						v_check_level;
3217 		  EXIT WHEN checks_relparty_csr%notfound;
3218 		IF sel_type = 'T' then
3219 			OPEN cblocks_csr;
3220 				  LOOP
3221 				     FETCH cblocks_csr into v_block_id;
3222 				     Exit when cblocks_csr%notfound;
3223 				     Evaluate_Blocks5(v_block_id,
3224 								 p_party_id,
3225 								 p_psite_id,	  -- added by spamujul for ER#8473903
3226 								 l_up_total,
3227 								 l_ip_total,
3228 								 l_ua_total,
3229 								 l_ia_total
3230 								 ,l_us_total, -- added by spamujul for ER#8473903
3231 								  l_is_total  -- added by spamujul for ER#8473903
3232 								 );
3233 				END LOOP;
3234 			CLOSE cblocks_csr;
3235 		END IF;
3236 	END LOOP;
3237 	CLOSE checks_relparty_csr;
3238 	    l_ip_total := 0;
3239 	    l_up_total := 0;
3240 	    l_ia_total := 0;
3241 	    l_ua_total := 0;
3242 	    l_us_total := 0;  -- added by spamujul for ER#8473903
3243 	    l_is_total :=  0;  -- added by spamujul for ER#8473903
3244 
3245 -- Loop through check_id and update check results for a party or account
3246   OPEN checks_relparty_csr;
3247   LOOP
3248 	  FETCH checks_relparty_csr
3249 	  INTO chk_id,
3250 			sel_type,
3251 			sel_blk_id,
3252 			data_type,
3253 			fmt_mask,
3254 			chk_u_l_flag,
3255 			Thd_grade,
3256 			v_check_level;
3257 	  EXIT WHEN checks_relparty_csr%notfound;
3258 	  IF (sel_type = 'T') THEN
3259 		build_rule('N',chk_id,v_check_level, rule);
3260 	  ELSIF (sel_type = 'B') THEN
3261 		Open block_csr;
3262 		Fetch block_csr INTO blk_id, sql_stmt, curr_code;
3263 		Close block_csr;
3264 		 IF sql_stmt IS NOT NULL Then
3265 			v_party_in_sql	:= INSTR(lower(sql_stmt),':party_id',1);
3266 			v_psite_in_sql	:=  INSTR(lower(sql_stmt),':party_site_id',1);		-- Added by spamujul for ER#8473903
3267 		 Else
3268 			v_party_in_sql	:= 0;
3269 			v_psite_in_sql	:= 0;		-- Added by spamujul for ER#8473903
3270 		 End if;
3271 
3272 	   END IF;
3273          If v_check_level='CONTACT' then
3274 		Evaluate_One_Check(truncate_flag,
3275 					   chk_id,
3276 					   p_party_id,
3277 					   null,
3278 					   NULL,  -- added by spamujul for ER#8473903
3279 					   v_check_level,
3280 					   sel_type,
3281 					   sel_blk_id,
3282 					   data_type,
3283 					   fmt_mask,
3284 					   chk_u_l_flag,
3285 					   Thd_grade,
3286 					   rule,
3287 					   blk_id,
3288 					   sql_stmt,
3289 					   curr_code,
3290 					   l_up_total,
3291 					   l_ip_total,
3292 					   l_ua_total,
3293 					   l_ia_total ,
3294 					   l_us_total,  -- added by spamujul for ER#8473903
3295 					   l_is_total,  -- added by spamujul for ER#8473903
3296 					   NULL );
3297       End if;
3298       -- Begin fix by spamujul for ER#8473903
3299 	Begin
3300 		 v_party_id:=p_party_id;
3301 		 IF ((sel_type='B' ) OR (sel_type='T') ) AND v_check_level='SITE' THEN
3302 			IF ((v_psite_in_sql = 0) AND sel_type = 'B') AND v_check_level='SITE' THEN
3303 				NULL;
3304 			ELSE
3305 				cid := dbms_sql.open_cursor;
3306 				IF (sel_type = 'B') THEN
3307 					dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
3308 				ELSIF (sel_type = 'T') THEN
3309 					dbms_sql.parse(cid, rule, dbms_sql.native);
3310 				END IF;
3311 					 dbms_sql.define_column(cid,1,val,240);
3312 				OPEN  cpsite_csr;
3313 						LOOP
3314 							FETCH  cpsite_csr
3315 							INTO cparty_id,
3316 								 cpsite_id;
3317 							EXIT WHEN cpsite_csr%notfound;
3318 							 Evaluate_One_Check(truncate_flag,
3319 										       chk_id,
3320 										       cparty_id,
3321 										       NULL, -- For site level profile check, account parameter should be null
3322 										       cpsite_id,
3323 										       v_check_level,
3324 										       sel_type,
3325 										       sel_blk_id,
3326 										       data_type,
3327 											fmt_mask,
3328 											chk_u_l_flag,
3329 											Thd_grade,
3330 											rule,
3331 											blk_id,
3332 											sql_stmt,
3333 											curr_code,
3334 											l_up_total,
3335 											l_ip_total,
3336 											l_ua_total,
3337 											l_ia_total ,
3338 											l_us_total,
3339 											l_is_total,
3340 											cid);
3341 							END LOOP;
3342 					CLOSE cpsite_csr;
3343 					IF (dbms_sql.is_open(cid)) THEN
3344 						dbms_sql.close_cursor(cid);
3345 					 end if;
3346 			END IF;
3347 		 END IF;
3348 		 Exception
3349 		When others then
3350 			 IF (dbms_sql.is_open(cid)) THEN
3351 				dbms_sql.close_cursor(cid);
3352 			end if;
3353 			set_context('Evaluate_Checks3',
3354 			'chk_id=>'||to_char(chk_id),
3355 			'party_id=>'||to_char(cparty_id),
3356 			'account_id=>'|| NULL
3357 			,'party_site_id =>'||to_char(cpsite_id)
3358 			);
3359 			g_error := sqlcode || ' ' || sqlerrm;
3360 	  	        set_context(NULL, g_error);
3361 	     End;
3362       -- End  fix by spamujul for ER#8473903
3363 
3364     END LOOP;
3365    CLOSE checks_relparty_csr;
3366     IF l_ip_total <> 0 THEN
3367 	  l_for_insert	:= 'Y';
3368           l_for_party	:= 'Y';
3369 	  l_for_psite   := 'N';-- added by spamujul for ER#8473903
3370 	  Insert_Update_Check_Results(l_ip_total,
3371 						       l_for_insert,
3372 						       l_for_party
3373 						       ,l_for_psite  -- added by spamujul for ER#8473903
3374 						       );
3375           l_ip_total :=0;
3376     END IF;
3377     -- check if there are still records to be updated
3378     IF l_up_total <> 0 THEN
3379 	  l_for_insert := 'N';
3380 	  l_for_party  := 'Y';
3381 	  l_for_psite   := 'N';-- added by spamujul for ER#8473903
3382 	Insert_Update_Check_Results (l_up_total,
3383 							  l_for_insert,
3384 							  l_for_party
3385 							 ,l_for_psite -- added by spamujul for ER#8473903
3386 							  );
3387 	  l_up_total :=0;
3388     END IF;
3389     -- Begin fix by spamujul for ER#8473903
3390 	IF l_is_total <> 0 THEN
3391 		 l_for_insert := 'Y';
3392 		 l_for_party  := 'N';
3393 		 l_for_psite   := 'Y';-- added by spamujul for ER#8473903
3394 		 Insert_Update_Check_Results(l_is_total,
3395 								  l_for_insert,
3396 								  l_for_party
3397 								 ,l_for_psite -- added by spamujul for ER#8473903
3398 								  );
3399 		 l_is_total :=0;
3400    END IF;
3401 	   IF l_us_total <> 0 THEN
3402 	     l_for_insert := 'N';
3403 	     l_for_party  := 'N';
3404 	     l_for_psite   := 'Y';-- added by spamujul for ER#8473903
3405 	     Insert_Update_Check_Results(l_us_total,
3406 								 l_for_insert,
3407 								 l_for_party
3408 								,l_for_psite -- added by spamujul for ER#8473903
3409 								 );
3410 	     l_us_total :=0;
3411 	  END IF;
3412     -- End fix by spamujul for ER#8473903
3413 
3414   END IF; -- global if
3415   --End of new changes
3416 
3417     --New changes for Employee HelpDesk
3418 
3419   IF g_dashboard_for_employee = 'Y' THEN
3420    l_ip_total :=0;
3421    l_up_total :=0;
3422    l_ia_total :=0;
3423    l_ua_total :=0;
3424    l_us_total := 0;  -- added by spamujul for ER#8473903
3425    l_is_total := 0;  -- added by spamujul for ER#8473903
3426    -- Loop through check_id and update block results for a party or account
3427 	OPEN checks_emp_csr;
3428 	  LOOP
3429 	  FETCH checks_emp_csr
3430 	  INTO chk_id, sel_type, sel_blk_id, data_type, fmt_mask,chk_u_l_flag,Thd_grade,v_check_level;
3431 	  EXIT WHEN checks_emp_csr%notfound;
3432 
3433 	  IF sel_type = 'T' then
3434 	  OPEN cblocks_csr;
3435 	  LOOP
3436 	     FETCH cblocks_csr into v_block_id;
3437 	     Exit when cblocks_csr%notfound;
3438 	     Evaluate_Blocks5(v_block_id,
3439 					 p_party_id,
3440 					  p_psite_id, -- added by spamujul for ER#8473903
3441 					 l_up_total,
3442 					 l_ip_total,
3443 					 l_ua_total,
3444 					 l_ia_total
3445 					 ,l_us_total, -- added by spamujul for ER#8473903
3446 	  				 l_is_total  -- added by spamujul for ER#8473903
3447 					 );
3448 	 END LOOP;
3449 	 CLOSE cblocks_csr;
3450 	 END IF;
3451    END LOOP;
3452    CLOSE checks_emp_csr;
3453 
3454     l_ip_total :=0;
3455     l_up_total :=0;
3456     l_ia_total :=0;
3457     l_ua_total :=0;
3458 
3459 -- Loop through check_id and update check results for a party or account
3460   OPEN checks_emp_csr;
3461   LOOP
3462 	  FETCH checks_emp_csr
3463 	  INTO chk_id, sel_type, sel_blk_id, data_type, fmt_mask,chk_u_l_flag,Thd_grade,v_check_level;
3464 	  EXIT WHEN checks_emp_csr%notfound;
3465 	  IF (sel_type = 'T') THEN
3466 	     build_rule('N',chk_id,v_check_level, rule);
3467      ELSIF (sel_type = 'B') THEN
3468 		Open block_csr;
3469 		Fetch block_csr INTO blk_id, sql_stmt, curr_code;
3470 		Close block_csr;
3471 		IF sql_stmt IS NOT NULL Then
3472 			v_party_in_sql := INSTR(lower(sql_stmt),':party_id',1);
3473 		 Else
3474 			v_party_in_sql := 0;
3475 		 End if;
3476 
3477 	   END IF;
3478 
3479       If v_check_level='EMPLOYEE' then
3480 		Evaluate_One_Check(truncate_flag,
3481 						   chk_id,
3482 						   p_party_id,
3483 						   null,
3484 						   NULL,  -- added by spamujul for ER#8473903
3485 						   v_check_level,
3486 						  sel_type,
3487 						  sel_blk_id,
3488 						  data_type,
3489 						  fmt_mask,
3490 						  chk_u_l_flag,
3491 						  Thd_grade,
3492 						  rule,
3493 						  blk_id,
3494 						  sql_stmt,
3495 						  curr_code,
3496 						  l_up_total,
3497 						  l_ip_total,
3498 						  l_ua_total,
3499 						  l_ia_total ,
3500 						  l_us_total,  -- added by spamujul for ER#8473903
3501 						  l_is_total,  -- added by spamujul for ER#8473903
3502 						  NULL );
3503       End if;
3504     END LOOP;
3505    CLOSE checks_emp_csr;
3506     IF l_ip_total <> 0 THEN
3507 	  l_for_insert := 'Y';
3508           l_for_party  := 'Y';
3509 	  l_for_psite   := 'N';-- added by spamujul for ER#8473903
3510 	 Insert_Update_Check_Results(l_ip_total,
3511 						       l_for_insert,
3512 						       l_for_party
3513 						       ,l_for_psite  -- added by spamujul for ER#8473903
3514 						       );
3515           l_ip_total :=0;
3516     END IF;
3517     -- check if there are still records to be updated
3518     IF l_up_total <> 0 THEN
3519 	  l_for_insert := 'N';
3520 	  l_for_party  := 'Y';
3521 	  l_for_psite   := 'N';-- added by spamujul for ER#8473903
3522 	Insert_Update_Check_Results (l_up_total,
3523 							  l_for_insert,
3524 							  l_for_party
3525 							 ,l_for_psite -- added by spamujul for ER#8473903
3526 							  );
3527 	  l_up_total :=0;
3528     END IF;
3529   END IF; -- global if
3530   --End of new changes
3531 
3532   COMMIT;
3533 
3534 -- Return 0 for successful completion, 1 for warnings, 2 for error
3535   IF (error_flag) THEN
3536 	errbuf := Sqlerrm;
3537 	retcode := 2;
3538   ELSIF (warning_msg <> '') THEN
3539 	errbuf := warning_msg;
3540 	retcode := 1;
3541   ELSE
3542 	errbuf := '';
3543 	retcode := 0;
3544   END IF;
3545 
3546   IF (debug) THEN
3547 	  fnd_file.close;
3548   END IF;
3549 
3550   EXCEPTION
3551 	 WHEN OTHERS THEN
3552 		 ROLLBACK;
3553 		 IF (checks_csr%isopen) THEN
3554 		    CLOSE checks_csr;
3555 	         END IF;
3556 	         IF (debug) THEN
3557 		    fnd_file.close;
3558 		 END IF;
3559 		 -- Retrieve error message into errbuf
3560 		 errbuf := Sqlerrm;
3561 		 -- Return 2 for error
3562 		 retcode := 2;
3563 		 g_error := sqlcode || ' ' || sqlerrm;
3564 		 fnd_file.put_line(fnd_file.log , g_error);
3565 END Evaluate_Checks3;
3566 
3567 --  This procedure evaluates the checks for all parties/account in a particular group
3568 --  The batch sql statement is not null and profile check is of type variable ('B')
3569 PROCEDURE Evaluate_Checks4_Var(p_group_id NUMBER) 	IS
3570 			  chk_id				Number;
3571 			  chk_name			Varchar2(240);
3572 			  sel_blk_id			Number;
3573 			  data_type			Varchar2(90);
3574 			  fmt_mask			Varchar2(90);
3575 			  rule				Varchar2(32767);
3576 			  chk_u_l_flag		Varchar2(3);
3577 			  Thd_grade			Varchar2(9);
3578 			  truncate_flag		Varchar2(1) := 'N';
3579 			  blk_id				Number := null;
3580 			  sql_stmt			Varchar2(2000) := null;
3581 			  batch_sql_stmnt	Varchar2(4000)  := null;
3582 			  curr_code			Varchar2(15) := null;
3583 			  v_party_in_sql		Number := 0;
3584 			  v_acct_in_sql		Number := 0;
3585 			  v_psite_in_sql		Number :=0; -- Added by spamujul for ER#8473903
3586 			  v_party_id			Number;
3587 			  v_check_level		Varchar2(10);
3588 			  curr_date			DATE := SYSDATE;
3589 			  insert_stmnt		VARCHAR2(4000);
3590 			  insert_stmnt_sum	VARCHAR2(4000);
3591 			  insert_stmnt_final	VARCHAR2(4000);
3592 			  insert_stmnt_party	VARCHAR2(4000);
3593 			  insert_stmnt_acct	VARCHAR2(4000);
3594 			--Fix bug#7329039 by mpathani
3595 			--select_clause       VARCHAR2(100);
3596 			--v_select_clause     VARCHAR2(100);
3597 			  select_clause		VARCHAR2(2000);
3598 			  v_select_clause		VARCHAR2(2000);
3599 			  Range_Low_Value    VARCHAR2(240);
3600 			  Range_High_Value   VARCHAR2(240);
3601 			  val					VARCHAR2(240) := null;
3602 			  /* variables for columns of insert statement */
3603 			  c_fmt_mask		VARCHAR2(1000);
3604 			  c_grade			VARCHAR2(1000);
3605 			  c_curr_code		VARCHAR2(1000);
3606 			  c_threshold			VARCHAR2(1000);
3607 			  c_rating			VARCHAR2(1000);
3608 			  c_color				VARCHAR2(1000);
3609 			  v_count			NUMBER;
3610 			  v_chk_count		NUMBER;
3611 			  v_batch_count		NUMBER;
3612 			-- varlables for getting CSC schema name
3613 			  v_schema_status	VARCHAR2(1);
3614 			  v_industry			VARCHAR2(1);
3615 			  v_schema_name	VARCHAR2(30);
3616 			  v_get_appl			BOOLEAN;
3617 
3618 			-- variables to build the batch sql for summation
3619 			  v_select_pos		number;
3620 			  v_select_length		number;
3621 			  v_from_pos			number;
3622 			  v_from_sum		varchar2(2000);
3623 			  v_select_sum		varchar2(2000) := 'SELECT hz.party_id, null,null,  '; -- Included 'NULL'  value for party_site_id by spamujul for  ER#8473903
3624 			  v_group_pos		number;
3625 			  v_group			varchar2(2000) := 'GROUP BY hz.party_id';
3626 			  return_status		varchar2(50);
3627 			-- variables for handling contact profile variables
3628 			  v_where_clause_no_rel VARCHAR2(1000) := 'HZ.PARTY_TYPE IN (' || '''' || 'PERSON' || '''' || ', ' || '''' ||  'ORGANIZATION' || '''' || ')' ;
3629 			  v_where_clause_rel VARCHAR2(1000) := 'HZ.PARTY_TYPE = ' || '''' ||'PARTY_RELATIONSHIP'|| '''' ;
3630 
3631 			  TABLESEGMENT_FULL  EXCEPTION;
3632 			  INDEXSEGMENT_FULL  EXCEPTION;
3633 			  SNAPSHOT_TOO_OLD   EXCEPTION;
3634 			  INTERNAL_ERROR		EXCEPTION;
3635 			  SUMMATION_ERROR	EXCEPTION;
3636 
3637 			  PRAGMA EXCEPTION_INIT(TABLESEGMENT_FULL, -1653);
3638 			  PRAGMA EXCEPTION_INIT(INDEXSEGMENT_FULL, -1654);
3639 			  PRAGMA EXCEPTION_INIT(SNAPSHOT_TOO_OLD, -1555);
3640 			  PRAGMA EXCEPTION_INIT(INTERNAL_ERROR, -600);
3641 
3642 			checks_csr  checks_cur_var;
3643 
3644 			  CURSOR block_csr IS
3645 			      SELECT block_id,
3646 						sql_stmnt,
3647 						UPPER(batch_sql_stmnt),
3648 						currency_code,
3649 						select_clause
3650 				FROM csc_prof_blocks_b a
3651 			       WHERE a.block_id = sel_blk_id;
3652 
3653 			   Cursor val_csr3 IS
3654 			     Select Range_Low_Value,
3655 					Range_High_Value
3656 			     From   csc_prof_check_ratings
3657 			     Where  check_id = chk_id
3658 			     and    check_rating_grade = thd_grade;
3659 
3660 			   CURSOR rating_crs IS
3661 			     SELECT rating_code,
3662 						check_rating_grade,
3663 						color_code,
3664 						range_low_value,
3665 						range_high_value
3666 			       FROM csc_prof_check_ratings
3667 			      WHERE check_id = chk_id;
3668 
3669 BEGIN
3670            COMMIT;
3671 	   EXECUTE IMMEDIATE 'ALTER SESSION ENABLE PARALLEL DML';
3672 	   EXECUTE IMMEDIATE 'ALTER SESSION SET SKIP_UNUSABLE_INDEXES=TRUE';
3673 
3674 	   v_get_appl :=  FND_INSTALLATION.GET_APP_INFO('CSC', v_schema_status, v_industry, v_schema_name);
3675 
3676 	   EXECUTE IMMEDIATE 'ALTER TABLE ' || v_schema_name || '.CSC_PROF_CHECK_RESULTS NOLOGGING';
3677 	   EXECUTE IMMEDIATE 'ALTER TABLE ' || v_schema_name || '.CSC_PROF_BATCH_RESULTS2_T NOLOGGING';
3678 	   EXECUTE IMMEDIATE 'ALTER TABLE ' || v_schema_name || '.CSC_PROF_BATCH_RESULTS1_T NOLOGGING';
3679 
3680 	   SELECT count(*) INTO v_chk_count FROM csc_prof_check_results;
3681 	   SELECT count(*) INTO v_batch_count FROM CSC_PROF_BATCH_RESULTS2_T;
3682 	   IF v_chk_count = 0 AND v_batch_count <> 0 THEN
3683 	      EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N2 UNUSABLE';
3684 	      EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N3 UNUSABLE';
3685 	      EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N4 UNUSABLE';
3686 	      INSERT /*+ PARALLEL (csc_prof_check_results, 12) */
3687 	      INTO csc_prof_check_results
3688 	 		 (check_results_id,
3689 			  check_id,
3690 			  party_id,
3691 			  cust_account_id,
3692 			  party_site_id, -- Added by spamujul for ER#8473903
3693 			  value,
3694 			 currency_code,
3695 			 grade,
3696 			 created_by,
3697 			 creation_date,
3698 			 last_updated_by,
3699 			 last_update_date,
3700 			 last_update_login,
3701 			 results_threshold_flag,
3702 			 rating_code,
3703 			 color_code
3704 		   )
3705 	      SELECT
3706 			check_results_id,
3707 			check_id,
3708 			party_id,
3709 			cust_account_id,
3710 			party_site_id, -- Added by spamujul for ER#8473903
3711 			value,
3712 			currency_code,
3713 			grade,
3714 			created_by,
3715 			creation_date,
3716 			last_updated_by,
3717 			last_update_date,
3718 			last_update_login,
3719 			results_threshold_flag,
3720 			rating_code,
3721 			color_code
3722 	      FROM  CSC_PROF_BATCH_RESULTS2_T;
3723 	      COMMIT;
3724 	      EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N2 REBUILD NOLOGGING';
3725 	      EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N3 REBUILD NOLOGGING';
3726 	      EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N4 REBUILD NOLOGGING';
3727 	   END IF;
3728 	   EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || v_schema_name ||'.CSC_PROF_BATCH_RESULTS2_T' ;
3729 	   IF g_dashboard_for_contact IS NULL THEN
3730 	       FND_PROFILE.GET('CSC_DASHBOARD_VIEW_FOR_CONTACT', g_dashboard_for_contact);
3731 	   END IF;
3732 	  /* R12 Employee HelpDesk Modifications */
3733 	 IF g_dashboard_for_employee ='Y' THEN
3734 	      OPEN checks_csr FOR
3735 		 SELECT check_id,
3736 				select_block_id,
3737 				check_level,
3738 				data_type,
3739 				format_mask,
3740 				check_upper_lower_flag,
3741 				threshold_grade
3742 		   FROM csc_prof_checks_b
3743 		   WHERE check_id IN (SELECT check_id FROM csc_prof_group_checks
3744 				      WHERE group_id = p_group_id)
3745 				      AND SYSDATE BETWEEN Nvl(start_date_active, Sysdate)
3746 				      AND Nvl(end_date_active, Sysdate)
3747 				      AND select_type = 'B'
3748 				      AND check_level IN ('EMPLOYEE');
3749 	 ELSIF g_dashboard_for_employee ='N' THEN
3750 			IF g_dashboard_for_contact = 'Y' THEN
3751 			    OPEN checks_csr FOR
3752 				 SELECT check_id,
3753 					     select_block_id,
3754 					     check_level,
3755 					     data_type,
3756 					     format_mask,
3757 					     check_upper_lower_flag,
3758 					     threshold_grade
3759 				  FROM csc_prof_checks_b
3760 				  WHERE check_id IN (SELECT check_id FROM csc_prof_group_checks
3761 						      WHERE group_id = p_group_id)
3762 						      AND  SYSDATE BETWEEN Nvl(start_date_active, Sysdate)
3763 						      AND Nvl(end_date_active, Sysdate)
3764 						      AND select_type = 'B'
3765 						      AND check_level IN ('PARTY', 'ACCOUNT', 'CONTACT','SITE') -- Included 'SITE' by spamujul for ER#8473903
3766 						      ;
3767 			  ELSIF g_dashboard_for_contact = 'N' THEN
3768 			      OPEN checks_csr FOR
3769 				 SELECT check_id,
3770 						select_block_id,
3771 						check_level,
3772 						data_type,
3773 						format_mask,
3774 						check_upper_lower_flag,
3775 						threshold_grade
3776 				   FROM csc_prof_checks_b
3777 				  WHERE check_id IN (SELECT check_id FROM csc_prof_group_checks
3778 						      WHERE group_id = p_group_id)
3779 						      AND SYSDATE BETWEEN Nvl(start_date_active, Sysdate)
3780 						      AND Nvl(end_date_active, Sysdate)
3781 						      AND select_type = 'B'
3782 						      AND check_level IN ('PARTY', 'ACCOUNT','SITE') -- Included 'SITE' by spamujul for ER#8473903
3783 						      ;
3784 			   END IF;
3785 	END IF;
3786 	/* End of R12 Employee HelpDesk Modifications */
3787 	   LOOP
3788 	       FETCH checks_csr
3789 	       INTO chk_id,
3790 			sel_blk_id,
3791 			v_check_level,
3792 			data_type,
3793 			fmt_mask,
3794 			chk_u_l_flag,
3795 			Thd_grade;
3796 	       EXIT WHEN checks_csr%notfound;
3797 	       OPEN block_csr;
3798 	       FETCH block_csr
3799 			INTO blk_id,
3800 			sql_stmt,
3801 			batch_sql_stmnt,
3802 			curr_code,
3803 			select_clause;
3804 	       CLOSE block_csr;
3805 	       IF batch_sql_stmnt IS NOT NULL THEN
3806 		  IF v_check_level = 'CONTACT' THEN
3807 		     IF g_dashboard_for_contact = 'Y' THEN
3808 			batch_sql_stmnt := UPPER(batch_sql_stmnt);
3809 			batch_sql_stmnt := REPLACE(batch_sql_stmnt, v_where_clause_no_rel, v_where_clause_rel);
3810 		     END IF;
3811 		  END IF;
3812 		  IF sql_stmt IS NOT NULL THEN
3813 		     v_party_in_sql :=    INSTR(lower(sql_stmt),':party_id',1);
3814 		     v_acct_in_sql  :=    INSTR(lower(sql_stmt),':cust_account_id',1);
3815 		     v_psite_in_sql :=   INSTR(lower(sql_stmt),':party_site_id',1); -- Added by spamujul for ER#8473903
3816 		  ELSE
3817 		    v_party_in_sql :=  0;
3818 		    v_acct_in_sql  :=  0;
3819 		    v_psite_in_sql := 0;   -- Added by spamujul for ER#8473903
3820 		  END IF;
3821 		  EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || v_schema_name ||'.CSC_PROF_BATCH_RESULTS1_T' ;
3822 --		  insert_stmnt := 'INSERT INTO CSC_PROF_BATCH_RESULTS1_T ' || batch_sql_stmnt; -- Commnted the following code by spamujul for ER#8473903
3823 		  insert_stmnt := 'INSERT INTO CSC_PROF_BATCH_RESULTS1_T(PARTY_ID,ACCOUNT_ID,PARTY_SITE_ID,VALUE) ' || batch_sql_stmnt;  -- Added by spamujul for ER#8473903
3824 		  EXECUTE IMMEDIATE (insert_stmnt);
3825 		  IF v_acct_in_sql <> 0 AND v_check_level = 'PARTY' THEN
3826 		     v_select_pos := NULL;
3827 		     v_select_length := NULL;
3828 		     v_from_pos := NULL;
3829 		     v_from_sum := NULL;
3830 		     v_select_sum := 'SELECT hz.party_id, null, NULL, ';   -- Added Last 'Null' for Site operation
3831 		     v_select_clause := NULL;
3832 		     v_group_pos := NULL;
3833 		     v_select_clause := rtrim(ltrim(UPPER(select_clause)));
3834 		     v_select_sum := v_select_sum || v_select_clause;
3835 		     v_select_pos := instr(upper(batch_sql_stmnt), v_select_clause);
3836 		     v_select_length := length(v_select_clause);
3837 		     v_from_pos := v_select_pos + v_select_length;
3838 		     v_from_sum := substr(batch_sql_stmnt, v_from_pos);
3839 		     v_group_pos := instr(upper(v_from_sum), 'GROUP BY HZ.PARTY_ID');
3840 		     v_from_sum := substr(v_from_sum, 1, v_group_pos -1);
3841 		     v_from_sum := v_from_sum || v_group;
3842 		     v_select_sum := v_select_sum || '  ' || v_from_sum;
3843 	    -- validate the sql statement
3844 		    csc_core_utils_pvt.validate_sql_stmnt( p_sql_stmnt => v_select_sum,
3845                                                     x_return_status => return_status);
3846 		    IF return_status = 'S' THEN
3847 		        -- insert_stmnt_sum := 'INSERT INTO CSC_PROF_BATCH_RESULTS1_T ' || v_select_sum ;  -- Commented the following code by spamujul for ER#8473903
3848 			 -- Added the following code by spamujul for ER#8473903
3849 			    insert_stmnt_sum := 'INSERT INTO CSC_PROF_BATCH_RESULTS1_T(PARTY_ID,ACCOUNT_ID,PARTY_SITE_ID,VALUE)'  || v_select_sum ;
3850 				EXECUTE IMMEDIATE (insert_stmnt_sum);
3851 	             ELSE
3852 			        RAISE SUMMATION_ERROR;
3853 				fnd_file.put_line(fnd_file.log, 'Summation SQL failed for check_id' || chk_id);
3854 		    END IF;
3855                END IF;
3856 		IF v_check_level = 'PARTY' THEN
3857 				INSERT INTO CSC_PROF_BATCH_RESULTS1_T(PARTY_ID,
3858 															     ACCOUNT_ID,
3859 															     PARTY_SITE_ID, --Included party_site_id for ER#8473903
3860 															     VALUE)
3861 		             SELECT party_id, NULL, NULL,NULL -- Included NULL for  party_site_id for ER#8473903
3862 				FROM hz_parties hz
3863 				WHERE NOT EXISTS (SELECT 1 FROM CSC_PROF_BATCH_RESULTS1_T c WHERE c.party_id = hz.party_id)
3864 				AND hz.status = 'A'
3865 				AND hz.party_type IN ('PERSON', 'ORGANIZATION');
3866 		ELSIF v_check_level = 'CONTACT' THEN
3867 			INSERT INTO CSC_PROF_BATCH_RESULTS1_T(PARTY_ID,
3868 														   ACCOUNT_ID,
3869 														   PARTY_SITE_ID, --Included party_site_id for ER#8473903
3870 														   VALUE)
3871 			SELECT party_id, NULL, NULL ,NULL -- Included NULL for  party_site_id for ER#8473903
3872 			FROM hz_parties hz
3873 			WHERE NOT EXISTS (SELECT 1 FROM CSC_PROF_BATCH_RESULTS1_T c WHERE c.party_id = hz.party_id)
3874 				AND hz.status = 'A'
3875 		                AND hz.party_type = 'PARTY_RELATIONSHIP';
3876 		ELSIF v_check_level = 'ACCOUNT' THEN
3877 			INSERT INTO CSC_PROF_BATCH_RESULTS1_T(PARTY_ID,
3878 														     ACCOUNT_ID,
3879 														     PARTY_SITE_ID, --Included party_site_id for ER#8473903
3880 														     VALUE)
3881 		             SELECT party_id, cust_account_id, NULL ,NULL -- Included NULL for  party_site_id for ER#8473903
3882 				FROM hz_cust_accounts hz
3883 		              WHERE NOT EXISTS (SELECT 1 FROM CSC_PROF_BATCH_RESULTS1_T c WHERE c.account_id = hz.cust_account_id)
3884 				AND hz.status = 'A';
3885 		ELSIF v_check_level = 'EMPLOYEE' THEN
3886 			     INSERT INTO CSC_PROF_BATCH_RESULTS1_T(PARTY_ID,ACCOUNT_ID,PARTY_SITE_ID,VALUE) --Included party_site_id for ER#8473903
3887 			     SELECT person_id, NULL, NULL,NULL -- Included NULL for  party_site_id for ER#8473903
3888 		               FROM per_workforce_current_x hz
3889 				WHERE NOT EXISTS (SELECT 1 FROM CSC_PROF_BATCH_RESULTS1_T c WHERE c.party_id = hz.person_id) ;
3890 		-- Begin fix by spamujul for  ER#8473903
3891 		ELSIF v_check_level = 'SITE' THEN
3892 			   INSERT INTO CSC_PROF_BATCH_RESULTS1_T(PARTY_ID,
3893 														     ACCOUNT_ID,
3894 														     PARTY_SITE_ID, --Included party_site_id for ER#8473903
3895 														     VALUE)
3896 		             SELECT hz.party_id, NULL, hz.party_site_id ,NULL -- Included NULL for  party_site_id for ER#8473903
3897 				FROM hz_party_sites hz
3898 				WHERE NOT EXISTS (SELECT 1 FROM CSC_PROF_BATCH_RESULTS1_T c WHERE c.party_id = hz.party_id and c.party_site_id = hz.party_site_id)
3899 				AND hz.status = 'A'
3900 				AND nvl(hz.created_by_module,'XXX') <> 'SR_ONETIME';
3901 		-- End fix by spamujul for  ER#8473903
3902 		        END IF;
3903           OPEN val_csr3;
3904           FETCH val_csr3
3905 		INTO Range_Low_Value,
3906 		Range_High_Value;
3907           IF val_csr3%NOTFOUND THEN
3908              Range_Low_Value := NULL;
3909              Range_High_Value := NULL;
3910           END IF;
3911           CLOSE val_csr3;
3912 
3913 	  SELECT COUNT(*) INTO v_count FROM csc_prof_check_ratings
3914           WHERE check_id = chk_id;
3915           rating_tbl.delete;
3916           IF v_count > 0 THEN
3917              OPEN rating_crs;
3918              FOR a in 1..v_count LOOP
3919                 FETCH rating_crs INTO rating_tbl(a);
3920              END LOOP;
3921              CLOSE rating_crs;
3922           END IF;
3923           c_fmt_mask := 'CSC_Profile_Engine_PKG.format_mask(' ||
3924                         '''' || curr_code || '''' || ',' ||
3925                         '''' || data_type || '''' || ','||
3926 	                'value, '||
3927 		        ''''|| fmt_mask || '''' || ')' ;
3928 
3929           c_grade := 'CSC_Profile_Engine_PKG.rating_color(' ||
3930                      chk_id || ', ' ||
3931                      'party_id, account_id,party_site_id, value, ' || -- included by spamujul for  ER#8473903
3932                      '''' || data_type || '''' || ', ' ||
3933                      '''' || 'GRADE' || '''' ||', ' ||
3934                      '''' || v_count || '''' || ')'    ;
3935           c_curr_code := '''' || curr_code || '''';
3936           c_threshold := 'CSC_Profile_Engine_PKG.calc_threshold(' ||
3937                          'value, '||
3938 	                 '''' || Range_Low_Value || '''' || ', '||
3939 	                 '''' || Range_High_Value || '''' || ', '||
3940 		         '''' || data_type || '''' || ', ' ||
3941 		         '''' || chk_u_l_flag || '''' || ')'   ;
3942 
3943           c_rating := 'CSC_Profile_Engine_PKG.rating_color(' ||
3944                       chk_id || ', ' ||
3945                       'party_id, account_id,party_site_id, value, ' || -- included by spamujul for  ER#8473903
3946                       '''' || data_type || '''' || ', ' ||
3947                       '''' || 'RATING' || '''' ||', ' ||
3948 	              '''' || v_count || '''' || ')'    ;
3949 
3950           c_color := 'CSC_Profile_Engine_PKG.rating_color(' ||
3951                       chk_id || ', ' ||
3952                      'party_id, account_id,party_site_id, value, ' || -- included by spamujul for  ER#8473903
3953                      '''' || data_type || '''' || ', ' ||
3954                      '''' || 'COLOR' || '''' ||', ' ||
3955                      '''' || v_count || '''' || ')'    ;
3956 
3957           IF v_check_level = 'ACCOUNT' THEN
3958              insert_stmnt_final := 'INSERT /*+ PARALLEL(CSC_PROF_BATCH_RESULTS2_T, 12) */ INTO CSC_PROF_BATCH_RESULTS2_T ' ||
3959                   --          '(check_results_id, check_id, party_id, cust_account_id,value, currency_code, grade, '||
3960 		  -- added party_site_id in the below line for ER#8473903
3961 			  '(check_results_id, check_id, party_id, cust_account_id,party_site_id, value, currency_code, grade, '||
3962 			     ' created_by, creation_date, last_updated_by, last_update_date, last_update_login, '||
3963 			     ' results_threshold_flag, rating_code, color_code)' ||
3964                              ' SELECT csc_prof_check_results_s.nextval, '
3965 			--      || chk_id || ', party_id, account_id, '
3966 			 -- added party_site_id in the below line for ER#8473903
3967 			      || chk_id || ', party_id, account_id,party_site_id, '
3968 			      || c_fmt_mask ||', '
3969 			      || c_curr_code || ', '
3970 			      || c_grade
3971 			      || ', FND_GLOBAL.USER_ID, Sysdate, FND_GLOBAL.USER_ID, Sysdate, FND_GLOBAL.CONC_LOGIN_ID, '
3972 			      || c_threshold ||', '
3973 			      || c_rating || ', '
3974 			      || c_color
3975 			      ||' FROM CSC_PROF_BATCH_RESULTS1_T where nvl(account_id, -999999) <> -999999 and party_site_id IS NULL'; -- Added 'AND PARTY_SITE_ID IS NULL' for ER#8473903
3976 	-- Begin fix by spamujul for ER# 8473903
3977 	ELSIF  v_check_level = 'SITE' THEN
3978 		insert_stmnt_final := 'INSERT /*+ PARALLEL(CSC_PROF_BATCH_RESULTS2_T, 12) */ INTO CSC_PROF_BATCH_RESULTS2_T ' ||
3979                   --          '(check_results_id, check_id, party_id, cust_account_id,value, currency_code, grade, '||
3980 		  -- added party_site_id in the below line for ER#8473903
3981 			  '(check_results_id, check_id, party_id, cust_account_id,party_site_id, value, currency_code, grade, '||
3982 			     ' created_by, creation_date, last_updated_by, last_update_date, last_update_login, '||
3983 			     ' results_threshold_flag, rating_code, color_code)' ||
3984                              ' SELECT csc_prof_check_results_s.nextval, '
3985 			--      || chk_id || ', party_id, account_id, '
3986 			 -- added party_site_id in the below line for ER#8473903
3987 			      || chk_id || ', party_id, account_id,party_site_id, '
3988 			      || c_fmt_mask ||', '
3989 			      || c_curr_code || ', '
3990 			      || c_grade
3991 			      || ', FND_GLOBAL.USER_ID, Sysdate, FND_GLOBAL.USER_ID, Sysdate, FND_GLOBAL.CONC_LOGIN_ID, '
3992 			      || c_threshold ||', '
3993 			      || c_rating || ', '
3994 			      || c_color
3995 			      ||' FROM CSC_PROF_BATCH_RESULTS1_T where nvl(party_site_id, -999999) <> -999999 and account_id IS NULL';
3996 -- End fix by spamujul for ER#8473903
3997           ELSE
3998              insert_stmnt_final := 'INSERT /*+ PARALLEL(CSC_PROF_BATCH_RESULTS2_T, 12) */ INTO CSC_PROF_BATCH_RESULTS2_T ' ||
3999                           --   '(check_results_id, check_id, party_id, cust_account_id, value, currency_code, grade, '||
4000 			  -- added party_site_id in the below line for ER#8473903
4001 			     '(check_results_id, check_id, party_id, cust_account_id,party_site_id, value, currency_code, grade, '||
4002 			     ' created_by, creation_date, last_updated_by, last_update_date, last_update_login, '||
4003 			     ' results_threshold_flag, rating_code, color_code)' ||
4004                              ' SELECT csc_prof_check_results_s.nextval, '
4005      			    --  || chk_id || ', party_id, account_id, '
4006 			      -- added party_site_id in the below line for ER#8473903
4007 			      || chk_id || ', party_id, account_id,party_site_id, '
4008 			      || c_fmt_mask ||', '
4009 			      || c_curr_code || ', '
4010 			      || c_grade
4011 			      || ', FND_GLOBAL.USER_ID, Sysdate, FND_GLOBAL.USER_ID, Sysdate, FND_GLOBAL.CONC_LOGIN_ID, '
4012 			      || c_threshold ||', '
4013 			      || c_rating || ', '
4014 			      || c_color
4015 			      ||' FROM CSC_PROF_BATCH_RESULTS1_T where account_id IS NULL and party_site_id  IS NULL'; -- Added 'AND PARTY_SITE_ID IS NULL' for ER#8473903
4016           END IF;
4017 	  EXECUTE IMMEDIATE (insert_stmnt_final);
4018           COMMIT;
4019       ELSE
4020          /* set the global variable to Y to indicate that profile checks without batch sql exist */
4021          g_check_no_batch := 'Y';
4022       END IF ; /* batch_sql_stmnt IS NOT NULL */
4023    END LOOP;
4024    CLOSE checks_csr;
4025 
4026    INSERT /*+ PARALLEL (CSC_PROF_BATCH_RESULTS2_T, 12) */
4027    INTO CSC_PROF_BATCH_RESULTS2_T
4028 	     (check_results_id,
4029 	      check_id,
4030 	      party_id,
4031 	      cust_account_id,
4032 	      party_site_id, -- Added by spamujul for ER#8473903
4033 	      value,
4034 	      currency_code,
4035 	      grade,
4036 	      created_by,
4037 	      creation_date,
4038 	      last_updated_by,
4039 	      last_update_date,
4040 	      last_update_login,
4041 	      results_threshold_flag,
4042 	      rating_code,
4043 	      color_code
4044 	      )
4045    SELECT
4046 	     check_results_id,
4047 	     check_id,
4048 	     party_id,
4049 	     cust_account_id,
4050 	     party_site_id, -- Added by spamujul for ER#8473903
4051 	      value,
4052 	      currency_code,
4053 	      grade,
4054 	      created_by,
4055 	      creation_date,
4056 	      last_updated_by,
4057 	      last_update_date,
4058 	      last_update_login,
4059 	      results_threshold_flag,
4060 	      rating_code,
4061 	      color_code
4062    FROM  csc_prof_check_results
4063    WHERE check_id IN (SELECT check_id FROM csc_prof_group_checks
4064                       MINUS
4065                       SELECT check_id FROM csc_prof_group_checks a
4066                        WHERE group_id = p_group_id
4067                          AND EXISTS (SELECT 1 FROM csc_prof_checks_b b
4068                                       WHERE a.check_id = b.check_id AND b.select_type = 'B'));
4069    COMMIT;
4070    EXECUTE IMMEDIATE 'TRUNCATE TABLE '|| v_schema_name ||'.csc_prof_check_results';
4071 
4072    EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N2 UNUSABLE';
4073    EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N3 UNUSABLE';
4074    EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N4 UNUSABLE';
4075 
4076    INSERT /*+ PARALLEL (csc_prof_check_results, 12) */
4077    INTO csc_prof_check_results
4078 	     (check_results_id,
4079 	      check_id,
4080 	      party_id,
4081 	      cust_account_id,
4082 	      party_site_id, -- Added by spamujul for ER#8473903
4083 	      value,
4084 	      currency_code,
4085 	      grade,
4086 	      created_by,
4087 	      creation_date,
4088 	      last_updated_by,
4089 	      last_update_date,
4090 	      last_update_login,
4091 	      results_threshold_flag,
4092 	      rating_code,
4093 	      color_code
4094 	      )
4095    SELECT
4096      check_results_id,
4097      check_id,
4098      party_id,
4099      cust_account_id,
4100      party_site_id, -- Added by spamujul for ER#8473903
4101      value,
4102      currency_code,
4103      grade,
4104      created_by,
4105      creation_date,
4106      last_updated_by,
4107      last_update_date,
4108      last_update_login,
4109      results_threshold_flag,
4110      rating_code, color_code
4111    FROM  CSC_PROF_BATCH_RESULTS2_T;
4112 
4113    COMMIT;
4114 
4115 
4116    EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N2 REBUILD NOLOGGING';
4117    EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N3 REBUILD NOLOGGING';
4118    EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N4 REBUILD NOLOGGING';
4119 
4120    EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || v_schema_name ||'.CSC_PROF_BATCH_RESULTS2_T' ;
4121    EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || v_schema_name ||'.CSC_PROF_BATCH_RESULTS1_T' ;
4122 
4123    EXECUTE IMMEDIATE 'ALTER SESSION DISABLE PARALLEL DML';
4124    EXECUTE IMMEDIATE 'ALTER TABLE ' || v_schema_name || '.CSC_PROF_CHECK_RESULTS LOGGING';
4125 
4126 EXCEPTION
4127         WHEN Tablesegment_full then
4128              CSC_Profile_Engine_PKG.Handle_Exception;
4129              g_error := sqlcode || ' ' || sqlerrm;
4130              set_context('Evaluate_Checks4_Var',
4131                          'check_id => ' || chk_id,
4132                          'Error => ' || g_error);
4133              App_Exception.raise_exception;
4134 
4135         WHEN Indexsegment_full then
4136              CSC_Profile_Engine_PKG.Handle_Exception;
4137              g_error := sqlcode || ' ' || sqlerrm;
4138              set_context('Evaluate_Checks4_Var',
4139                          'check_id => ' || chk_id,
4140                          'Error => ' || g_error);
4141              App_Exception.raise_exception;
4142 
4143         WHEN SNAPSHOT_TOO_OLD THEN
4144              CSC_Profile_Engine_PKG.Handle_Exception;
4145              g_error := sqlcode || ' ' || sqlerrm;
4146              set_context('Evaluate_Checks4_Var',
4147                          'check_id => ' || chk_id,
4148                          'Error => ' || g_error);
4149              App_Exception.raise_exception;
4150 
4151         WHEN INTERNAL_ERROR THEN
4152              CSC_Profile_Engine_PKG.Handle_Exception;
4153              g_error := sqlcode || ' ' || sqlerrm;
4154              set_context('Evaluate_Checks4_Var',
4155                          'check_id => ' || chk_id,
4156                          'Error => ' || g_error);
4157              App_Exception.raise_exception;
4158 
4159         WHEN SUMMATION_ERROR THEN
4160              CSC_Profile_Engine_PKG.Handle_Exception;
4161              set_context('Evaluate_Checks4_Var',
4162                          'Summation SQL failed for chk_id => '||to_char(chk_id));
4163              RAISE;
4164 
4165 	WHEN OTHERS THEN
4166              CSC_Profile_Engine_PKG.Handle_Exception;
4167 	     g_error := sqlcode || ' ' || sqlerrm;
4168              set_context('Evaluate_Checks4_Var',
4169                          'check_id => ' || chk_id,
4170                          'Error => ' || g_error);
4171              RAISE;
4172 
4173 END Evaluate_Checks4_Var;
4174 
4175 --  This procedure evaluates the checks
4176 --  for which the batch sql statement is NULL and group_id is not null
4177 
4178 PROCEDURE Evaluate_Checks4_No_Batch
4179 					  ( errbuf			OUT	NOCOPY VARCHAR2,
4180 					    retcode		OUT	NOCOPY NUMBER ,
4181 					    p_group_id	in		Number
4182 					    ) IS
4183 
4184 			  chk_id				Number;
4185 			  chk_name			Varchar2(240);
4186 			  cparty_id			Number;
4187 			  ccust_acct_id		Number;
4188 			  ccust_psite_id		Number;  -- added by spamujul for ER#8473903
4189 			  sel_type			Varchar2(3);
4190 			  sel_blk_id			Number;
4191 			  data_type			Varchar2(90);
4192 			  fmt_mask			Varchar2(90);
4193 			  rule				Varchar2(32767);
4194 			  Chk_u_l_flag		Varchar2(3);
4195 			  Thd_grade			Varchar2(9);
4196 			  truncate_flag		Varchar2(1)		 := 'N';
4197 			  acct_flag			Varchar2(1);
4198 			  blk_id				Number 		:= null;
4199 			  blk_name			Varchar2(240)	:= null;
4200 			  sql_stmt			Varchar2(2000)	:= null;
4201 			  curr_code			Varchar2(15)		:= null;
4202 			  v_party_in_sql		Number			:= 0;
4203 			  v_acct_in_sql		Number			:= 0;
4204 			  v_psite_in_sql		Number			:= 0;		 -- added by spamujul for ER#8473903
4205 			  v_check_level		Varchar2(10);
4206 			  l_for_insert			varchar2(1)		:= 'Y';
4207 			  l_for_party			varchar2(1)		:= 'Y';
4208 			  l_for_psite			Varchar2(1)		:= 'N';	-- added by spamujul for ER#8473903
4209 			  l_up_total			Number := 0;
4210 			  l_ip_total			Number := 0;
4211 			  l_ua_total			Number := 0;
4212 			  l_ia_total			Number := 0;
4213 			  l_us_total			Number := 0;  -- added by spamujul for ER#8473903
4214 			  l_is_total			Number := 0;  -- added by spamujul for ER#8473903
4215 			  v_party_id			Number;
4216 
4217 			  CURSOR checks_csr IS
4218 					 SELECT check_id,
4219 							  select_type,
4220 							  select_block_id,
4221 							 data_type,
4222 							 format_mask,
4223 							 check_upper_lower_flag,
4224 							threshold_grade,
4225 							check_level
4226 			    FROM csc_prof_checks_b a
4227 			   WHERE check_id IN (SELECT check_id
4228 									FROM csc_prof_group_checks
4229 									WHERE group_id = p_group_id)
4230 									AND select_type = 'B'
4231 									AND check_level IN ('PARTY','ACCOUNT','SITE') -- Included the 'SITE' by spamujul for ER#8473903
4232 			     AND EXISTS (SELECT null
4233 					   FROM csc_prof_blocks_b b
4234 					  WHERE a.select_block_id = b.block_id
4235 					    AND b.batch_sql_stmnt IS NULL)
4236 			     AND SYSDATE BETWEEN Nvl(start_date_active, SYSDATE)
4237 								AND Nvl(end_date_active, SYSDATE);
4238 
4239 			  CURSOR cparty_csr IS
4240 			     SELECT party_id
4241 			     FROM hz_parties
4242 			    WHERE status = 'A'
4243 			    AND  PARTY_TYPE IN ('PERSON','ORGANIZATION');
4244 			    -- Person, ORG added for 1850508
4245 
4246 			  CURSOR caccount_csr IS
4247 			     SELECT party_id, cust_account_id
4248 			     FROM hz_cust_accounts
4249 			     WHERE  party_id=v_party_id
4250 			     AND  status = 'A' ;
4251 			    -- Begin fix by spamujul for NCR ER#8473903
4252 				CURSOR cpsite_csr IS
4253 				      SELECT party_id, party_site_id
4254 				      FROM hz_party_sites
4255 				      WHERE  party_id=v_party_id
4256 				      AND  status = 'A'
4257 				      AND NVL(created_by_module,'XXX') <> 'SR_ONETIME';
4258 			  -- End fix by spamujul for NCR ER#8473903
4259 
4260 			  CURSOR block_csr IS
4261 			      SELECT block_id, sql_stmnt, currency_code
4262 			      FROM csc_prof_blocks_b a
4263 			      WHERE a.block_id = sel_blk_id;
4264 
4265 		cid 			number;
4266 		val			VARCHAR2(240) := null;
4267 
4268 BEGIN
4269 			/* R12 Employee HelpDesk Modifications */
4270 			/* The processing to be done for either employee level(employee) or customer level(party,account,contact) */
4271 			IF g_dashboard_for_employee = 'N' THEN
4272 				   l_ip_total := 0;
4273 				   l_up_total := 0;
4274 				   l_ia_total := 0;
4275 				   l_ua_total := 0;
4276 				   l_us_total  := 0;  -- added by spamujul for ER#8473903
4277 				   l_is_total := 0;	 -- added by spamujul for ER#8473903
4278 				   OPEN checks_csr;
4279 					 LOOP
4280 						FETCH checks_csr
4281 						INTO chk_id,
4282 							 sel_type,
4283 							 sel_blk_id,
4284 							 data_type,
4285 							 fmt_mask,
4286 							 chk_u_l_flag,
4287 							 Thd_grade,
4288 							 v_check_level;
4289 						EXIT WHEN checks_csr%notfound;
4290 						Open block_csr;
4291 							Fetch block_csr INTO
4292 								   blk_id,
4293 								   sql_stmt,
4294 								   curr_code;
4295 						Close block_csr;
4296 						IF sql_stmt IS NOT NULL Then
4297 							 v_party_in_sql	:= INSTR(lower(sql_stmt),':party_id',1);
4298 							 v_acct_in_sql	:= INSTR(lower(sql_stmt),':cust_account_id',1);
4299 							 v_psite_in_sql	:= INSTR(lower(sql_stmt),':party_site_id',1); -- added by spamujul for ER#8473903
4300 						Else
4301 							 v_party_in_sql		:=	0;
4302 							 v_acct_in_sql		:=	0;
4303 							 v_psite_in_sql		:=	0; -- added by spamujul for ER#8473903
4304 						End if;
4305 				Begin
4306 						cid := dbms_sql.open_cursor;
4307 						dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
4308 						dbms_sql.define_column(cid,1,val,240);
4309 						OPEN cparty_csr;
4310 							LOOP
4311 								FETCH cparty_csr
4312 								INTO cparty_id;
4313 								EXIT WHEN cparty_csr%notfound;
4314 								If v_check_level='PARTY' Then
4315 										Evaluate_One_Check(truncate_flag,
4316 															     chk_id,
4317 															     cparty_id,
4318 															     null,
4319 															     NULL,  -- added by spamujul for ER#8473903
4320 															     v_check_level,
4321 															     sel_type,
4322 															     sel_blk_id,
4323 															     data_type,
4324 															     fmt_mask,
4325 															     chk_u_l_flag,
4326 															     Thd_grade,
4327 															     rule,
4328 															     blk_id,
4329 															     sql_stmt,
4330 															     curr_code,
4331 															     l_up_total,
4332 															     l_ip_total,
4333 															     l_ua_total,
4334 															     l_ia_total ,
4335 															     l_us_total,  -- added by spamujul for ER#8473903
4336 															     l_is_total ,  -- added by spamujul for ER#8473903
4337 															     cid);
4338 								End if;
4339 								/* added this condition for Bug 1937730*/
4340 								v_party_id:= cparty_id;
4341 								IF v_check_level = 'ACCOUNT' Then
4342 									If (v_acct_in_sql = 0)  Then
4343 										 NULL;
4344 									Else
4345 										OPEN caccount_csr;
4346 											LOOP
4347 												FETCH caccount_csr
4348 												      INTO cparty_id,
4349 														ccust_acct_id;
4350 												EXIT WHEN caccount_csr%notfound;
4351 												 Evaluate_One_Check(truncate_flag,
4352 																	chk_id,
4353 																	cparty_id,
4354 																	ccust_acct_id,
4355 																	NULL,  -- added by spamujul for ER#8473903
4356 																	v_check_level,
4357 																	sel_type,
4358 																	sel_blk_id,
4359 																	data_type,
4360 																	fmt_mask,
4361 																	chk_u_l_flag,
4362 																	Thd_grade,
4363 																	rule,
4364 																	blk_id,
4365 																	sql_stmt,
4366 																	curr_code,
4367 																	l_up_total,
4368 																	l_ip_total,
4369 																	l_ua_total
4370 																	, l_ia_total ,
4371 																	l_us_total,  -- added by spamujul for ER#8473903
4372 																	l_is_total,  -- added by spamujul for ER#8473903
4373 																	cid
4374 																	);
4375 											 END LOOP;
4376 											CLOSE caccount_csr;
4377 									End if;  -- added for 1850508
4378 								END IF;
4379 								-- Begin fix by spamujul for ER#8473903
4380 								IF v_check_level = 'SITE' THEN
4381 										IF (v_psite_in_sql = 0)  THEN
4382 											 NULL;
4383 										ELSE
4384 											OPEN cpsite_csr ;
4385 												LOOP
4386 													FETCH cpsite_csr
4387 													    INTO cparty_id,
4388 														       ccust_psite_id;
4389 													    EXIT WHEN cpsite_csr%notfound;
4390 													    Evaluate_One_Check(truncate_flag,
4391 																		chk_id,
4392 																		cparty_id,
4393 																		NULL,
4394 																		ccust_psite_id,
4395 																		v_check_level,
4396 																		sel_type,
4397 																		sel_blk_id,
4398 																		data_type,
4399 																		fmt_mask,
4400 																		chk_u_l_flag,
4401 																		Thd_grade,
4402 																		rule,
4403 																		blk_id,
4404 																		sql_stmt,
4405 																		curr_code,
4406 																		l_up_total,
4407 																		l_ip_total,
4408 																		l_ua_total
4409 																		, l_ia_total ,
4410 																		l_us_total,
4411 																		l_is_total,
4412 																		cid
4413 																		);
4414 												END LOOP;
4415 											CLOSE cpsite_csr;
4416 										END IF;
4417 								END IF;
4418 								-- End fix by spamujul for ER#8473903
4419 						END LOOP;
4420 					CLOSE cparty_csr;
4421 					 IF (dbms_sql.is_open(cid)) THEN
4422 					    dbms_sql.close_cursor(cid);
4423 					 end if;
4424 				Exception
4425 						 When others then
4426 								IF (dbms_sql.is_open(cid)) THEN
4427 									dbms_sql.close_cursor(cid);
4428 							     end if;
4429 							     set_context('Evaluate_Checks4_No_Batch',
4430 								'chk_id=>'||to_char(chk_id),
4431 								'party_id=>'||to_char(cparty_id),
4432 								'account_id=>'||to_char(ccust_acct_id)
4433 								,'party_site_id=>'||to_char(ccust_psite_id) -- added by spamujul for ER#8473903
4434 								);
4435 								g_error := sqlcode || ' ' || sqlerrm;
4436 								set_context(NULL, g_error);
4437 				End;
4438 			END LOOP;
4439 		CLOSE checks_csr;
4440 	   -- check if there are still records to be inserted
4441 		   IF l_ip_total <> 0 THEN
4442 			l_for_insert	:= 'Y';
4443 			l_for_party	:= 'Y';
4444 			l_for_psite	:= 'N';-- added by spamujul for ER#8473903
4445 			Insert_Update_Check_Results(l_ip_total,
4446 								       l_for_insert,
4447 								       l_for_party
4448 								       ,l_for_psite  -- added by spamujul for ER#8473903
4449 								       );
4450 			l_ip_total :=0;
4451 		   END IF;
4452 		   -- check if there are still records to be updated
4453 		   IF l_up_total <> 0 THEN
4454 			l_for_insert	:= 'N';
4455 			l_for_party	:= 'Y';
4456 			l_for_psite	:= 'N';-- added by spamujul for ER#8473903
4457 			Insert_Update_Check_Results (l_up_total,
4458 									  l_for_insert,
4459 									  l_for_party
4460 									 ,l_for_psite -- added by spamujul for ER#8473903
4461 									  );
4462 			l_up_total :=0;
4463 		   END IF;
4464 		   -- check if there are still records to be inserted
4465 	   IF l_ia_total <> 0 THEN
4466 		l_for_insert	:= 'Y';
4467 		l_for_party	:= 'N';
4468 		l_for_psite	:= 'N';-- added by spamujul for ER#8473903
4469 		Insert_Update_Check_Results(l_ia_total,
4470 								  l_for_insert,
4471 								  l_for_party
4472 								 ,l_for_psite -- added by spamujul for ER#8473903
4473 								  );
4474 		l_ia_total :=0;
4475 	   END IF;
4476 	   -- check if there are still records to be updated
4477 	   IF l_ua_total <> 0 THEN
4478 		l_for_insert	:= 'N';
4479 		l_for_party	:= 'N';
4480 		l_for_psite	:= 'N';-- added by spamujul for ER#8473903
4481 		Insert_Update_Check_Results(l_ua_total,
4482 								 l_for_insert,
4483 								 l_for_party
4484 								,l_for_psite -- added by spamujul for ER#8473903
4485 								 );
4486 		l_ua_total :=0;
4487 	   END IF;
4488 	 -- Begin fix by spamujul for ER#8473903
4489 	 IF l_is_total <> 0 THEN
4490 			l_for_insert	:= 'Y';
4491 			l_for_party	:= 'N';
4492 			l_for_psite	:= 'Y';
4493 			Insert_Update_Check_Results(l_is_total,
4494 										l_for_insert,
4495 										l_for_party
4496 										,l_for_psite -- added by spamujul for ER#8473903
4497 										);
4498 			l_is_total :=0;
4499 	   END IF;
4500 	   IF l_us_total <> 0 THEN
4501 		l_for_insert	:= 'N';
4502 		l_for_party	:= 'N';
4503 		l_for_psite	:= 'N'; -- added by spamujul for ER#8473903
4504 		Insert_Update_Check_Results(l_us_total,
4505 								 l_for_insert,
4506 								 l_for_party
4507 								,l_for_psite -- added by spamujul for ER#8473903
4508 								 );
4509 		l_us_total :=0;
4510 	   END IF;
4511 	 -- End fix by spamujul ER#8473903
4512 	   IF g_dashboard_for_contact IS NULL THEN
4513 	      FND_PROFILE.GET('CSC_DASHBOARD_VIEW_FOR_CONTACT',g_dashboard_for_contact);
4514 	   END IF;
4515 	   IF g_dashboard_for_contact = 'Y' THEN
4516 		       l_ip_total := 0;
4517 		       l_up_total := 0;
4518 		       l_ia_total := 0;
4519 		       l_ua_total := 0;
4520 		       l_us_total :=0; -- added by spamujul for ER#8473903
4521 		       l_is_total := 0; -- added by spamujul for ER#8473903
4522 			Evaluate_blocks_Rel(p_up_total	=>	 l_up_total,
4523 							   p_ip_total		=>	l_ip_total,
4524 							   p_ua_total		=>	l_ua_total,
4525 							   p_ia_total		=>	l_ia_total,
4526 							   p_us_total		=>	l_us_total, -- added by spamujul for ER#8473903
4527 							   p_is_total		=>	l_is_total, -- added by spamujul for ER#8473903
4528 							   p_group_id	=>	p_group_id,
4529 							   p_no_batch_sql => 'Y' );
4530 			Evaluate_checks_Rel(errbuf => errbuf,
4531 						 retcode => retcode,
4532 						p_group_id => p_group_id,
4533 						p_no_batch_sql => 'Y'
4534 						);
4535 	END IF;
4536 	COMMIT;
4537    -- Return 0 for successful completion, 1 for warnings, 2 for error
4538 	 IF (error_flag) THEN
4539 		errbuf := Sqlerrm;
4540 		retcode := 2;
4541 	ELSIF (warning_msg <> '') THEN
4542 		errbuf := warning_msg;
4543 		retcode := 1;
4544 	ELSE
4545 		errbuf := '';
4546 		retcode := 0;
4547 	END IF;
4548   ELSIF g_dashboard_for_employee = 'Y' THEN
4549 	       l_ip_total := 0;
4550 	       l_up_total := 0;
4551 	       l_ia_total := 0;
4552 	       l_ua_total := 0;
4553 	       l_us_total :=0; -- added by spamujul for ER#8473903
4554 	       l_is_total := 0; -- added by spamujul for ER#8473903
4555 	       Evaluate_blocks_Emp(p_up_total => l_up_total,
4556 							   p_ip_total => l_ip_total,
4557 							   p_ua_total => l_ua_total,
4558 							   p_ia_total => l_ia_total,
4559 							   p_us_total => l_us_total, -- added by spamujul for ER#8473903
4560 							   p_is_total => l_is_total, -- added by spamujul for ER#8473903
4561 							   p_group_id => p_group_id,
4562 							   p_no_batch_sql => 'Y' );
4563 		 Evaluate_checks_Emp(errbuf => errbuf,
4564 							   retcode => retcode,
4565 							   p_group_id => p_group_id,
4566 							   p_no_batch_sql => 'Y');
4567    END IF;
4568    COMMIT;
4569    -- Return 0 for successful completion, 1 for warnings, 2 for error
4570    IF (error_flag) THEN
4571 		errbuf := Sqlerrm;
4572 		retcode := 2;
4573    ELSIF (warning_msg <> '') THEN
4574 		errbuf := warning_msg;
4575 		retcode := 1;
4576    ELSE
4577 		errbuf := '';
4578 		retcode := 0;
4579    END IF;
4580    IF (debug) THEN
4581 	fnd_file.close;
4582    END IF;
4583    EXCEPTION
4584       WHEN OTHERS THEN
4585          ROLLBACK;
4586          IF (checks_csr%isopen) THEN
4587 	    CLOSE checks_csr;
4588 	 END IF;
4589 	 IF (cparty_csr%isopen) THEN
4590 	    CLOSE cparty_csr;
4591 	 END IF;
4592 	 IF (caccount_csr%isopen) THEN
4593 	    CLOSE caccount_csr;
4594 	 END IF;
4595 	 -- Begin fix by spamujul for  ER#8473903
4596 	  IF (cpsite_csr%isopen) THEN
4597 	    CLOSE cpsite_csr;
4598 	 END IF;
4599 	 -- End fix by spamujul for  ER#8473903
4600 	 IF (debug) THEN
4601 	    fnd_file.close;
4602 	 END IF;
4603 
4604          -- Retrieve error message into errbuf
4605          errbuf := Sqlerrm;
4606 
4607       	 -- Return 2 for error
4608          retcode := 2;
4609 
4610 	 g_error := sqlcode || ' ' || sqlerrm;
4611 	 fnd_file.put_line(fnd_file.log , g_error);
4612 
4613 END Evaluate_Checks4_No_Batch;
4614 --
4615 -- Evaluate_Checks4_Rule
4616 --   if Party_id is null, Account_id is null and Group_id is not null
4617 --   Loop through Checks in this group and evaluate the results
4618 --   for all Parties and Accounts for Profile check type Rule ('T')
4619 --
4620 PROCEDURE Evaluate_Checks4_Rule  ( errbuf	OUT	NOCOPY VARCHAR2,
4621 									    retcode	OUT	NOCOPY NUMBER ,
4622 									    p_group_id  in      Number
4623 									    ) IS
4624 
4625 	  chk_id				Number;
4626 	  chk_name			Varchar2(240);
4627 	  cparty_id			Number;
4628 	  ccust_acct_id		Number;
4629 	  cpsite_id			Number;   -- added by spamujul for ER#8473903
4630 	  sel_type			Varchar2(3);
4631 	  sel_blk_id			Number;
4632 	  data_type			Varchar2(90);
4633 	  fmt_mask			Varchar2(90);
4634 	  rule				Varchar2(32767);
4635 	  Chk_u_l_flag		Varchar2(3);
4636 	  Thd_grade			Varchar2(9);
4637 	  truncate_flag		Varchar2(1)		:= 'N';
4638 	  acct_flag			Varchar2(1);
4639 	  blk_id				Number 		:= null;
4640 	  blk_name			Varchar2(240)	:= null;
4641 	  sql_stmt			Varchar2(2000)	:= null;
4642 	  curr_code			Varchar2(15)		:= null;
4643 	  v_party_in_sql		Number		:= 0;
4644 	  v_acct_in_sql		Number		:= 0;
4645 	  v_psite_in_sql		Number		:= 0;  -- added by spamujul for ER#8473903
4646 	  v_check_level		Varchar2(10);
4647 	  l_for_insert			varchar2(1)	:= 'Y';
4648 	  l_for_party			varchar2(1)	:= 'Y';
4649 	  l_for_psite			Varchar2(1)	:= 'N'; -- added by spamujul for ER#8473903
4650 	  l_up_total			Number		:= 0;
4651 	  l_ip_total			Number		:= 0;
4652 	  l_ua_total			Number		:= 0;
4653 	  l_ia_total			Number		:= 0;
4654 	  l_us_total			Number		:= 0;  -- added by spamujul for ER#8473903
4655 	  l_is_total			Number		:= 0;  -- added by spamujul for ER#8473903
4656 	  v_chk_count           NUMBER := 0;
4657 	/* added this variable for Bug 1937730*/
4658 	v_party_id            Number;
4659 	CURSOR checks_csr IS
4660 		SELECT check_id,
4661 				select_type,
4662 				select_block_id,
4663 				data_type,
4664 				format_mask,
4665 				check_upper_lower_flag,
4666 				threshold_grade,
4667 				check_level
4668 	     FROM csc_prof_checks_b
4669 		WHERE check_id in (select check_id
4670 							from csc_prof_group_checks
4671 							 where group_id = p_group_id)
4672 	AND check_level IN ('PARTY','ACCOUNT','SITE') -- Included by spamujul for  ER#8473903
4673 	AND  Sysdate BETWEEN Nvl(start_date_active, Sysdate)
4674                        AND Nvl(end_date_active, Sysdate)
4675 	AND select_type = 'T';
4676 	CURSOR checks_count IS
4677 		SELECT COUNT(*)
4678 		 FROM csc_prof_checks_b
4679 		WHERE check_id in (select check_id
4680 							from csc_prof_group_checks
4681 				                       where group_id = p_group_id)
4682 	        AND Sysdate BETWEEN Nvl(start_date_active, Sysdate)
4683 	                     AND Nvl(end_date_active, Sysdate)
4684 		AND select_type = 'T';
4685 	  CURSOR cparty_csr IS
4686 	     SELECT party_id
4687 	     FROM hz_parties
4688 	    WHERE status = 'A'
4689 	    AND  PARTY_TYPE IN ('PERSON','ORGANIZATION');
4690 	    -- Person, ORG added for 1850508
4691 /* added this condition party_id=v_party_id for Bug 1937730*/
4692 	  CURSOR caccount_csr IS
4693 	     SELECT party_id, cust_account_id
4694 	     FROM hz_cust_accounts
4695 	     WHERE  party_id=v_party_id
4696 	     AND  status = 'A' ;
4697 	   -- Begin fix by spamujul for ER#8473903
4698 	   CURSOR cpsite_csr IS
4699 		      SELECT party_id, party_site_id
4700 		      FROM hz_party_sites
4701 		      WHERE  party_id=v_party_id
4702 		      AND  status = 'A'
4703 		      AND NVL(created_by_module,'XXX') <> 'SR_ONETIME';
4704    -- End fix by spamujul for ER#8473903
4705 	  CURSOR block_csr IS
4706 	      SELECT block_id, sql_stmnt, currency_code
4707 	      FROM csc_prof_blocks_b a
4708 	      WHERE a.block_id = sel_blk_id;
4709 
4710 		cid 	number;
4711 		val		VARCHAR2(240) := null;
4712 BEGIN
4713 		/* R12 Employee HelpDesk Modifications */
4714 		 /* The processing to be done for either employee level(employee) or customer level(party,account,contact) */
4715 		IF g_dashboard_for_employee = 'N' THEN
4716 		   OPEN checks_count;
4717 				 FETCH checks_count
4718 				 INTO v_chk_count;
4719 		   CLOSE checks_count;
4720 		   IF v_chk_count > 0 THEN
4721 		      /* blocks will be evaluated only if the type is T */
4722 		      Evaluate_Blocks4(l_up_total,
4723 							l_ip_total,
4724 							l_ua_total,
4725 							l_ia_total,
4726 							l_us_total, -- added by spamujul for ER#8473903
4727 							l_is_total,  -- added by spamujul for ER#8473903
4728 							p_group_id
4729 							);
4730 		   END IF;
4731 		   l_ip_total := 0;
4732 		   l_up_total := 0;
4733 		   l_ia_total := 0;
4734 		   l_ua_total := 0;
4735 		   l_us_total := 0;  -- added by spamujul for ER#8473903
4736 		   l_is_total  := 0;  -- added by spamujul for ER#8473903
4737 		   OPEN checks_csr;
4738 			   LOOP
4739 			       FETCH checks_csr
4740 			       INTO chk_id,
4741 					  sel_type,
4742 					  sel_blk_id,
4743 					  data_type,
4744 					  fmt_mask,
4745 					  chk_u_l_flag,
4746 					  Thd_grade,
4747 					  v_check_level;
4748 			       EXIT WHEN checks_csr%notfound;
4749 			       IF (sel_type = 'T') THEN
4750 				   acct_flag := 'N';
4751 				   build_rule(acct_flag,
4752 							chk_id,
4753 							v_check_level,
4754 							rule);
4755 			       ELSIF (sel_type = 'B') THEN
4756 				   Open block_csr;
4757 					   Fetch block_csr
4758 					   INTO blk_id,
4759 						     sql_stmt,
4760 						     curr_code;
4761 				   Close block_csr;
4762 			       END IF;
4763 				IF sql_stmt IS NOT NULL Then
4764 					v_party_in_sql	:= INSTR(lower(sql_stmt),':party_id',1);
4765 					v_acct_in_sql	:= INSTR(lower(sql_stmt),':cust_account_id',1);
4766 					v_psite_in_sql	:= INSTR(lower(sql_stmt),':party_site_id',1); -- added by spamujul for ER#8473903
4767 				Else
4768 					v_party_in_sql	:= 0;
4769 					v_acct_in_sql	:= 0;
4770 					v_psite_in_sql	:= 0;  -- added by spamujul for ER#8473903
4771 				End if;
4772 			/* This begin, end exception is added mainly for exception handing for Bug 19800
4773 			04*/
4774 			Begin
4775 			       IF ((sel_type='B' ) OR  (sel_type='T') ) Then -- Only valid types
4776 				       	   -- Loop through all parties
4777 					   -- Open the Cursor
4778 					   cid := dbms_sql.open_cursor;
4779 					   if (sel_type = 'B') then
4780 						dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
4781 					   elsif (sel_type = 'T') then
4782 						dbms_sql.parse(cid, rule, dbms_sql.native);
4783 					   end if;
4784 					   dbms_sql.define_column(cid,1,val,240);
4785 			   	        -- pass the cid
4786 				       OPEN cparty_csr;
4787 						   LOOP
4788 							      FETCH cparty_csr
4789 							      INTO cparty_id;
4790 							      EXIT WHEN cparty_csr%notfound;
4791 							      If v_check_level='PARTY' Then
4792 									  Evaluate_One_Check(truncate_flag,
4793 													     chk_id,
4794 													     cparty_id,
4795 													     null,
4796 													     NULL,  -- added by spamujul for ER#8473903
4797 													     v_check_level,
4798 													     sel_type,
4799 													     sel_blk_id,
4800 													     data_type,
4801 													     fmt_mask,
4802 													     chk_u_l_flag,
4803 													     Thd_grade,
4804 													     rule,
4805 													     blk_id,
4806 													     sql_stmt,
4807 													     curr_code,
4808 													     l_up_total,
4809 													     l_ip_total,
4810 													     l_ua_total,
4811 													     l_ia_total ,
4812 													     l_us_total,  -- added by spamujul for ER#8473903
4813 													     l_is_total,  -- added by spamujul for ER#8473903
4814 													     cid);
4815 							End if;
4816 					                /* added this condition for Bug 1937730*/
4817 					                v_party_id:=cparty_id;
4818 					              IF (sel_type = 'T') THEN
4819 					                     acct_flag := 'Y';
4820 					                     build_rule(acct_flag,
4821 										chk_id,
4822 										v_check_level,
4823 										rule);
4824 							END IF;
4825 					              IF ((sel_type='B' ) OR (sel_type='T') ) and v_check_level='ACCOUNT' Then -- Only valid Types now
4826 						                   If ((v_acct_in_sql = 0) and sel_type = 'B') and v_check_level='ACCOUNT'  Then -- added for1850508
4827 									      -- Check can be made only for 'B' types,
4828 									      -- If acct is not present as bind variable, the sql might return wrong
4829 									      -- rows (party level counts) at account leve.
4830 
4831 									      --and (v_party_in_sql <> 0 and v_acct_in_sql <> 0) OR
4832 									      --(sel_type='T') ) Then
4833 								               NULL;
4834 						                   Else
4835 									   -- Loop through all parties with accounts
4836 										      -- added for 1850508
4837 										      --Open Cursor
4838 										      -- dbms_output.put_line('Opening and PArsing in checks1 Accounts Check_id -'||to_char(chk_id));
4839 										OPEN caccount_csr;
4840 											      LOOP
4841 												   FETCH caccount_csr
4842 												   INTO cparty_id, ccust_acct_id;
4843 												   EXIT WHEN caccount_csr%notfound;
4844 												   Evaluate_One_Check(truncate_flag,
4845 																      chk_id,
4846 																       cparty_id,
4847 																       ccust_acct_id,
4848 																       NULL,  -- added by spamujul for ER#8473903
4849 																       v_check_level,
4850 																       sel_type,
4851 																       sel_blk_id,
4852 																	data_type,
4853 																	fmt_mask,
4854 																	chk_u_l_flag,
4855 																	Thd_grade,
4856 																	rule,
4857 																	blk_id,
4858 																	sql_stmt,
4859 																	curr_code,
4860 																	l_up_total,
4861 																	l_ip_total,
4862 																	l_ua_total
4863 																	, l_ia_total ,
4864 																	l_us_total,  -- added by spamujul for ER#8473903
4865 																	l_is_total,  -- added by spamujul for ER#8473903
4866 																	cid);
4867 											      END LOOP;
4868 											CLOSE caccount_csr;
4869 										End if; -- added for 1850508
4870 							END IF;
4871 							-- Begin fix by spamujul for ER#8473903
4872 							 v_party_id:=cparty_id;
4873 							 IF ((sel_type='B' ) OR (sel_type='T') ) AND v_check_level='SITE' THEN
4874 								IF ((v_psite_in_sql = 0) AND sel_type = 'B') AND v_check_level='SITE' THEN
4875 									NULL;
4876 								ELSE
4877 									cid := dbms_sql.open_cursor;
4878 									IF (sel_type = 'B') THEN
4879 										dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
4880 									ELSIF (sel_type = 'T') THEN
4881 										dbms_sql.parse(cid, rule, dbms_sql.native);
4882 									END IF;
4883 									 dbms_sql.define_column(cid,1,val,240);
4884 									OPEN  cpsite_csr;
4885 									LOOP
4886 										FETCH  cpsite_csr
4887 										INTO cparty_id,
4888 											 cpsite_id;
4889 										EXIT WHEN cpsite_csr%notfound;
4890 										 Evaluate_One_Check(truncate_flag,
4891 																      chk_id,
4892 																       cparty_id,
4893 																       null,
4894 																       cpsite_id,
4895 																       v_check_level,
4896 																       sel_type,
4897 																       sel_blk_id,
4898 																	data_type,
4899 																	fmt_mask,
4900 																	chk_u_l_flag,
4901 																	Thd_grade,
4902 																	rule,
4903 																	blk_id,
4904 																	sql_stmt,
4905 																	curr_code,
4906 																	l_up_total,
4907 																	l_ip_total,
4908 																	l_ua_total
4909 																	, l_ia_total ,
4910 																	l_us_total,
4911 																	l_is_total,
4912 																	cid);
4913 										END LOOP;
4914 									CLOSE cpsite_csr;
4915 									IF (dbms_sql.is_open(cid)) THEN
4916 										dbms_sql.close_cursor(cid);
4917 									END IF;
4918 								END IF;
4919 							 END IF;
4920 							-- End fix by  spamujul for ER#8473903
4921 				   END LOOP;
4922 				CLOSE cparty_csr;
4923 				   IF (dbms_sql.is_open(cid)) THEN
4924 					dbms_sql.close_cursor(cid);
4925 				   end if;
4926 		        END IF;
4927 		  Exception
4928 		        When others then
4929 				  IF (dbms_sql.is_open(cid)) THEN
4930 				      dbms_sql.close_cursor(cid);
4931 				  end if;
4932 			          set_context('Evaluate_Checks4_Rule',
4933 				'chk_id=>'||to_char(chk_id),
4934 				'party_id=>'||to_char(cparty_id),
4935 				'account_id=>'||to_char(ccust_acct_id)
4936 				,'party_site_id =>'||to_char(cpsite_id) -- added by spamujul for ER#8473903
4937 				);
4938 				g_error := sqlcode || ' ' || sqlerrm;
4939 			         set_context(NULL, g_error);
4940 		  End;
4941 	END LOOP;
4942 	CLOSE checks_csr;
4943 
4944 	   -- check if there are still records to be inserted
4945 	   IF l_ip_total <> 0 THEN
4946 		l_for_insert := 'Y';
4947 		l_for_party  := 'Y';
4948 		l_for_psite   := 'N';-- added by spamujul for ER#8473903
4949 		Insert_Update_Check_Results(l_ip_total,
4950 							       l_for_insert,
4951 							       l_for_party
4952 							       ,l_for_psite  -- added by spamujul for ER#8473903
4953 							       );
4954 		l_ip_total :=0;
4955 	   END IF;
4956 	   -- check if there are still records to be updated
4957 	   IF l_up_total <> 0 THEN
4958 		l_for_insert := 'N';
4959 		l_for_party  := 'Y';
4960 		l_for_psite   := 'N';-- added by spamujul for ER#8473903
4961 		Insert_Update_Check_Results (l_up_total,
4962 								  l_for_insert,
4963 								  l_for_party
4964 								 ,l_for_psite -- added by spamujul for ER#8473903
4965 								  );
4966 		l_up_total :=0;
4967 	   END IF;
4968 
4969 	   -- check if there are still records to be inserted
4970 	   IF l_ia_total <> 0 THEN
4971 		l_for_insert := 'Y';
4972 		l_for_party  := 'N';
4973 		l_for_psite   := 'N';-- added by spamujul for ER#8473903
4974 		Insert_Update_Check_Results(l_ia_total,
4975 								  l_for_insert,
4976 								  l_for_party
4977 								 ,l_for_psite -- added by spamujul for ER#8473903
4978 								  );
4979 		l_ia_total :=0;
4980 	   END IF;
4981 	   -- check if there are still records to be updated
4982 	   IF l_ua_total <> 0 THEN
4983 		l_for_insert := 'N';
4984 		l_for_party  := 'N';
4985 		l_for_psite   := 'N';-- added by spamujul for ER#8473903
4986 		Insert_Update_Check_Results(l_ua_total,
4987 								 l_for_insert,
4988 								 l_for_party
4989 								,l_for_psite -- added by spamujul for ER#8473903
4990 								 );
4991 		l_ua_total :=0;
4992 	   END IF;
4993 	   -- Begin fix by spamujul for ER#8473903
4994 	    IF l_is_total <> 0 THEN
4995 		l_for_insert := 'Y';
4996 		l_for_party  := 'N';
4997 		l_for_psite   := 'Y';
4998 		Insert_Update_Check_Results(l_ia_total,
4999 								  l_for_insert,
5000 								  l_for_party
5001 								 ,l_for_psite
5002 								  );
5003 		l_is_total :=0;
5004 	   END IF;
5005 	   IF l_us_total <> 0 THEN
5006 		l_for_insert := 'N';
5007 		l_for_party  := 'N';
5008 		l_for_psite   := 'Y';
5009 		Insert_Update_Check_Results(l_ua_total,
5010 								 l_for_insert,
5011 								 l_for_party
5012 								,l_for_psite
5013 								 );
5014 		l_us_total :=0;
5015 	   END IF;
5016 	   -- End fix by spamujul for ER#8473903
5017 	   IF g_dashboard_for_contact = 'Y' THEN
5018 	       l_ip_total := 0;
5019 	       l_up_total := 0;
5020 	       l_ia_total := 0;
5021 	       l_ua_total := 0;
5022 		l_us_total :=0; -- added by spamujul for ER#8473903
5023 		l_is_total := 0; -- added by spamujul for ER#8473903
5024 
5025 	       Evaluate_blocks_Rel(p_up_total => l_up_total,
5026 				   p_ip_total => l_ip_total,
5027 				   p_ua_total => l_ua_total,
5028 				   p_ia_total => l_ia_total,
5029 				   p_group_id => p_group_id,
5030 				   p_us_total => l_us_total, -- added by spamujul for ER#8473903
5031 				   p_is_total => l_is_total, -- added by spamujul for ER#8473903
5032 				   p_rule_only => 'Y' );
5033 
5034 	       Evaluate_checks_Rel(errbuf => errbuf,
5035 				   retcode => retcode,
5036 				   p_group_id => p_group_id,
5037 				   p_rule_only => 'Y');
5038 	   END IF;
5039 	   COMMIT;
5040 
5041 	   -- Return 0 for successful completion, 1 for warnings, 2 for error
5042 	   IF (error_flag) THEN
5043 	      errbuf := Sqlerrm;
5044 	      retcode := 2;
5045 	   ELSIF (warning_msg <> '') THEN
5046 	      errbuf := warning_msg;
5047 	      retcode := 1;
5048 	   ELSE
5049 	      errbuf := '';
5050 	      retcode := 0;
5051 	   END IF;
5052 	/* R12 Employee HelpDesk Modifications */
5053 	  ELSIF g_dashboard_for_employee = 'Y' THEN
5054 	       l_ip_total := 0;
5055 	       l_up_total := 0;
5056 	       l_ia_total := 0;
5057 	       l_ua_total := 0;
5058 		l_us_total :=0; -- added by spamujul for ER#8473903
5059 		l_is_total := 0; -- added by spamujul for ER#8473903
5060 
5061 	       Evaluate_blocks_Emp(p_up_total => l_up_total,
5062 				   p_ip_total => l_ip_total,
5063 				   p_ua_total => l_ua_total,
5064 				   p_ia_total => l_ia_total,
5065 				   p_us_total => l_us_total, -- added by spamujul for ER#8473903
5066 				   p_is_total => l_is_total, -- added by spamujul for ER#8473903
5067 				   p_group_id => p_group_id,
5068 				   p_rule_only => 'Y' );
5069 
5070 		Evaluate_checks_Emp(errbuf => errbuf,
5071 				 retcode => retcode,
5072 				  p_group_id => p_group_id,
5073 				p_rule_only => 'Y');
5074 	END IF;
5075 /* End of  R12 Employee HelpDesk Modifications */
5076 	COMMIT;
5077 	   -- Return 0 for successful completion, 1 for warnings, 2 for error
5078 	   IF (error_flag) THEN
5079 	      errbuf := Sqlerrm;
5080 	      retcode := 2;
5081 	   ELSIF (warning_msg <> '') THEN
5082 	      errbuf := warning_msg;
5083 	      retcode := 1;
5084 	   ELSE
5085 	      errbuf := '';
5086 	      retcode := 0;
5087 	   END IF;
5088 
5089 	   IF (debug) THEN
5090 	      fnd_file.close;
5091 	   END IF;
5092    EXCEPTION
5093 			 WHEN OTHERS THEN
5094 				         ROLLBACK;
5095 				         IF (checks_csr%isopen) THEN
5096 					    CLOSE checks_csr;
5097 					 END IF;
5098 					 IF (cparty_csr%isopen) THEN
5099 					    CLOSE cparty_csr;
5100 					 END IF;
5101 					 IF (caccount_csr%isopen) THEN
5102 					    CLOSE caccount_csr;
5103 					 END IF;
5104 					 -- Begin fix by spamujul for ER#8473903
5105 					IF (cpsite_csr%isopen) THEN
5106 					    CLOSE cpsite_csr;
5107 					 END IF;
5108 					 -- End fix by spamujul for  ER#8473903
5109 	 IF (debug) THEN
5110 	    fnd_file.close;
5111 	 END IF;
5112 
5113          -- Retrieve error message into errbuf
5114          errbuf := Sqlerrm;
5115 
5116       	 -- Return 2 for error
5117          retcode := 2;
5118 
5119 	 g_error := sqlcode || ' ' || sqlerrm;
5120 	 fnd_file.put_line(fnd_file.log , g_error);
5121 
5122 END Evaluate_Checks4_Rule;
5123 --
5124 -- Evaluate_One_Check
5125 --   Evaluate the given profile check and store the result in the
5126 --   CSC_PROF_CHECK_RESULTS table. Also store the grade if ranges are
5127 --   specified.
5128 -- IN
5129 --   chk_id  	- profile check identifier
5130 --   cust_id 	- customer identifier for which check is evaluated
5131 --   acct_id 	- customer's account identifier
5132 --   sel_type 	- 'B' for block; 'T' for true or false ("indicator" check)
5133 --   sel_blk_id - building block identifier (required if select type is block)
5134 --   data_type 	- data type of check result (used for applying format mask)
5135 --   fmt_mask 	- format mask for check result (ignored if data type is char or
5136 --              	currency code is present)
5137 --   rule  	- sql statement that returns 0 or 1 row for an indicator check
5138 --   P_CID 	- Cursor passed from calling routine to avoid re-parsing the same sql statement
5139 PROCEDURE Evaluate_One_Check
5140 		  ( p_truncate_flag	IN	VARCHAR2,
5141 		    p_chk_id			IN	NUMBER,
5142 		    p_party_id			IN	NUMBER,
5143 		    p_acct_id			IN	NUMBER	 DEFAULT NULL,
5144 		    p_psite_id			IN	NUMBER    DEFAULT NULL, -- added by spamujul for ER#8473903
5145 		    p_check_level		IN     VARCHAR2 DEFAULT NULL,
5146 		    p_sel_type		IN	VARCHAR2,
5147 		    p_sel_blk_id		IN	NUMBER   DEFAULT NULL,
5148 		    p_data_type     		IN	VARCHAR2 DEFAULT NULL,
5149 		    p_fmt_mask		IN	VARCHAR2 DEFAULT NULL,
5150 		    p_chk_u_l_flag	IN      VARCHAR2 DEFAULT NULL,
5151 		    p_thd_grade		IN      VARCHAR2 DEFAULT NULL,
5152 		    p_rule				IN	VARCHAR2 DEFAULT NULL,
5153 		    p_blk_id			IN	NUMBER   DEFAULT NULL,
5154 		    p_sql_stmt		IN	VARCHAR2 DEFAULT NULL,
5155 		    p_curr_code		IN	VARCHAR2 DEFAULT NULL,
5156 		    p_up_total      	IN OUT NOCOPY NUMBER ,
5157 		    p_ip_total      	IN OUT NOCOPY NUMBER ,
5158 		    p_ua_total      	IN OUT NOCOPY NUMBER ,
5159 		    p_ia_total      	IN OUT NOCOPY NUMBER ,
5160 		    p_us_total		IN OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
5161 		    p_is_total		IN OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
5162 		    p_cid			IN	NUMBER) IS
5163 
5164 	    v_party_in_sql		 Number := 0;
5165 	    v_acct_in_sql		 Number := 0;
5166 	    v_employee_in_sql	 Number := 0;
5167 	    v_psite_in_sql		 Number := 0;  -- Added by spamujul for ER#8473903
5168 
5169 	    val				 VARCHAR2(240) := null;
5170 	    curr_code			 VARCHAR2(15)  := null;
5171 	    grd				 VARCHAR2(3)   := null;
5172 	    cid				 NUMBER        := null;
5173 	    dummy				 NUMBER;
5174 
5175 	    Rng_h_v			Varchar2(240);
5176 	    Rng_l_v			Varchar2(240);
5177 	    Result				Varchar2(3);
5178 
5179 
5180 	    --l_period_date	Date := NULL;
5181 	    l_for_insert			varchar2(1) := 'Y';
5182 	    l_for_party			varchar2(1) := 'Y';
5183 	    l_for_psite			varchar2(1) := 'N'; -- Added by spamujul for ER#8473903
5184 
5185 	    v_rating_code		Varchar2(240);
5186 	    v_color_code		 Varchar2(240);
5187 
5188 	    v_party_count		Number := 0;
5189 	    v_account_count		Number := 0;
5190 	    v_psite_count		Number := 0; -- Added by spamujul for ER#8473903
5191 	    v_val				Number := 0;
5192 	    v_format_date		DATE;
5193 
5194 	  Cursor val_crs1 IS
5195 	     Select check_rating_grade,
5196 			rating_code,
5197 			color_code
5198 	     From csc_prof_check_ratings
5199 	     Where check_id = p_chk_id
5200 	     And ( nvl(Range_Low_Value,val) <= v_val AND
5201 		   nvl(Range_High_Value,val) >= v_val );
5202 
5203 	  Cursor val_crs2 IS
5204 	     Select check_rating_grade,
5205 			rating_code,
5206 			color_code
5207 	     From csc_prof_check_ratings
5208 	     Where check_id = p_chk_id
5209 	     And ( nvl(Range_Low_Value,val) <= val AND
5210 		   nvl(Range_High_Value,val) >= val );
5211 
5212 /* This Cursor added for BUG 1534103 - VIS115P: THRESHOLD FUNCTIONALITY IS NOT WORKING. */
5213 	   Cursor val_crs3 IS
5214 	     Select Range_Low_Value,
5215 			Range_High_Value
5216 	     From   csc_prof_check_ratings
5217 	     Where  check_id = p_chk_id
5218 	     and    check_rating_grade=p_thd_grade;
5219 
5220 /*
5221      -- for party level
5222      Cursor party_check_crs IS
5223 	Select count(*)
5224 	From csc_prof_check_results
5225 	Where check_id = p_chk_id
5226 	And party_id = p_party_id
5227 	And cust_account_id IS NULL;
5228 
5229      -- for account level
5230      Cursor account_check_crs IS
5231 	Select count(*)
5232 	From csc_prof_check_results
5233 	Where check_id = p_chk_id
5234 	And party_id = p_party_id
5235 	And cust_account_id = p_acct_id;
5236 */
5237 BEGIN
5238 	IF (p_sel_type = 'B') THEN
5239 		Begin
5240 		    -- P_CID is the Cursor to avoid reparsing the sql stmt
5241 		    -- P_CID would not be null when engine runs for more than 1 party (e.g. evaluate_checks1)
5242 		    -- P_CID would be null when engine is being run for 1 party (e.g. evaluate_checks2)
5243 			    -- added for 1850508
5244 			    if p_cid is null then
5245 				cid := dbms_sql.open_cursor;
5246 				dbms_sql.parse(cid, p_sql_stmt, dbms_sql.native);
5247 				dbms_sql.define_column(cid,1,val,240);
5248 			    else
5249 				cid := p_cid;
5250 			    end if;
5251 			  IF p_sql_stmt IS NOT NULL Then
5252 			      v_party_in_sql		:= INSTR(lower(p_sql_stmt),':party_id',1);
5253 			      v_acct_in_sql			:= INSTR(lower(p_sql_stmt),':cust_account_id',1);
5254 			      v_employee_in_sql	:= INSTR(lower(p_sql_stmt),':employee_id',1);
5255 			      v_psite_in_sql		:= INSTR(lower(p_sql_stmt),':party_site_id',1);  -- Added by spamujul for ER#8473903
5256 			  Else
5257 			      v_party_in_sql		:= 0;
5258 			      v_acct_in_sql			:= 0;
5259 			       v_employee_in_sql	:= 0;
5260 			       v_psite_in_sql		:= 0;  -- Added by spamujul for ER#8473903
5261 			  End if;
5262          -- For Bug 1935015 commented this if statement and created 2 variables
5263 			if p_check_level='PARTY' OR p_check_level = 'CONTACT' then
5264 			    if v_party_in_sql  > 0 then
5265 				dbms_sql.bind_variable(cid, ':party_id', p_party_id);
5266 			    end if;
5267 			    if v_acct_in_sql  > 0 then
5268 				dbms_sql.bind_variable(cid, ':cust_account_id',p_acct_id);
5269 			    end if;
5270 			elsif p_check_level='ACCOUNT' then
5271 			    if v_party_in_sql  > 0 then
5272 				dbms_sql.bind_variable(cid, ':party_id', p_party_id);
5273 			    end if;
5274 			    if v_acct_in_sql  > 0 then
5275 				dbms_sql.bind_variable(cid, ':cust_account_id',p_acct_id);
5276 			    end if;
5277 			   /* R12 Employee HelpDesk Modifications */
5278 			elsif p_check_level='EMPLOYEE' then
5279 			    if v_employee_in_sql  > 0 then
5280 				dbms_sql.bind_variable(cid, ':employee_id', p_party_id);
5281 			    end if;
5282 			  -- Begin Fix by spamujul  for ER#8473903
5283 			  ELSIF p_check_level='SITE' THEN
5284 				IF v_psite_in_sql  > 0 THEN
5285 					dbms_sql.bind_variable(cid, ':party_site_id', p_psite_id);
5286 	   		       END IF;
5287 				IF v_party_in_sql  > 0 THEN
5288 					dbms_sql.bind_variable(cid, ':party_id', p_party_id);
5289 			        END IF;
5290 			  -- End Fix by spamujul  for ER#8473903
5291 			 END IF;
5292 			dummy := dbms_sql.execute_and_fetch(cid);
5293 		     /* added the below condition for bug 3787383 */
5294 		     IF dummy > 0 THEN
5295 		       dbms_sql.column_value(cid,1,val);
5296 		     ELSE
5297 		       val := NULL;
5298 		     END IF;
5299 		    if p_cid is null then
5300 			dbms_sql.close_cursor(cid);
5301 		    end if;
5302 --	  END IF;
5303 	Exception
5304 	  When Others then
5305 		if p_cid is null then
5306 			IF (dbms_sql.is_open(cid)) THEN
5307 			    dbms_sql.close_cursor(cid);
5308 			END IF;
5309 		end if;
5310 		val := '0';
5311 	End;
5312 	 ELSIF (p_sel_type = 'T') THEN
5313 		Begin
5314     		-- added for 1850508
5315 			   if (p_cid is null) then
5316 				cid := dbms_sql.open_cursor;
5317 				dbms_sql.parse(cid, p_rule, dbms_sql.native);
5318 			   else
5319 				cid := p_cid;
5320 			   end if;
5321 			     -- for Bug 1935015 changed instr(sql_stmt..) to INSTR(lower(sql_stmt)..)
5322 			  IF p_rule IS NOT NULL Then
5323 			      v_party_in_sql		:= INSTR(lower(p_rule),':party_id',1);
5324 			      v_acct_in_sql			:= INSTR(lower(p_rule),':cust_account_id',1);
5325 			       v_employee_in_sql	:= INSTR(lower(p_rule),':employee_id',1);
5326 			        v_psite_in_sql		:= INSTR(lower(p_rule),':party_site_id',1);  -- Added by spamujul for ER#8473903
5327 			  Else
5328 			      v_party_in_sql		:= 0;
5329 			      v_acct_in_sql			:= 0;
5330 			       v_employee_in_sql	:= 0;
5331 			       v_psite_in_sql		:= 0;  -- Added by spamujul for ER#8473903
5332 			  End if;
5333 			   IF p_check_level='PARTY' OR p_check_level = 'CONTACT' THEN
5334 				 if v_party_in_sql  > 0 then
5335 					 dbms_sql.bind_variable(cid, ':party_id', p_party_id);
5336 				 end if;
5337 				 if v_acct_in_sql  > 0 then
5338 					 dbms_sql.bind_variable(cid, ':cust_account_id',p_acct_id);
5339 				 end if;
5340 			   ELSIF p_check_level='ACCOUNT' then
5341 				 if v_party_in_sql  > 0 then
5342 					 dbms_sql.bind_variable(cid, ':party_id', p_party_id);
5343 				 end if;
5344 
5345 				 if v_acct_in_sql  > 0 then
5346 					 dbms_sql.bind_variable(cid, ':cust_account_id', p_acct_id);
5347 				 end if;
5348 				 /* R12 Employee HelpDesk Modifications */
5349 			    ELSIF p_check_level='EMPLOYEE' then
5350 				if v_employee_in_sql  > 0 then
5351 					dbms_sql.bind_variable(cid, ':employee_id', p_party_id);
5352 				    end if;
5353 			   -- Begin Fix by spamujul  for ER#8473903
5354 			  ELSIF p_check_level='SITE' THEN
5355 				IF v_psite_in_sql  > 0 THEN
5356 					dbms_sql.bind_variable(cid, ':party_site_id', p_psite_id);
5357 	   		       END IF;
5358 				IF v_party_in_sql  > 0 THEN
5359 					dbms_sql.bind_variable(cid, ':party_id', p_party_id);
5360 			        END IF;
5361 			  -- End Fix by spamujul  for ER#8473903
5362 			   END IF;
5363 		           val := dbms_sql.execute_and_fetch(cid); -- returns 0 if no rows found
5364 			    -- added for 1850508
5365 			   if (p_cid is null) then
5366 				dbms_sql.close_cursor(cid);
5367 			   end if;
5368 		Exception
5369 			   When Others THEN
5370 				if (p_cid is null) then
5371 					IF (dbms_sql.is_open(cid)) THEN
5372 						dbms_sql.close_cursor(cid);
5373 					end if;
5374 				end if;
5375 				val := null;
5376 			End;
5377 	END IF;
5378 /* This condition added for BUG 1534103 - VIS115P: THRESHOLD FUNCTIONALITY IS NOT WORKING. */
5379 
5380 	IF (p_sel_type = 'B') and (p_data_type IN ('NUMBER', 'DATE')) THEN
5381 	     IF p_data_type = 'NUMBER' Then
5382 		   IF val IS NULL Then
5383 			val := '0';
5384 		   END IF;
5385 		   OPEN val_crs3;
5386 			   FETCH val_crs3
5387 			   INTO Rng_l_v,
5388 				    rng_h_v;
5389 			   IF val_crs3%notfound THEN
5390 				Result := 'Y';
5391 			   END IF;
5392 		  CLOSE val_crs3;
5393 		If p_chk_u_l_flag ='U' Then
5394 			If to_number(val)>to_number(rng_h_v) then
5395 				Result:='Y';
5396 		        Else
5397 				Result:='N';
5398 	                End If;
5399 		Elsif p_chk_u_l_flag ='L' Then
5400 		       If to_number(val)<to_number(rng_l_v) then
5401 			  Result:='Y';
5402 			Else
5403 			  Result:='N';
5404 			End If;
5405 	          Else
5406 			Result:='N';
5407 	        End If;
5408 	    ELSE
5409 		/* added the below code for bug 4071727 */
5410 		OPEN val_crs3;
5411 			FETCH val_crs3
5412 			INTO Rng_l_v,
5413 				 rng_h_v;
5414 			   IF val_crs3%notfound THEN
5415 				Result := 'Y';
5416 			   END IF;
5417 		CLOSE val_crs3;
5418 	          /* added till here for bug 4071727 */
5419 		If val is not null then
5420 			If p_chk_u_l_flag ='U' Then
5421 				/* added to_date for bug 4071727 */
5422 		           If to_Date(val, 'DD-MM-RRRR') > to_date(rng_h_v, 'DD-MM-RRRR') Then
5423 				  Result:='Y';
5424 	                   Else
5425 				  Result:='N';
5426 			   End If;
5427 	               Elsif p_chk_u_l_flag ='L' Then
5428 				 /* added to_date for bug 4071727 */
5429 			  If to_Date(val, 'DD-MM-RRRR') < to_Date(rng_l_v, 'DD-MM-RRRR') Then
5430 			       Result:='Y';
5431 			   Else
5432 			       Result:='N';
5433 			   End If;
5434 		       Else
5435 			   Result:='N';
5436 		       End If;
5437 		End if;
5438         END IF;
5439   -- ELSE
5440    --     grd := NULL;
5441    END IF;
5442 /* Condition for BUG 1534103 - VIS115P: THRESHOLD FUNCTIONALITY IS NOT WORKING. ended*/
5443    IF (p_sel_type = 'B') and (p_data_type IN ('NUMBER', 'DATE')) THEN
5444 	IF p_data_type = 'NUMBER' Then
5445 	   IF val IS NULL Then
5446 		val := '0';
5447 	   END IF;
5448 	   v_val := to_number(val);
5449 	   val := to_char(v_val);
5450 	   OPEN val_crs1;
5451 		     FETCH val_crs1
5452 		     INTO grd,
5453 			      v_rating_code,
5454 			      v_color_code;
5455 		   IF val_crs1%notfound THEN
5456 			grd := NULL;
5457 			/* added for Bug 2227062 */
5458 			v_rating_code := NULL;
5459 			v_color_code := NULL;
5460 		   END IF;
5461 	   CLOSE val_crs1;
5462 	ELSE
5463 	      IF val is not null then
5464 		     OPEN val_crs2;
5465 		     FETCH val_crs2 INTO grd,v_rating_code,v_color_code;
5466 		     IF val_crs2%notfound THEN
5467 			grd := NULL;
5468 			/* added for Bug 2227062 */
5469 			v_rating_code := NULL;
5470 			v_color_code := NULL;
5471 		     END IF;
5472 		     CLOSE val_crs2;
5473 	    END IF;
5474 	END IF;
5475    ELSE
5476 	  grd := NULL;
5477    END IF;
5478    -- Only convert to format mask if result is not True/False
5479    IF ((p_sel_type = 'B') AND (curr_code IS NULL)) THEN
5480       IF (p_fmt_mask IS NOT NULL) THEN
5481 	 IF (p_data_type = 'NUMBER') THEN
5482 	    val := To_char(To_number(val), p_fmt_mask);
5483          ELSIF (p_data_type = 'DATE') THEN
5484             BEGIN
5485                /* modified the to_date to RRRR format for bug 4177903 */
5486                v_format_date := to_date(val, 'DD-MM-RRRR');
5487                val := To_char(v_format_date, p_fmt_mask);
5488             EXCEPTION
5489                WHEN OTHERS THEN
5490                   val := null;
5491             END;
5492          END IF;
5493       END IF;
5494    ELSIF (p_sel_type = 'T') THEN
5495       IF (val > 0) THEN
5496 	 val := 'Y';
5497        ELSE
5498 	 val := 'N';
5499       END IF;
5500    END IF;
5501 	BEGIN
5502 		IF p_psite_id  IS NULL THEN  -- Added by spamujul for ER#8473903
5503 			IF p_acct_id IS NULL THEN
5504 				 IF p_truncate_flag = 'N' THEN
5505 					   begin
5506 					     select 1 into v_party_count
5507 					     from csc_prof_check_results
5508 					     where check_id = p_chk_id
5509 					     and party_id = p_party_id
5510 					     and cust_account_id is null
5511 					     and party_site_id is null  -- Added by spamujul for ER#8473903
5512 					     ;
5513 					   exception when no_data_found then
5514 					       v_party_count := 0;
5515 					   when others then
5516 					       v_party_count := null;
5517 					  end;
5518 					/*
5519 						    OPEN party_check_crs;
5520 						    FETCH party_check_crs INTO v_party_count;
5521 						    IF party_check_crs%notfound THEN
5522 						       v_party_count := 0;
5523 						    END IF;
5524 						    CLOSE party_check_crs;
5525 					*/
5526 				ELSE
5527 					v_party_count := 0;
5528 				END IF;
5529 				 IF v_party_count = 0 THEN
5530 					    p_ip_total := p_ip_total + 1;
5531 					    -- assign values to insert party check results
5532 					    ip_check_id(p_ip_total) := p_chk_id;
5533 					    ip_party_id(p_ip_total) := p_party_id;
5534 					    ip_account_id(p_ip_total) := NULL;
5535 					    ip_psite_id(p_ip_total)   := NULL; -- Added by spamujul for ER#8473903
5536 					    ip_value(p_ip_total) := val;
5537 					    ip_currency(p_ip_total) := curr_code;
5538 					    ip_grade(p_ip_total) := grd;
5539 					    ip_rating_code(p_ip_total) :=v_rating_code;
5540 					    ip_color_code(p_ip_total) :=v_color_code;
5541 					    ip_results(p_ip_total) := result;
5542 					    IF p_ip_total = 1000 THEN
5543 						l_for_insert := 'Y';
5544 						l_for_party  := 'Y';
5545 						l_for_psite  :='N'; -- Added by spamujul for ER#8473903
5546 						Insert_Update_Check_Results(p_ip_total,
5547 												 l_for_insert,
5548 												 l_for_party
5549 											       , l_for_psite  -- Added by spamujul for ER#8473903
5550 												 );
5551 						p_ip_total :=0;
5552 					    END IF;
5553 				 ELSIF v_party_count = 1 THEN
5554 					    p_up_total := p_up_total + 1;
5555 
5556 					    -- assign values to update party check results
5557 					    up_check_id(p_up_total) := p_chk_id;
5558 					    up_party_id(p_up_total) := p_party_id;
5559 					    up_account_id(p_up_total) := NULL;
5560 					     up_psite_id(p_up_total)  := NULL; -- Added by spamujul for ER#8473903
5561 					    up_value(p_up_total) := val;
5562 					    up_currency(p_up_total) := curr_code;
5563 					    up_grade(p_up_total) := grd;
5564 					    up_rating_code(p_up_total) :=v_rating_code;
5565 					    up_color_code(p_up_total) :=v_color_code;
5566 					    up_results(p_up_total) := result;
5567 					    IF p_up_total = 1000 THEN
5568 						l_for_insert := 'N';
5569 						l_for_party  := 'Y';
5570 						l_for_psite  :='N';  -- Added by spamujul for ER#8473903
5571 						Insert_Update_Check_Results(p_up_total,
5572 												  l_for_insert,
5573 												  l_for_party
5574 												 ,l_for_psite  -- Added by spamujul for ER#8473903
5575 												  );
5576 						p_up_total := 0;
5577 					    END IF;
5578 
5579 				 END IF;
5580 			ELSE
5581 				 IF p_truncate_flag = 'N' THEN
5582 				    begin
5583 					      select 1 into v_account_count from csc_prof_check_results
5584 					      where check_id = p_chk_id
5585 					      and party_id = p_party_id
5586 					      and party_site_id is null  -- Added by spamujul for ER#8473903
5587 					      and CUST_ACCOUNT_ID =p_acct_id;  -- Bug 5255227 Fix
5588 				     Exception
5589 						when no_data_found then
5590 						      v_account_count := 0;
5591 			  		        when TOO_MANY_ROWS then
5592 							v_account_count := 1;
5593 		   			        when others then
5594 							v_account_count := null;
5595 				    end ;
5596 			/*
5597 				    OPEN account_check_crs;
5598 				    FETCH account_check_crs INTO v_account_count;
5599 				    IF account_check_crs%notfound THEN
5600 				       v_account_count := 0;
5601 				    END IF;
5602 				    CLOSE account_check_crs;
5603 			*/
5604 				 ELSE
5605 				   v_account_count := 0;
5606 				 END IF;
5607 
5608 				 IF v_account_count = 0 THEN
5609 					    p_ia_total := p_ia_total + 1;
5610 					    -- assign values to insert
5611 					    ia_check_id(p_ia_total) := p_chk_id;
5612 					    ia_party_id(p_ia_total) := p_party_id;
5613 					    ia_account_id(p_ia_total) := p_acct_id;
5614 					    ia_psite_id(p_ia_total)   := NULL; -- Added by spamujul for ER#8473903
5615 					    ia_value(p_ia_total) := val;
5616 					    ia_currency(p_ia_total) := curr_code;
5617 					    ia_grade(p_ia_total) := grd;
5618 					    ia_rating_code(p_ia_total) := v_rating_code;
5619 					    ia_color_code(p_ia_total) := v_color_code;
5620 					    ia_results(p_ia_total) := result;
5621 
5622 					    IF p_ia_total = 1000 THEN
5623 						l_for_insert := 'Y';
5624 						l_for_party  := 'N';
5625 						l_for_psite  := 'N';  -- Added by spamujul for ER#8473903
5626 						Insert_Update_Check_Results(p_ia_total,
5627 												l_for_insert,
5628 												l_for_party
5629 											       ,l_for_psite  -- Added by spamujul for ER#8473903
5630 												);
5631 						p_ia_total := 0;
5632 					    END IF;
5633 
5634 				 ELSIF v_account_count = 1 THEN
5635 					    p_ua_total := p_ua_total + 1;
5636 
5637 					    -- assign values to update party tables
5638 					    ua_check_id(p_ua_total) := p_chk_id;
5639 					    ua_party_id(p_ua_total) := p_party_id;
5640 					    ua_account_id(p_ua_total) := p_acct_id;
5641 					    ua_psite_id(p_ua_total)   := NULL; -- Added by spamujul for ER#8473903
5642 					    ua_value(p_ua_total) := val;
5643 					    ua_currency(p_ua_total) := curr_code;
5644 					    -- This is a Bug fix for 1934720, changing p_ia_total to p_ua_total
5645 					    ua_grade(p_ua_total) := grd;
5646 					    ua_rating_code(p_ua_total) := v_rating_code;
5647 					    ua_color_code(p_ua_total) := v_color_code;
5648 					    ua_results(p_ua_total) := result;
5649 					    IF p_ua_total = 1000 THEN
5650 						l_for_insert := 'N';
5651 						l_for_party  := 'N';
5652 						l_for_psite  := 'N';   -- Added by spamujul for ER#8473903
5653 						Insert_Update_Check_Results (p_ua_total,
5654 												  l_for_insert,
5655 												  l_for_party
5656 											         ,l_for_psite -- Added by spamujul for ER#8473903
5657 												  );
5658 						p_ua_total := 0;
5659 					    END IF;
5660 
5661 				END IF;
5662 			END IF;
5663 -- Begin Fix by spamujul  for ER#8473903
5664 		ELSE
5665 			Begin
5666 			     IF p_truncate_flag = 'N' THEN
5667 				begin
5668 					select 1 into v_psite_count
5669 					from csc_prof_check_results
5670 					where check_id = p_chk_id
5671 					and party_id = p_party_id
5672 					and cust_account_id is null
5673 					and party_site_id =p_psite_id;
5674 					Exception when no_data_found then
5675 						v_psite_count := 0;
5676 					  when others then
5677 						v_psite_count := null;
5678 					end;
5679 				ELSE
5680 						v_psite_count := 0;
5681 				END IF;
5682 			IF v_psite_count = 0 THEN
5683 				p_is_total := p_is_total + 1;
5684 				is_check_id(p_is_total) := p_chk_id;
5685 				is_party_id(p_is_total) := p_party_id;
5686 				is_account_id(p_is_total) := NULL;
5687 				is_psite_id(p_is_total)  := p_psite_id;
5688 				is_value(p_is_total) := val;
5689 				is_currency(p_is_total) := curr_code;
5690 				is_grade(p_is_total) := grd;
5691 				is_rating_code(p_is_total) :=v_rating_code;
5692 				is_color_code(p_is_total) :=v_color_code;
5693 				is_results(p_is_total) := result;
5694 				IF p_is_total = 1000 THEN
5695 					l_for_insert := 'Y';
5696 					l_for_party  := 'N';
5697 					l_for_psite  := 'Y';
5698 					Insert_Update_Check_Results
5699 							(p_is_total,
5700 							 l_for_insert,
5701 							 l_for_party
5702 							 ,l_for_psite
5703 							 );
5704 					p_is_total :=0;
5705 				 END IF;
5706 			ELSIF v_psite_count = 1 THEN
5707 				p_us_total := p_us_total + 1;
5708 				us_check_id(p_us_total) := p_chk_id;
5709 				us_party_id(p_us_total) := p_party_id;
5710 				us_account_id(p_us_total) := NULL;
5711 				us_psite_id(p_us_total) := p_psite_id;
5712 				us_value(p_us_total) := val;
5713 				us_currency(p_us_total) := curr_code;
5714 				us_grade(p_us_total) := grd;
5715 				us_rating_code(p_us_total) :=v_rating_code;
5716 				us_color_code(p_us_total) :=v_color_code;
5717 				us_results(p_us_total) := result;
5718 				IF p_us_total = 1000 THEN
5719 					l_for_insert := 'N';
5720 					l_for_party  := 'Y';
5721 					l_for_psite  :='Y';
5722 					Insert_Update_Check_Results(p_us_total,
5723 								    l_for_insert,
5724 								    l_for_party
5725 								   ,l_for_psite
5726 								    );
5727 					p_us_total := 0;
5728 				END IF;
5729 			END IF;
5730 			Exception
5731 				WHEN OTHERS THEN
5732 					IF val_crs1%isopen THEN
5733 					   CLOSE val_crs1;
5734 					END IF;
5735 					IF val_crs2%isopen THEN
5736 					   CLOSE val_crs2;
5737 					END IF;
5738 					if p_cid is null then
5739 						IF (dbms_sql.is_open(cid)) THEN
5740 						    dbms_sql.close_cursor(cid);
5741 						END IF;
5742 					end if;
5743 					set_context('Evaluate_One_Check',
5744 							'chk_id=>'||to_char(p_chk_id),
5745 							'party_id=>'||to_char(p_party_id),
5746 							'account_id=>'||to_char(p_acct_id),
5747 							'party_id =>'||to_char(p_psite_id)
5748 							,'party_site_id =>'||to_char(p_acct_id)
5749 							);
5750 					g_error := sqlcode || ' ' || sqlerrm;
5751 					set_context(NULL, g_error);
5752 			End;
5753 	   END IF ;
5754 	-- End Fix by spamujul  for ER#8473903
5755        END;
5756     EXCEPTION
5757       -- If an exception is raised, close cursor before exiting
5758       WHEN OTHERS THEN
5759 	IF val_crs1%isopen THEN
5760 	   CLOSE val_crs1;
5761 	END IF;
5762 	IF val_crs2%isopen THEN
5763 	   CLOSE val_crs2;
5764 	END IF;
5765 /*
5766 	IF party_check_crs%isopen THEN
5767 	   CLOSE party_check_crs;
5768 	END IF;
5769 	IF account_check_crs%isopen THEN
5770 	   CLOSE account_check_crs;
5771 	END IF;
5772 */
5773 	if p_cid is null then
5774 		IF (dbms_sql.is_open(cid)) THEN
5775 		    dbms_sql.close_cursor(cid);
5776 		END IF;
5777 	end if;
5778 	set_context('Evaluate_One_Check',
5779 		'chk_id=>'||to_char(p_chk_id),
5780 		'party_id=>'||to_char(p_party_id),
5781 		'account_id=>'||to_char(p_acct_id)
5782 		,'party_site_id =>'||to_char(p_acct_id) -- Added by spamujul for ER#8473903
5783 		);
5784 	g_error := sqlcode || ' ' || sqlerrm;
5785 	set_context(NULL, g_error);
5786 	--table_delete;
5787 END Evaluate_One_Check;
5788 
5789 
5790 --
5791 -- Evaluate_Blocks1
5792 --   Loop through all the effective building blocks and evaluate the results
5793 --   for each customer.
5794 --   if block_id is null, party_id is null and account_id is null
5795 --
5796 PROCEDURE Evaluate_Blocks1 (     p_up_total		IN	OUT NOCOPY NUMBER ,
5797 								    p_ip_total		IN	OUT NOCOPY NUMBER ,
5798 								    p_ua_total		IN	OUT NOCOPY NUMBER ,
5799 								    p_ia_total		IN	OUT NOCOPY NUMBER ,
5800 								    p_us_total		IN	OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
5801 								    p_is_total		IN	OUT NOCOPY NUMBER -- added by spamujul for ER#8473903
5802 							    ) IS
5803 
5804 				  blk_id			NUMBER;
5805 				  blk_name		Varchar2(240);
5806 				  sql_stmt		Varchar2(2000);
5807 				  curr_code		Varchar2(15);
5808 				  bparty_id		Number;
5809 				  bacct_id		Number;
5810 				  bpsite_id		Number;  -- Added by spamujul for ER#8473903
5811 				  truncate_flag	Varchar2(1)	:=	'N';
5812 				  l_for_insert		varchar2(1)	:=	'Y';
5813 				  l_for_party		varchar2(1)	:=	'Y';
5814 				  l_for_psite		Varchar2(1)	:=	'N'; -- Added by spamujul for ER#8473903
5815 				  v_party_in_sql	Number		:= 0;
5816 				  v_acct_in_sql	Number		:= 0;
5817 				  v_psite_in_sql	Number		:= 0; -- Added by spamujul for ER#8473903
5818 				/* added this variable for Bug 1937730*/
5819 				  v_party_id            Number;
5820    -- cursor to run all blocks
5821 			   CURSOR blocks_csr IS
5822 			      SELECT block_id, sql_stmnt, currency_code
5823 			      FROM csc_prof_blocks_b a
5824 			      WHERE exists ( Select b.block_id
5825 				     From csc_prof_check_rules_b b
5826 				     where b.block_id 	      = a.block_id
5827 					or b.expr_to_block_id = a.block_id)
5828 			      AND  Sysdate BETWEEN Nvl(start_date_active, Sysdate)
5829 					AND Nvl(end_date_active, Sysdate)
5830 					AND block_level IN ('PARTY',
5831 									     'ACCOUNT'
5832 									     ,'SITE' -- Added by spamujul for ER#8473903
5833 									     );
5834 			   -- cursor to update all results of a party
5835 			   CURSOR bparty_csr IS
5836 			      SELECT party_id
5837 			      FROM hz_parties
5838 			      WHERE status='A'
5839 			      AND  PARTY_TYPE IN ('PERSON','ORGANIZATION');
5840 			      -- Person, ORG added for 1850508
5841 
5842 			   -- cursor to update all results of an account
5843 			/* added this condition party_id=v_party_id for Bug 1937730*/
5844 			   CURSOR baccount_csr IS
5845 			      SELECT party_id, cust_account_id
5846 			      FROM hz_cust_accounts
5847 			      WHERE  party_id=v_party_id
5848 			      AND  status = 'A' ;
5849 
5850 		-- Begin fix by spamujul for NCR ER#8473903
5851 		    CURSOR bpsite_csr IS
5852 		      SELECT party_id, party_site_id
5853 		      FROM hz_party_sites
5854 		      WHERE  party_id=v_party_id
5855 		      AND  status = 'A'
5856 		      AND NVL(created_by_module,'XXX') <> 'SR_ONETIME';
5857 		-- End fix by spamujul for NCR ER#8473903
5858 			    -- added for 1850508
5859 			cid 				number;
5860 			val		VARCHAR2(240) := null;
5861 
5862 BEGIN
5863 		  -- Loop through blocks for party level
5864 		  BEGIN
5865 				OPEN blocks_csr;
5866 					    LOOP
5867 						      FETCH blocks_csr
5868 						      INTO blk_id,
5869 								sql_stmt,
5870 								curr_code;
5871 						      EXIT WHEN blocks_csr%notfound;
5872 							-- for Bug 1935015 changed instr(sql_stmt..) to INSTR(lower(sql_stmt)..)
5873 						      v_party_in_sql := INSTR(lower(sql_stmt),':party_id',1);
5874 						      v_acct_in_sql  := INSTR(lower(sql_stmt),':cust_account_id',1);
5875 						      v_psite_in_sql  := INSTR(lower(sql_stmt),':party_site_id',1); -- Added by spamujul for ER#8473903
5876 							/* This begin, end exception is added mainly for exception handing for Bug 19800
5877 							04*/
5878 							Begin
5879 								   -- IF ((v_party_in_sql <> 0) and (v_acct_in_sql <> 0)) Then
5880 								   -- Loop through per party
5881 								   -- added for 1850508
5882 								   -- dbms_output.put_line('Evaluate blocks1  Opening and Parsing.PARTY Level.'||to_char(blk_id));
5883 								   cid := dbms_sql.open_cursor;
5884 								   dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
5885 								   dbms_sql.define_column(cid, 1, val, 240);
5886 								  OPEN bparty_csr;
5887 								  	      LOOP
5888 											FETCH bparty_csr
5889 											INTO bparty_id;
5890 											EXIT WHEN bparty_csr%notfound;
5891 											Evaluate_One_Block(truncate_flag,
5892 															 blk_id,
5893 															 bparty_id,
5894 															null,
5895 															NULL, -- added by spamujul for ER#8473903
5896 															sql_stmt,
5897 															curr_code,
5898 															p_up_total,
5899 															p_ip_total,
5900 															p_ua_total,
5901 															p_ia_total,
5902 															p_us_total,-- added by spamujul for ER#8473903
5903 															p_is_total,-- added by spamujul for ER#8473903
5904 															cid
5905 															);
5906 															 /* added this condition for Bug 1937730*/
5907 											v_party_id:=bparty_id;
5908 											If (v_acct_in_sql <> 0)  then -- added for 1850508
5909 												      -- If acct is not present as bind variable, the sql might return wrong
5910 												      -- rows (party level counts) at account leve.
5911 												      --p_old_block_id:=null;
5912 
5913 												      -- dbms_output.put_line('Evaluate blocks1  Opening and Parsing. ACCTLevel.'||to_char(blk_id));
5914 												     OPEN baccount_csr;
5915 														 LOOP
5916 															   FETCH baccount_csr
5917 																INTO bparty_id, bacct_id;
5918 																 EXIT WHEN baccount_csr%notfound;
5919 																   Evaluate_One_Block(truncate_flag,
5920 																				     blk_id,
5921 																				     bparty_id,
5922 																				      bacct_id,
5923 																				      NULL, -- added by spamujul for ER#8473903
5924 																				      sql_stmt,
5925 																				      curr_code,
5926 																				      p_up_total,
5927 																				      p_ip_total,
5928 																				      p_ua_total,
5929 																				      p_ia_total,
5930 																				      p_us_total,-- added by spamujul for ER#8473903
5931 																				      p_is_total,-- added by spamujul for ER#8473903
5932 																				      cid);
5933 														END LOOP;
5934 												CLOSE baccount_csr;
5935 											END IF; -- added for 1850508
5936 											 -- Begin fix by spamujul for NCR ER# 8473903
5937 											    Begin
5938 												   bparty_id :=0;
5939 												   IF (v_psite_in_sql <> 0)  THEN
5940 													       cid := dbms_sql.open_cursor;
5941 													       dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
5942 													       dbms_sql.define_column(cid, 1, val, 240);
5943 													       v_party_id := bparty_id;
5944 													       OPEN bpsite_csr;
5945 													       LOOP
5946 														   FETCH bpsite_csr
5947 														   INTO bparty_id, bpsite_id;
5948 														   EXIT WHEN bpsite_csr%notfound;
5949 														   Evaluate_One_Block(truncate_flag,
5950 																		    blk_id,
5951 																		    bparty_id,
5952 																		    NULL,
5953 																		    bpsite_id,
5954 																		    sql_stmt,
5955 																		    curr_code,
5956 																		    p_up_total,
5957 																		    p_ip_total,
5958 																		    p_ua_total,
5959 																		    p_ia_total,
5960 																		    p_us_total,
5961 																		    p_is_total
5962 																		    ,cid);
5963 													      END LOOP;
5964 													      CLOSE bpsite_csr;
5965 													      IF (dbms_sql.is_open(cid)) THEN
5966 														      dbms_sql.close_cursor(cid);
5967 													      End if;
5968 													END IF;
5969 											    Exception
5970 												When others then
5971 												  IF (dbms_sql.is_open(cid)) THEN
5972 														      dbms_sql.close_cursor(cid);
5973 												  End if;
5974 												  set_context('Evaluate_Blocks2', blk_id, bparty_id,bpsite_id);
5975 												  g_error := sqlcode || ' ' || sqlerrm;
5976 												  set_context(NULL, g_error);
5977 											    End;
5978 											    IF p_is_total <> 0 THEN
5979 												l_for_insert := 'Y';
5980 												l_for_party  := 'N';
5981 												l_for_psite  := 'Y';
5982 												Insert_Update_Block_Results(p_is_total,
5983 																		l_for_insert,
5984 																		l_for_party
5985 																		,l_for_psite
5986 																		);
5987 												p_is_total :=0;
5988 											 END IF;
5989 											IF p_us_total <> 0 THEN
5990 												l_for_insert := 'N';
5991 												l_for_party  := 'N';
5992 												l_for_psite  := 'Y';
5993 												Insert_Update_Block_Results 	(p_us_total,
5994 																		 l_for_insert,
5995 																		 l_for_party
5996 																		 ,l_for_psite
5997 																		 );
5998 												p_us_total :=0;
5999 											END IF;
6000 										-- End fix by spamujul for NCR ER# 8473903
6001 								 END LOOP;
6002 						    CLOSE bparty_csr;
6003 						    IF (dbms_sql.is_open(cid)) THEN
6004 								dbms_sql.close_cursor(cid);
6005 						    end if;
6006 						    -- END IF
6007 					Exception
6008 							When others then
6009 								  IF (dbms_sql.is_open(cid)) THEN
6010 								      dbms_sql.close_cursor(cid);
6011 								  end if;
6012 							          set_context('Evaluate_Blocks1', blk_id, bparty_id);
6013 								   g_error := sqlcode || ' ' || sqlerrm;
6014 								   set_context(NULL, g_error);
6015 					 End;
6016 			END LOOP;
6017 		   CLOSE blocks_csr;
6018 		   -- check if there are still records to be inserted
6019 		   IF p_ip_total <> 0 THEN
6020 			l_for_insert	 := 'Y';
6021 			l_for_party	 := 'Y';
6022 			l_for_psite	 := 'N';	 -- Added by spamujul for ER#8473903
6023 			Insert_Update_Block_Results	(p_ip_total,
6024 									  l_for_insert,
6025 									  l_for_party
6026 									  ,l_for_psite  -- Added by spamujul for ER#8473903
6027 									  );
6028 			p_ip_total :=0;
6029 		   END IF;
6030 		   -- check if there are still records to be updated
6031 		   IF p_up_total <> 0 THEN
6032 			l_for_insert := 'N';
6033 			l_for_party  := 'Y';
6034 			Insert_Update_Block_Results(p_up_total,
6035 									l_for_insert,
6036 									l_for_party
6037 									,l_for_psite  -- Added by spamujul for ER#8473903
6038 									);
6039 			p_up_total :=0;
6040 		   END IF;
6041 		  EXCEPTION
6042 				      WHEN OTHERS THEN
6043 				       IF (blocks_csr%isopen) THEN
6044 					  CLOSE blocks_csr;
6045 				       END IF;
6046 				       IF (bparty_csr%isopen) THEN
6047 					   CLOSE bparty_csr;
6048 				       END IF;
6049 				       IF (baccount_csr%isopen) THEN
6050 					   CLOSE baccount_csr;
6051 				       END IF;
6052 				       -- Begin fix by spamujul for  ER#8473903
6053 					IF (bpsite_csr%isopen) THEN
6054 					   CLOSE bpsite_csr;
6055 				       END IF;
6056 				       -- End fix by spamujul for ER#8473903
6057 				       set_context('Evaluate_Blocks', blk_id, bparty_id);
6058 				       g_error := sqlcode || ' ' || sqlerrm;
6059 				       set_context(NULL, g_error);
6060 				       --set_context(NULL, Sqlerrm);
6061 				       table_delete;
6062 				       RAISE;
6063 				END;
6064    -- check if there are still records to be inserted
6065 		   IF p_ia_total <> 0 THEN
6066 			l_for_insert := 'Y';
6067 			l_for_party  := 'N';
6068 			l_for_psite	 := 'N';	 -- Added by spamujul for ER#8473903
6069 			Insert_Update_Block_Results(p_ia_total,
6070 									l_for_insert,
6071 									l_for_party
6072 									,l_for_psite  -- Added by spamujul for ER#8473903
6073 									);
6074 			p_ia_total :=0;
6075 		   END IF;
6076 
6077 		   -- check if there are still records to be updated
6078 		   IF p_ua_total <> 0 THEN
6079 			l_for_insert := 'N';
6080 			l_for_party  := 'N';
6081 			l_for_psite	 := 'N';	 -- Added by spamujul for ER#8473903
6082 			Insert_Update_Block_Results	(p_ua_total,
6083 									l_for_insert,
6084 									l_for_party
6085 									,l_for_psite  -- Added by spamujul for ER#8473903
6086 									);
6087 			p_ua_total :=0;
6088 		   END IF;
6089 END Evaluate_Blocks1;
6090 
6091 --  This procedure evaluates the blocks
6092 --  for which the batch sql statement is NULL and select_type is 'B' (Variable)
6093 PROCEDURE Evaluate_Blocks1_No_Batch (    p_up_total	 IN OUT NOCOPY NUMBER ,
6094 										    p_ip_total		IN OUT NOCOPY NUMBER ,
6095 										    p_ua_total		IN OUT NOCOPY NUMBER ,
6096 										    p_ia_total		IN OUT NOCOPY NUMBER,
6097 										    p_us_total		IN OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
6098 										    p_is_total		IN OUT NOCOPY NUMBER -- added by spamujul for ER#8473903
6099 										) IS
6100 
6101 			  blk_id			Number;
6102 			  blk_name		Varchar2(240);
6103 			  sql_stmt		Varchar2(2000);
6104 			  curr_code		Varchar2(15);
6105 			  bparty_id		Number;
6106 			  bacct_id		Number;
6107 			  bpsite_id		Number; -- added by spamujul for ER#8473903
6108 			  truncate_flag	Varchar2(1)	:= 'N';
6109 
6110 			  l_for_insert		varchar2(1)	:= 'Y';
6111 			  l_for_party		varchar2(1)	:= 'Y';
6112 			  l_for_psite		Varchar2(1)	:='N';-- added by spamujul for ER#8473903
6113 
6114 			  v_party_in_sql	Number		:= 0;
6115 			  v_acct_in_sql	Number		:= 0;
6116 			  v_psite_in_sql	Number		:= 0; -- added by spamujul for ER#8473903
6117 			  v_party_id            Number;
6118 
6119 -- cursor to run all blocks for all checks present in that group
6120 		   CURSOR blocks_csr IS
6121 		      SELECT block_id, sql_stmnt, currency_code
6122 			FROM csc_prof_blocks_b a
6123 		       WHERE EXISTS ( SELECT null
6124 					FROM csc_prof_checks_b b
6125 				       WHERE b.select_block_id = a.block_id
6126 					 AND b.select_type = 'B'
6127 					 AND check_id IN (SELECT check_id FROM csc_prof_group_checks))
6128 			 AND  SYSDATE BETWEEN Nvl(start_date_active, SYSDATE)
6129 					  AND Nvl(end_date_active, SYSDATE)
6130 			 AND  batch_sql_stmnt IS NULL;
6131 
6132 -- cursor to update all results of a party
6133 			   CURSOR bparty_csr IS
6134 			      SELECT party_id
6135 			      FROM hz_parties
6136 			      WHERE status='A'
6137 			      AND  PARTY_TYPE IN ('PERSON','ORGANIZATION');
6138 
6139 -- cursor to update all results of an account
6140 			   CURSOR baccount_csr IS
6141 			      SELECT party_id, cust_account_id
6142 			      FROM hz_cust_accounts
6143 			      WHERE  party_id=v_party_id
6144 			      AND  status = 'A' ;
6145 
6146 			  -- Begin fx by spamujul for ER#8473903
6147 			CURSOR bpsite_csr IS
6148 				 SELECT party_id,
6149 					party_site_id
6150 			  FROM   HZ_PARTY_SITES
6151 			  WHERE party_id = v_party_id
6152 			      AND status ='A'
6153 			      AND NVL(created_by_module,'XXX') <>'SR_ONETIME';
6154 			-- End fx by spamujul for ER#8473903
6155 
6156 		    cid 		number;
6157 		    val		VARCHAR2(240) := null;
6158 
6159 BEGIN
6160 		 -- Loop through blocks for party level
6161 		BEGIN
6162 			OPEN blocks_csr;
6163 					LOOP
6164 					         FETCH blocks_csr
6165 						 INTO blk_id, sql_stmt, curr_code;
6166 					         EXIT WHEN blocks_csr%notfound;
6167 						v_party_in_sql	:=	INSTR(lower(sql_stmt),':party_id',1);
6168 					        v_acct_in_sql	:=	INSTR(lower(sql_stmt),':cust_account_id',1);
6169     					        v_psite_in_sql	:=	INSTR(lower(sql_stmt),':party_site_id',1);  -- added by spamujul for ER#8473903
6170 						Begin
6171 							    cid := dbms_sql.open_cursor;
6172 							    dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
6173 							    dbms_sql.define_column(cid, 1, val, 240);
6174 							   OPEN bparty_csr;
6175 									 LOOP
6176 										FETCH bparty_csr
6177 										INTO bparty_id;
6178 										EXIT WHEN bparty_csr%notfound;
6179 									       Evaluate_One_Block(truncate_flag,
6180 														blk_id,
6181 														bparty_id,
6182 														null,
6183 														NULL, -- added by spamujul for ER#8473903
6184 														sql_stmt,
6185 														curr_code,
6186 														p_up_total,
6187 														p_ip_total,
6188 														p_ua_total,
6189 														p_ia_total,
6190 														p_us_total,-- added by spamujul for ER#8473903
6191 														p_is_total,-- added by spamujul for ER#8473903
6192 														cid);
6193 										v_party_id:=bparty_id;
6194 										If (v_acct_in_sql <> 0)  then
6195 											OPEN baccount_csr;
6196 												LOOP
6197 													FETCH baccount_csr
6198 													INTO bparty_id, bacct_id;
6199 													EXIT WHEN baccount_csr%notfound;
6200 													 Evaluate_One_Block(truncate_flag,
6201 																      blk_id,
6202 																      bparty_id,
6203 																      bacct_id,
6204 																      NULL, -- added by spamujul for ER#8473903
6205 																      sql_stmt,
6206 																      curr_code,
6207 																      p_up_total,
6208 																      p_ip_total,
6209 																      p_ua_total,
6210 																      p_ia_total,
6211 																      p_us_total,-- added by spamujul for ER#8473903
6212 																      p_is_total,-- added by spamujul for ER#8473903
6213 																      cid);
6214 												END LOOP;
6215 										CLOSE baccount_csr;
6216 									END IF; -- added for 1850508
6217 									-- Begin fix by spamujul for ER#8473903
6218 										v_party_id:=bparty_id;
6219 										 If (v_psite_in_sql <> 0)  then
6220 											OPEN bpsite_csr;
6221 													LOOP
6222 													     FETCH bpsite_csr
6223 													      INTO bparty_id,
6224 															bpsite_id;
6225 													     EXIT WHEN bpsite_csr%notfound;
6226 													     Evaluate_One_Block(truncate_flag,
6227 																	       blk_id,
6228 																	       bparty_id,
6229 																	       NULL,
6230 																		bpsite_id,
6231 																	       sql_stmt,
6232 																	       curr_code,
6233 																	       p_up_total,
6234 																	       p_ip_total,
6235 																	       p_ua_total,
6236 																	       p_ia_total,
6237 																	       p_us_total,
6238 																	       p_is_total,
6239 																	       cid);
6240 													END LOOP;
6241 											CLOSE bpsite_csr;
6242 										End IF;
6243 										-- End fix by spamujul for  ER#8473903
6244 							END LOOP;
6245 						CLOSE bparty_csr;
6246 						IF (dbms_sql.is_open(cid)) THEN
6247 							dbms_sql.close_cursor(cid);
6248 						 end if;
6249 						Exception
6250 								When others then
6251 									       IF (dbms_sql.is_open(cid)) THEN
6252 										  dbms_sql.close_cursor(cid);
6253 									       end if;
6254 										set_context('Evaluate_Blocks4_No_Batch', blk_id, bparty_id);
6255 										g_error := sqlcode || ' ' || sqlerrm;
6256 										set_context(NULL, g_error);
6257 						 End;
6258 					 END LOOP;
6259 				CLOSE blocks_csr;
6260 			   -- check if there are still records to be inserted
6261 			      IF p_ip_total <> 0 THEN
6262 				 l_for_insert		:= 'Y';
6263 				 l_for_party		:= 'Y';
6264 				 l_for_psite		:='N'; -- Added by spamujul for ER#8473903
6265 				 Insert_Update_Block_Results	(p_ip_total,
6266 										  l_for_insert,
6267 										  l_for_party
6268 										  ,l_for_psite  -- Added by spamujul for ER#8473903
6269 										  );
6270 				 p_ip_total :=0;
6271 			      END IF;
6272 			   -- check if there are still records to be updated
6273 			      IF p_up_total <> 0 THEN
6274 				 l_for_insert := 'N';
6275 				 l_for_party  := 'Y';
6276 				 l_for_psite		:='N'; -- Added by spamujul for ER#8473903
6277 				 Insert_Update_Block_Results(p_up_total,
6278 										l_for_insert,
6279 										l_for_party
6280 										,l_for_psite  -- Added by spamujul for ER#8473903
6281 										);
6282 				 p_up_total :=0;
6283 			      END IF;
6284 		   EXCEPTION
6285 				      WHEN OTHERS THEN
6286 							IF (blocks_csr%isopen) THEN
6287 								CLOSE blocks_csr;
6288 							END IF;
6289 							IF (bparty_csr%isopen) THEN
6290 								CLOSE bparty_csr;
6291 							END IF;
6292 							IF (baccount_csr%isopen) THEN
6293 								CLOSE baccount_csr;
6294 							 END IF;
6295 							 -- Begin fix by spamujul for ER#8473903
6296 							IF (bpsite_csr%isopen) THEN
6297 								CLOSE bpsite_csr;
6298 							 END IF;
6299 							 -- End fix by spamujul for  ER#8473903
6300 							 IF (dbms_sql.is_open(cid)) THEN
6301 							    dbms_sql.close_cursor(cid);
6302 							 end if;
6303 							 set_context('Evaluate_Blocks4_No_Batch', blk_id, bparty_id);
6304 							 g_error := sqlcode || ' ' || sqlerrm;
6305 							 set_context(NULL, g_error);
6306 							 table_delete;
6307 							RAISE;
6308 				 END;
6309 			   -- check if there are still records to be inserted
6310 			   IF p_ia_total <> 0 THEN
6311 				l_for_insert		:= 'Y';
6312 				l_for_party		:= 'N';
6313 				l_for_psite		:='N'; -- Added by spamujul for ER#8473903
6314 				Insert_Update_Block_Results	(p_ia_total,
6315 										l_for_insert,
6316 										l_for_party
6317 										,l_for_psite  -- Added by spamujul for ER#8473903
6318 										);
6319 				p_ia_total :=0;
6320 			   END IF;
6321 
6322 			   -- check if there are still records to be updated
6323 			   IF p_ua_total <> 0 THEN
6324 				l_for_insert		:= 'N';
6325 				l_for_party		:= 'N';
6326 				l_for_psite		:='N'; -- Added by spamujul for ER#8473903
6327 				Insert_Update_Block_Results	(p_ua_total,
6328 										l_for_insert,
6329 										l_for_party
6330 										,l_for_psite  -- Added by spamujul for ER#8473903
6331 										);
6332 				p_ua_total :=0;
6333 			   END IF;
6334 			 -- Begin fix by spamujul for ER#8473903
6335 			 IF p_is_total <> 0 THEN
6336 			l_for_insert		:= 'Y';
6337 			l_for_party		 := 'N';
6338 			l_for_psite		:= 'Y';
6339 			Insert_Update_Block_Results(p_is_total,
6340 									l_for_insert,
6341 									l_for_party
6342 									,l_for_psite
6343 									);
6344 			p_is_total :=0;
6345 		   END IF;
6346 		   IF p_us_total <> 0 THEN
6347 			l_for_insert		:= 'N';
6348 			l_for_party		:= 'N';
6349 			l_for_psite		:= 'Y';
6350 			Insert_Update_Block_Results(p_us_total,
6351 									l_for_insert,
6352 									l_for_party
6353 									,l_for_psite
6354 									);
6355 			p_us_total :=0;
6356 		   END IF;
6357 		-- End  fix by spamujul for ER#8473903
6358 END Evaluate_Blocks1_No_Batch;
6359 --
6360 -- Evaluate_Blocks2
6361 --   Loop through all the effective building blocks and evaluate the results
6362 --   for given customer.
6363 --   if block_id is not null, party_id is not null or account_id is not null
6364 --
6365 PROCEDURE Evaluate_Blocks2 ( p_block_id		IN NUMBER,
6366 							    p_party_id		IN NUMBER,
6367 							    p_acct_id		IN NUMBER,
6368 							    p_psite_id		IN NUMBER DEFAULT NULL, -- added by spamujul for ER#8473903
6369 							    p_up_total		IN OUT NOCOPY NUMBER ,
6370 							    p_ip_total		IN OUT NOCOPY NUMBER ,
6371 							    p_ua_total		IN OUT NOCOPY NUMBER ,
6372 							    p_ia_total		IN OUT NOCOPY NUMBER ,
6373 							    p_us_total		IN OUT NOCOPY NUMBER,		-- added by spamujul for ER#8473903
6374 							    p_is_total		IN OUT NOCOPY NUMBER			-- added by spamujul for ER#8473903
6375 							  )   IS
6376 
6377 		  blk_id				NUMBER;
6378 		  blk_name			Varchar2(240);
6379 		  sql_stmt			Varchar2(2000);
6380 		  curr_code			Varchar2(15);
6381 		  truncate_flag		Varchar2(1) := 'N';
6382 		  l_for_insert			varchar2(1) := 'Y';
6383 		  l_for_party			varchar2(1) := 'Y';
6384 		  l_for_psite			Varchar2(1) := 'N'; -- added by spamujul for ER#8473903
6385 		  v_party_in_sql		Number := 0;
6386 		  v_acct_in_sql		Number := 0;
6387 		  v_psite_in_sql		Number := 0;	-- added by spamujul for ER#8473903
6388 		/*  added these variable for Bug 1937730*/
6389 		  bparty_id			Number;
6390 		  bacct_id			Number;
6391 		  v_party_id			Number;
6392 		  bpsite_id			Number; -- added by spamujul for ER#8473903
6393 		  cid					Number;
6394 		  val					Varchar2(240) := null;
6395 		  v_incident_id	       Number  	:= p_psite_id	; -- added by spamujul for ER#8473903
6396 		  --v_incident_flag	       Number		:= 'Y';  -- added by spamujul for ER#8473903
6397 		  v_incident_flag		VARCHAR2(2) := 'Y';  -- Fixed bug# 10202830 by mpathani
6398 
6399 	 -- cursor to run a specific block
6400 		 CURSOR blocks_csr IS
6401 				SELECT block_id,
6402 					     sql_stmnt,
6403 					     currency_code
6404 		    FROM csc_prof_blocks_b
6405 		    WHERE block_id = p_block_id
6406 		    AND (Sysdate BETWEEN Nvl(start_date_active, Sysdate)
6407 			AND Nvl(end_date_active, Sysdate));
6408 
6409 		-- cursor to update all results of an account
6410 		/* added this condition party_id=v_party_id for Bug 1937730*/
6411 		   CURSOR baccount_csr IS
6412 		      SELECT party_id, cust_account_id
6413 		      FROM hz_cust_accounts
6414 		      WHERE  party_id=v_party_id
6415 		      AND  status = 'A' ;
6416 		-- Begin fix by spamujul for NCR ER#8473903
6417 		    CURSOR bpsite_csr IS
6418 		      SELECT party_id, party_site_id
6419 		      FROM hz_party_sites
6420 		      WHERE  party_id=v_party_id
6421 		      AND  status = 'A'
6422 		      AND NVL(created_by_module,'XXX') <> 'SR_ONETIME';
6423 		-- End fix by spamujul for NCR ER#8473903
6424 
6425 	BEGIN
6426 		-- Loop through the given block_id for party level
6427 		   OPEN blocks_csr;
6428 		   FETCH blocks_csr
6429 		   INTO blk_id,
6430 			    sql_stmt,
6431 			    curr_code;
6432 		   IF blocks_csr%found THEN
6433 		 CLOSE blocks_csr;
6434     -- for Bug 1935015 changed instr(sql_stmt..) to INSTR(lower(sql_stmt)..)
6435 		    v_party_in_sql	:=	INSTR(lower(sql_stmt),':party_id',1);
6436 		    v_acct_in_sql	:=	INSTR(lower(sql_stmt),':cust_account_id',1);
6437 		    v_psite_in_sql	:=	INSTR(lower(sql_stmt),':party_site_id',1); -- Added by spamujul for ER#8473903
6438 
6439     --  IF ((v_party_in_sql <> 0) and (v_acct_in_sql <> 0)) Then
6440 /* Commented this if condition for Bug1937730*/
6441 --	IF (p_acct_id IS NULL) THEN
6442 	    -- P_CID is null as cursor should be parsed each time.
6443 		    Evaluate_One_Block(truncate_flag,
6444 								blk_id,
6445 								p_party_id,
6446 								null,
6447 								NULL, -- added by spamujul for ER#8473903
6448 								sql_stmt,
6449 								curr_code,
6450 								p_up_total,
6451 								p_ip_total,
6452 								p_ua_total,
6453 								p_ia_total,
6454 								p_us_total,-- added by spamujul for ER#8473903
6455 								p_is_total,  -- added by spamujul for ER#8473903
6456 								NULL );
6457 
6458 		   -- check if there are still records to be inserted
6459 	   IF p_ip_total <> 0 THEN
6460 		l_for_insert := 'Y';
6461 		l_for_party  := 'Y';
6462 		l_for_psite  := 'N'; -- added by spamujul for ER#8473903
6463 		Insert_Update_Block_Results (p_ip_total,
6464 								l_for_insert,
6465 								l_for_party
6466 								,l_for_psite -- added by spamujul for ER#8473903
6467 								);
6468 		p_ip_total :=0;
6469 	   END IF;
6470 	   -- check if there are still records to be updated
6471 	   IF p_up_total <> 0 THEN
6472 		l_for_insert := 'N';
6473 		l_for_party  := 'Y';
6474 		l_for_psite  := 'N'; -- added by spamujul for ER#8473903
6475 		Insert_Update_Block_Results(p_up_total,
6476 								l_for_insert,
6477 								l_for_party
6478 								,l_for_psite -- added by spamujul for ER#8473903
6479 								);
6480 		p_up_total :=0;
6481 	   END IF;
6482 
6483 		/* added this condition for Bug 1937730*/
6484 		--	ELSIF (p_acct_id IS NOT NULL) THEN
6485 
6486 		/* This begin, end exception is added mainly for exception handing for Bug 19800
6487 		04*/
6488 			Begin
6489 			   -- P_CID is null as cursor should be parsed
6490 			   If (v_acct_in_sql <> 0)  then -- added for 1850508
6491 				      -- If acct is not present as bind variable, the sql might return wrong
6492 				      -- rows (party level counts) at account leve.
6493 				      --p_old_block_id:=null;
6494 				      -- dbms_output.put_line('Evaluate blocks1  Opening and Parsing. ACCTLevel.'||to_char(blk_id));
6495 				       cid := dbms_sql.open_cursor;
6496 				       dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
6497 				       dbms_sql.define_column(cid, 1, val, 240);
6498 				       /* changed bparty_id to p_party_id for bug 5351401 */
6499 				       v_party_id := p_party_id;
6500 				       OPEN baccount_csr;
6501 				       LOOP
6502 					   FETCH baccount_csr
6503 					   INTO bparty_id, bacct_id;
6504 					   EXIT WHEN baccount_csr%notfound;
6505 					   Evaluate_One_Block(truncate_flag,
6506 									    blk_id,
6507 									    bparty_id,
6508 									    bacct_id,
6509 									    NULL, -- added by spamujul for ER#8473903
6510 									    sql_stmt,
6511 									    curr_code,
6512 									     p_up_total,
6513 									     p_ip_total,
6514 									     p_ua_total,
6515 									     p_ia_total,
6516 									     p_us_total,-- added by spamujul for ER#8473903
6517 									     p_is_total -- added by spamujul for ER#8473903
6518 									   ,cid);
6519 				      END LOOP;
6520 				      CLOSE baccount_csr;
6521 				      IF (dbms_sql.is_open(cid)) THEN
6522 					      dbms_sql.close_cursor(cid);
6523 				      End if;
6524 			    END IF; -- added for 1850508
6525 				/*	   Evaluate_One_Block(truncate_flag, blk_id, p_party_id,
6526 							p_acct_id, sql_stmt, curr_code,
6527 						  p_up_total, p_ip_total, p_ua_total, p_ia_total,NULL );
6528 				*/
6529 
6530 					   -- check if there are still records to be inserted
6531 			Exception
6532 				When others then
6533 				  IF (dbms_sql.is_open(cid)) THEN
6534 						      dbms_sql.close_cursor(cid);
6535 				  End if;
6536 				  set_context('Evaluate_Blocks2', blk_id, bparty_id);
6537 				  g_error := sqlcode || ' ' || sqlerrm;
6538 				  set_context(NULL, g_error);
6539 			End;
6540 			 IF p_ia_total <> 0 THEN
6541 				l_for_insert := 'Y';
6542 				l_for_party  := 'N';
6543 				l_for_psite  := 'N'; -- Added by spamujul for ER#8473903
6544 				Insert_Update_Block_Results(p_ia_total,
6545 											l_for_insert,
6546 											l_for_party
6547 											,l_for_psite  -- Added by spamujul for ER# 8473903
6548 											);
6549 				p_ia_total :=0;
6550 			 END IF;
6551 		   -- check if there are still records to be updated
6552 			IF p_ua_total <> 0 THEN
6553 				l_for_insert := 'N';
6554 				l_for_party  := 'N';
6555 				l_for_psite  := 'N'; -- Added by spamujul for ER#8473903
6556 				Insert_Update_Block_Results 	(p_ua_total,
6557 												l_for_insert,
6558 												l_for_party
6559 												,l_for_psite  -- Added by spamujul for ER# 8473903
6560 										 );
6561 				p_ua_total :=0;
6562 			END IF;
6563 			--	END IF;
6564 			   --   END IF;  --((v_party_in_sql <> 0) and (v_acct_in_sql <> 0))
6565 			 -- Begin fix by spamujul for NCR ER# 8473903
6566 			    Begin
6567     				   bparty_id :=0;
6568 				   IF (v_psite_in_sql <> 0)  THEN
6569 					       cid := dbms_sql.open_cursor;
6570 					       dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
6571 					       dbms_sql.define_column(cid, 1, val, 240);
6572 					       v_party_id := p_party_id;
6573 					       OPEN bpsite_csr;
6574 					       LOOP
6575 						   FETCH bpsite_csr
6576 						   INTO bparty_id, bpsite_id;
6577 						   EXIT WHEN bpsite_csr%notfound;
6578 						   /* Added the following code to When incident Address is refreshed
6579 						    in Dashboard
6580 						   */
6581 						   IF (v_incident_id IS NOT NULL AND v_incident_id = bpsite_id) AND v_incident_flag <> 'N' THEN
6582 							v_incident_flag := 'N';
6583 						   END IF;
6584 						   -- End of Incident Address Refresh
6585 						   Evaluate_One_Block(truncate_flag,
6586 										    blk_id,
6587 										    bparty_id,
6588 										    NULL,
6589 										    bpsite_id,
6590 										    sql_stmt,
6591 										    curr_code,
6592 										    p_up_total,
6593 										    p_ip_total,
6594 										    p_ua_total,
6595 										    p_ia_total,
6596 										    p_us_total,
6597 										    p_is_total
6598 										    ,cid);
6599 					      END LOOP;
6600 					      CLOSE bpsite_csr;
6601 					       -- Added the following code  when incident address is refreshed in Dashboard
6602 							IF v_incident_id IS NOT NULL AND v_incident_flag ='Y' THEN
6603 	        						Evaluate_One_Block(truncate_flag,
6604 										    blk_id,
6605 										    p_party_id,
6606 										    NULL,
6607 										    p_psite_id,
6608 										    sql_stmt,
6609 										    curr_code,
6610 										    p_up_total,
6611 										    p_ip_total,
6612 										    p_ua_total,
6613 										    p_ia_total,
6614 										    p_us_total,
6615 										    p_is_total
6616 										    ,cid);
6617 								v_incident_flag  := 'N';
6618 							END IF;
6619 					-- End of the code  when incident address is refreshed in Dashboard
6620 
6621 					      IF (dbms_sql.is_open(cid)) THEN
6622 						      dbms_sql.close_cursor(cid);
6623 					      End if;
6624 					END IF;
6625 			    Exception
6626 				When others then
6627 				  IF (dbms_sql.is_open(cid)) THEN
6628 						      dbms_sql.close_cursor(cid);
6629 				  End if;
6630 				  set_context('Evaluate_Blocks2', blk_id, bparty_id,bpsite_id);
6631 				  g_error := sqlcode || ' ' || sqlerrm;
6632 				  set_context(NULL, g_error);
6633 			    End;
6634 			    IF p_is_total <> 0 THEN
6635 				l_for_insert := 'Y';
6636 				l_for_party  := 'N';
6637 				l_for_psite  := 'Y';
6638 				Insert_Update_Block_Results(p_is_total,
6639 										l_for_insert,
6640 										l_for_party
6641 										,l_for_psite
6642 										);
6643 				p_is_total :=0;
6644 			 END IF;
6645 		 	IF p_us_total <> 0 THEN
6646 				l_for_insert := 'N';
6647 				l_for_party  := 'N';
6648 				l_for_psite  := 'Y';
6649 				Insert_Update_Block_Results 	(p_us_total,
6650 										 l_for_insert,
6651 										 l_for_party
6652 										 ,l_for_psite
6653 										 );
6654 				p_us_total :=0;
6655 			END IF;
6656 		-- End fix by spamujul for NCR ER# 8473903
6657    ELSE
6658       CLOSE blocks_csr;
6659    END IF;
6660 
6661    EXCEPTION
6662       WHEN OTHERS THEN
6663        IF (blocks_csr%isopen) THEN
6664 	  CLOSE blocks_csr;
6665        END IF;
6666        set_context('Evaluate_Blocks2',
6667 			     blk_id,
6668 			     p_party_id,
6669 			     p_acct_id
6670 			     ,p_psite_id  -- Added by spamujul for NCR ER# 8473903
6671 			     );
6672        g_error := sqlcode || ' ' || sqlerrm;
6673        set_context(NULL, g_error);
6674 
6675 END Evaluate_Blocks2;
6676 
6677 --
6678 -- Evaluate_Blocks4 -- added for 1850508
6679 --   When Group Id is given but not party_id or Account_id
6680 --   Calculate for All Parties, Accounts * For all checks present in the group
6681 --
6682 PROCEDURE Evaluate_Blocks4 (    p_up_total      IN OUT NOCOPY NUMBER ,
6683 								    p_ip_total      IN OUT NOCOPY NUMBER ,
6684 								    p_ua_total      IN OUT NOCOPY NUMBER ,
6685 								    p_ia_total      IN OUT NOCOPY NUMBER ,
6686 								    p_us_total	  IN OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
6687 								    p_is_total	  IN OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
6688 								    p_group_id      IN     NUMBER
6689 								) IS
6690 
6691 		  blk_id			Number;
6692 		  blk_name		Varchar2(240);
6693 		  sql_stmt		Varchar2(2000);
6694 		  curr_code		Varchar2(15);
6695 		  bparty_id		Number;
6696 		  bacct_id		Number;
6697 		  bpsite_id		Number; -- added by spamujul for ER#8473903
6698 		  truncate_flag	Varchar2(1):= 'N';
6699 		  l_for_insert		varchar2(1) := 'Y';
6700 		  l_for_party		varchar2(1) := 'Y';
6701 		  l_for_psite		Varchar2(1) := 'N'; -- added by spamujul for ER#8473903
6702 		  v_party_in_sql	Number := 0;
6703 		  v_acct_in_sql	Number := 0;
6704 		  v_psite_in_sql	Number := 0;  -- added by spamujul for ER#8473903
6705 		/* added this variable for Bug 1937730*/
6706 		  v_party_id            Number;
6707 		   -- cursor to run all blocks for all checks present in that group
6708 		CURSOR blocks_csr IS
6709 			SELECT block_id,
6710 					sql_stmnt,
6711 					currency_code
6712 		      FROM csc_prof_blocks_b a
6713 			WHERE exists ( Select b.block_id
6714 							From csc_prof_check_rules_b b
6715 						     where (b.block_id 	      = a.block_id
6716 							or b.expr_to_block_id = a.block_id)
6717 						     And check_id in (Select check_id
6718 											from csc_prof_group_checks
6719 											where group_id = p_group_id))
6720 							AND  Sysdate BETWEEN Nvl(start_date_active, Sysdate)
6721 							AND Nvl(end_date_active, Sysdate)
6722 							AND block_level IN ('PARTY','ACCOUNT','SITE') -- Included by spamujul  for ER#8473903
6723 							;
6724 		   -- cursor to update all results of a party
6725 		   CURSOR bparty_csr IS
6726 		      SELECT party_id
6727 		      FROM hz_parties
6728 		      WHERE status='A'
6729 		      AND  PARTY_TYPE IN ('PERSON','ORGANIZATION');
6730 		      -- Person, ORG added for 1850508
6731 /* added this condition party_id=v_party_id for Bug 1937730*/
6732    -- cursor to update all results of an account
6733 		CURSOR baccount_csr IS
6734 			SELECT party_id, cust_account_id
6735 			    FROM hz_cust_accounts
6736 		         WHERE  party_id=v_party_id
6737 				AND  status = 'A' ;
6738     -- added for 1850508
6739 	    -- Begin fix by spamujul for ER#8473903
6740 		CURSOR bpsite_csr IS
6741 		 SELECT party_id,
6742 				party_site_id
6743 		  FROM   HZ_PARTY_SITES
6744 		  WHERE party_id = v_party_id
6745 		      AND status ='A'
6746 		      AND NVL(created_by_module,'XXX') <>'SR_ONETIME';
6747 	    -- End fix by spamujul for ER#8473903
6748 		cid 		number;
6749 		val		VARCHAR2(240) := null;
6750 BEGIN
6751 			-- Loop through blocks for party level
6752 		 BEGIN
6753 			 OPEN blocks_csr;
6754 			   LOOP
6755 				      FETCH blocks_csr
6756 				      INTO blk_id,
6757 						sql_stmt,
6758 						curr_code;
6759 				      EXIT WHEN blocks_csr%notfound;
6760 				      -- for Bug 1935015 changed instr(sql_stmt..) to INSTR(lower(sql_stmt)..)
6761 				      v_party_in_sql	:= INSTR(lower(sql_stmt),':party_id',1);
6762 				      v_acct_in_sql		:= INSTR(lower(sql_stmt),':cust_account_id',1);
6763 				      v_psite_in_sql	:= INSTR(lower(sql_stmt),':party_site_id',1); -- added by spamujul for ER#8473903
6764 				/* This begin, end exception is added mainly for exception handing for Bug 19800
6765 				04*/
6766 				Begin
6767 				      -- IF ((v_party_in_sql <> 0) and (v_acct_in_sql <> 0)) Then
6768 				      -- Loop through per party
6769 				      -- added for 1850508
6770 				      -- dbms_output.put_line('Evaluate blocks4 Opening and Parsing.PARTY Level.'||to_char(blk_id));
6771 				      cid := dbms_sql.open_cursor;
6772 				      dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
6773 				      dbms_sql.define_column(cid, 1, val, 240);
6774 					 OPEN bparty_csr;
6775 						      LOOP
6776 								FETCH bparty_csr
6777 								INTO bparty_id;
6778 								EXIT WHEN bparty_csr%notfound;
6779 								  Evaluate_One_Block(truncate_flag,
6780 													    blk_id,
6781 													    bparty_id,
6782 													    null,
6783 													    NULL,-- added by spamujul for ER#8473903
6784 													    sql_stmt,
6785 													    curr_code,
6786 													    p_up_total,
6787 													    p_ip_total,
6788 													    p_ua_total,
6789 													    p_ia_total,
6790 													    p_us_total,-- added by spamujul for ER#8473903
6791 													    p_is_total,-- added by spamujul for ER#8473903
6792 													    cid);
6793 													 /* added this condition for Bug 1937730*/
6794 						              v_party_id:=bparty_id;
6795 							   If (v_acct_in_sql <> 0)  then -- added for 1850508
6796 								      -- If acct is not present as bind variable, the sql might return wrong
6797 								      -- rows (party level counts) at account leve.
6798 								      --p_old_block_id:=null;
6799 
6800 								      -- dbms_output.put_line('Evaluate blocks1  Opening and Parsing. ACCTLevel.'||to_char(blk_id));
6801 								       OPEN baccount_csr;
6802 										LOOP
6803 											   FETCH baccount_csr
6804 											   INTO bparty_id, bacct_id;
6805 											   EXIT WHEN baccount_csr%notfound;
6806 											   Evaluate_One_Block(truncate_flag,
6807 															    blk_id,
6808 															    bparty_id,
6809 															    bacct_id,
6810 															    NULL,-- added by spamujul for ER#8473903
6811 															    sql_stmt,
6812 															    curr_code,
6813 															   p_up_total,
6814 															   p_ip_total,
6815 															   p_ua_total,
6816 															   p_ia_total,
6817 															   p_us_total,-- added by spamujul for ER#8473903
6818 															   p_is_total,-- added by spamujul for ER#8473903
6819 															   cid);
6820 										END LOOP;
6821 								      CLOSE baccount_csr;
6822 							 END IF; -- added for 1850508
6823 							 -- Begin fix by spamujul for  ER#8473903
6824 							 IF (v_psite_in_sql <> 0)  THEN -- added for 1850508
6825 							 	       OPEN bpsite_csr;
6826 										LOOP
6827 											   FETCH bpsite_csr
6828 											   INTO bparty_id, bpsite_id;
6829 											   EXIT WHEN bpsite_csr%notfound;
6830 											   Evaluate_One_Block(truncate_flag,
6831 															    blk_id,
6832 															    bparty_id,
6833 															    bacct_id,
6834 															    NULL,
6835 															    sql_stmt,
6836 															    curr_code,
6837 															   p_up_total,
6838 															   p_ip_total,
6839 															   p_ua_total,
6840 															   p_ia_total,
6841 															   p_us_total,
6842 															   p_is_total,
6843 															   cid
6844 															   );
6845 										END LOOP;
6846 								      CLOSE bpsite_csr;
6847 							 END IF;
6848 							 -- End fix by spamujul for ER#8473903
6849 					      END LOOP;
6850 					CLOSE bparty_csr;
6851 					IF (dbms_sql.is_open(cid)) THEN
6852 					        dbms_sql.close_cursor(cid);
6853 				      end if;
6854 				      -- END IF;
6855 				Exception
6856 					        When others then
6857 						          IF (dbms_sql.is_open(cid)) THEN
6858 						                dbms_sql.close_cursor(cid);
6859 							  end if;
6860 						          set_context('Evaluate_Blocks4', blk_id, bparty_id);
6861 						          g_error := sqlcode || ' ' || sqlerrm;
6862 						          set_context(NULL, g_error);
6863 				End;
6864 			   END LOOP;
6865 		   CLOSE blocks_csr;
6866 		-- check if there are still records to be inserted
6867 		   IF p_ip_total <> 0 THEN
6868 			l_for_insert	:= 'Y';
6869 			l_for_party	:= 'Y';
6870 			l_for_psite	:= 'N'; -- Added by spamujul for ER#8473903
6871 			Insert_Update_Block_Results(p_ip_total,
6872 									l_for_insert,
6873 									l_for_party
6874 									,l_for_psite  -- Added by spamujul for ER#8473903
6875 									);
6876 			p_ip_total :=0;
6877 		   END IF;
6878 		   -- check if there are still records to be updated
6879 		   IF p_up_total <> 0 THEN
6880 			l_for_insert := 'N';
6881 			l_for_party  := 'Y';
6882 			l_for_psite	:= 'N'; -- Added by spamujul for ER#8473903
6883 			Insert_Update_Block_Results(p_up_total,
6884 									l_for_insert,
6885 									l_for_party
6886 									,l_for_psite  -- Added by spamujul for ER#8473903
6887 									);
6888 			p_up_total :=0;
6889 		   END IF;
6890 		   -- check if there are still records to be inserted
6891 		   IF p_ia_total <> 0 THEN
6892 			l_for_insert	:= 'Y';
6893 			l_for_party	:= 'N';
6894 			l_for_psite	:= 'N';  -- Added by spamujul for ER#8473903
6895 			Insert_Update_Block_Results(p_ia_total,
6896 									l_for_insert,
6897 									l_for_party
6898 									,l_for_psite  -- Added by spamujul for ER#8473903
6899 									);
6900 			p_ia_total :=0;
6901 		   END IF;
6902 		   -- check if there are still records to be updated
6903 		   IF p_ua_total <> 0 THEN
6904 			l_for_insert	:= 'N';
6905 			l_for_party	:= 'N';
6906 			l_for_psite	:= 'N'; -- Added by spamujul for ER#8473903
6907 			Insert_Update_Block_Results(p_ua_total,
6908 									l_for_insert,
6909 									l_for_party
6910 									,l_for_psite  -- Added by spamujul for ER#8473903
6911 									);
6912 			p_ua_total :=0;
6913 		   END IF;
6914 		   -- Begin fix by spamujul for  ER#8473903
6915 		   IF p_is_total <> 0 THEN
6916 			l_for_insert	:= 'Y';
6917 			l_for_party	:= 'N';
6918 			l_for_psite	:= 'Y';
6919 			Insert_Update_Block_Results(p_ia_total,
6920 									l_for_insert,
6921 									l_for_party
6922 									,l_for_psite
6923 									);
6924 			p_is_total :=0;
6925 		   END IF;
6926 		   IF p_us_total <> 0 THEN
6927 			l_for_insert	:= 'N';
6928 			l_for_party	:= 'N';
6929 			l_for_psite	:= 'Y';
6930 			Insert_Update_Block_Results(p_ua_total,
6931 									l_for_insert,
6932 									l_for_party
6933 									,l_for_psite
6934 									);
6935 			p_us_total :=0;
6936 		   END IF;
6937 		   -- End fix by spamujul for ER#8473903
6938 	EXCEPTION
6939 			WHEN OTHERS THEN
6940 			       IF (blocks_csr%isopen) THEN
6941 					  CLOSE blocks_csr;
6942 			       END IF;
6943 			       IF (bparty_csr%isopen) THEN
6944 				   CLOSE bparty_csr;
6945 			       END IF;
6946 			       IF (baccount_csr%isopen) THEN
6947 					CLOSE baccount_csr;
6948 			       END IF;
6949 			       -- Begin fix by spamujul for  ER#8473903
6950 				IF (bpsite_csr%isopen) THEN
6951 					CLOSE bpsite_csr;
6952 			       END IF;
6953 			        -- End fix by spamujul for  ER#8473903
6954 				IF (dbms_sql.is_open(cid)) THEN
6955 				           dbms_sql.close_cursor(cid);
6956 			       end if;
6957 				set_context('Evaluate_Blocks4', blk_id, bparty_id);
6958 				 g_error := sqlcode || ' ' || sqlerrm;
6959 			       set_context(NULL, g_error);
6960 				--set_context(NULL, Sqlerrm);
6961 				 table_delete;
6962 			 RAISE;
6963 	END;
6964 END Evaluate_Blocks4;
6965 
6966 --  This procedure evaluates the blocks
6967 --  for which the batch sql statement is NULL and select_type is 'B' (Variable)
6968 -- Group_id is not null
6969 PROCEDURE Evaluate_Blocks4_No_Batch (    p_up_total		IN OUT NOCOPY NUMBER ,
6970 											    p_ip_total		IN OUT NOCOPY NUMBER ,
6971 											    p_ua_total		IN OUT NOCOPY NUMBER ,
6972 											    p_ia_total		IN OUT NOCOPY NUMBER ,
6973 											    p_us_total		IN OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
6974 											    p_is_total		IN OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
6975 											    p_group_id	IN     NUMBER
6976 											) IS
6977 
6978 				  blk_id			Number;
6979 				  blk_name		Varchar2(240);
6980 				  sql_stmt		Varchar2(2000);
6981 				  curr_code		Varchar2(15);
6982 				  bparty_id		Number;
6983 				  bacct_id		Number;
6984 				  bpsite_id		Number;  -- added by spamujul for ER#8473903
6985 				  truncate_flag	Varchar2(1):= 'N';
6986 
6987 				  l_for_insert		varchar2(1) := 'Y';
6988 				  l_for_party		varchar2(1) := 'Y';
6989 				  l_for_psite		Varchar2(1) := 'N'; -- added by spamujul for ER#8473903
6990 
6991 				  v_party_in_sql	Number := 0;
6992 				  v_acct_in_sql	Number := 0;
6993 				  v_psite_in_sql	Number :=0; -- added by spamujul for ER#8473903
6994 				  v_party_id            Number;
6995 
6996    -- cursor to run all blocks for all checks present in that group
6997 				   CURSOR blocks_csr IS
6998 				      SELECT block_id,
6999 							sql_stmnt,
7000 							currency_code
7001 					FROM csc_prof_blocks_b a
7002 				       WHERE EXISTS ( SELECT null
7003 							FROM csc_prof_checks_b b
7004 						       WHERE b.select_block_id = a.block_id
7005 							 AND b.select_type = 'B'
7006 							 AND check_id IN (SELECT check_id FROM csc_prof_group_checks
7007 									   WHERE group_id = p_group_id))
7008 					 AND  SYSDATE BETWEEN Nvl(start_date_active, SYSDATE)
7009 							  AND Nvl(end_date_active, SYSDATE)
7010 					 AND  batch_sql_stmnt IS NULL;
7011 
7012 				   -- cursor to update all results of a party
7013 				   CURSOR bparty_csr IS
7014 				      SELECT party_id
7015 				      FROM hz_parties
7016 				      WHERE status='A'
7017 				      AND  PARTY_TYPE IN ('PERSON','ORGANIZATION');
7018 
7019    -- cursor to update all results of an account
7020 				   CURSOR baccount_csr IS
7021 				      SELECT party_id, cust_account_id
7022 				      FROM hz_cust_accounts
7023 				      WHERE  party_id=v_party_id
7024 				      AND  status = 'A' ;
7025 -- Begin fx by spamujul for ER#8473903
7026 				CURSOR bpsite_csr IS
7027 					 SELECT party_id,
7028 						party_site_id
7029 				  FROM   HZ_PARTY_SITES
7030 				  WHERE party_id = v_party_id
7031 				      AND status ='A'
7032 				      AND NVL(created_by_module,'XXX') <>'SR_ONETIME';
7033 -- End fx by spamujul for ER#8473903
7034 				cid 		number;
7035 				val		VARCHAR2(240) := null;
7036 
7037 BEGIN
7038 			 -- Loop through blocks for party level
7039 		BEGIN
7040 			OPEN blocks_csr;
7041 				      LOOP
7042 					         FETCH blocks_csr INTO blk_id,
7043 											       sql_stmt,
7044 											       curr_code;
7045 					         EXIT WHEN blocks_csr%notfound;
7046 					         v_party_in_sql	:=	INSTR(lower(sql_stmt),':party_id',1);
7047 					         v_acct_in_sql	:=	INSTR(lower(sql_stmt),':cust_account_id',1);
7048 						 v_psite_in_sql	:=	INSTR(lower(sql_stmt),':party_site_id',1);  -- added by spamujul for ER#8473903
7049 						Begin
7050 						            cid := dbms_sql.open_cursor;
7051 						            dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
7052 						            dbms_sql.define_column(cid, 1, val, 240);
7053 							OPEN bparty_csr;
7054 							            LOOP
7055 								               FETCH bparty_csr
7056 									       INTO bparty_id;
7057 								               EXIT WHEN bparty_csr%notfound;
7058 									       Evaluate_One_Block(truncate_flag,
7059 														blk_id,
7060 														bparty_id,
7061 														null,
7062 														NULL, -- added by spamujul for ER#8473903
7063 														sql_stmt,
7064 														curr_code,
7065 														p_up_total,
7066 														p_ip_total,
7067 														p_ua_total,
7068 														p_ia_total,
7069 														p_us_total,-- added by spamujul for ER#8473903
7070 														p_is_total,-- added by spamujul for ER#8473903
7071 														cid
7072 														);
7073 										v_party_id:=bparty_id;
7074 										 If (v_acct_in_sql <> 0)  then
7075 											OPEN baccount_csr;
7076 													LOOP
7077 													     FETCH baccount_csr
7078 													      INTO bparty_id, bacct_id;
7079 													     EXIT WHEN baccount_csr%notfound;
7080 													     Evaluate_One_Block(truncate_flag,
7081 																	       blk_id,
7082 																	       bparty_id,
7083 																	       bacct_id,
7084 																	       NULL, -- added by spamujul for ER#8473903
7085 																	       sql_stmt,
7086 																	       curr_code,
7087 																	       p_up_total,
7088 																	       p_ip_total,
7089 																	       p_ua_total,
7090 																	       p_ia_total,
7091 																	       p_us_total,-- added by spamujul for ER#8473903
7092 																	       p_is_total,-- added by spamujul for ER#8473903
7093 																	       cid);
7094 													END LOOP;
7095 											CLOSE baccount_csr;
7096 										END IF; -- added for 1850508
7097 										-- Begin fix by spamujul for ER#8473903
7098 										v_party_id:=bparty_id;
7099 										 If (v_psite_in_sql <> 0)  then
7100 											OPEN bpsite_csr;
7101 													LOOP
7102 													     FETCH bpsite_csr
7103 													      INTO bparty_id,
7104 															bpsite_id;
7105 													     EXIT WHEN bpsite_csr%notfound;
7106 													     Evaluate_One_Block(truncate_flag,
7107 																	       blk_id,
7108 																	       bparty_id,
7109 																	       NULL,
7110 																		bpsite_id,
7111 																	       sql_stmt,
7112 																	       curr_code,
7113 																	       p_up_total,
7114 																	       p_ip_total,
7115 																	       p_ua_total,
7116 																	       p_ia_total,
7117 																	       p_us_total,
7118 																	       p_is_total,
7119 																	       cid);
7120 													END LOOP;
7121 											CLOSE bpsite_csr;
7122 										End IF;
7123 										-- End fix by spamujul for  ER#8473903
7124 								 END LOOP;
7125 							CLOSE bparty_csr;
7126 						    IF (dbms_sql.is_open(cid)) THEN
7127 						       dbms_sql.close_cursor(cid);
7128 						    end if;
7129 					Exception
7130 							When others then
7131 									 IF (dbms_sql.is_open(cid)) THEN
7132 										 dbms_sql.close_cursor(cid);
7133 									end if;
7134 									set_context('Evaluate_Blocks4_No_Batch', blk_id, bparty_id);
7135 									g_error := sqlcode || ' ' || sqlerrm;
7136 									set_context(NULL, g_error);
7137 					End;
7138 
7139 			 END LOOP;
7140 		CLOSE blocks_csr;
7141 
7142    -- check if there are still records to be inserted
7143 		      IF p_ip_total <> 0 THEN
7144 			 l_for_insert		:= 'Y';
7145 			 l_for_party		:= 'Y';
7146 			 l_for_psite		:= 'N';	 -- Added by spamujul for ER#8473903
7147 			 Insert_Update_Block_Results	(p_ip_total,
7148 									 l_for_insert,
7149 									 l_for_party
7150 									 ,l_for_psite  -- Added by spamujul for ER#8473903
7151 									 );
7152 			 p_ip_total :=0;
7153 		      END IF;
7154 		   -- check if there are still records to be updated
7155 		      IF p_up_total <> 0 THEN
7156 			 l_for_insert		:= 'N';
7157 			 l_for_party		:= 'Y';
7158 			 l_for_psite		:= 'N';	 -- Added by spamujul for ER#8473903
7159 			 Insert_Update_Block_Results(p_up_total,
7160 									 l_for_insert,
7161 									 l_for_party
7162 									 ,l_for_psite  -- Added by spamujul for ER#8473903
7163 									 );
7164 			 p_up_total :=0;
7165 		      END IF;
7166 		-- Begin fix by spamujul for ER#8473903
7167 			 IF p_is_total <> 0 THEN
7168 			l_for_insert		:= 'Y';
7169 			l_for_party		 := 'N';
7170 			l_for_psite		:= 'Y';
7171 			Insert_Update_Block_Results(p_is_total,
7172 									l_for_insert,
7173 									l_for_party
7174 									,l_for_psite
7175 									);
7176 			p_is_total :=0;
7177 		   END IF;
7178 		   -- check if there are still records to be updated
7179 		   IF p_us_total <> 0 THEN
7180 			l_for_insert		:= 'N';
7181 			l_for_party		:= 'N';
7182 			l_for_psite		:= 'Y';
7183 			Insert_Update_Block_Results(p_us_total,
7184 									l_for_insert,
7185 									l_for_party
7186 									,l_for_psite
7187 									);
7188 			p_us_total :=0;
7189 		   END IF;
7190 		-- End  fix by spamujul for ER#8473903
7191 		EXCEPTION
7192 					WHEN OTHERS THEN
7193 							 IF (blocks_csr%isopen) THEN
7194 							    CLOSE blocks_csr;
7195 							 END IF;
7196 							 IF (bparty_csr%isopen) THEN
7197 							    CLOSE bparty_csr;
7198 							 END IF;
7199 							 IF (baccount_csr%isopen) THEN
7200 							   CLOSE baccount_csr;
7201 							 END IF;
7202 							 -- Begin fix by spamujul for ER#8473903
7203 							IF (bpsite_csr%isopen) THEN
7204 							   CLOSE bpsite_csr;
7205 							 END IF;
7206 							--  End  fix by spamujul for ER#8473903
7207 							 IF (dbms_sql.is_open(cid)) THEN
7208 							    dbms_sql.close_cursor(cid);
7209 							 end if;
7210 							set_context('Evaluate_Blocks4_No_Batch', blk_id, bparty_id);
7211 							 g_error := sqlcode || ' ' || sqlerrm;
7212 							set_context(NULL, g_error);
7213 							table_delete;
7214 						         RAISE;
7215 		   END;
7216 		   -- check if there are still records to be inserted
7217 		   IF p_ia_total <> 0 THEN
7218 			l_for_insert		:= 'Y';
7219 			l_for_party		:= 'N';
7220 			l_for_psite		:= 'N';	 -- Added by spamujul for ER#8473903
7221 			Insert_Update_Block_Results(p_ia_total,
7222 									l_for_insert,
7223 									l_for_party
7224 									,l_for_psite  -- Added by spamujul for ER#8473903
7225 									);
7226 			p_ia_total :=0;
7227 		   END IF;
7228 		   -- check if there are still records to be updated
7229 		   IF p_ua_total <> 0 THEN
7230 			l_for_insert		:= 'N';
7231 			l_for_party		:= 'N';
7232 			l_for_psite		:= 'N';	 -- Added by spamujul for ER#8473903
7233 			Insert_Update_Block_Results(p_ua_total,
7234 									l_for_insert,
7235 									l_for_party
7236 									,l_for_psite  -- Added by spamujul for ER#8473903
7237 									);
7238 			p_ua_total :=0;
7239 		   END IF;
7240 
7241 END Evaluate_Blocks4_No_Batch;
7242 
7243 PROCEDURE Evaluate_Blocks5
7244 				  ( p_block_id		IN	NUMBER,
7245 				    p_party_id			IN	NUMBER,
7246 				    p_psite_id			IN	NUMBER DEFAULT NULL,   -- added by spamujul for ER#8473903
7247 				    p_up_total			IN OUT NOCOPY NUMBER ,
7248 				    p_ip_total			IN OUT NOCOPY NUMBER ,
7249 				    p_ua_total			IN OUT NOCOPY NUMBER ,
7250 				    p_ia_total			IN OUT NOCOPY NUMBER
7251 				    ,p_us_total		IN OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
7252 				    p_is_total			IN OUT NOCOPY NUMBER -- added by spamujul for ER#8473903
7253 				    )
7254 				  IS
7255 
7256 		  v_blk_id			NUMBER;
7257 		  v_blk_name		Varchar2(240);
7258 		  v_sql_stmt			Varchar2(2000);
7259 		  v_curr_code		Varchar2(15);
7260 		  v_truncate_flag		Varchar2(1) := 'N';
7261 
7262 		  l_for_insert			varchar2(1) := 'Y';
7263 		  l_for_party			varchar2(1) := 'Y';
7264 		  l_for_psite			Varchar2(1) := 'N'; -- added by spamujul for ER#8473903
7265 
7266 		  v_party_in_sql		Number		:= 0;
7267 		  v_acct_in_sql		Number		:= 0;
7268 		  v_psite_in_sql		Number		:= 0; -- added by spamujul for ER#8473903
7269 
7270 		  bparty_id			Number;
7271 		  bacct_id			Number;
7272 		  bpsite_id			Number;  -- added by spamujul for ER#8473903
7273 		  v_party_id			Number;
7274 		  cid					Number;
7275 		  val					Varchar2(240) := null;
7276 
7277 
7278 		 -- cursor to run a specific block
7279 		 CURSOR blocks_csr(c_block_id IN NUMBER) IS
7280 		    SELECT block_id,
7281 				     sql_stmnt,
7282 				     currency_code
7283 		    FROM csc_prof_blocks_b
7284 		    WHERE block_id = c_block_id
7285 		    AND block_level in( 'CONTACT','EMPLOYEE','SITE')   -- 'Included 'SITE' by spamujul for ER#8473903
7286 		    AND (Sysdate BETWEEN Nvl(start_date_active, Sysdate)
7287 			 AND Nvl(end_date_active, Sysdate));
7288  -- Begin fix by spamujul for NCR ER#8473903
7289 	    CURSOR bpsite_csr IS
7290 	      SELECT party_id, party_site_id
7291 	      FROM hz_party_sites
7292 	      WHERE  party_id=v_party_id
7293 	      AND  status = 'A'
7294 	      AND NVL(created_by_module,'XXX') <> 'SR_ONETIME';
7295 	-- End fix by spamujul for NCR ER#8473903
7296 BEGIN
7297   -- Loop through the given block_id for party level
7298 		OPEN blocks_csr(p_block_id);
7299 			     FETCH blocks_csr
7300 			     INTO v_blk_id,
7301 			     v_sql_stmt,
7302 			     v_curr_code;
7303 			    IF blocks_csr%found THEN
7304 					 v_psite_in_sql	:=	INSTR(lower( v_sql_stmt),':party_site_id',1); -- Added by spamujul for ER#8473903
7305 					 Evaluate_One_Block(v_truncate_flag,
7306 										  v_blk_id,
7307 										  p_party_id,
7308 										  null,
7309 										  NULL, -- added by spamujul for ER#8473903
7310 										  v_sql_stmt,
7311 										  v_curr_code,
7312 										  p_up_total,
7313 										  p_ip_total,
7314 										  p_ua_total,
7315 										  p_ia_total,
7316 										  p_us_total,-- added by spamujul for ER#8473903
7317 										  p_is_total,-- added by spamujul for ER#8473903
7318 										  NULL );
7319 						 -- check if there are still records to be inserted
7320 						   IF p_ip_total <> 0 THEN
7321 							l_for_insert	:= 'Y';
7322 							l_for_party	:= 'Y';
7323 							l_for_psite	:= 'N' ; -- added by spamujul for ER#8473903
7324 							Insert_Update_Block_Results(p_ip_total,
7325 													l_for_insert,
7326 													l_for_party
7327 													,l_for_psite  -- Added by spamujul for ER#8473903
7328 													);
7329 							p_ip_total :=0;
7330 						   END IF;
7331 						   -- check if there are still records to be updated
7332 						   IF p_up_total <> 0 THEN
7333 							l_for_insert := 'N';
7334 							l_for_party  := 'Y';
7335 							l_for_psite	:= 'N' ; -- added by spamujul for ER#8473903
7336 							Insert_Update_Block_Results(p_up_total,
7337 													l_for_insert,
7338 													l_for_party
7339 													,l_for_psite  -- Added by spamujul for ER#8473903
7340 													);
7341 							p_up_total :=0;
7342 						   END IF;
7343 					END IF;
7344 			-- Begin fix by spamujul for  ER#8473903
7345 		-- Begin fix by spamujul for NCR ER# 8473903
7346 			    Begin
7347     				   bparty_id :=0;
7348 				   IF (v_psite_in_sql <> 0)  THEN
7349 					       cid := dbms_sql.open_cursor;
7350 					       dbms_sql.parse(cid,  v_sql_stmt, dbms_sql.native);
7351 					       dbms_sql.define_column(cid, 1, val, 240);
7352 					       v_party_id := p_party_id;
7353 					       OPEN bpsite_csr;
7354 					       LOOP
7355 						   FETCH bpsite_csr
7356 						   INTO bparty_id, bpsite_id;
7357 						   EXIT WHEN bpsite_csr%notfound;
7358 						   Evaluate_One_Block(V_truncate_flag,
7359 										    v_blk_id,
7360 										    bparty_id,
7361 										    NULL,
7362 										    bpsite_id,
7363 										     v_sql_stmt,
7364 										    v_curr_code,
7365 										    p_up_total,
7366 										    p_ip_total,
7367 										    p_ua_total,
7368 										    p_ia_total,
7369 										    p_us_total,
7370 										    p_is_total
7371 										    ,cid);
7372 					      END LOOP;
7373 					      CLOSE bpsite_csr;
7374 					      IF (dbms_sql.is_open(cid)) THEN
7375 						      dbms_sql.close_cursor(cid);
7376 					      End if;
7377 					END IF;
7378 			    Exception
7379 				When others then
7380 				  IF (dbms_sql.is_open(cid)) THEN
7381 						      dbms_sql.close_cursor(cid);
7382 				  End if;
7383 				  set_context('Evaluate_Blocks5', v_blk_id, bparty_id,bpsite_id);
7384 				  g_error := sqlcode || ' ' || sqlerrm;
7385 				  set_context(NULL, g_error);
7386 			    End;
7387 			    IF p_is_total <> 0 THEN
7388 				l_for_insert := 'Y';
7389 				l_for_party  := 'N';
7390 				l_for_psite  := 'Y';
7391 				Insert_Update_Block_Results(p_is_total,
7392 										l_for_insert,
7393 										l_for_party
7394 										,l_for_psite
7395 										);
7396 				p_is_total :=0;
7397 			 END IF;
7398 		 	IF p_us_total <> 0 THEN
7399 				l_for_insert := 'N';
7400 				l_for_party  := 'N';
7401 				l_for_psite  := 'Y';
7402 				Insert_Update_Block_Results 	(p_us_total,
7403 										 l_for_insert,
7404 										 l_for_party
7405 										 ,l_for_psite
7406 										 );
7407 				p_us_total :=0;
7408 			END IF;
7409 	-- End fix by spamujul for ER#8473903
7410       CLOSE blocks_csr;
7411 EXCEPTION
7412       WHEN OTHERS THEN
7413        IF (blocks_csr%isopen) THEN
7414 	    CLOSE blocks_csr;
7415        END IF;
7416        set_context('Evaluate_Blocks5',
7417 			     v_blk_id,
7418 			     p_party_id,
7419 			     p_psite_id,  -- added by spamujul for ER#8473903
7420 			     null);
7421        g_error := sqlcode || ' ' || sqlerrm;
7422        set_context(NULL, g_error);
7423 END Evaluate_Blocks5;
7424 
7425 PROCEDURE Evaluate_Blocks_Rel (p_up_total			IN	OUT NOCOPY NUMBER ,
7426 								    p_ip_total			IN	OUT NOCOPY NUMBER ,
7427 								    p_ua_total			IN	OUT NOCOPY NUMBER ,
7428 								    p_ia_total			IN	OUT NOCOPY NUMBER ,
7429 								    p_us_total			IN	OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
7430 								    p_is_total			IN	OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
7431 								    p_group_id		IN	NUMBER DEFAULT NULL,
7432 								    p_no_batch_sql	IN	VARCHAR2 DEFAULT NULL,
7433 								    p_rule_only		IN	VARCHAR2 DEFAULT NULL
7434 								) IS
7435 
7436 			  truncate_flag		Varchar2(1)	:= 'N';
7437 			  l_for_insert			varchar2(1)	:= 'Y';
7438 			  l_for_party			varchar2(1)	:= 'Y';
7439 			  l_for_psite			Varchar2(1)	:= 'N'; -- Added by spamujul for ER#8473903
7440 			  v_party_in_sql		Number := 0;
7441 			  v_acct_in_sql		Number := 0;
7442 			  v_psite_in_sql		Number := 0; -- Added by spamujul for ER#8473903
7443 			  v_party_id			Number;
7444 			   v_block_id			Number;
7445 			   bpsite_id			Number	:= 0 ; -- Added by spamujul for ER#8473903
7446 			   bparty_id			Number := 0;  -- Added by spamujul for ER#8473903
7447 
7448 			v_block_curvar  blocks_curtype;
7449 			 v_rec_var  r_blk_rectype;
7450 
7451 			CURSOR relparty_csr IS
7452 			SELECT party_id
7453 			FROM hz_parties
7454 			WHERE status='A'
7455 			AND  PARTY_TYPE = 'PARTY_RELATIONSHIP';
7456 			 -- Begin fix by spamujul for ER#8473903
7457 			  CURSOR bpsite_csr IS
7458 				 SELECT party_id,
7459 						party_site_id
7460 				  FROM   HZ_PARTY_SITES
7461 				  WHERE party_id = v_party_id
7462 				      AND status ='A'
7463 				      AND NVL(created_by_module,'XXX') <>'SR_ONETIME';
7464 			     -- End fix by spamujul for ER#8473903
7465 
7466 			cid 				number;
7467 			val				VARCHAR2(240) := null;
7468 
7469 BEGIN
7470 		BEGIN
7471 				IF p_group_id IS NULL THEN
7472 					IF p_no_batch_sql = 'Y' THEN
7473 						OPEN v_block_curvar FOR
7474 								SELECT block_id,
7475 										sql_stmnt,
7476 										currency_code
7477 								   FROM csc_prof_blocks_b a
7478 								  WHERE EXISTS ( SELECT null
7479 										   FROM csc_prof_checks_b b
7480 										  WHERE b.select_block_id = a.block_id
7481 										    AND b.select_type = 'B'
7482 										    AND check_id IN (SELECT check_id FROM csc_prof_group_checks))
7483 								    AND SYSDATE BETWEEN Nvl(start_date_active, SYSDATE)
7484 										    AND Nvl(end_date_active, SYSDATE)
7485 								    AND batch_sql_stmnt IS NULL
7486 								    AND block_level  IN ( 'CONTACT','SITE'); -- Included 'SITE' by spamujul for ER#8473903
7487 							      ELSIF p_rule_only = 'Y' THEN
7488 								 OPEN v_block_curvar FOR
7489 								 SELECT block_id,
7490 								 		 sql_stmnt,
7491 										 currency_code
7492 								   FROM csc_prof_blocks_b a
7493 								  WHERE exists ( SELECT b.block_id
7494 										   FROM csc_prof_check_rules_b b, csc_prof_checks_b c
7495 										  WHERE (b.block_id  = a.block_id
7496 											 or b.expr_to_block_id = a.block_id)
7497 										    AND c.select_type = 'T'
7498 										    AND b.check_id = c.check_id)
7499 								    AND Sysdate BETWEEN Nvl(start_date_active, Sysdate)
7500 								    AND Nvl(end_date_active, Sysdate)
7501 								    AND block_level IN ('CONTACT','SITE'); -- Included 'SITE' by spamujul for ER#8473903
7502 					ELSE
7503 							OPEN v_block_curvar FOR
7504 							SELECT block_id,
7505 									sql_stmnt,
7506 									currency_code
7507 							   FROM csc_prof_blocks_b a
7508 							  WHERE exists ( Select b.block_id
7509 									   From csc_prof_check_rules_b b
7510 									  where b.block_id  = a.block_id
7511 									     or b.expr_to_block_id = a.block_id)
7512 							    AND Sysdate BETWEEN Nvl(start_date_active, Sysdate)
7513 							    AND Nvl(end_date_active, Sysdate)
7514 							    AND block_level IN ('CONTACT','SITE'); -- Included 'SITE' by spamujul for ER#8473903
7515 				END IF;
7516 			ELSE
7517 					IF p_no_batch_sql = 'Y' THEN
7518 						OPEN v_block_curvar FOR
7519 								SELECT block_id,
7520 										sql_stmnt,
7521 										currency_code
7522 								   FROM csc_prof_blocks_b a
7523 								  WHERE EXISTS ( SELECT null
7524 										   FROM csc_prof_checks_b b
7525 										  WHERE b.select_block_id = a.block_id
7526 										    AND b.select_type = 'B'
7527 										    AND check_id IN (SELECT check_id FROM csc_prof_group_checks
7528 												      WHERE group_id = p_group_id))
7529 								    AND SYSDATE BETWEEN Nvl(start_date_active, SYSDATE)
7530 										    AND Nvl(end_date_active, SYSDATE)
7531 								    AND batch_sql_stmnt IS NULL
7532 								    AND block_level IN ( 'CONTACT','SITE'); -- Included 'SITE' by spamujul for ER#8473903
7533 					ELSIF p_rule_only = 'Y' THEN
7534 						OPEN v_block_curvar FOR
7535 							 SELECT block_id,
7536 									 sql_stmnt,
7537 									 currency_code
7538 							 FROM csc_prof_blocks_b a
7539 							 WHERE EXISTS ( SELECT b.block_id
7540 									  FROM csc_prof_check_rules_b b, csc_prof_checks_b c
7541 									 WHERE (b.block_id = a.block_id
7542 										OR b.expr_to_block_id = a.block_id)
7543 									   AND c.select_type = 'T'
7544 									   AND b.check_id = c.check_id
7545 									   AND b.check_id IN (SELECT check_id from csc_prof_group_checks
7546 											     WHERE group_id = p_group_id))
7547 							  AND Sysdate BETWEEN Nvl(start_date_active, Sysdate)
7548 							  AND Nvl(end_date_active, Sysdate)
7549 							  AND block_level  IN ('CONTACT','SITE'); -- Included 'SITE' by spamujul for ER#8473903
7550 					ELSE
7551 							OPEN v_block_curvar FOR
7552 							SELECT block_id,
7553 									 sql_stmnt,
7554 									 currency_code
7555 							   FROM csc_prof_blocks_b a
7556 							  WHERE EXISTS ( SELECT b.block_id
7557 									   FROM csc_prof_check_rules_b b
7558 									  WHERE (b.block_id = a.block_id
7559 										 or b.expr_to_block_id = a.block_id)
7560 							   AND check_id IN (Select check_id from csc_prof_group_checks
7561 									     where group_id = p_group_id))
7562 							   AND Sysdate BETWEEN Nvl(start_date_active, Sysdate)
7563 							   AND Nvl(end_date_active, Sysdate)
7564 							   AND block_level IN ('CONTACT','SITE'); -- Included 'SITE' by spamujul for ER#8473903
7565 					END IF;
7566 			END IF;
7567 			LOOP
7568 				FETCH v_block_curvar
7569 				INTO v_rec_var;
7570 				EXIT WHEN v_block_curvar%notfound;
7571 				v_party_in_sql	:=	INSTR(lower(v_rec_var.sql_stmnt),':party_id',1);
7572 				v_psite_in_sql	:=	INSTR(lower(v_rec_var.sql_stmnt),':party_site_id',1);
7573 				v_block_id		:=	v_rec_var.block_id;
7574 			      BEGIN
7575 				      cid := dbms_sql.open_cursor;
7576 				      dbms_sql.parse(cid, v_rec_var.sql_stmnt, dbms_sql.native);
7577 				      dbms_sql.define_column(cid, 1, val, 240);
7578 					OPEN relparty_csr;
7579 						      LOOP
7580 								   FETCH relparty_csr
7581 								   INTO v_party_id;
7582 								   EXIT WHEN relparty_csr%notfound;
7583 								   Evaluate_One_Block(truncate_flag,
7584 												     v_block_id,
7585 												     v_party_id,
7586 												     null,
7587 												     NULL, -- added by spamujul for ER#8473903
7588 												     v_rec_var.sql_stmnt,
7589 												     v_rec_var.currency,
7590 												     p_up_total,
7591 												     p_ip_total,
7592 												     p_ua_total,
7593 												     p_ia_total,
7594 												     p_us_total,-- added by spamujul for ER#8473903
7595 													p_is_total,-- added by spamujul for ER#8473903
7596 												     cid);
7597 								-- Begin fix by spamujul for ER#8473903
7598 								Begin
7599 									   bparty_id :=0;
7600 									   IF (v_psite_in_sql <> 0)  THEN
7601 										       cid := dbms_sql.open_cursor;
7602 										       dbms_sql.parse(cid, v_rec_var.sql_stmnt, dbms_sql.native);
7603 										       dbms_sql.define_column(cid, 1, val, 240);
7604 										       OPEN bpsite_csr;
7605 										       LOOP
7606 											   FETCH bpsite_csr
7607 											   INTO bparty_id, bpsite_id;
7608 											   EXIT WHEN bpsite_csr%notfound;
7609 											   Evaluate_One_Block(truncate_flag,
7610 															    v_block_id,
7611 															    bparty_id,
7612 															    NULL,
7613 															    bpsite_id,
7614 															    v_rec_var.sql_stmnt,
7615 															    v_rec_var.currency,
7616 															    p_up_total,
7617 															    p_ip_total,
7618 															    p_ua_total,
7619 															    p_ia_total,
7620 															    p_us_total,
7621 															    p_is_total
7622 															    ,cid);
7623 										      END LOOP;
7624 										CLOSE bpsite_csr;
7625 									      IF (dbms_sql.is_open(cid)) THEN
7626 										      dbms_sql.close_cursor(cid);
7627 									      End if;
7628 									END IF;
7629 								Exception
7630 										When others then
7631 										  IF (dbms_sql.is_open(cid)) THEN
7632 												      dbms_sql.close_cursor(cid);
7633 										  End if;
7634 										  set_context('Evaluate_Blocks_rel', v_block_id, bparty_id,bpsite_id);
7635 										  g_error := sqlcode || ' ' || sqlerrm;
7636 										  set_context(NULL, g_error);
7637 								End;
7638 							        IF p_is_total <> 0 THEN
7639 									l_for_insert := 'Y';
7640 									l_for_party  := 'N';
7641 									l_for_psite  := 'Y';
7642 									Insert_Update_Block_Results(p_is_total,
7643 																l_for_insert,
7644 																l_for_party
7645 																,l_for_psite
7646 																);
7647 									p_is_total :=0;
7648 								 END IF;
7649 								IF p_us_total <> 0 THEN
7650 									l_for_insert := 'N';
7651 									l_for_party  := 'N';
7652 									l_for_psite  := 'Y';
7653 									Insert_Update_Block_Results 	(p_us_total,
7654 																	 l_for_insert,
7655 																	 l_for_party
7656 																	 ,l_for_psite
7657 																	 );
7658 									p_us_total :=0;
7659 								END IF;
7660 								-- End fix by spamujul for ER#8473903
7661 						END LOOP;
7662 					CLOSE relparty_csr;
7663 				       IF (dbms_sql.is_open(cid)) THEN
7664 					dbms_sql.close_cursor(cid);
7665 				       END IF;
7666 			EXCEPTION
7667 				WHEN others THEN
7668 					  IF (dbms_sql.is_open(cid)) THEN
7669 					      dbms_sql.close_cursor(cid);
7670 					  END IF;
7671 					   IF (bpsite_csr%isopen) THEN
7672 						CLOSE bpsite_csr;
7673 					 END IF;
7674 					  set_context('Evaluate_Blocks_Rel', v_block_id, v_party_id);
7675 					  g_error := sqlcode || ' ' || sqlerrm;
7676 					  set_context(NULL, g_error);
7677 			END;
7678 		END LOOP;
7679 	CLOSE v_block_curvar;
7680 	   -- check if there are still records to be inserted
7681 	   IF p_ip_total <> 0 THEN
7682 		l_for_insert	:= 'Y';
7683 		l_for_party	:= 'Y';
7684 		l_for_psite	:='N' ;  -- Added by spamujul for ER#8473903
7685 		Insert_Update_Block_Results (p_ip_total,
7686 								l_for_insert,
7687 								l_for_party
7688 								,l_for_psite  -- Added by spamujul for ER#8473903
7689 								);
7690 		p_ip_total :=0;
7691 	   END IF;
7692 	   -- check if there are still records to be updated
7693 	   IF p_up_total <> 0 THEN
7694 		l_for_insert	:= 'N';
7695 		l_for_party	:= 'Y';
7696 		l_for_psite	:='N'; -- Added by spamujul for ER#8473903
7697 		Insert_Update_Block_Results(p_up_total,
7698 								l_for_insert,
7699 								l_for_party
7700 								,l_for_psite  -- Added by spamujul for ER#8473903
7701 								);
7702 		p_up_total :=0;
7703 	 END IF;
7704    EXCEPTION
7705 		      WHEN OTHERS THEN
7706 		       IF (v_block_curvar%isopen) THEN
7707 			     CLOSE v_block_curvar;
7708 		       END IF;
7709 		       IF (relparty_csr%isopen) THEN
7710 			      CLOSE relparty_csr;
7711 		       END IF;
7712 			set_context('Evaluate_Blocks_Rel', v_block_id, v_party_id);
7713 		       g_error := sqlcode || ' ' || sqlerrm;
7714 		       set_context(NULL, g_error);
7715 		       table_delete;
7716 		       RAISE;
7717   END;
7718 END Evaluate_Blocks_Rel;
7719 
7720 PROCEDURE Evaluate_Checks_Rel ( errbuf				OUT	NOCOPY VARCHAR2,
7721 						  		       retcode				OUT	NOCOPY NUMBER,
7722 								       p_group_id			IN		NUMBER		DEFAULT NULL,
7723    								      p_no_batch_sql		IN		VARCHAR2		DEFAULT NULL,
7724 								      p_rule_only			IN		VARCHAR2		DEFAULT NULL ) IS
7725 
7726 			  chk_id				Number;
7727 			  chk_name			Varchar2(240);
7728 			  cparty_id			Number;
7729 			  cpsite_id			Number; -- added by spamujul for ER#8473903
7730 			  sel_type			Varchar2(3);
7731 			  sel_blk_id			Number;
7732 			  data_type			Varchar2(90);
7733 			  fmt_mask			Varchar2(90);
7734 			  rule				Varchar2(32767);
7735 			  chk_u_l_flag		Varchar2(3);
7736 			  Thd_grade			Varchar2(9);
7737 			  truncate_flag		Varchar2(1) := 'N';
7738 			  acct_flag			Varchar2(1);
7739 			  blk_id				Number 		:= null;
7740 			  blk_name			Varchar2(240)	:= null;
7741 			  sql_stmt			Varchar2(2000)	:= null;
7742 			  curr_code			Varchar2(15)	:= null;
7743 			  v_party_in_sql		Number := 0;
7744 			  v_psite_in_sql		Number := 0;	 -- added by spamujul for ER#8473903
7745 			  l_for_insert			varchar2(1) := 'Y';
7746 			  l_for_party			varchar2(1) := 'Y';
7747 			  l_for_psite			Varchar2(1) := 'N'; -- added by spamujul for ER#8473903
7748 			  l_up_total			Number := 0;
7749 			  l_ip_total			Number := 0;
7750 			  l_ua_total			Number := 0;
7751 			  l_ia_total			Number := 0;
7752 			  l_us_total			Number := 0;  -- added by spamujul for ER#8473903
7753 			  l_is_total			Number := 0;  -- added by spamujul for ER#8473903
7754 			  v_party_id			Number;
7755 			  v_check_level		Varchar2(10);
7756 			  v_checks_curvar	checks_curtype;
7757 			  v_rec_var			r_chk_rectype;
7758 
7759 			  CURSOR block_csr IS
7760 			      SELECT block_id, sql_stmnt, currency_code
7761 			      FROM csc_prof_blocks_b a
7762 			      WHERE a.block_id = sel_blk_id;
7763 
7764 			   CURSOR crelparty_csr IS
7765 			      SELECT party_id
7766 			      FROM hz_parties
7767 			      WHERE status='A'
7768 			      AND  party_type = 'PARTY_RELATIONSHIP';
7769 			      -- Begin fix by spamujul for ER#8473903
7770 			  CURSOR cpsite_csr IS
7771 				 SELECT party_id,
7772 						party_site_id
7773 				  FROM   HZ_PARTY_SITES
7774 				  WHERE party_id = v_party_id
7775 				      AND status ='A'
7776 				      AND NVL(created_by_module,'XXX') <>'SR_ONETIME';
7777 			     -- End fix by spamujul for ER#8473903
7778 
7779 			cid 				number;
7780 			val				VARCHAR2(240) := null;
7781 
7782 BEGIN
7783 		   l_ip_total := 0;
7784 		   l_up_total := 0;
7785 		   l_ia_total := 0;
7786 		   l_ua_total := 0;
7787 		   l_us_total  := 0;  -- added by spamujul for ER#8473903
7788 		   l_is_total   := 0;  -- added by spamujul for ER#8473903
7789 		  IF p_group_id IS NULL THEN
7790 			      IF p_no_batch_sql = 'Y' THEN
7791 					OPEN v_checks_curvar FOR
7792 						 SELECT check_id,
7793 								  select_type,
7794 								  select_block_id,
7795 								  data_type,
7796 								  format_mask,
7797 								  check_upper_lower_flag,
7798 							          threshold_grade, check_level
7799 						   FROM csc_prof_checks_b a
7800 						  WHERE check_id IN (SELECT check_id
7801 											 FROM csc_prof_group_checks)
7802 											    AND select_type = 'B'
7803 											    AND check_level  IN ( 'CONTACT','SITE') -- Included by spamujul for  ER#8473903
7804 											    AND EXISTS (SELECT null
7805 													  FROM csc_prof_blocks_b b
7806 													 WHERE a.select_block_id = b.block_id
7807 													   AND b.batch_sql_stmnt IS NULL)
7808 											    AND SYSDATE BETWEEN Nvl(start_date_active, SYSDATE)
7809 													    AND Nvl(end_date_active, SYSDATE);
7810 			     ELSIF p_rule_only = 'Y' THEN
7811 					 OPEN v_checks_curvar FOR
7812 							SELECT check_id,
7813 									select_type,
7814 									select_block_id,
7815 									data_type,
7816 									format_mask,
7817 									check_upper_lower_flag,
7818 									threshold_grade,
7819 									check_level
7820 							   FROM csc_prof_checks_b
7821 							  WHERE check_level  IN ( 'CONTACT','SITE') -- Included by spamujul for  ER#8473903
7822 							    AND select_type = 'T'
7823 							    AND Sysdate BETWEEN Nvl(start_date_active, Sysdate)
7824 								AND Nvl(end_date_active, Sysdate);
7825 			      ELSE
7826 					 OPEN v_checks_curvar FOR
7827 					 SELECT check_id,
7828 							  select_type,
7829 							  select_block_id,
7830 							 data_type,
7831 							 format_mask,
7832 							 check_upper_lower_flag,
7833 							 threshold_grade,
7834 						         check_level
7835 					   FROM csc_prof_checks_b
7836 					  WHERE check_level  IN ( 'CONTACT','SITE') -- Included by spamujul for  ER#8473903
7837 					    AND Sysdate BETWEEN Nvl(start_date_active, Sysdate)
7838 						AND Nvl(end_date_active, Sysdate);
7839 			      END IF;
7840 		ELSE
7841 			   IF p_no_batch_sql = 'Y' THEN
7842 				 OPEN v_checks_curvar FOR
7843 					 SELECT check_id,
7844 							  select_type,
7845 							  select_block_id,
7846 							  data_type,
7847 							  format_mask,
7848 							  check_upper_lower_flag,
7849 							  threshold_grade,
7850 							  check_level
7851 					   FROM csc_prof_checks_b a
7852 					  WHERE check_id IN (SELECT check_id
7853 										 FROM csc_prof_group_checks
7854 										WHERE group_id = p_group_id)
7855 										    AND select_type = 'B'
7856 										    AND check_level IN ( 'CONTACT','SITE') -- Included by spamujul for  ER#8473903'
7857 										    AND EXISTS (SELECT null
7858 												  FROM csc_prof_blocks_b b
7859 												 WHERE a.select_block_id = b.block_id
7860 												   AND b.batch_sql_stmnt IS NULL)
7861 										    AND SYSDATE BETWEEN Nvl(start_date_active, SYSDATE)
7862 												    AND Nvl(end_date_active, SYSDATE);
7863 			ELSIF p_rule_only = 'Y' THEN
7864 				 OPEN v_checks_curvar FOR
7865 					  SELECT check_id,
7866 							   select_type,
7867 							   select_block_id,
7868 							   data_type,
7869 							   format_mask,
7870 							   check_upper_lower_flag,
7871 							   threshold_grade,
7872 							  check_level
7873 					    FROM csc_prof_checks_b
7874 					   WHERE check_level IN ( 'CONTACT','SITE') -- Included by spamujul for  ER#8473903'
7875 					     AND select_type = 'T'
7876 					     AND check_id in (select check_id
7877 										from csc_prof_group_checks
7878 									       where group_id = p_group_id)
7879 							     And Sysdate BETWEEN Nvl(start_date_active, Sysdate)
7880 							     AND Nvl(end_date_active, Sysdate);
7881 			ELSE
7882 				 OPEN v_checks_curvar FOR
7883 					  SELECT check_id,
7884 							   select_type,
7885 							   select_block_id,
7886 							   data_type,
7887 							   format_mask,
7888 							   check_upper_lower_flag,
7889 							   threshold_grade,
7890 							   check_level
7891 					    FROM csc_prof_checks_b
7892 					   WHERE check_level IN ( 'CONTACT','SITE') -- Included by spamujul for  ER#8473903'
7893 					     AND check_id in (select check_id from csc_prof_group_checks
7894 							       where group_id = p_group_id)
7895 					     And Sysdate BETWEEN Nvl(start_date_active, Sysdate)
7896 					     AND Nvl(end_date_active, Sysdate);
7897 			      END IF;
7898 		END IF;
7899 		   LOOP
7900 			       FETCH v_checks_curvar INTO v_rec_var;
7901 				sel_type := v_rec_var.select_type;
7902 				chk_id := v_rec_var.check_id;
7903 				sel_blk_id := v_rec_var.select_block_id;
7904 				v_check_level:= v_rec_var.check_level;
7905 				data_type:=v_rec_var.data_type;
7906 				fmt_mask:=v_rec_var.format_mask;
7907 				chk_u_l_flag:= v_rec_var.check_upper_lower_flag;
7908 				thd_grade := v_rec_var.threshold_grade;
7909 				EXIT WHEN v_checks_curvar%notfound;
7910 			       IF (sel_type = 'T') THEN
7911 				   build_rule('N',chk_id,v_check_level, rule);
7912 			       ELSIF (sel_type = 'B') THEN
7913 				      Open block_csr;
7914 				      Fetch block_csr
7915 				      INTO blk_id,
7916 						sql_stmt,
7917 						curr_code;
7918 				      Close block_csr;
7919 				     IF sql_stmt IS NOT NULL Then
7920 					   v_party_in_sql := INSTR(lower(sql_stmt),':party_id',1);
7921 					    v_psite_in_sql := INSTR(lower(sql_stmt),':party_site_id',1); -- Added by spamujul for  ER#8473903'
7922 				     Else
7923 				       v_party_in_sql := 0;
7924 				       v_psite_in_sql := 0; -- Added by spamujul for  ER#8473903'
7925 				     End if;
7926 				   END IF;
7927 
7928 		BEGIN
7929 				IF ((sel_type='B' ) OR  (sel_type='T') ) THEN
7930 					cid := dbms_sql.open_cursor;
7931 					IF (sel_type = 'B') THEN
7932 						 dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
7933 					ELSIF (sel_type = 'T') then
7934 						dbms_sql.parse(cid, rule, dbms_sql.native);
7935 					END IF;
7936 					dbms_sql.define_column(cid,1,val,240);
7937 					OPEN crelparty_csr;
7938 						 LOOP
7939 							FETCH crelparty_csr INTO cparty_id;
7940 							EXIT WHEN crelparty_csr%notfound;
7941 							Evaluate_One_Check(truncate_flag,
7942 											   chk_id,
7943 											   cparty_id,
7944 											   null,
7945 											   NULL,  -- added by spamujul for ER#8473903
7946 											   v_check_level,
7947 											   sel_type,
7948 											   sel_blk_id,
7949 											   data_type,
7950 											   fmt_mask,
7951 											   chk_u_l_flag,
7952 											   Thd_grade,
7953 											   rule,
7954 											   blk_id,
7955 											   sql_stmt,
7956 											   curr_code,
7957 											   l_up_total,
7958 											   l_ip_total,
7959 											   l_ua_total,
7960 											   l_ia_total ,
7961 											   l_us_total,  -- added by spamujul for ER#8473903
7962 											   l_is_total,  -- added by spamujul for ER#8473903
7963 											   cid
7964 											   );
7965 							-- Begin fix by spamujul for ER#8473903
7966 							Begin
7967 								 v_party_id:=cparty_id;
7968 								 IF ((sel_type='B' ) OR (sel_type='T') ) AND v_check_level='SITE' THEN
7969 									IF ((v_psite_in_sql = 0) AND sel_type = 'B') AND v_check_level='SITE' THEN
7970 										NULL;
7971 									ELSE
7972 										cid := dbms_sql.open_cursor;
7973 										IF (sel_type = 'B') THEN
7974 											dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
7975 										ELSIF (sel_type = 'T') THEN
7976 											dbms_sql.parse(cid, rule, dbms_sql.native);
7977 										END IF;
7978 											 dbms_sql.define_column(cid,1,val,240);
7979 										OPEN  cpsite_csr;
7980 												LOOP
7981 													FETCH  cpsite_csr
7982 													INTO cparty_id,
7983 														 cpsite_id;
7984 													EXIT WHEN cpsite_csr%notfound;
7985 													 Evaluate_One_Check(truncate_flag,
7986 																       chk_id,
7987 																       cparty_id,
7988 																       NULL, -- For site level profile check, account parameter should be null
7989 																       cpsite_id,
7990 																       v_check_level,
7991 																       sel_type,
7992 																       sel_blk_id,
7993 																       data_type,
7994 																	fmt_mask,
7995 																	chk_u_l_flag,
7996 																	Thd_grade,
7997 																	rule,
7998 																	blk_id,
7999 																	sql_stmt,
8000 																	curr_code,
8001 																	l_up_total,
8002 																	l_ip_total,
8003 																	l_ua_total,
8004 																	l_ia_total ,
8005 																	l_us_total,
8006 																	l_is_total,
8007 																	cid);
8008 													END LOOP;
8009 												CLOSE cpsite_csr;
8010 												IF (dbms_sql.is_open(cid)) THEN
8011 													dbms_sql.close_cursor(cid);
8012 												 end if;
8013 									END IF;
8014 								END IF;
8015 						 Exception
8016 								When others then
8017 									 IF (dbms_sql.is_open(cid)) THEN
8018 										dbms_sql.close_cursor(cid);
8019 									end if;
8020 									set_context('Evaluate_Checks_Rel',
8021 									'chk_id=>'||to_char(chk_id),
8022 									'party_id=>'||to_char(cparty_id),
8023 									'account_id=>'|| NULL
8024 									,'party_site_id =>'||to_char(cpsite_id) -- added by spamujul for ER#8473903
8025 									);
8026 									g_error := sqlcode || ' ' || sqlerrm;
8027 									set_context(NULL, g_error);
8028 						End;
8029 							-- End fix by spamujul for  ER#8473903
8030 				END LOOP;
8031 			CLOSE crelparty_csr;
8032 			-- Begin fix by spamujul for ER#8473903
8033 			IF l_is_total <> 0 THEN
8034 				 l_for_insert := 'Y';
8035 				 l_for_party  := 'N';
8036 				 l_for_psite   := 'Y';-- added by spamujul for ER#8473903
8037 				 Insert_Update_Check_Results(l_is_total,
8038 										  l_for_insert,
8039 										  l_for_party
8040 										 ,l_for_psite -- added by spamujul for ER#8473903
8041 										  );
8042 				 l_is_total :=0;
8043 		   END IF;
8044 			   IF l_us_total <> 0 THEN
8045 			     l_for_insert := 'N';
8046 			     l_for_party  := 'N';
8047 			     l_for_psite   := 'Y';-- added by spamujul for ER#8473903
8048 			     Insert_Update_Check_Results(l_us_total,
8049 										 l_for_insert,
8050 										 l_for_party
8051 										,l_for_psite -- added by spamujul for ER#8473903
8052 										 );
8053 			     l_us_total :=0;
8054 			  END IF;
8055 		    -- End fix by spamujul for ER#8473903
8056 		      IF (dbms_sql.is_open(cid)) THEN
8057 			  dbms_sql.close_cursor(cid);
8058 		      END IF;
8059 				 END IF;
8060 		Exception
8061 				When others then
8062 				  IF (dbms_sql.is_open(cid)) THEN
8063 				      dbms_sql.close_cursor(cid);
8064 				  end if;
8065 				  set_context('Evaluate_Checks_Rel',
8066 					'chk_id			=>'||to_char(chk_id),
8067 					'party_id			=>'||to_char(cparty_id),
8068 					'account_id		=>'||NULL,
8069 					'party_site_id	=>'||NULL  -- added by spamujul for ER#8473903
8070 					);
8071 				  g_error := sqlcode || ' ' || sqlerrm;
8072 				  set_context(NULL, g_error);
8073 		End;
8074    END LOOP;
8075    CLOSE v_checks_curvar;
8076    -- check if there are still records to be inserted
8077    IF l_ip_total <> 0 THEN
8078 	l_for_insert := 'Y';
8079 	l_for_party  := 'Y';
8080 	l_for_psite   := 'N';-- added by spamujul for ER#8473903
8081 	Insert_Update_Check_Results(l_ip_total,
8082 						       l_for_insert,
8083 						       l_for_party
8084 						       ,l_for_psite  -- added by spamujul for ER#8473903
8085 						       );
8086 	l_ip_total :=0;
8087    END IF;
8088    -- check if there are still records to be updated
8089    IF l_up_total <> 0 THEN
8090 	l_for_insert := 'N';
8091 	l_for_party  := 'Y';
8092 	l_for_psite   := 'N';-- added by spamujul for ER#8473903
8093 	Insert_Update_Check_Results (l_up_total,
8094 							  l_for_insert,
8095 							  l_for_party
8096 							 ,l_for_psite -- added by spamujul for ER#8473903
8097 							  );
8098 	l_up_total :=0;
8099    END IF;
8100 
8101    COMMIT;
8102 
8103    -- Return 0 for successful completion, 1 for warnings, 2 for error
8104    IF (error_flag) THEN
8105       errbuf := Sqlerrm;
8106       retcode := 2;
8107    ELSIF (warning_msg <> '') THEN
8108       errbuf := warning_msg;
8109       retcode := 1;
8110    ELSE
8111       errbuf := '';
8112       retcode := 0;
8113    END IF;
8114 
8115    IF (debug) THEN
8116       fnd_file.close;
8117    END IF;
8118 
8119    EXCEPTION
8120       WHEN OTHERS THEN
8121          ROLLBACK;
8122          IF (v_checks_curvar%isopen) THEN
8123 	    CLOSE v_checks_curvar;
8124 	 END IF;
8125 	 IF (crelparty_csr%isopen) THEN
8126 	    CLOSE crelparty_csr;
8127 	 END IF;
8128 
8129 	 IF (debug) THEN
8130 	    fnd_file.close;
8131 	 END IF;
8132          errbuf := Sqlerrm;
8133          retcode := 2;
8134 
8135 	 g_error := sqlcode || ' ' || sqlerrm;
8136 	 fnd_file.put_line(fnd_file.log , g_error);
8137 
8138 END Evaluate_Checks_Rel;
8139 
8140 /* R12 Employee HelpDesk Modifications */
8141 
8142 PROCEDURE Evaluate_Blocks_Emp( p_up_total      IN OUT NOCOPY NUMBER ,
8143 								    p_ip_total      IN OUT NOCOPY NUMBER ,
8144 								    p_ua_total      IN OUT NOCOPY NUMBER ,
8145 								    p_ia_total      IN OUT NOCOPY NUMBER ,
8146 								    p_us_total	  IN OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
8147 								    p_is_total	  IN OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
8148 								    p_group_id      IN NUMBER DEFAULT NULL,
8149 								    p_no_batch_sql  IN VARCHAR2 DEFAULT NULL,
8150 								    p_rule_only     IN VARCHAR2 DEFAULT NULL
8151 								) IS
8152   truncate_flag		Varchar2(1):= 'N';
8153   l_for_insert		varchar2(1) := 'Y';
8154   l_for_party		varchar2(1) := 'Y';
8155   l_for_psite		Varchar2(1) := 'N'; -- Added by spamujul for ER#8473903
8156   v_employee_in_sql	Number := 0;
8157   v_party_id            Number;
8158   v_block_id            Number;
8159   v_block_curvar  blocks_curtype;
8160   v_rec_var  r_blk_rectype;
8161 
8162    CURSOR employee_csr IS
8163       SELECT person_id
8164       FROM per_workforce_current_x;
8165     cid 	number;
8166     val		VARCHAR2(240) := null;
8167 BEGIN
8168    BEGIN
8169   IF p_group_id IS NULL THEN
8170       IF p_no_batch_sql = 'Y' THEN
8171          OPEN v_block_curvar FOR
8172          SELECT block_id, sql_stmnt, currency_code
8173            FROM csc_prof_blocks_b a
8174           WHERE EXISTS ( SELECT null
8175                            FROM csc_prof_checks_b b
8176                           WHERE b.select_block_id = a.block_id
8177                             AND b.select_type = 'B'
8178                             AND check_id IN (SELECT check_id FROM csc_prof_group_checks))
8179 			   AND SYSDATE BETWEEN Nvl(start_date_active, SYSDATE)
8180                             AND Nvl(end_date_active, SYSDATE)
8181 		            AND batch_sql_stmnt IS NULL
8182                             AND block_level = 'EMPLOYEE';
8183       ELSIF p_rule_only = 'Y' THEN
8184          OPEN v_block_curvar FOR
8185          SELECT block_id, sql_stmnt, currency_code
8186            FROM csc_prof_blocks_b a
8187           WHERE exists ( SELECT b.block_id
8188                            FROM csc_prof_check_rules_b b, csc_prof_checks_b c
8189                           WHERE (b.block_id  = a.block_id
8190                                  or b.expr_to_block_id = a.block_id)
8191                             AND c.select_type = 'T'
8192                             AND b.check_id = c.check_id)
8193                             AND Sysdate BETWEEN Nvl(start_date_active, Sysdate)
8194                             AND Nvl(end_date_active, Sysdate)
8195                             AND block_level ='EMPLOYEE';
8196       ELSE
8197          OPEN v_block_curvar FOR
8198          SELECT block_id, sql_stmnt, currency_code
8199            FROM csc_prof_blocks_b a
8200           WHERE exists ( Select b.block_id
8201                            From csc_prof_check_rules_b b
8202                           where b.block_id  = a.block_id
8203                              or b.expr_to_block_id = a.block_id)
8204                            AND Sysdate BETWEEN Nvl(start_date_active, Sysdate)
8205                            AND Nvl(end_date_active, Sysdate)
8206                            AND block_level ='EMPLOYEE';
8207       END IF;
8208   ELSE
8209       IF p_no_batch_sql = 'Y' THEN
8210          OPEN v_block_curvar FOR
8211          SELECT block_id, sql_stmnt, currency_code
8212            FROM csc_prof_blocks_b a
8213           WHERE EXISTS ( SELECT null
8214                            FROM csc_prof_checks_b b
8215                           WHERE b.select_block_id = a.block_id
8216                             AND b.select_type = 'B'
8217                             AND check_id IN (SELECT check_id FROM csc_prof_group_checks
8218                                               WHERE group_id = p_group_id))
8219                             AND SYSDATE BETWEEN Nvl(start_date_active, SYSDATE)
8220                             AND Nvl(end_date_active, SYSDATE)
8221                             AND batch_sql_stmnt IS NULL
8222                             AND block_level = 'EMPLOYEE';
8223       ELSIF p_rule_only = 'Y' THEN
8224          OPEN v_block_curvar FOR
8225          SELECT block_id, sql_stmnt, currency_code
8226          FROM csc_prof_blocks_b a
8227          WHERE EXISTS ( SELECT b.block_id
8228                           FROM csc_prof_check_rules_b b, csc_prof_checks_b c
8229                          WHERE (b.block_id = a.block_id
8230                                 OR b.expr_to_block_id = a.block_id)
8231                            AND c.select_type = 'T'
8232                            AND b.check_id = c.check_id
8233                            AND b.check_id IN (SELECT check_id from csc_prof_group_checks
8234                                              WHERE group_id = p_group_id))
8235                            AND Sysdate BETWEEN Nvl(start_date_active, Sysdate)
8236                            AND Nvl(end_date_active, Sysdate)
8237                            AND block_level = 'EMPLOYEE';
8238       ELSE
8239          OPEN v_block_curvar FOR
8240          SELECT block_id, sql_stmnt, currency_code
8241            FROM csc_prof_blocks_b a
8242           WHERE EXISTS ( SELECT b.block_id
8243                            FROM csc_prof_check_rules_b b
8244                           WHERE (b.block_id = a.block_id
8245                                  or b.expr_to_block_id = a.block_id)
8246                           AND check_id IN (Select check_id from csc_prof_group_checks
8247                              where group_id = p_group_id))
8248                           AND Sysdate BETWEEN Nvl(start_date_active, Sysdate)
8249                           AND Nvl(end_date_active, Sysdate)
8250                           AND block_level ='EMPLOYEE';
8251       END IF;
8252 
8253    END IF;
8254 
8255    LOOP
8256       FETCH v_block_curvar INTO v_rec_var;
8257       EXIT WHEN v_block_curvar%notfound;
8258       v_employee_in_sql := INSTR(lower(v_rec_var.sql_stmnt),':employee_id',1);
8259       v_block_id := v_rec_var.block_id;
8260       BEGIN
8261 	      cid := dbms_sql.open_cursor;
8262 	      dbms_sql.parse(cid, v_rec_var.sql_stmnt, dbms_sql.native);
8263 	      dbms_sql.define_column(cid, 1, val, 240);
8264 
8265 	      OPEN employee_csr;
8266 	      LOOP
8267 		   FETCH employee_csr INTO v_party_id;
8268 		   EXIT WHEN employee_csr%notfound;
8269 
8270 		   Evaluate_One_Block(truncate_flag,
8271 						    v_block_id,
8272 						    v_party_id,
8273 					  	    null,
8274 						    NULL,-- added by spamujul for ER#8473903
8275 						    v_rec_var.sql_stmnt,
8276 						    v_rec_var.currency,
8277 					            p_up_total,
8278 						    p_ip_total,
8279 						    p_ua_total,
8280 						    p_ia_total,
8281 						    p_us_total, -- added by spamujul for ER#8473903
8282 						    p_is_total, -- added by spamujul for ER#8473903
8283 						    cid);
8284 	      END LOOP;
8285 	      CLOSE employee_csr;
8286 
8287 	      IF (dbms_sql.is_open(cid)) THEN
8288 	        dbms_sql.close_cursor(cid);
8289 	      END IF;
8290 
8291      EXCEPTION
8292      WHEN others THEN
8293           IF (dbms_sql.is_open(cid)) THEN
8294               dbms_sql.close_cursor(cid);
8295           END IF;
8296 
8297           set_context('Evaluate_Blocks_Emp', v_block_id, v_party_id);
8298           g_error := sqlcode || ' ' || sqlerrm;
8299           set_context(NULL, g_error);
8300      END;
8301 
8302    END LOOP;
8303    CLOSE v_block_curvar;
8304 
8305    -- check if there are still records to be inserted
8306    IF p_ip_total <> 0 THEN
8307 	l_for_insert	:= 'Y';
8308 	l_for_party	:= 'Y';
8309 	l_for_psite	:= 'N'; -- Added by spamujul for ER#8473903
8310 	Insert_Update_Block_Results(p_ip_total,
8311 							l_for_insert,
8312 							l_for_party
8313 							,l_for_psite  -- Added by spamujul for ER#8473903
8314 							);
8315 	p_ip_total :=0;
8316    END IF;
8317    -- check if there are still records to be updated
8318    IF p_up_total <> 0 THEN
8319 	l_for_insert := 'N';
8320 	l_for_party  := 'Y';
8321 	l_for_psite	:= 'N'; -- Added by spamujul for ER#8473903
8322 	Insert_Update_Block_Results(p_up_total,
8323 							l_for_insert,
8324 							l_for_party
8325 							,l_for_psite  -- Added by spamujul for ER#8473903
8326 							);
8327 	p_up_total :=0;
8328    END IF;
8329 
8330 
8331    EXCEPTION
8332       WHEN OTHERS THEN
8333        IF (v_block_curvar%isopen) THEN
8334 	     CLOSE v_block_curvar;
8335        END IF;
8336        IF (employee_csr%isopen) THEN
8337 	      CLOSE employee_csr;
8338        END IF;
8339 
8340        set_context('Evaluate_Blocks_Emp', v_block_id, v_party_id);
8341        g_error := sqlcode || ' ' || sqlerrm;
8342        set_context(NULL, g_error);
8343        table_delete;
8344        RAISE;
8345   END;
8346 
8347 END Evaluate_Blocks_Emp;
8348 
8349 PROCEDURE Evaluate_Checks_Emp ( errbuf	OUT	NOCOPY VARCHAR2,
8350 									retcode	OUT	NOCOPY NUMBER,
8351 									p_group_id  IN NUMBER   DEFAULT NULL,
8352 									p_no_batch_sql  IN VARCHAR2 DEFAULT NULL,
8353 									p_rule_only     IN VARCHAR2 DEFAULT NULL ) IS
8354   chk_id				Number;
8355   chk_name			Varchar2(240);
8356   cparty_id			Number;
8357   sel_type			Varchar2(3);
8358   sel_blk_id			Number;
8359   data_type			Varchar2(90);
8360   fmt_mask			Varchar2(90);
8361   rule				Varchar2(32767);
8362   chk_u_l_flag		Varchar2(3);
8363   Thd_grade			Varchar2(9);
8364   truncate_flag		Varchar2(1) := 'N';
8365   acct_flag			Varchar2(1);
8366   blk_id				Number 		:= null;
8367   blk_name			Varchar2(240)	:= null;
8368   sql_stmt			Varchar2(2000)	:= null;
8369   curr_code			Varchar2(15)	:= null;
8370   v_employee_in_sql     Number :=0;
8371   l_for_insert			varchar2(1) := 'Y';
8372   l_for_party			varchar2(1) := 'Y';
8373   l_for_psite			Varchar2(1) := 'N'; -- Added by spamujul for ER#8473903
8374   l_up_total			Number := 0;
8375   l_ip_total			Number := 0;
8376   l_ua_total			Number := 0;
8377   l_ia_total			Number := 0;
8378   l_us_total			Number := 0;  -- added by spamujul for ER#8473903
8379   l_is_total			Number := 0;  -- added by spamujul for ER#8473903
8380   v_party_id			Number;
8381   v_check_level		Varchar2(10);
8382     v_checks_curvar  checks_curtype;
8383   v_rec_var  r_chk_rectype;
8384 
8385   CURSOR block_csr IS
8386       SELECT block_id, sql_stmnt, currency_code
8387       FROM csc_prof_blocks_b a
8388       WHERE a.block_id = sel_blk_id;
8389 
8390    CURSOR employee_csr IS
8391       SELECT person_id
8392       FROM per_workforce_current_x;
8393 
8394 
8395     cid 	number;
8396     val		VARCHAR2(240) := null;
8397 
8398 BEGIN
8399    l_ip_total := 0;
8400    l_up_total := 0;
8401    l_ia_total := 0;
8402    l_ua_total := 0;
8403    l_us_total := 0;  -- added by spamujul for ER#8473903
8404    l_is_total   := 0;  -- added by spamujul for ER#8473903
8405    IF p_group_id IS NULL THEN
8406       IF p_no_batch_sql = 'Y' THEN
8407          OPEN v_checks_curvar FOR
8408          SELECT check_id, select_type, select_block_id,
8409                 data_type, format_mask, check_upper_lower_flag,
8410                 threshold_grade, check_level
8411            FROM csc_prof_checks_b a
8412            WHERE check_id IN (SELECT check_id FROM csc_prof_group_checks)
8413             AND select_type = 'B'
8414             AND check_level = 'EMPLOYEE'
8415             AND EXISTS (SELECT null
8416                           FROM csc_prof_blocks_b b
8417                          WHERE a.select_block_id = b.block_id
8418                            AND b.batch_sql_stmnt IS NULL)
8419             AND SYSDATE BETWEEN Nvl(start_date_active, SYSDATE)
8420                             AND Nvl(end_date_active, SYSDATE);
8421       ELSIF p_rule_only = 'Y' THEN
8422          OPEN v_checks_curvar FOR
8423          SELECT check_id, select_type, select_block_id,
8424                 data_type, format_mask,check_upper_lower_flag,threshold_grade,
8425                 check_level
8426            FROM csc_prof_checks_b
8427           WHERE check_level ='EMPLOYEE'
8428             AND select_type = 'T'
8429             AND Sysdate BETWEEN Nvl(start_date_active, Sysdate)
8430                 AND Nvl(end_date_active, Sysdate);
8431       ELSE
8432          OPEN v_checks_curvar FOR
8433          SELECT check_id, select_type, select_block_id,
8434                 data_type, format_mask,check_upper_lower_flag,threshold_grade,
8435                 check_level
8436            FROM csc_prof_checks_b
8437           WHERE check_level ='EMPLOYEE'
8438             AND Sysdate BETWEEN Nvl(start_date_active, Sysdate)
8439                 AND Nvl(end_date_active, Sysdate);
8440       END IF;
8441    ELSE
8442       IF p_no_batch_sql = 'Y' THEN
8443          OPEN v_checks_curvar FOR
8444          SELECT check_id, select_type, select_block_id,
8445                 data_type, format_mask,check_upper_lower_flag,
8446 	        threshold_grade, check_level
8447            FROM csc_prof_checks_b a
8448           WHERE check_id IN (SELECT check_id FROM csc_prof_group_checks
8449                               WHERE group_id = p_group_id)
8450             AND select_type = 'B'
8451             AND check_level = 'EMPLOYEE'
8452             AND EXISTS (SELECT null
8453                           FROM csc_prof_blocks_b b
8454                          WHERE a.select_block_id = b.block_id
8455                            AND b.batch_sql_stmnt IS NULL)
8456             AND SYSDATE BETWEEN Nvl(start_date_active, SYSDATE)
8457                             AND Nvl(end_date_active, SYSDATE);
8458       ELSIF p_rule_only = 'Y' THEN
8459          OPEN v_checks_curvar FOR
8460           SELECT check_id, select_type, select_block_id,
8461                  data_type, format_mask,check_upper_lower_flag,threshold_grade,
8462                  check_level
8463             FROM csc_prof_checks_b
8464            WHERE check_level = 'EMPLOYEE'
8465              AND select_type = 'T'
8466              AND check_id in (select check_id from csc_prof_group_checks
8467                                where group_id = p_group_id)
8468              And Sysdate BETWEEN Nvl(start_date_active, Sysdate)
8469 	     AND Nvl(end_date_active, Sysdate);
8470       ELSE
8471          OPEN v_checks_curvar FOR
8472           SELECT check_id, select_type, select_block_id,
8473                  data_type, format_mask,check_upper_lower_flag,threshold_grade,
8474                  check_level
8475             FROM csc_prof_checks_b
8476            WHERE check_level = 'EMPLOYEE'
8477              AND check_id in (select check_id from csc_prof_group_checks
8478                                where group_id = p_group_id)
8479              And Sysdate BETWEEN Nvl(start_date_active, Sysdate)
8480 	     AND Nvl(end_date_active, Sysdate);
8481       END IF;
8482    END IF;
8483 
8484    LOOP
8485        FETCH v_checks_curvar INTO v_rec_var;
8486         sel_type := v_rec_var.select_type;
8487         chk_id := v_rec_var.check_id;
8488         sel_blk_id := v_rec_var.select_block_id;
8489         v_check_level:= v_rec_var.check_level;
8490         data_type:=v_rec_var.data_type;
8491         fmt_mask:=v_rec_var.format_mask;
8492         chk_u_l_flag:= v_rec_var.check_upper_lower_flag;
8493         thd_grade := v_rec_var.threshold_grade;
8494 
8495        EXIT WHEN v_checks_curvar%notfound;
8496        IF (sel_type = 'T') THEN
8497    	   build_rule('N',chk_id,v_check_level, rule);
8498        ELSIF (sel_type = 'B') THEN
8499 	      Open block_csr;
8500 	      Fetch block_csr INTO blk_id, sql_stmt, curr_code;
8501 	      Close block_csr;
8502 
8503 	     IF sql_stmt IS NOT NULL Then
8504 	       v_employee_in_sql := INSTR(lower(sql_stmt),':employee_id',1);
8505 	     Else
8506 	       v_employee_in_sql := 0;
8507 	     End if;
8508 	   END IF;
8509 
8510       BEGIN
8511 
8512         IF ((sel_type='B' ) OR  (sel_type='T') ) THEN
8513            cid := dbms_sql.open_cursor;
8514 
8515 
8516 	     IF (sel_type='B') THEN
8517 
8518                 dbms_sql.parse(cid, sql_stmt, dbms_sql.native);
8519 	      ELSIF (sel_type = 'T') THEN
8520 	         dbms_sql.parse(cid, rule, dbms_sql.native);
8521              END IF;
8522 
8523     	        dbms_sql.define_column(cid,1,val,240);
8524     	    OPEN employee_csr;
8525 
8526 	       LOOP
8527 	        FETCH employee_csr INTO cparty_id;
8528 	        EXIT WHEN employee_csr%notfound;
8529                 Evaluate_One_Check(truncate_flag,
8530 						   chk_id,
8531 						   cparty_id,
8532 						   null,
8533 						   NULL,  -- added by spamujul for ER#8473903
8534 						   v_check_level,
8535 						    sel_type,
8536 						    sel_blk_id,
8537 						    data_type,
8538 						    fmt_mask,
8539 						    chk_u_l_flag,
8540 						    Thd_grade,
8541 						    rule,
8542 						    blk_id,
8543 						    sql_stmt,
8544 						    curr_code,
8545 						    l_up_total,
8546 						    l_ip_total,
8547 						    l_ua_total,
8548 						    l_ia_total ,
8549 						    l_us_total,  -- added by spamujul for ER#8473903
8550 						    l_is_total,  -- added by spamujul for ER#8473903
8551 						    cid);
8552 	       END LOOP;
8553 	       CLOSE employee_csr;
8554  	      IF (dbms_sql.is_open(cid)) THEN
8555 	          dbms_sql.close_cursor(cid);
8556 	      END IF;
8557         END IF;
8558 
8559 
8560           IF (dbms_sql.is_open(cid)) THEN
8561               dbms_sql.close_cursor(cid);
8562           end if;
8563 
8564     End;
8565 
8566    END LOOP;
8567    CLOSE v_checks_curvar;
8568 
8569 
8570 
8571    -- check if there are still records to be inserted
8572    IF l_ip_total <> 0 THEN
8573 	l_for_insert := 'Y';
8574 	l_for_party  := 'Y';
8575 	l_for_psite   := 'N';-- added by spamujul for ER#8473903
8576 	Insert_Update_Check_Results(l_ip_total,
8577 						       l_for_insert,
8578 						       l_for_party
8579 						       ,l_for_psite  -- added by spamujul for ER#8473903
8580 						       );
8581 	l_ip_total :=0;
8582    END IF;
8583    -- check if there are still records to be updated
8584    IF l_up_total <> 0 THEN
8585 	l_for_insert := 'N';
8586 	l_for_party  := 'Y';
8587 	l_for_psite   := 'N';-- added by spamujul for ER#8473903
8588 	Insert_Update_Check_Results (l_up_total,
8589 							  l_for_insert,
8590 							  l_for_party
8591 							 ,l_for_psite -- added by spamujul for ER#8473903
8592 							  );
8593 	l_up_total :=0;
8594    END IF;
8595 
8596    COMMIT;
8597 
8598    -- Return 0 for successful completion, 1 for warnings, 2 for error
8599    IF (error_flag) THEN
8600       errbuf := Sqlerrm;
8601       retcode := 2;
8602    ELSIF (warning_msg <> '') THEN
8603       errbuf := warning_msg;
8604       retcode := 1;
8605    ELSE
8606       errbuf := '';
8607       retcode := 0;
8608    END IF;
8609 
8610    IF (debug) THEN
8611       fnd_file.close;
8612    END IF;
8613 
8614    EXCEPTION
8615       WHEN OTHERS THEN
8616          ROLLBACK;
8617          IF (v_checks_curvar%isopen) THEN
8618 	    CLOSE v_checks_curvar;
8619 	 END IF;
8620 	 IF (employee_csr%isopen) THEN
8621 	    CLOSE employee_csr;
8622 	 END IF;
8623 
8624 	 IF (debug) THEN
8625 	    fnd_file.close;
8626 	 END IF;
8627          errbuf := Sqlerrm;
8628          retcode := 2;
8629 
8630 	 g_error := sqlcode || ' ' || sqlerrm;
8631 	 fnd_file.put_line(fnd_file.log , g_error);
8632 
8633 END Evaluate_Checks_Emp;
8634 
8635 /* End of R12 Employee HelpDesk Modifications */
8636 --
8637 -- Evaluate_One_Block
8638 --   Execute dynamic SQL to evaluate the given building block and store the
8639 --   result in the CSC_PROF_BLOCK_RESULTS table.
8640 -- IN
8641 --   blk_id 	- profile check building block identifier
8642 --   party_id 	- customer identifier for which building block is evaluated
8643 --   acct_id 	- account id
8644 --   sql_stmt 	- sql statement to execute dynamically
8645 --   P_CID 	- Cursor passed from calling routine to avoid re-parsing the same sql statement
8646 --
8647 PROCEDURE Evaluate_One_Block
8648 		  ( p_truncate_flag	IN VARCHAR2,
8649 		    p_blk_id		IN NUMBER,
8650 		    p_party_id		IN NUMBER,
8651 		    p_acct_id		IN NUMBER,
8652 		    p_psite_id		IN     NUMBER DEFAULT NULL, -- added by spamujul for ER#8473903
8653 		    p_sql_stmt		IN VARCHAR2,
8654 		    p_curr_code		IN VARCHAR2,
8655 		    p_up_total      IN OUT NOCOPY NUMBER ,
8656 		    p_ip_total      IN OUT NOCOPY NUMBER ,
8657 		    p_ua_total      IN OUT NOCOPY NUMBER ,
8658 		    p_ia_total      IN OUT NOCOPY NUMBER ,
8659 		    p_us_total	      IN OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
8660 		    p_is_total	      IN OUT NOCOPY NUMBER, -- added by spamujul for ER#8473903
8661 		    p_cid	    IN	NUMBER) IS
8662 
8663 		     cid			NUMBER;
8664 		     val			VARCHAR2(80);
8665 		     curr_code		VARCHAR2(15);
8666 		     dummy		NUMBER;
8667 
8668 		     l_for_insert		varchar2(1) := 'Y';
8669 		     l_for_party		varchar2(1) := 'Y';
8670 		     l_for_psite		varchar2(1) := 'N';  -- added by spamujul for ER#8473903
8671 
8672 		     v_party_count		Number := 0;
8673 		     v_account_count		Number := 0;
8674 		     v_psite_count		Number := 0; -- added by spamujul for ER#8473903
8675 
8676 		     v_party_in_sql	Number := 0;
8677 		     v_acct_in_sql	Number := 0;
8678 		     v_emp_in_sql	Number := 0;
8679 		     v_psite_in_sql	Number := 0;  -- added by spamujul for ER#8473903
8680 /*
8681      -- for party level
8682      Cursor party_block_crs IS
8683 	Select count(*)
8684 	From csc_prof_block_results
8685 	Where block_id 	= p_blk_id
8686 	And party_id 	= p_party_id
8687 	And cust_account_id IS NULL;
8688 
8689      -- for account level
8690      Cursor account_block_crs IS
8691 	Select count(*)
8692 	From csc_prof_block_results
8693 	Where block_id 	= p_blk_id
8694 	And party_id 	= p_party_id
8695 	And cust_account_id = p_acct_id;
8696 */
8697 
8698 BEGIN
8699       Begin
8700 		-- dbms_output.put_line('Inside evaluate_one_block .p_cid.'||to_char(p_cid));
8701 		 -- P_CID is the Cursor to avoid reparsing the sql stmt
8702 		 -- P_CID would not be null when engine runs for more than 1 party (e.g. evaluate_checks1)
8703 		 -- P_CID would be null when engine is being run for 1 party (e.g. evaluate_checks2)
8704 		 if p_cid is null then
8705 			cid := dbms_sql.open_cursor;
8706 			dbms_sql.parse(cid, p_sql_stmt, dbms_sql.native);
8707 			dbms_sql.define_column(cid, 1, val, 240);
8708 		 else
8709 			cid := p_cid;
8710 		 end if;
8711 		  -- added for 1850508
8712 		  -- if p_old_block_id!=p_blk_id OR p_old_block_id is null then
8713 			-- p_old_block_id:=p_blk_id;
8714 		  -- End If;
8715 		  -- Check for existence of variables before binding
8716 		-- for Bug 1935015 changed instr(sql_stmt..) to INSTR(lower(sql_stmt)..)
8717 		  IF p_sql_stmt IS NOT NULL Then
8718 		      v_party_in_sql :=	INSTR(lower(p_sql_stmt),':party_id',1);
8719 		      v_acct_in_sql  :=	INSTR(lower(p_sql_stmt),':cust_account_id',1);
8720 		      v_emp_in_sql  :=	INSTR(lower(p_sql_stmt),':employee_id',1);
8721 		      v_psite_in_sql :=	INSTR(lower(p_sql_stmt),':party_site_id',1); -- added by spamujul for ER#8473903
8722 		  Else
8723 		      v_party_in_sql :=	0;
8724 		      v_acct_in_sql  :=	0;
8725 		      v_emp_in_sql   :=	 0;
8726 		      v_psite_in_sql :=	0;  -- added by spamujul for ER#8473903
8727 		  End if;
8728 		 -- For Bug 1935015 commented this if statement and created 2 variables
8729 		 -- v_party_in_sql and v_acct_in_sql and used them in the if stmt.
8730 		  --if INSTR(lower(p_sql_stmt),':party_id',1)  > 0 then
8731 		  if v_party_in_sql  > 0 then
8732 			 dbms_sql.bind_variable(cid, ':party_id', p_party_id);
8733 		  end if;
8734 		  --if INSTR(lower(p_sql_stmt),':cust_account_id',1)  > 0 then
8735 		  if v_acct_in_sql  > 0 then
8736 			 dbms_sql.bind_variable(cid, ':cust_account_id', p_acct_id);
8737 		  end if;
8738 		  if v_emp_in_sql  > 0 then
8739 			 dbms_sql.bind_variable(cid, ':employee_id', p_party_id);
8740 		  end if;
8741 		  -- Begin fix by spamujul for NCR  ER#8473903
8742 		   If v_psite_in_sql  > 0 then
8743 		         dbms_sql.bind_variable(cid, ':party_site_id', p_psite_id);
8744 		  End if;
8745 		    -- End fix by spamujul for NCR  ER#8473903
8746 		  /***********************
8747 		  dbms_sql.bind_variable(cid, ':party_id', p_party_id);
8748 		  dbms_sql.bind_variable(cid, ':cust_account_id', p_acct_id);
8749 		  ***************/
8750 		  dummy := dbms_sql.execute_and_fetch(cid);
8751 		  dbms_sql.column_value(cid, 1, val);
8752 		  if p_cid is null then
8753 			dbms_sql.close_cursor(cid);
8754 		  end if;
8755 	      Exception
8756 		When Others Then
8757 			-- dbms_output.put_line('Exception Others in Blocks...');
8758 		     if p_cid is null then
8759 			IF (dbms_sql.is_open(cid)) THEN
8760 			     dbms_sql.close_cursor(cid);
8761 			end if;
8762 		     end if;
8763 		     val := 0;
8764 	End;
8765 	If  p_psite_id IS NULL THEN  -- Added by spamujul for NCR ER#8473903
8766 		IF p_acct_id IS NULL THEN
8767 			 IF p_truncate_flag = 'N' THEN
8768 				   begin
8769 				      select 1 into v_party_count from csc_prof_block_results
8770 				      where block_id = p_blk_id
8771 				      and party_id = p_party_id
8772 				      and cust_account_id is null
8773 				      and party_site_id is NULL -- Added by spamujul for ER#8473903
8774 				      ;
8775 				   exception
8776 				      when no_data_found then
8777 					 v_party_count := 0;
8778 				      when others then
8779 					v_party_count := null;
8780 				    end;
8781 				  /*
8782 					    OPEN party_block_crs;
8783 					    FETCH party_block_crs INTO v_party_count;
8784 					    IF party_block_crs%notfound THEN
8785 					       v_party_count := 0;
8786 					    END IF;
8787 					    CLOSE party_block_crs;
8788 				   */
8789 			ELSE
8790 				v_party_count := 0;
8791 			END IF;
8792 			 IF v_party_count = 0 THEN
8793 			    p_ip_total				:=	p_ip_total + 1;
8794 			    -- assign values to insert party
8795 			    ip_block_id(p_ip_total)	:=	p_blk_id;
8796 			    ip_party_id(p_ip_total)	:=	p_party_id;
8797 			    ip_account_id(p_ip_total)	:= NULL;
8798 			    ip_psite_id(p_ip_total)		:= NULL; -- Added by spamujul for ER#8473903
8799 			    ip_value(p_ip_total)		:= val;
8800 			    ip_currency(p_ip_total)	:=	p_curr_code;
8801 			    IF p_ip_total = 1000 THEN
8802 				l_for_insert	:= 'Y';
8803 				l_for_party	:= 'Y';
8804 				l_for_psite	:= 'N'; -- Added by spamujul for ER#8473903
8805 				Insert_Update_Block_Results	(p_ip_total,
8806 										l_for_insert,
8807 										l_for_party
8808 										,l_for_psite -- Added by spamujul for ER#8473903
8809 										);
8810 				p_ip_total :=0;
8811 			    END IF;
8812 			 ELSIF v_party_count = 1 THEN
8813 				    p_up_total					:= p_up_total + 1;
8814 				    -- assign values to update party tables
8815 				    up_block_id(p_up_total)		:= p_blk_id;
8816 				    up_party_id(p_up_total)		:= p_party_id;
8817 				    up_account_id(p_up_total)		:= NULL;
8818 				    up_psite_id(p_up_total)		:= NULL; -- Added by spamujul for ER#8473903
8819 				    up_value(p_up_total)			:= val;
8820 				    up_currency(p_up_total)		:= p_curr_code;
8821 				    IF p_up_total = 1000 THEN
8822 					l_for_insert := 'N';
8823 					l_for_party  := 'Y';
8824 					l_for_psite   := 'N'; -- Added by spamujul for ER#8473903
8825 					Insert_Update_Block_Results (p_up_total,
8826 											 l_for_insert,
8827 											 l_for_party
8828 											,l_for_psite -- Added by spamujul for ER#8473903
8829 											 );
8830 					p_up_total := 0;
8831 				    END IF;
8832 			 END IF;
8833 		      ELSE
8834 				 IF p_truncate_flag = 'N' THEN
8835 				    begin
8836 				      select 1 into v_account_count from csc_prof_block_results
8837 				      where block_id = p_blk_id
8838 				      and party_id = p_party_id
8839 				      and cust_account_id = p_acct_id
8840 				      and party_site_id  is null -- Added by spamujul for ER#8473903
8841 				      ;
8842 				    exception when no_data_found then
8843 					v_account_count := 0;
8844 				    when others then
8845 					v_account_count := null;
8846 				    end;
8847 
8848 					/*	    OPEN account_block_crs;
8849 						    FETCH account_block_crs INTO v_account_count;
8850 						    IF account_block_crs%notfound THEN
8851 						       v_account_count := 0;
8852 						    END IF;
8853 						    CLOSE account_block_crs;
8854 					 */
8855 				 ELSE
8856 				   v_account_count := 0;
8857 				 END IF;
8858 				 IF v_account_count = 0 THEN
8859 					    p_ia_total := p_ia_total + 1;
8860 
8861 					    -- assign values to insert
8862 					    ia_block_id(p_ia_total) := p_blk_id;
8863 					    ia_party_id(p_ia_total) := p_party_id;
8864 					    ia_account_id(p_ia_total) := p_acct_id;
8865 					    ia_psite_id(p_ia_total) := NULL; -- Added by spamujul for ER#8473903
8866 					    ia_value(p_ia_total) := val;
8867 					    ia_currency(p_ia_total) := p_curr_code;
8868 					    IF p_ia_total = 1000 THEN
8869 						l_for_insert := 'Y';
8870 						l_for_party  := 'N';
8871 						l_for_psite   := 'N'; -- Added by spamujul for ER#8473903
8872 						Insert_Update_Block_Results 	(p_ia_total,
8873 												 l_for_insert,
8874 												 l_for_party
8875 												 ,l_for_psite  -- Added by spamujul for ER#8473903
8876 												 );
8877 						p_ia_total := 0;
8878 					    END IF;
8879 				 ELSIF v_account_count = 1 THEN
8880 					    p_ua_total := p_ua_total + 1;
8881 					    -- assign values to update party tables
8882 					    ua_block_id(p_ua_total) := p_blk_id;
8883 					    ua_party_id(p_ua_total) := p_party_id;
8884 					    ua_account_id(p_ua_total) := p_acct_id;
8885 					    ua_psite_id(p_ua_total) := NULL;  -- Added by spamujul for ER#8473903
8886 					    ua_value(p_ua_total) := val;
8887 					    ua_currency(p_ua_total) := p_curr_code;
8888 					    IF p_ua_total = 1000 THEN
8889 						l_for_insert := 'N';
8890 						l_for_party  := 'N';
8891 						l_for_psite   := 'N'; -- Added by spamujul for ER#8473903
8892 						Insert_Update_Block_Results(p_ua_total,
8893 												l_for_insert,
8894 												l_for_party
8895 												,l_for_psite  -- Added by spamujul for ER#8473903
8896 												);
8897 						p_ua_total := 0;
8898 					    END IF;
8899 				 END IF;
8900 			END IF;
8901 -- Begin fix by spamujul fro NCR ER#8473903
8902 	ELSE
8903 		IF p_truncate_flag = 'N' THEN
8904 				    begin
8905 				      select 1 into v_psite_count from csc_prof_block_results
8906 				      where block_id = p_blk_id
8907 				      and party_id = p_party_id
8908 				      and cust_account_id   IS NULL
8909 				      and party_site_id  =p_psite_id ;
8910 
8911 				    Exception when no_data_found then
8912 							v_psite_count := 0;
8913 					when others then
8914 							v_psite_count := null;
8915 				    end;
8916 
8917 		 ELSE
8918 				   v_psite_count := 0;
8919 		 END IF;
8920 		 IF v_psite_count = 0 THEN
8921 		 	    p_is_total					:= p_is_total + 1;
8922 			    is_block_id(p_is_total)		:= p_blk_id;
8923 			    is_party_id(p_is_total)		:= p_party_id;
8924 			    is_account_id(p_is_total)	:= p_acct_id;
8925 			    is_psite_id(p_is_total)		:= p_psite_id;
8926 			    is_value(p_is_total)		:= val;
8927 			    is_currency(p_is_total)	:= p_curr_code;
8928 			    IF p_ia_total = 1000 THEN
8929 				l_for_insert := 'Y';
8930 				l_for_party  := 'N';
8931 				l_for_psite   := 'Y';
8932 				Insert_Update_Block_Results 	(p_is_total,
8933 										 l_for_insert,
8934 										 l_for_party
8935 										 ,l_for_psite
8936 										 );
8937 				p_is_total := 0;
8938 			    END IF;
8939 		 ELSIF v_psite_count = 1 THEN
8940 			    p_us_total := p_us_total + 1;
8941 			    -- assign values to update party tables
8942 			    us_block_id(p_us_total) := p_blk_id;
8943 			    us_party_id(p_us_total) := p_party_id;
8944 			    us_account_id(p_us_total) := p_acct_id;
8945 			    us_psite_id(p_us_total) :=p_psite_id;
8946 			    us_value(p_us_total) := val;
8947 			    us_currency(p_us_total) := p_curr_code;
8948 			    IF p_us_total = 1000 THEN
8949 				l_for_insert := 'N';
8950 				l_for_party  := 'N';
8951 				l_for_psite   := 'Y';
8952 				Insert_Update_Block_Results(p_us_total,
8953 										l_for_insert,
8954 										l_for_party
8955 										,l_for_psite
8956 										);
8957 				p_us_total := 0;
8958 			    END IF;
8959 		 END IF;
8960 	END IF;
8961 -- End  fix by spamujul fro NCR ER#8473903
8962       EXCEPTION
8963         -- If an exception is raised, close cursor before exiting
8964         WHEN OTHERS THEN
8965 		-- dbms_output.put_line('Exception Others in Blocks...');
8966 	   if p_cid is null then
8967 		   IF (dbms_sql.is_open(cid)) THEN
8968 			dbms_sql.close_cursor(cid);
8969 		   END IF;
8970 	   end if;
8971 	   set_context('Evaluate_One_Block',
8972 			  'blk_id=>'||to_char(p_blk_id),
8973 			  'party_id=>'||to_char(p_party_id),
8974 			  'account_id=>'||to_char(p_acct_id));
8975            g_error := sqlcode || ' ' || sqlerrm;
8976            set_context(NULL, g_error);
8977 END Evaluate_One_Block;
8978 
8979 
8980 --
8981 -- Insert or Update Records into Csc_Prof_Block_Results Table
8982 -- IN
8983 --    p_count	   - the number of records to be inserted or updated
8984 --    p_for_party  - flag to check if the insert or update is for party or account
8985 --    p_for_insert - flag to check if for insert or update.
8986 --
8987 PROCEDURE Insert_Update_Block_Results
8988 					( p_count	IN Number,
8989 					  p_for_insert	IN Varchar2,
8990 					  p_for_party	IN Varchar2
8991 					  ,p_for_psite	IN Varchar2 -- Added by spamujul for ER#8473903
8992 					  ) IS
8993 
8994 TABLESEGMENT_FULL                EXCEPTION;
8995 INDEXSEGMENT_FULL                EXCEPTION;
8996 SNAPSHOT_TOO_OLD		  EXCEPTION;
8997 
8998 PRAGMA EXCEPTION_INIT(TABLESEGMENT_FULL, -1653);
8999 PRAGMA EXCEPTION_INIT(INDEXSEGMENT_FULL, -1654);
9000 PRAGMA EXCEPTION_INIT(SNAPSHOT_TOO_OLD, -1555);
9001 
9002 Begin
9003    -- Default user and login IDs
9004    --user_id  := fnd_global.user_id;
9005    --login_id := fnd_global.login_id;
9006           IF P_FOR_PSITE ='N' Then -- Added by spamujul for ER#8473903
9007 		   IF p_for_party = 'Y' THEN
9008 			-- PARTY level insert or update of records
9009 			IF p_for_insert = 'Y' THEN
9010 			   -- Insert Records into Csc_Prof_Block_Results Table
9011 			   FORALL i IN 1..p_count
9012 				INSERT INTO Csc_Prof_Block_Results
9013 				  ( block_results_id
9014 				    , block_id
9015 				    , party_id
9016 				    , cust_account_id
9017 				    ,party_site_id -- Added by spamujul for ER#8473903
9018 				    , value
9019 				    , currency_code
9020 				    , created_by
9021 				    , creation_date
9022 				    , last_updated_by
9023 				    , last_update_date
9024 				    , last_update_login)
9025 				  VALUES
9026 				   (csc_prof_block_results_s.nextval
9027 				    , ip_block_id(i)
9028 				    , ip_party_id(i)
9029 				    , ip_account_id(i)
9030 				    , ip_psite_id(i) -- Added by spamujul for ER#8473903
9031 				    , ip_value(i)
9032 				    , ip_currency(i)
9033 				    , FND_GLOBAL.USER_ID
9034 				    , Sysdate
9035 				    , FND_GLOBAL.USER_ID
9036 				    , Sysdate
9037 				    , FND_GLOBAL.CONC_LOGIN_ID );
9038 
9039 				ip_block_id.DELETE;
9040 				ip_party_id.DELETE;
9041 				ip_account_id.DELETE;
9042 				ip_psite_id.DELETE; -- Added by spamujul for ER#8473903
9043 				ip_value.DELETE;
9044 				ip_currency.DELETE;
9045 			ELSE
9046 			    FORALL i IN 1..p_count
9047 				UPDATE Csc_Prof_Block_Results
9048 				Set value = up_value(i)
9049 				   , currency_code = up_currency(i)
9050 				   , last_updated_by = FND_GLOBAL.USER_ID
9051 				   , last_update_date = sysdate
9052 				   , last_update_login = FND_GLOBAL.CONC_LOGIN_ID
9053 				Where block_id = up_block_id(i)
9054 				And party_id = up_party_id(i)
9055 				AND cust_account_id  IS NULL AND party_site_id  IS NULL -- Added by spamujul for ER#8473903
9056 				;
9057 				up_block_id.DELETE;
9058 				up_party_id.DELETE;
9059 				up_account_id.DELETE;
9060 				up_psite_id.DELETE; -- Added by spamujul for ER#8473903
9061 				up_value.DELETE;
9062 				up_currency.DELETE;
9063 			END IF;
9064 		   ELSE
9065 			-- ACCOUNT level insert or update of records
9066 			IF p_for_insert = 'Y' THEN
9067 			   -- Insert Records into Csc_Prof_Block_Results Table
9068 			   FORALL i IN 1..p_count
9069 				INSERT INTO Csc_Prof_Block_Results
9070 				  ( block_results_id
9071 				    , block_id
9072 				    , party_id
9073 				    , cust_account_id
9074 				    , party_site_id -- Added by spamujul for ER#8473903
9075 				    , value
9076 				    , currency_code
9077 				    , created_by
9078 				    , creation_date
9079 				    , last_updated_by
9080 				    , last_update_date
9081 				    , last_update_login)
9082 				  VALUES
9083 				   (csc_prof_block_results_s.nextval
9084 				    , ia_block_id(i)
9085 				    , ia_party_id(i)
9086 				    , ia_account_id(i)
9087 				    , ia_psite_id(i) -- Added by spamujul for ER#8473903
9088 				    , ia_value(i)
9089 				    , ia_currency(i)
9090 				    , FND_GLOBAL.USER_ID
9091 				    , Sysdate
9092 				    , FND_GLOBAL.USER_ID
9093 				    , Sysdate
9094 				    , FND_GLOBAL.CONC_LOGIN_ID );
9095 
9096 				ia_block_id.DELETE;
9097 				ia_party_id.DELETE;
9098 				ia_account_id.DELETE;
9099 				ia_psite_id.DELETE; -- Added by spamujul for ER#8473903
9100 				ia_value.DELETE;
9101 				ia_currency.DELETE;
9102 			ELSE
9103 			    FORALL i IN 1..p_count
9104 				UPDATE Csc_Prof_Block_Results
9105 				Set value = ua_value(i)
9106 				   , currency_code = ua_currency(i)
9107 				   , last_updated_by = FND_GLOBAL.USER_ID
9108 				   , last_update_date = sysdate
9109 				   , last_update_login = FND_GLOBAL.CONC_LOGIN_ID
9110 				Where block_id = ua_block_id(i)
9111 				And party_id = ua_party_id(i)
9112 				And cust_account_id = ua_account_id(i)
9113 				And party_site_id IS NULL -- Added by spamujul for ER#8473903
9114 				;
9115 
9116 				ua_block_id.DELETE;
9117 				ua_party_id.DELETE;
9118 				ua_account_id.DELETE;
9119 				ua_psite_id.DELETE; -- Added by spamujul for ER#8473903
9120 				ua_value.DELETE;
9121 				ua_currency.DELETE;
9122 			END IF;
9123 		   END IF;
9124 -- Begin fix by spamujul for NCR ER# 8473903
9125 	ELSE
9126 		      IF p_for_insert = 'Y' THEN
9127 			   -- Insert Records into Csc_Prof_Block_Results Table
9128 			   FORALL i IN 1..p_count
9129 			       INSERT INTO Csc_Prof_Block_Results
9130 				  (  block_results_id
9131 				    , block_id
9132 				    , party_id
9133 				    , cust_account_id
9134 				    , value
9135 				    , currency_code
9136 				    , created_by
9137 				    , creation_date
9138 				    , last_updated_by
9139 				    , last_update_date
9140 				    , last_update_login
9141 				    , party_site_id
9142 				   )
9143 				  VALUES
9144 				   (csc_prof_block_results_s.nextval
9145 				    , is_block_id(i)
9146 				    , is_party_id(i)
9147 				    , is_account_id(i)
9148 				    , is_value(i)
9149 				    , is_currency(i)
9150 				    , FND_GLOBAL.USER_ID
9151 				    , Sysdate
9152 				    , FND_GLOBAL.USER_ID
9153 				    , Sysdate
9154 				    , FND_GLOBAL.CONC_LOGIN_ID
9155 				     , is_psite_id(i)
9156 				   );
9157 				is_block_id.DELETE;
9158 				is_party_id.DELETE;
9159 				is_account_id.DELETE;
9160 				is_psite_id.DELETE;
9161 				is_value.DELETE;
9162 				is_currency.DELETE;
9163 			ELSE
9164 			    FORALL i IN 1..p_count
9165 				UPDATE Csc_Prof_Block_Results
9166 				Set value = us_value(i)
9167 				   , currency_code = us_currency(i)
9168 				   , last_updated_by = FND_GLOBAL.USER_ID
9169 				   , last_update_date = sysdate
9170 				   , last_update_login = FND_GLOBAL.CONC_LOGIN_ID
9171 				Where block_id = us_block_id(i)
9172 				And party_id = us_party_id(i)
9173 				And cust_account_id IS NULL
9174 				And party_site_id = us_psite_id(i)
9175 				;
9176 				us_block_id.DELETE;
9177 				us_party_id.DELETE;
9178 				us_account_id.DELETE;
9179 				us_psite_id.DELETE;
9180 				us_value.DELETE;
9181 				us_currency.DELETE;
9182 			END IF;
9183 	END IF;
9184 -- End fix by spamujul for NCR ER# 8473903
9185    commit;
9186 
9187 exception
9188        when Indexsegment_full then
9189              g_error := sqlcode || ' ' || sqlerrm;
9190              fnd_file.put_line(fnd_file.log , g_error);
9191              App_Exception.raise_exception;
9192 
9193         when Tablesegment_full then
9194              g_error := sqlcode || ' ' || sqlerrm;
9195              fnd_file.put_line(fnd_file.log , g_error);
9196              App_Exception.raise_exception;
9197 
9198         WHEN SNAPSHOT_TOO_OLD THEN
9199              g_error := sqlcode || ' ' || sqlerrm;
9200              fnd_file.put_line(fnd_file.log,g_error);
9201              App_Exception.raise_exception;
9202 
9203 	when Others then
9204 	    table_delete;
9205 	     g_error := sqlcode || ' ' || sqlerrm;
9206 	     fnd_file.put_line(fnd_file.log , g_error);
9207 
9208 END Insert_Update_Block_Results;
9209 
9210 --
9211 -- Insert or Update Records into Csc_Prof_Check_Results Table
9212 -- IN
9213 --    p_count	   - the number of records to be inserted or updated
9214 --    p_for_party  - flag to check if the insert or update is for party or account
9215 --    p_for_insert - flag to check if for insert or update.
9216 --
9217 PROCEDURE Insert_Update_Check_Results ( p_count      IN NUMBER,
9218                                         p_for_insert IN VARCHAR2,
9219                                         p_for_party  IN VARCHAR2 ,
9220                                         p_for_psite  IN VARCHAR2 -- Added by spamujul for ER#8473903
9221                                         )
9222 IS
9223         TABLESEGMENT_FULL EXCEPTION;
9224         INDEXSEGMENT_FULL EXCEPTION;
9225         SNAPSHOT_TOO_OLD  EXCEPTION;
9226         PRAGMA EXCEPTION_INIT(TABLESEGMENT_FULL, -1653);
9227         PRAGMA EXCEPTION_INIT(INDEXSEGMENT_FULL, -1654);
9228         PRAGMA EXCEPTION_INIT(SNAPSHOT_TOO_OLD, -1555);
9229 BEGIN
9230         -- Default user and login IDs
9231         --user_id  := fnd_global.user_id;
9232         --login_id := fnd_global.login_id;
9233         IF p_for_psite         ='N' THEN -- Added by spamujul for ER#8473903
9234                 IF p_for_party = 'Y' THEN
9235                         -- PARTY level insert or update of records
9236                         IF p_for_insert = 'Y' THEN
9237                                 -- Insert Records into Csc_Prof_Check_Results Table
9238                                 FORALL i IN 1..p_count
9239                                 INSERT
9240                                 INTO   Csc_Prof_Check_Results
9241                                        (
9242                                               check_results_id ,
9243                                               check_id         ,
9244                                               party_id         ,
9245                                               cust_account_id,
9246                                               party_site_id, -- Added by spamujul for ER#8473903
9247                                               value                  ,
9248                                               results_threshold_flag ,
9249                                               currency_code          ,
9250                                               grade                  ,
9251                                               rating_code            ,
9252                                               color_code             ,
9253                                               created_by             ,
9254                                               creation_date          ,
9255                                               last_updated_by        ,
9256                                               last_update_date       ,
9257                                               last_update_login
9258                                        )
9259                                        VALUES
9260                                        (
9261                                               csc_prof_check_results_s.nextval ,
9262                                               ip_check_id(i)                   ,
9263                                               ip_party_id(i)                   ,
9264                                               ip_account_id(i)                 ,
9265                                               ip_psite_id(i), -- Added by spamujul for ER#8473903
9266                                               ip_value(i)        ,
9267                                               ip_results(i)      ,
9268                                               ip_currency(i)     ,
9269                                               ip_grade(i)        ,
9270                                               ip_rating_code(i)  ,
9271                                               ip_color_code(i)   ,
9272                                               FND_GLOBAL.USER_ID ,
9273                                               SYSDATE            ,
9274                                               FND_GLOBAL.USER_ID ,
9275                                               SYSDATE            ,
9276                                               FND_GLOBAL.CONC_LOGIN_ID
9277                                        );
9278 
9279                                 ip_check_id.DELETE;
9280                                 ip_party_id.DELETE;
9281                                 ip_account_id.DELETE;
9282                                 ip_psite_id.DELETE; -- Added by spamujul for ER#8473903
9283                                 ip_value.DELETE;
9284                                 ip_currency.DELETE;
9285                                 ip_grade.DELETE;
9286                                 ip_rating_code.DELETE;
9287                                 ip_color_code.DELETE;
9288                                 ip_results.DELETE;
9289                         ELSE
9290                                 FORALL i IN 1..p_count
9291                                 UPDATE Csc_Prof_Check_Results
9292                                 SET    value                  = up_value(i)        ,
9293                                        results_threshold_flag = up_results(i)      ,
9294                                        currency_code          = up_currency(i)     ,
9295                                        grade                  = up_grade(i)        ,
9296                                        rating_code            = up_rating_code(i)  ,
9297                                        color_code             = up_color_code(i)   ,
9298                                        last_updated_by        = FND_GLOBAL.USER_ID ,
9299                                        last_update_date       = SYSDATE            ,
9300                                        last_update_login      = FND_GLOBAL.CONC_LOGIN_ID
9301                                 WHERE  check_id               = up_check_id(i)
9302                                    AND party_id               = up_party_id(i)
9303                                    AND cust_account_id IS NULL
9304                                    AND party_site_id IS NULL -- Added by spamujul for ER#8473903
9305                                        ;
9306 
9307                                 up_check_id.DELETE;
9308                                 up_party_id.DELETE;
9309                                 up_account_id.DELETE;
9310                                 up_psite_id.DELETE; -- Added by spamujul for ER#8473903
9311                                 up_value.DELETE;
9312                                 up_currency.DELETE;
9313                                 up_grade.DELETE;
9314                                 up_rating_code.DELETE;
9315                                 up_color_code.DELETE;
9316                                 up_results.DELETE;
9317                         END IF;
9318                 ELSE
9319                         -- ACCOUNT level insert or update of records
9320                         IF p_for_insert = 'Y' THEN
9321                                 -- Insert Records into Csc_Prof_Check_Results Table
9322                                 FORALL i IN 1..p_count
9323                                 INSERT
9324                                 INTO   Csc_Prof_Check_Results
9325                                        (
9326                                               check_results_id       ,
9327                                               check_id               ,
9328                                               party_id               ,
9329                                               cust_account_id        ,
9330 					      party_site_id ,  -- Added by spamujul for ER#8473903
9331                                               value                  ,
9332                                               results_threshold_flag ,
9333                                               currency_code          ,
9334                                               grade                  ,
9335                                               rating_code            ,
9336                                               color_code             ,
9337                                               created_by             ,
9338                                               creation_date          ,
9339                                               last_updated_by        ,
9340                                               last_update_date       ,
9341                                               last_update_login
9342                                        )
9343                                        VALUES
9344                                        (
9345                                               csc_prof_check_results_s.nextval ,
9346                                               ia_check_id(i)                   ,
9347                                               ia_party_id(i)                   ,
9348                                               ia_account_id(i)                 ,
9349 					      ia_psite_id(i)                  ,  -- Added by spamujul for ER#8473903
9350                                               ia_value(i)                      ,
9351                                               ia_results(i)                    ,
9352                                               ia_currency(i)                   ,
9353                                               ia_grade(i)                      ,
9354                                               ia_rating_code(i)                ,
9355                                               ia_color_code(i)                 ,
9356                                               FND_GLOBAL.USER_ID               ,
9357                                               SYSDATE                          ,
9358                                               FND_GLOBAL.USER_ID               ,
9359                                               SYSDATE                          ,
9360                                               FND_GLOBAL.CONC_LOGIN_ID
9361                                        );
9362 
9363                                 ia_check_id.DELETE;
9364                                 ia_party_id.DELETE;
9365                                 ia_account_id.DELETE;
9366 				ia_psite_id.DELETE; -- Added by spamujul for ER#8473903
9367                                 ia_value.DELETE;
9368                                 ia_currency.DELETE;
9369                                 ia_grade.DELETE;
9370                                 ia_rating_code.DELETE;
9371                                 ia_color_code.DELETE;
9372                                 ia_results.DELETE;
9373                         ELSE
9374                                 FORALL i IN 1..p_count
9375                                 UPDATE Csc_Prof_Check_Results
9376                                 SET    value                  = ua_value(i)        ,
9377                                        results_threshold_flag = ua_results(i)      ,
9378                                        currency_code          = ua_currency(i)     ,
9379                                        grade                  = ua_grade(i)        ,
9380                                        rating_code            = ua_rating_code(i)  ,
9381                                        color_code             = ua_color_code(i)   ,
9382                                        last_updated_by        = FND_GLOBAL.USER_ID ,
9383                                        last_update_date       = SYSDATE            ,
9384                                        last_update_login      = FND_GLOBAL.CONC_LOGIN_ID
9385                                 WHERE  check_id               = ua_check_id(i)
9386                                    AND party_id               = ua_party_id(i)
9387                                    AND cust_account_id        = ua_account_id(i)
9388 				   AND party_site_id	 IS NULL  -- Added by spamujul for ER#8473903
9389 				   ;
9390 
9391                                 ua_check_id.DELETE;
9392                                 ua_party_id.DELETE;
9393                                 ua_account_id.DELETE;
9394 				ua_psite_id.DELETE;  -- Added by spamujul for ER#8473903
9395                                 ua_value.DELETE;
9396                                 ua_currency.DELETE;
9397                                 ua_grade.DELETE;
9398                                 ua_rating_code.DELETE;
9399                                 ua_color_code.DELETE;
9400                                 ua_results.DELETE;
9401                         END IF;
9402                 END IF;
9403 --Begin fix by spamujul for ER#8473903
9404       ELSE
9405         IF p_for_insert   = 'Y' THEN
9406                 FORALL i IN 1..p_count
9407                 INSERT
9408                 INTO   Csc_Prof_Check_Results
9409                        (
9410                               check_results_id       ,
9411                               check_id               ,
9412                               party_id               ,
9413                               cust_account_id        ,
9414                               party_site_id          ,
9415                               value                  ,
9416                               results_threshold_flag ,
9417                               currency_code          ,
9418                               grade                  ,
9419                               rating_code            ,
9420                               color_code             ,
9421                               created_by             ,
9422                               creation_date          ,
9423                               last_updated_by        ,
9424                               last_update_date       ,
9425                               last_update_login
9426                        )
9427                        VALUES
9428                        (
9429                               csc_prof_check_results_s.nextval ,
9430                               is_check_id(i)                   ,
9431                               is_party_id(i)                   ,
9432                               is_account_id(i)                 ,
9433                               is_psite_id(i)                   ,
9434                               is_value(i)                      ,
9435                               is_results(i)                    ,
9436                               is_currency(i)                   ,
9437                               is_grade(i)                      ,
9438                               is_rating_code(i)                ,
9439                               is_color_code(i)                 ,
9440                               FND_GLOBAL.USER_ID               ,
9441                               SYSDATE                          ,
9442                               FND_GLOBAL.USER_ID               ,
9443                               SYSDATE                          ,
9444                               FND_GLOBAL.CONC_LOGIN_ID
9445                        );
9446 
9447                 is_check_id.DELETE;
9448                 is_party_id.DELETE;
9449                 is_account_id.DELETE;
9450                 is_psite_id.DELETE;
9451                 is_value.DELETE;
9452                 is_currency.DELETE;
9453                 is_grade.DELETE;
9454                 is_rating_code.DELETE;
9455                 is_color_code.DELETE;
9456                 is_results.DELETE;
9457         ELSE
9458                 FORALL i IN 1..p_count
9459                 UPDATE Csc_Prof_Check_Results
9460                 SET    value                  = us_value(i)        ,
9461                        results_threshold_flag = us_results(i)      ,
9462                        currency_code          = us_currency(i)     ,
9463                        grade                  = us_grade(i)        ,
9464                        rating_code            = us_rating_code(i)  ,
9465                        color_code             = us_color_code(i)   ,
9466                        last_updated_by        = FND_GLOBAL.USER_ID ,
9467                        last_update_date       = SYSDATE            ,
9468                        last_update_login      = FND_GLOBAL.CONC_LOGIN_ID
9469                 WHERE  check_id               = us_check_id(i)
9470                    AND party_id               = us_party_id(i)
9471                    AND cust_account_id IS NULL
9472                    AND party_site_id = us_psite_id(i);
9473 
9474                 us_check_id.DELETE;
9475                 us_party_id.DELETE;
9476                 us_account_id.DELETE;
9477                 us_psite_id.DELETE;
9478                 us_value.DELETE;
9479                 us_currency.DELETE;
9480                 us_grade.DELETE;
9481                 us_rating_code.DELETE;
9482                 us_color_code.DELETE;
9483                 us_results.DELETE;
9484         END IF;
9485    END IF;
9486 -- Begin fix by spamujul for ER#8473903
9487         COMMIT;
9488 EXCEPTION
9489 WHEN Tablesegment_full THEN
9490         g_error := SQLCODE
9491         || ' '
9492         || sqlerrm;
9493         fnd_file.put_line(fnd_file.log , g_error);
9494         App_Exception.raise_exception;
9495 WHEN Indexsegment_full THEN
9496         g_error := SQLCODE
9497         || ' '
9498         || sqlerrm;
9499         fnd_file.put_line(fnd_file.log , g_error);
9500         App_Exception.raise_exception;
9501 WHEN SNAPSHOT_TOO_OLD THEN
9502         g_error := SQLCODE
9503         || ' '
9504         || sqlerrm;
9505         fnd_file.put_line(fnd_file.log,g_error);
9506         App_Exception.raise_exception;
9507 WHEN OTHERS THEN
9508         table_delete;
9509         g_error := SQLCODE
9510         || ' '
9511         || sqlerrm;
9512         fnd_file.put_line(fnd_file.log , g_error);
9513 END Insert_Update_Check_Results;
9514 
9515 
9516 /*******************************************
9517   UPDATE_JIT_STATUS
9518   added this procedure for JIT enhancement -- Bug 4535407
9519   Updates the columns jit_status, jit_err_code in CCT_MEDIA_ITEMS.
9520   Called from CSC_PROF_JIT
9521 ********************************************/
9522 
9523 PROCEDURE update_jit_status ( p_status			 VARCHAR2 DEFAULT NULL,
9524 							      p_err_code		 NUMBER DEFAULT NULL,
9525 							      p_media_item_id	 NUMBER
9526 							   )	IS
9527 	PRAGMA AUTONOMOUS_TRANSACTION;
9528 BEGIN
9529 		UPDATE CCT_MEDIA_ITEMS
9530 			SET jit_status = p_status,
9531 			        jit_err_code = p_err_code
9532 		   WHERE media_item_id = p_media_item_id;
9533 		   COMMIT;
9534 END update_jit_status;
9535 
9536 
9537 /*******************************************
9538   CSC_PROF_JIT
9539   added this procedure for JIT enhancement -- Bug 4535407
9540   Called from OTM java code
9541   Calls profile engine for the party_id passed from OTM.
9542   OTM passes the key-value pair in a VARRAY (cct_keyvalue_varr)
9543 ********************************************/
9544 
9545 PROCEDURE csc_prof_jit ( p_key_value_varr	IN	cct_keyvalue_varr,
9546 						  p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE,
9547 						  p_critical_flag		IN	VARCHAR2 DEFAULT NULL,
9548 						  x_return_status		OUT NOCOPY VARCHAR2,
9549 						  x_msg_count		OUT NOCOPY NUMBER,
9550 						  x_msg_data		OUT NOCOPY VARCHAR2
9551 						 )
9552 					IS
9553 		   l_media_item_id	NUMBER;
9554 		   l_party_id			NUMBER;
9555 		   l_hidden_party_id    NUMBER;
9556 		   l_rel_id			NUMBER;
9557 		   l_acct_id			NUMBER;
9558 		   l_psite_id			NUMBER := NULL; -- added by spamujul for ER#8473903
9559 		   l_resp_id			NUMBER;
9560 		   l_emp_id			NUMBER;
9561 		   l_resp_appl_id		NUMBER;
9562 		   l_party_type		VARCHAR2(30);
9563 		   l_form_name		VARCHAR2(30) := 'CSCCCCRC';
9564 		   l_view_by_acct		VARCHAR2(255);
9565 		   l_view_by			VARCHAR2(255);
9566 		   l_acct_new_old		VARCHAR2(255);
9567 		   l_show_active_acct	 VARCHAR2(255);
9568 		   l_status			VARCHAR2(30);
9569 		   l_group_id			NUMBER;
9570 		   l_which_ivr			VARCHAR2(30);
9571 		   l_media_exists		VARCHAR2(1);
9572 		   l_party_exists		VARCHAR2(1);
9573 		   l_rel_exists		VARCHAR2(1);
9574 		   l_acct_exists		VARCHAR2(1);
9575 		   l_resp_exists		VARCHAR2(1);
9576 		   l_resp_appl_exists	VARCHAR2(1);
9577 		   l_emp_exists		VARCHAR2(1);
9578 		   l_which_ivr_exists	VARCHAR2(1);
9579 		   l_contact_type		VARCHAR2(30);
9580 		   l_critical_flag		VARCHAR2(1);
9581 		   l_party_rec			CSC_UTILS.dashboard_Rec_Type;
9582 		   l_api_name		VARCHAR2(30) := 'CSC_PROF_JIT';
9583 		   l_jit_prg_status		VARCHAR2(30) := 'PROGRESS';
9584 		   l_jit_err_status		VARCHAR2(30) := 'ERROR';
9585 		   l_jit_complete_status VARCHAR2(30) := 'COMPLETED';
9586 		   l_sql_code			NUMBER;
9587 		   CURSOR chk_status IS
9588 		      SELECT jit_status
9589 			FROM CCT_MEDIA_ITEMS
9590 		       WHERE media_item_id = l_media_item_id;
9591 
9592 		   CURSOR group_crs IS
9593 		      SELECT a.dashboard_group_id
9594 			FROM csc_prof_module_groups	a,
9595 				     csc_prof_groups_b		b
9596 		       WHERE a.dashboard_group_id = b.group_id
9597 			 AND a.party_type IN (l_party_type, 'ALL')
9598 			 AND a.form_function_name = l_form_name
9599 			 AND (((a.responsibility_id = l_resp_id AND a.resp_appl_id = l_resp_appl_id)
9600 				AND a.responsibility_id IS NOT NULL)
9601 			      OR a.responsibility_id IS NULL)
9602 			 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(b.start_date_active, SYSDATE))
9603 			 AND TRUNC(NVL(b.end_date_active, SYSDATE))
9604 		      ORDER BY a.party_type desc, a.responsibility_id;
9605 
9606 		   CURSOR get_party_type IS
9607 		      SELECT party_type
9608 			FROM hz_parties
9609 		       WHERE party_id = l_party_id;
9610 
9611 		   CURSOR get_acct_latest IS
9612 		      SELECT cust_account_id
9613 			FROM hz_cust_accounts
9614 		       WHERE party_id = l_party_id
9615 			 AND ((status = 'A' AND l_show_active_acct = 'Y')
9616 			       OR (l_show_active_acct = 'N'))
9617 			 AND status NOT IN ('M', 'D')
9618 		      ORDER BY creation_date DESC;
9619 
9620 		   CURSOR get_acct_oldest IS
9621 		      SELECT cust_account_id
9622 			FROM hz_cust_accounts
9623 		       WHERE party_id = l_party_id
9624 			 AND ((status = 'A' AND l_show_active_acct = 'Y')
9625 			       OR (l_show_active_acct = 'N'))
9626 			 AND status NOT IN ('M', 'D')
9627 		      ORDER BY creation_date;
9628 
9629 		   CURSOR get_cust_from_cont IS
9630 		      SELECT obj_party_id, obj_party_type
9631 			FROM csc_hz_parties_rel_v
9632 		       WHERE rel_party_id = l_party_id;
9633 
9634 BEGIN
9635 		   IF FND_API.to_Boolean( p_init_msg_list ) THEN
9636 		      FND_MSG_PUB.initialize;
9637 		   END IF;
9638 		   x_return_status := FND_API.G_RET_STS_SUCCESS;
9639 		   /* get values from varray parameter p_key_value_varr */
9640 		   l_media_item_id := CCT_COLLECTION_UTIL_PUB.Get
9641 				      ( p_key_value_varr => p_key_value_varr,
9642 					p_key => 'occtMediaItemID',
9643 					x_key_exists => l_media_exists);
9644 		   l_party_id := CCT_COLLECTION_UTIL_PUB.Get
9645 				      ( p_key_value_varr => p_key_value_varr,
9646 					p_key => 'PARTY_ID',
9647 					x_key_exists => l_party_exists);
9648 		   l_rel_id := CCT_COLLECTION_UTIL_PUB.Get
9649 				      ( p_key_value_varr => p_key_value_varr,
9650 					p_key => 'REL_PARTY_ID',
9651 					x_key_exists => l_rel_exists);
9652 		   l_acct_id := CCT_COLLECTION_UTIL_PUB.Get
9653 				      ( p_key_value_varr => p_key_value_varr,
9654 					p_key => 'CUST_ACCOUNT_ID',
9655 					x_key_exists => l_acct_exists);
9656 		   l_resp_id := CCT_COLLECTION_UTIL_PUB.Get
9657 				      ( p_key_value_varr => p_key_value_varr,
9658 					p_key => 'occtRespID',
9659 					x_key_exists => l_resp_exists);
9660 		   l_resp_appl_id := CCT_COLLECTION_UTIL_PUB.Get
9661 				      ( p_key_value_varr => p_key_value_varr,
9662 					p_key => 'occtAppID',
9663 					x_key_exists => l_resp_appl_exists);
9664 		   l_emp_id := CCT_COLLECTION_UTIL_PUB.Get
9665 				      ( p_key_value_varr => p_key_value_varr,
9666 					p_key => 'employeeID',
9667 					x_key_exists => l_emp_exists);
9668 		   l_which_ivr := CCT_COLLECTION_UTIL_PUB.Get
9669 				      ( p_key_value_varr => p_key_value_varr,
9670 					p_key => 'WhichIVR',
9671 					x_key_exists => l_which_ivr_exists);
9672 
9673 		   IF (l_media_item_id IS NULL
9674 		       OR (l_party_id IS NULL AND l_emp_id is NULL)
9675 		       OR l_resp_id IS NULL
9676 		       OR l_resp_appl_id IS NULL) THEN
9677 		      RETURN;
9678 		   END IF;
9679 		OPEN chk_status;
9680 			FETCH chk_status INTO l_status;
9681 		   /* OTM updates jit_status to null before calling this procedure.
9682 		      IF screenpop happens when the call to this procedure is in queue, then
9683 		      forms would have populated jit_status column. In such cases return back
9684 		   */
9685 		IF l_status IS NOT NULL OR chk_status%NOTFOUND THEN
9686 			RETURN;
9687 		END IF;
9688 		CLOSE chk_status;
9689 		   update_jit_status
9690 		     ( p_status => l_jit_prg_status,
9691 		       p_err_code => NULL,
9692 		       p_media_item_id => l_media_item_id );
9693 		 /* get the value of auto refresh PO if not passed from OTM */
9694 		   IF p_critical_flag IS NULL THEN
9695 			l_critical_flag := FND_PROFILE.value_specific ( name => 'CSC_DASHBOARD_AUTO_REFRESH',
9696 													      responsibility_id => l_resp_id,
9697 													      application_id => l_resp_appl_id,
9698 													      user_id => -999
9699 														);
9700 		ELSE
9701 				 l_critical_flag := p_critical_flag;
9702 		END IF;
9703 		   /* profile option for defaulting view by in CC */
9704 		 l_view_by := FND_PROFILE.value_specific ( name => 'CSC_CC_DEFAULT_VIEW_BY',
9705 												      responsibility_id => l_resp_id,
9706 												      application_id => l_resp_appl_id,
9707 												      user_id => -999
9708 										                    );
9709 		   /* Employee HelpDesk Changes
9710 		   If emp_id is not null
9711 		     If view_by is Customer - then get hidden customer's id from Profile Option -process for customer
9712 		     If view_by is Contact - then process for employee
9713 		    elsif party_id is not null
9714 		      existing logic
9715 		    */
9716 		IF l_emp_id IS NOT NULL AND l_which_ivr ='Employee' THEN
9717 				IF l_view_by = 'CUSTOMER' THEN ---Refresh only for hidden customer
9718 						l_hidden_party_id := FND_PROFILE.value_specific( name => 'CS_SR_DEFAULT_CUSTOMER_NAME',
9719 																	       responsibility_id => l_resp_id,
9720 																	       application_id => l_resp_appl_id,
9721 																	       user_id => -999
9722 																	  );
9723 				/* Refresh for Customer only if Profile Option CS_SR_DEFAULT_CUSTOMER_NAME returns a value */
9724 						 IF l_hidden_party_id IS NOT NULL THEN
9725 								 /* profile option for view_by_account in dashboard tab */
9726 								 l_view_by_acct := FND_PROFILE.value_specific( name => 'CSC_DASHBOARD_TO_QUERY_BY_PARTY_OR_ACCOUNT',
9727 																				responsibility_id => l_resp_id,
9728 																				application_id => l_resp_appl_id,
9729 																				user_id => -999
9730 																			);
9731 
9732 							      /* if view_by_account is yes, check whether account_id is passed.
9733 								 If not passed, then check whether only one account exists for the customer.
9734 								 If yes, use this account.
9735 								 Else get account_id based on profile option CSC_CC_DEFAULT_ACCT */
9736 								IF l_view_by_acct = 'ACCOUNT' THEN
9737 									 IF l_acct_id IS NULL THEN
9738 										 l_show_active_acct := FND_PROFILE.value_specific( name => 'CSC_CONTACT_CENTER_SHOW_ACTIVE_ACCOUNTS',
9739 																						      responsibility_id => l_resp_id,
9740 																						      application_id => l_resp_appl_id,
9741 																						      user_id => -999
9742 																						);
9743 										BEGIN
9744 											       SELECT cust_account_id
9745 												 INTO l_acct_id
9746 												 FROM hz_cust_accounts
9747 												WHERE party_id = l_party_id
9748 												  AND ((status = 'A' AND l_show_active_acct = 'Y') OR (l_show_active_acct = 'N'))
9749 												  AND status NOT IN ('M', 'D');
9750 										 EXCEPTION
9751 												WHEN OTHERS THEN
9752 														l_acct_id := NULL;
9753 										 END;
9754 										 IF l_acct_id IS NULL THEN
9755 											 l_acct_new_old := FND_PROFILE.value_specific( name => 'CSC_CC_DEFAULT_ACCT',
9756 																						 responsibility_id => l_resp_id,
9757 																						 application_id => l_resp_appl_id,
9758 																						 user_id => -999
9759 																						);
9760 
9761 												IF l_acct_new_old = 'Y' THEN
9762 													OPEN get_acct_oldest;
9763 													FETCH get_acct_oldest INTO l_acct_id;
9764 													CLOSE get_acct_oldest;
9765 												ELSIF l_acct_new_old = 'L' THEN
9766 													OPEN get_acct_latest;
9767 													FETCH get_acct_latest INTO l_acct_id;
9768 													CLOSE get_acct_latest;
9769 												END IF;
9770 										END IF; /* l_acct_id is null -- inner*/
9771 									END IF; /* l_acct_id is null -- outer */
9772 							 END IF; /* l_view_by_acct = 'Y' */
9773 						      /* If user hook for dashboard group is enabled, call user hook to get group_id.
9774 							 Else use the existing logic from setup form to get group_id */
9775 						IF JTF_USR_HKS.ok_to_execute('CSC_DASHBOARD_GROUP_CUHK', 'GET_DASHBOARD_GROUP_PRE', 'B', 'C') THEN
9776 							 l_party_rec.Cust_Party_Id  := l_hidden_party_id;
9777 							 l_party_rec.Cust_Account_Id  := l_acct_id;
9778 						         CSC_DASHBOARD_GROUP_CUHK.get_dashboard_group_pre(l_party_rec);
9779          l_group_id := l_party_rec.group_id;
9780       ELSE
9781          OPEN group_crs;
9782          FETCH group_crs INTO l_group_id;
9783             IF (group_crs%notfound) THEN
9784                CLOSE group_crs;
9785                l_form_name := 'CSCCCCDB';
9786                OPEN group_crs;
9787                FETCH group_crs into l_group_id;
9788                CLOSE group_Crs;
9789             ELSE
9790                CLOSE group_crs;
9791             END IF;
9792       END IF;
9793 
9794       /* if err_code is -20001, Contact Center will display message that says that no group is attached */
9795       IF l_group_id IS NULL THEN
9796          update_jit_status
9797             ( p_status => l_jit_err_status,
9798               p_err_code => -20001,
9799               p_media_item_id => l_media_item_id );
9800           RETURN;
9801       END IF;
9802 
9803       CSC_PROFILE_ENGINE_PKG.run_engine_jit
9804              ( p_party_id => l_hidden_party_id,
9805                p_acct_id => l_acct_id,
9806 	       p_psite_id => l_psite_id, -- added by spamujul for ER#8473903
9807                p_group_id => l_group_id,
9808                p_critical_flag => l_critical_flag,
9809 	       p_party_type => 'CUSTOMER');
9810 	    END IF; /* l_hidden_party_id is not null */
9811 
9812       ELSIF l_view_by = 'CONTACT' THEN --Refresh for employee
9813 
9814        IF JTF_USR_HKS.ok_to_execute('CSC_DASHBOARD_GROUP_CUHK', 'GET_DASHBOARD_GROUP_PRE', 'B', 'C') THEN
9815             l_party_rec.Cust_Party_Id  := l_emp_id;
9816             l_party_rec.Cust_Party_Type  := upper(l_which_ivr);
9817 
9818 
9819             CSC_DASHBOARD_GROUP_CUHK.get_dashboard_group_pre(l_party_rec);
9820             l_group_id := l_party_rec.group_id;
9821          ELSE
9822 
9823             OPEN group_crs;
9824             FETCH group_crs INTO l_group_id;
9825                IF (group_crs%notfound) THEN
9826                   CLOSE group_crs;
9827                   l_form_name := 'CSCCCCDB';
9828                   OPEN group_crs;
9829                   FETCH group_crs into l_group_id;
9830                   CLOSE group_Crs;
9831                ELSE
9832                   CLOSE group_crs;
9833                END IF;
9834         END IF;
9835 
9836          IF l_group_id IS NULL THEN
9837             update_jit_status
9838             ( p_status => l_jit_err_status,
9839               p_err_code => -20001,
9840               p_media_item_id => l_media_item_id );
9841              RETURN;
9842          END IF;
9843 
9844 	 CSC_PROFILE_ENGINE_PKG.run_engine_jit
9845              ( p_party_id => l_emp_id,
9846                p_acct_id => NULL,
9847 	       p_psite_id => NULL, -- added by spamujul for ER#8473903
9848                p_group_id => l_group_id,
9849                p_critical_flag => l_critical_flag,
9850                p_party_type => 'EMPLOYEE');
9851 
9852       END IF; /* l_view_by for HelpDesk Context */
9853 
9854 ELSIF l_emp_id IS NOT NULL AND l_which_ivr ='SR' THEN
9855        l_contact_type := FND_PROFILE.value_specific
9856 		              ( name => 'CSC_CC_DEFAULT_CONTACT_TYPE',
9857 			        responsibility_id => l_resp_id,
9858 				application_id => l_resp_appl_id,
9859 	                        user_id => -999
9860 		               );
9861 
9862           IF l_view_by = 'CUSTOMER' THEN
9863              --refresh dashboard for customer using l_party_id
9864 	    IF l_party_id IS NOT NULL THEN
9865 		  /* profile option for view_by_account in dashboard tab */
9866 	        l_view_by_acct := FND_PROFILE.value_specific
9867 		              ( name => 'CSC_DASHBOARD_TO_QUERY_BY_PARTY_OR_ACCOUNT',
9868 			        responsibility_id => l_resp_id,
9869 				application_id => l_resp_appl_id,
9870 	                        user_id => -999
9871 		               );
9872 
9873 	      /* if view_by_account is yes, check whether account_id is passed.
9874 		 If not passed, then check whether only one account exists for the customer.
9875 	         If yes, use this account.
9876 		 Else get account_id based on profile option CSC_CC_DEFAULT_ACCT */
9877 
9878 		IF l_view_by_acct = 'ACCOUNT' THEN
9879 	         IF l_acct_id IS NULL THEN
9880 		    l_show_active_acct := FND_PROFILE.value_specific
9881                                     ( name => 'CSC_CONTACT_CENTER_SHOW_ACTIVE_ACCOUNTS',
9882                                       responsibility_id => l_resp_id,
9883                                       application_id => l_resp_appl_id,
9884                                       user_id => -999
9885                                     );
9886 	            BEGIN
9887 		       SELECT cust_account_id
9888 			 INTO l_acct_id
9889 	                 FROM hz_cust_accounts
9890 		        WHERE party_id = l_party_id
9891 			  AND ((status = 'A' AND l_show_active_acct = 'Y') OR (l_show_active_acct = 'N'))
9892 	                  AND status NOT IN ('M', 'D');
9893 		    EXCEPTION
9894 	               WHEN OTHERS THEN
9895 		          l_acct_id := NULL;
9896 	            END;
9897 
9898 		    IF l_acct_id IS NULL THEN
9899 	               l_acct_new_old := FND_PROFILE.value_specific
9900                                        ( name => 'CSC_CC_DEFAULT_ACCT',
9901                                          responsibility_id => l_resp_id,
9902                                          application_id => l_resp_appl_id,
9903                                          user_id => -999
9904                                        );
9905 
9906 		       IF l_acct_new_old = 'Y' THEN
9907 			  OPEN get_acct_oldest;
9908 	                  FETCH get_acct_oldest INTO l_acct_id;
9909 		          CLOSE get_acct_oldest;
9910 	               ELSIF l_acct_new_old = 'L' THEN
9911 		          OPEN get_acct_latest;
9912 			  FETCH get_acct_latest INTO l_acct_id;
9913 	                  CLOSE get_acct_latest;
9914 		       END IF;
9915 	            END IF; /* l_acct_id is null -- inner*/
9916 		 END IF; /* l_acct_id is null -- outer */
9917 	        END IF; /* l_view_by_acct = 'Y' */
9918 
9919       /* If user hook for dashboard group is enabled, call user hook to get group_id.
9920          Else use the existing logic from setup form to get group_id */
9921 
9922      IF JTF_USR_HKS.ok_to_execute('CSC_DASHBOARD_GROUP_CUHK', 'GET_DASHBOARD_GROUP_PRE', 'B', 'C') THEN
9923          l_party_rec.Cust_Party_Id  := l_hidden_party_id;
9924          l_party_rec.Cust_Account_Id  := l_acct_id;
9925 
9926          CSC_DASHBOARD_GROUP_CUHK.get_dashboard_group_pre(l_party_rec);
9927          l_group_id := l_party_rec.group_id;
9928       ELSE
9929          OPEN group_crs;
9930          FETCH group_crs INTO l_group_id;
9931             IF (group_crs%notfound) THEN
9932                CLOSE group_crs;
9933                l_form_name := 'CSCCCCDB';
9934                OPEN group_crs;
9935                FETCH group_crs into l_group_id;
9936                CLOSE group_Crs;
9937             ELSE
9938                CLOSE group_crs;
9939             END IF;
9940       END IF;
9941 
9942       /* if err_code is -20001, Contact Center will display message that says that no group is attached */
9943       IF l_group_id IS NULL THEN
9944          update_jit_status
9945             ( p_status => l_jit_err_status,
9946               p_err_code => -20001,
9947               p_media_item_id => l_media_item_id );
9948           RETURN;
9949       END IF;
9950 
9951       CSC_PROFILE_ENGINE_PKG.run_engine_jit
9952              ( p_party_id => l_party_id,
9953                p_acct_id => l_acct_id,
9954 	       p_psite_id => l_psite_id, -- added by spamujul for ER#8473903
9955                p_group_id => l_group_id,
9956                p_critical_flag => l_critical_flag,
9957 	       p_party_type => 'CUSTOMER');
9958     END IF; /* l_party_id is not null */
9959 
9960     ELSIF l_view_by = 'CONTACT' and l_contact_type ='EMPLOYEE' THEN
9961 
9962        IF JTF_USR_HKS.ok_to_execute('CSC_DASHBOARD_GROUP_CUHK', 'GET_DASHBOARD_GROUP_PRE', 'B', 'C') THEN
9963             l_party_rec.Cust_Party_Id  := l_emp_id;
9964             l_party_rec.Cust_Party_Type  := 'EMPLOYEE';
9965 
9966 
9967             CSC_DASHBOARD_GROUP_CUHK.get_dashboard_group_pre(l_party_rec);
9968             l_group_id := l_party_rec.group_id;
9969          ELSE
9970 
9971             OPEN group_crs;
9972             FETCH group_crs INTO l_group_id;
9973                IF (group_crs%notfound) THEN
9974                   CLOSE group_crs;
9975                   l_form_name := 'CSCCCCDB';
9976                   OPEN group_crs;
9977                   FETCH group_crs into l_group_id;
9978                   CLOSE group_Crs;
9979                ELSE
9980                   CLOSE group_crs;
9981                END IF;
9982         END IF;
9983 
9984          IF l_group_id IS NULL THEN
9985             update_jit_status
9986             ( p_status => l_jit_err_status,
9987               p_err_code => -20001,
9988               p_media_item_id => l_media_item_id );
9989              RETURN;
9990          END IF;
9991 
9992 	 CSC_PROFILE_ENGINE_PKG.run_engine_jit
9993              ( p_party_id => l_emp_id,
9994                p_acct_id => NULL,
9995 	       p_psite_id => NULL, -- added by spamujul for ER#8473903
9996                p_group_id => l_group_id,
9997                p_critical_flag => l_critical_flag,
9998                p_party_type => 'EMPLOYEE');
9999 
10000     ELSIF l_view_by = 'CONTACT' and l_contact_type ='CUSTOMER' THEN
10001 	 --refresh dashboard for contact (use party_id to fetch contact_id for refreshing)
10002          OPEN get_party_type;
10003            FETCH get_party_type INTO l_party_type;
10004          CLOSE get_party_type;
10005 
10006 	  /* if view_by is contact and contact_id is not passed, don't process */
10007       IF l_party_type = 'PARTY_RELATIONSHIP' THEN
10008         IF JTF_USR_HKS.ok_to_execute('CSC_DASHBOARD_GROUP_CUHK', 'GET_DASHBOARD_GROUP_PRE', 'B', 'C') THEN
10009             l_party_rec.Cust_Party_Id  := l_party_id;
10010             l_party_rec.Cust_Party_Type  := l_party_type;
10011             l_party_rec.Cust_Account_Id  := l_acct_id;
10012 
10013             CSC_DASHBOARD_GROUP_CUHK.get_dashboard_group_pre(l_party_rec);
10014             l_group_id := l_party_rec.group_id;
10015          ELSE
10016 
10017             OPEN group_crs;
10018             FETCH group_crs INTO l_group_id;
10019                IF (group_crs%notfound) THEN
10020                   CLOSE group_crs;
10021                   l_form_name := 'CSCCCCDB';
10022                   OPEN group_crs;
10023                   FETCH group_crs into l_group_id;
10024                   CLOSE group_Crs;
10025                ELSE
10026                   CLOSE group_crs;
10027                END IF;
10028         END IF;
10029 
10030          IF l_group_id IS NULL THEN
10031             update_jit_status
10032             ( p_status => l_jit_err_status,
10033               p_err_code => -20001,
10034               p_media_item_id => l_media_item_id );
10035              RETURN;
10036          END IF;
10037 
10038 	 CSC_PROFILE_ENGINE_PKG.run_engine_jit
10039              ( p_party_id => l_party_id,
10040                p_acct_id => NULL,
10041 	       p_psite_id => NULL,  -- added by spamujul for ER#8473903
10042                p_group_id => l_group_id,
10043                p_critical_flag => l_critical_flag,
10044 	       p_party_type => 'CUSTOMER');
10045       END IF;
10046     END IF;
10047 
10048 ELSIF  l_party_id IS NOT NULL THEN
10049 
10050    OPEN get_party_type;
10051    FETCH get_party_type INTO l_party_type;
10052    CLOSE get_party_type;
10053 
10054    IF l_view_by = 'CUSTOMER' THEN
10055 
10056       /* if view by is customer and contact_id is passed,
10057          get customer_id using contact_id */
10058       IF l_party_type = 'PARTY_RELATIONSHIP' THEN
10059          OPEN get_cust_from_cont;
10060          FETCH get_cust_from_cont into l_party_id, l_party_type;
10061 	 CLOSE get_cust_from_cont;
10062       END IF;
10063 
10064       /* profile option for view_by_account in dashboard tab */
10065       l_view_by_acct := FND_PROFILE.value_specific
10066                         ( name => 'CSC_DASHBOARD_TO_QUERY_BY_PARTY_OR_ACCOUNT',
10067                           responsibility_id => l_resp_id,
10068                           application_id => l_resp_appl_id,
10069                           user_id => -999
10070                         );
10071 
10072       /* if view_by_account is yes, check whether account_id is passed.
10073          If not passed, then check whether only one account exists for the customer.
10074          If yes, use this account.
10075          Else get account_id based on profile option CSC_CC_DEFAULT_ACCT */
10076 
10077       IF l_view_by_acct = 'ACCOUNT' THEN
10078          IF l_acct_id IS NULL THEN
10079             l_show_active_acct := FND_PROFILE.value_specific
10080                                     ( name => 'CSC_CONTACT_CENTER_SHOW_ACTIVE_ACCOUNTS',
10081                                       responsibility_id => l_resp_id,
10082                                       application_id => l_resp_appl_id,
10083                                       user_id => -999
10084                                     );
10085             BEGIN
10086                SELECT cust_account_id
10087                  INTO l_acct_id
10088                  FROM hz_cust_accounts
10089                 WHERE party_id = l_party_id
10090                   AND ((status = 'A' AND l_show_active_acct = 'Y') OR (l_show_active_acct = 'N'))
10091                   AND status NOT IN ('M', 'D');
10092             EXCEPTION
10093                WHEN OTHERS THEN
10094                   l_acct_id := NULL;
10095             END;
10096 
10097             IF l_acct_id IS NULL THEN
10098                l_acct_new_old := FND_PROFILE.value_specific
10099                                        ( name => 'CSC_CC_DEFAULT_ACCT',
10100                                          responsibility_id => l_resp_id,
10101                                          application_id => l_resp_appl_id,
10102                                          user_id => -999
10103                                        );
10104 
10105                IF l_acct_new_old = 'Y' THEN
10106                   OPEN get_acct_oldest;
10107                   FETCH get_acct_oldest INTO l_acct_id;
10108                   CLOSE get_acct_oldest;
10109                ELSIF l_acct_new_old = 'L' THEN
10110                   OPEN get_acct_latest;
10111                   FETCH get_acct_latest INTO l_acct_id;
10112                   CLOSE get_acct_latest;
10113                END IF;
10114             END IF; /* l_acct_id is null -- inner*/
10115          END IF; /* l_acct_id is null -- outer */
10116       END IF; /* l_view_by_acct = 'Y' */
10117 
10118       /* If user hook for dashboard group is enabled, call user hook to get group_id.
10119          Else use the existing logic from setup form to get group_id */
10120 
10121      IF JTF_USR_HKS.ok_to_execute('CSC_DASHBOARD_GROUP_CUHK', 'GET_DASHBOARD_GROUP_PRE', 'B', 'C') THEN
10122          l_party_rec.Cust_Party_Id  := l_party_id;
10123          l_party_rec.Cust_Party_Type  := l_party_type;
10124          l_party_rec.Cust_Account_Id  := l_acct_id;
10125 
10126          CSC_DASHBOARD_GROUP_CUHK.get_dashboard_group_pre(l_party_rec);
10127          l_group_id := l_party_rec.group_id;
10128       ELSE
10129          OPEN group_crs;
10130          FETCH group_crs INTO l_group_id;
10131             IF (group_crs%notfound) THEN
10132                CLOSE group_crs;
10133                l_form_name := 'CSCCCCDB';
10134                OPEN group_crs;
10135                FETCH group_crs into l_group_id;
10136                CLOSE group_Crs;
10137             ELSE
10138                CLOSE group_crs;
10139             END IF;
10140       END IF;
10141 
10142       /* if err_code is -20001, Contact Center will display message that says that no group is attached */
10143       IF l_group_id IS NULL THEN
10144          update_jit_status
10145             ( p_status => l_jit_err_status,
10146               p_err_code => -20001,
10147               p_media_item_id => l_media_item_id );
10148           RETURN;
10149       END IF;
10150 
10151       CSC_PROFILE_ENGINE_PKG.run_engine_jit
10152              ( p_party_id => l_party_id,
10153                p_acct_id => l_acct_id,
10154 	       p_psite_id => l_psite_id, -- added by spamujul for ER#8473903
10155                p_group_id => l_group_id,
10156                p_critical_flag => l_critical_flag,
10157 	       p_party_type => 'CUSTOMER');
10158 
10159    ELSIF l_view_by = 'CONTACT' THEN
10160 
10161       /* if view_by is contact and contact_id is not passed, don't process */
10162       IF l_party_type = 'PARTY_RELATIONSHIP' THEN
10163         IF JTF_USR_HKS.ok_to_execute('CSC_DASHBOARD_GROUP_CUHK', 'GET_DASHBOARD_GROUP_PRE', 'B', 'C') THEN
10164             l_party_rec.Cust_Party_Id  := l_party_id;
10165             l_party_rec.Cust_Party_Type  := l_party_type;
10166             l_party_rec.Cust_Account_Id  := l_acct_id;
10167 
10168             CSC_DASHBOARD_GROUP_CUHK.get_dashboard_group_pre(l_party_rec);
10169             l_group_id := l_party_rec.group_id;
10170          ELSE
10171 
10172             OPEN group_crs;
10173             FETCH group_crs INTO l_group_id;
10174                IF (group_crs%notfound) THEN
10175                   CLOSE group_crs;
10176                   l_form_name := 'CSCCCCDB';
10177                   OPEN group_crs;
10178                   FETCH group_crs into l_group_id;
10179                   CLOSE group_Crs;
10180                ELSE
10181                   CLOSE group_crs;
10182                END IF;
10183         END IF;
10184 
10185          IF l_group_id IS NULL THEN
10186             update_jit_status
10187             ( p_status => l_jit_err_status,
10188               p_err_code => -20001,
10189               p_media_item_id => l_media_item_id );
10190              RETURN;
10191          END IF;
10192 
10193 	 CSC_PROFILE_ENGINE_PKG.run_engine_jit
10194              ( p_party_id => l_party_id,
10195                p_acct_id => NULL,
10196 	       p_psite_id => NULL,  -- added by spamujul for ER#8473903
10197                p_group_id => l_group_id,
10198                p_critical_flag => l_critical_flag,
10199 	       p_party_type => 'CUSTOMER');
10200       END IF;
10201    END IF; /* l_view_by */
10202 END IF; /* l_party_id or l_emp_id is null */
10203 
10204    update_jit_status
10205       ( p_status => l_jit_complete_status,
10206         p_err_code => NULL,
10207         p_media_item_id => l_media_item_id );
10208 
10209 EXCEPTION
10210    WHEN OTHERS THEN
10211       l_sql_code := sqlcode;
10212 
10213       update_jit_status
10214         ( p_status => l_jit_err_status,
10215           p_err_code => l_sql_code,
10216           p_media_item_id => l_media_item_id );
10217 
10218       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10219 
10220       IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
10221          FND_MSG_PUB.Add_Exc_Msg
10222            ( p_pkg_name => G_PKG_NAME,
10223              p_procedure_name => l_api_name );
10224       END IF;
10225 
10226       FND_MSG_PUB.Count_And_Get
10227         ( p_count => x_msg_count,
10228           p_data => x_msg_data );
10229 
10230 END csc_prof_jit;
10231 
10232 
10233 /*******************************************
10234   GET_PROFILE_VALUE_RESP
10235   added this procedure for JIT enhancement -- Bug 4535407
10236   Returns Profile Option value at the responsibility level.
10237   This function has been added as API fnd_profile.value_specific is
10238   not defined at form level FND_PROFILE package (pld)
10239 ********************************************/
10240 
10241 FUNCTION get_profile_value_resp ( p_profile_name VARCHAR2,
10242 								     p_resp_id      NUMBER,
10243 								     p_resp_appl_id NUMBER,
10244 								     p_user_id      NUMBER
10245 								  ) RETURN VARCHAR2
10246 								IS
10247 			l_prof_value VARCHAR2(255);
10248 BEGIN
10249 			   l_prof_value := FND_PROFILE.value_specific
10250 					    ( name => p_profile_name,
10251 					      responsibility_id => p_resp_id,
10252 					      application_id => p_resp_appl_id,
10253 					      user_id => p_user_id
10254 					    );
10255 			   RETURN l_prof_value;
10256 END get_profile_value_resp;
10257 
10258 /******************************
10259  * Begin Utilities Definition *
10260  ******************************/
10261 
10262 --
10263 -- Build_Rule
10264 --   Construct the rule as a SQL statement for an indicator check
10265 -- IN
10266 --   check_id - profile check identifier
10267 -- OUT
10268 --   rule - sql statement that returns 0 or 1 row (0 for false, 1 for true)
10269 --
10270 PROCEDURE Build_Rule	( acct_flag		IN 	VARCHAR2,
10271 						chk_id			IN	NUMBER,
10272 						chk_level		IN      VARCHAR2,
10273 						rule				OUT	NOCOPY VARCHAR2
10274 						)   IS
10275 
10276 		     v_blk_id	Number;
10277 		     v_blk_level  Varchar2(10);
10278 		     CURSOR rules_csr IS
10279 			SELECT logical_operator,
10280 					left_paren,
10281 					block_id,
10282 					comparison_operator,
10283 					expression,
10284 					expr_to_block_id,
10285 					right_paren
10286 			FROM csc_prof_check_rules_vl
10287 			WHERE check_id = chk_id;
10288 
10289 		      cursor blk_crs is
10290 			  select block_level from
10291 			     csc_prof_blocks_b
10292 			  where block_id=v_blk_id;
10293 
10294 BEGIN
10295    --
10296    -- Construct indicator check rule as a SQL statement as follows:
10297    --   SELECT 1
10298    --     FROM dual
10299    --     WHERE {condition}
10300    --     <logical_operator> {condition}
10301    --     ...
10302    --
10303    -- A {condition} has the following form:
10304    --   <left_paren> EXISTS ( {subquery} ) <right_paren>
10305    --
10306    -- A {subquery} has the following three forms:
10307    --   SELECT 1
10308    --     FROM csc_prof_block_results
10309    --     WHERE block_id = <block_id>
10310    --     AND party_id = <party_id>
10311    --     AND value <comparison_operator> [<expression1> [AND <expression2>]]
10312    --
10313 		rule := 'SELECT 1 FROM dual WHERE';
10314 		  IF chk_level = 'ACCOUNT' THEN
10315 			FOR rules_rec IN rules_csr LOOP
10316 				v_blk_id:=rules_rec.block_id;
10317 				open blk_crs;
10318 				fetch blk_crs into v_blk_level;
10319 				close blk_crs;
10320 				if v_blk_level='PARTY' then
10321 					rule := rule || ' ' || rules_rec.logical_operator || ' ' ||
10322 					rules_rec.left_paren ||
10323 					'EXISTS (SELECT 1 FROM csc_prof_block_results WHERE block_id = ' ||
10324 					rules_rec.block_id || ' AND party_id = :party_id' ||
10325 					' AND cust_account_id IS NULL AND party_site_id IS NULL AND value ' || rules_rec.comparison_operator; -- Included "PARTY_SITE_ID IS NULL" by spamujul for ER#8473903
10326 					IF rules_rec.expression IS NOT NULL  THEN
10327 						IF (rules_rec.comparison_operator NOT IN ('IS NULL', 'IS NOT NULL')) THEN
10328 							rule := rule || ' ' || rules_rec.expression;
10329 						END IF;
10330 					ELSE
10331 						rule := rule || '(SELECT value from csc_prof_block_results WHERE block_id = '||
10332 						rules_rec.expr_to_block_id || ' AND cust_account_id IS NULL AND party_site_id IS NULL )'; -- Included "PARTY_SITE_ID IS NULL" by spamujul for ER#8473903
10333 					END IF;
10334 					rule := rule || ')' || rules_rec.right_paren;
10335 				ELSIF v_blk_level='ACCOUNT' then
10336 				      rule := rule || ' ' || rules_rec.logical_operator || ' ' ||
10337 						rules_rec.left_paren ||
10338 						'EXISTS (SELECT 1 FROM csc_prof_block_results WHERE block_id = ' ||
10339 						rules_rec.block_id || ' AND party_id = :party_id' ||
10340 						' AND cust_account_id = :cust_account_id AND party_site_id IS NULL' || -- Included "PARTY_SITE_ID IS NULL" by spamujul for ER#8473903
10341 						' AND value ' || rules_rec.comparison_operator;
10342 				     IF rules_rec.expression IS NOT NULL  THEN
10343 						IF (rules_rec.comparison_operator NOT IN ('IS NULL', 'IS NOT NULL')) THEN
10344 						       rule := rule || ' ' || rules_rec.expression;
10345 						END IF;
10346 				     ELSE
10347 						rule := rule || '(SELECT value from csc_prof_block_results WHERE block_id = '
10348 						   || rules_rec.expr_to_block_id ||  ' AND party_id = :party_id' ||
10349 								' AND cust_account_id = :cust_account_id AND party_site_id IS NULL )' ; -- Included "PARTY_SITE_ID IS NULL" by spamujul for ER#8473903
10350 				      END IF;
10351 				      rule := rule || ')' || rules_rec.right_paren;
10352 				end if;
10353 			END LOOP;
10354  -- Begin fix by spamujul for ER#8473903
10355 		ELSIF (chk_level='SITE') then
10356 			FOR rules_rec IN rules_csr LOOP
10357 				v_blk_id:=rules_rec.block_id;
10358 				open blk_crs;
10359 				fetch blk_crs into v_blk_level;
10360 				close blk_crs;
10361 				IF v_blk_level='PARTY' THEN
10362 					rule := rule || ' ' || rules_rec.logical_operator || ' ' ||
10363 					rules_rec.left_paren ||
10364 					'EXISTS (SELECT 1 FROM csc_prof_block_results WHERE block_id = ' ||
10365 					rules_rec.block_id || ' AND party_id = :party_id' ||
10366 					' AND cust_account_id IS NULL AND PARTY_SITE_ID IS NULL AND value ' || rules_rec.comparison_operator;
10367 					IF rules_rec.expression IS NOT NULL  THEN
10368 						IF (rules_rec.comparison_operator NOT IN ('IS NULL', 'IS NOT NULL')) THEN
10369 							rule := rule || ' ' || rules_rec.expression;
10370 						END IF;
10371 					ELSE
10372 						rule := rule || '(SELECT value from csc_prof_block_results WHERE block_id = '||
10373 						rules_rec.expr_to_block_id || ' AND cust_account_id IS NULL AND PARTY_SITE_ID IS NULL)';
10374 					END IF;
10375 					rule := rule || ')' || rules_rec.right_paren;
10376 				ELSIF v_blk_level='SITE' then
10377 					rule := rule || ' ' || rules_rec.logical_operator || ' ' ||
10378 					rules_rec.left_paren ||
10379 					'EXISTS (SELECT 1 FROM csc_prof_block_results WHERE block_id = ' ||
10380 					rules_rec.block_id || ' AND party_id = :party_id' ||
10381 					' AND party_site_id = :party_site_id and cust_account_id is null' ||
10382 					' AND value ' || rules_rec.comparison_operator;
10383 					IF rules_rec.expression IS NOT NULL  THEN
10384 						IF (rules_rec.comparison_operator NOT IN ('IS NULL', 'IS NOT NULL')) THEN
10385 							rule := rule || ' ' || rules_rec.expression;
10386 						END IF;
10387 					ELSE
10388 						rule := rule || '(SELECT value from csc_prof_block_results WHERE block_id = '
10389 						||rules_rec.expr_to_block_id ||  ' AND party_id = :party_id' ||
10390 						' AND party_site_id = :party_site_id and cust_account_id is null)' ;
10391 					END IF;
10392 					rule := rule || ')' || rules_rec.right_paren;
10393 				END IF;
10394 			END LOOP;
10395 
10396  -- End fix by spamujul for ER#8473903
10397 		  ELSIF (chk_level='PARTY' OR chk_level='CONTACT' or chk_level='EMPLOYEE') THEN
10398 			    FOR rules_rec IN rules_csr LOOP
10399 			      rule := rule || ' ' || rules_rec.logical_operator || ' ' ||
10400 					rules_rec.left_paren ||
10401 					'EXISTS (SELECT 1 FROM csc_prof_block_results WHERE block_id = ' ||
10402 					rules_rec.block_id || ' AND party_id = :party_id' ||
10403 					' AND cust_account_id IS NULL AND party_site_id IS NULL AND value ' || rules_rec.comparison_operator; -- Included "PARTY_SITE_ID IS NULL" by spamujul for ER#8473903
10404 
10405 				IF rules_rec.expression IS NOT NULL  THEN
10406 				   IF (rules_rec.comparison_operator NOT IN ('IS NULL', 'IS NOT NULL')) THEN
10407 				       rule := rule || ' ' || rules_rec.expression;
10408 				   END IF;
10409 				ELSE
10410 					rule := rule || '(SELECT value from csc_prof_block_results WHERE block_id = '||
10411 						rules_rec.expr_to_block_id || ' AND cust_account_id IS NULL  AND party_site_id IS NULL)'; -- Included "PARTY_SITE_ID IS NULL" by spamujul for ER#8473903
10412 				END IF;
10413 			      rule := rule || ')' || rules_rec.right_paren;
10414 			    END LOOP;
10415 		  END IF;
10416 END Build_Rule;
10417 
10418 
10419 --
10420 -- Set_Context
10421 --   Set procedure context (for stack trace).
10422 -- IN
10423 --   proc_name - procedure/function name
10424 --   arg1 - first IN argument
10425 --   argn - n'th IN argument
10426 --
10427 PROCEDURE Set_Context   ( proc_name	IN	VARCHAR2,
10428 							    arg1		IN	VARCHAR2 DEFAULT '*none*',
10429 							    arg2		IN	VARCHAR2 DEFAULT '*none*',
10430 							    arg3		IN	VARCHAR2 DEFAULT '*none*',
10431 							    arg4		IN	VARCHAR2 DEFAULT '*none*',
10432 							    arg5		IN	VARCHAR2 DEFAULT '*none*'
10433 						   )    IS
10434 BEGIN
10435 	   -- Start with procedure name.
10436 	   IF (proc_name IS NOT NULL) THEN
10437 	      fnd_file.put(FND_FILE.LOG, proc_name||'(');
10438 	   END IF;
10439 	   -- Add all defined args.
10440 	   IF (arg1 <> '*none*') THEN
10441 	      fnd_file.put(FND_FILE.LOG, arg1);
10442 	   END IF;
10443 	   IF (arg2 <> '*none*') THEN
10444 	      fnd_file.put(FND_FILE.LOG, ', '||arg2);
10445 	   END IF;
10446 	   IF (arg3 <> '*none*') THEN
10447 	      fnd_file.put(FND_FILE.LOG, ', '||arg3);
10448 	   END IF;
10449 	   IF (arg4 <> '*none*') THEN
10450 	      fnd_file.put(FND_FILE.LOG, ', '||arg4);
10451 	   END IF;
10452 	   IF (arg5 <> '*none*') THEN
10453 	      fnd_file.put(FND_FILE.LOG, ', '||arg5);
10454 	   END IF;
10455 
10456 	   IF (proc_name IS NOT NULL) THEN
10457 	      fnd_file.put_line(FND_FILE.LOG, ')');
10458 	    ELSE
10459 	      fnd_file.new_line(FND_FILE.LOG);
10460 	   END IF;
10461   EXCEPTION
10462 		   WHEN UTL_FILE.INVALID_FILEHANDLE THEN
10463 				fnd_message.set_name('CSC', 'CSC_PROFILE_INVALID_FILEHANDLE');
10464 				warning_msg := fnd_message.get;
10465 		   WHEN UTL_FILE.INVALID_OPERATION THEN
10466 				fnd_message.set_name('CSC', 'CSC_PROFILE_INVALID_OPERATION');
10467 				warning_msg := fnd_message.get;
10468 		   WHEN UTL_FILE.WRITE_ERROR THEN
10469 				fnd_message.set_name('CSC', 'CSC_PROFILE_WRITE_ERROR');
10470 				warning_msg := fnd_message.get;
10471 END Set_Context;
10472 
10473 
10474 --
10475 -- Utility to delete all records in the tables
10476 --
10477 PROCEDURE Table_Delete IS
10478 Begin
10479 
10480 	   IP_Block_Id.delete;
10481 	   IP_Check_Id.delete;
10482 	   IP_Party_Id.delete;
10483 	   IP_Account_Id.delete;
10484 	   IP_Psite_id.delete;	-- added by spamujul for ER#8473903
10485 	   IP_Value.delete;
10486 	   IP_Currency.delete;
10487 
10488 	   UP_Grade.delete;
10489 	   UP_Block_Id.delete;
10490 	   UP_Check_Id.delete;
10491 	   UP_Party_Id.delete;
10492 	   UP_Account_Id.delete;
10493 	   UP_Psite_id.delete;	-- added by spamujul for ER#8473903
10494 	   UP_Value.delete;
10495 	   UP_Currency.delete;
10496 	   UP_Grade.delete;
10497 
10498 	   IA_Block_Id.delete;
10499 	   IA_Check_Id.delete;
10500 	   IA_Party_Id.delete;
10501 	   IA_Account_Id.delete;
10502 	   IA_Psite_id.delete;	 -- added by spamujul for ER#8473903
10503 	   IA_Value.delete;
10504 	   IA_Currency.delete;
10505 
10506 	   UA_Grade.delete;
10507 	   UA_Block_Id.delete;
10508 	   UA_Check_Id.delete;
10509 	   UA_Party_Id.delete;
10510 	   UA_Account_Id.delete;
10511 	   UA_Psite_id.delete;	-- added by spamujul for ER#8473903
10512 	   UA_Value.delete;
10513 	   UA_Currency.delete;
10514 	   UA_Grade.delete;
10515 	-- Begin Fix by spamujul  for ER#8473903
10516 	  US_Block_Id.delete;
10517 	  US_Check_Id.delete;
10518 	  US_Party_Id.delete;
10519 	  US_Account_Id.delete;
10520 	  US_Psite_Id.delete;
10521 	  US_Value.delete;
10522 	  US_Currency.delete;
10523 	  US_Grade.delete;
10524 	  US_Rating_code.delete;
10525 	  US_Color_code.delete;
10526 	  US_Results.delete;
10527 
10528 	  IS_Block_Id.delete;
10529 	  IS_Check_Id.delete;
10530 	  IS_Party_Id.delete;
10531 	  IS_Account_Id.delete;
10532 	  IS_Psite_Id.delete;
10533 	  IS_Value.delete;
10534 	  IS_Currency.delete;
10535 	  IS_Grade.delete;
10536 	  IS_Rating_Code.delete;
10537 	  IS_Color_Code.delete;
10538 	  IS_Results.delete;
10539 	-- End Fix by spamujul  for ER#8473903
10540 	   -- Relationship Plan tables
10541 	   plan_id_plan_table.delete;
10542 	   check_id_plan_table.delete;
10543 	   party_id_plan_table.delete;
10544 	   account_id_plan_table.delete;
10545 END Table_Delete;
10546 
10547 FUNCTION  Calc_Threshold (  p_val			VARCHAR2,
10548 							   p_low_val		VARCHAR2,
10549 							   p_high_val		VARCHAR2,
10550 							   p_data_type	VARCHAR2,
10551 							   p_chk_u_l_flag VARCHAR2
10552 						    ) RETURN VARCHAR2 IS
10553 		   RESULT		VARCHAR2(3);
10554 		   val			VARCHAR2(240) :=	null;
10555 BEGIN
10556 	   IF p_low_val is NULL AND p_high_val IS NULL THEN
10557 	      RETURN 'Y';
10558 	   END IF;
10559 	  IF  p_data_type IN ('NUMBER', 'DATE') THEN
10560 		IF p_data_type = 'NUMBER' THEN
10561 			IF p_val IS NULL Then
10562 		            val := '0';
10563 			ELSE
10564 			   val := p_val;
10565 		         END IF;
10566 			IF p_chk_u_l_flag ='U' THEN
10567 			      IF to_number(val) > to_number(p_high_val) THEN
10568 				  Result := 'Y';
10569 			      Else
10570 				  Result := 'N';
10571 			      End If;
10572 		   Elsif p_chk_u_l_flag = 'L' Then
10573 			       If to_number(val) < to_number(p_low_val) then
10574 					Result := 'Y';
10575 				Else
10576 					Result := 'N';
10577 				End If;
10578 		  Else
10579 				 Result := 'N';
10580 		  End If;
10581         ELSE
10582 		IF val IS NOT NULL THEN
10583 			 If p_chk_u_l_flag = 'U' Then
10584 				If val > p_high_val then
10585 					Result := 'Y';
10586 				Else
10587 					Result := 'N';
10588 				 End If;
10589 			Elsif p_chk_u_l_flag = 'L' Then
10590 				   If val < p_low_val then
10591 					Result := 'Y';
10592 				   Else
10593 					Result := 'N';
10594 				   End If;
10595 			       Else
10596 					Result := 'N';
10597 			       End If;
10598 			End if;
10599 		END IF;
10600 	END IF;
10601 	RETURN RESULT;
10602 END Calc_Threshold;
10603 
10604 FUNCTION Format_Mask (   p_curr_code	VARCHAR2,
10605 						    p_data_type	VARCHAR2,
10606 						    p_val			VARCHAR2,
10607 						    p_fmt_mask	VARCHAR2
10608 						)  RETURN VARCHAR2  IS
10609 			   val VARCHAR2(240);
10610 			   v_format_date DATE;
10611 BEGIN
10612 		val := p_val;
10613 		IF (p_curr_code IS NULL OR p_curr_code = '') THEN
10614 			 IF (p_fmt_mask IS NOT NULL OR p_fmt_mask <> '') THEN
10615 			          IF (p_data_type = 'NUMBER') THEN
10616 				             val := To_char(To_number(nvl(p_val, '0')), p_fmt_mask);
10617 				  ELSIF (p_data_type = 'DATE') THEN
10618 				             v_format_date := to_date(p_val,'DD-MM-YYYY');
10619 				             val := To_char(v_format_date, p_fmt_mask);
10620 			          END IF;
10621 		      END IF;
10622 	   END IF;
10623 	   IF p_data_type = 'NUMBER' AND val IS NULL THEN
10624 	      val := '0';
10625 	   END IF;
10626 	   RETURN val;
10627 END Format_Mask;
10628 
10629 FUNCTION rating_color   (p_chk_id		NUMBER,
10630 						   p_party_id		NUMBER,
10631 						   p_account_id	NUMBER,
10632 						   p_psite_id		NUMBER, -- added by spamujul for ER#8473903
10633 						   p_val			VARCHAR2,
10634 						   p_data_type	VARCHAR2,
10635 						   p_column		VARCHAR2,
10636 						   p_count		NUMBER
10637 						 )  RETURN VARCHAR2 IS
10638 	   v_val				NUMBER;
10639 	   val				VARCHAR2(240) := p_val;
10640 	   v_color_code		VARCHAR2(240);
10641 	   v_rating_code		VARCHAR2(240);
10642 	   grd				VARCHAR2(240);
10643 BEGIN
10644 			   IF nvl(g_check_id, -99) = nvl(p_chk_id, -99)
10645 			      AND nvl(g_party_id, -99) = nvl(p_party_id, -99)
10646 			      AND nvl(g_account_id, -99) = nvl(p_account_id, -99)
10647 			      AND nvl(g_psite_id, -99) = nvl(p_psite_id, -99)  -- Added by spamujul for ER#8473903
10648 			      AND nvl(g_value, -99) = nvl(p_val, -99)
10649 			THEN
10650 					NULL;
10651 			ELSE
10652 					IF p_count > 0 THEN
10653 						 IF (p_data_type IN ('NUMBER', 'DATE')) THEN
10654 						            IF p_data_type = 'NUMBER' Then
10655 								     IF val IS NULL Then
10656 									    val := '0';
10657 								     END IF;
10658 								     v_val := to_number(val);
10659 								     val := to_char(v_val);
10660 								       FOR a in 1..p_count LOOP
10661 									  IF v_val BETWEEN nvl(rating_tbl(a).low_value, v_val) AND nvl(rating_tbl(a).high_value, v_val) THEN
10662 									     v_color_code := rating_tbl(a).color_code;
10663 									     v_rating_code := rating_tbl(a).rating_code;
10664 									     grd := rating_tbl(a).grade;
10665 									     EXIT;
10666 									  END IF;
10667 								       END LOOP;
10668 							ELSE
10669 								       IF val IS NOT NULL THEN
10670 										FOR a IN 1..p_count LOOP
10671 											IF val BETWEEN nvl(rating_tbl(a).low_value, val) AND nvl(rating_tbl(a).high_value, val) THEN
10672 												v_color_code := rating_tbl(a).color_code;
10673 												v_rating_code := rating_tbl(a).rating_code;
10674 												grd := rating_tbl(a).grade;
10675 												EXIT;
10676 											END IF;
10677 										END LOOP;
10678 								       END IF;
10679 							 END IF;
10680 				         END IF;
10681 			      END IF;
10682    			      /* populate the global variables */
10683 			      g_check_id := p_chk_id;
10684 			      g_party_id := p_party_id;
10685 			      g_account_id := p_account_id;
10686 			      g_psite_id	:= p_psite_id;  -- Added by spamujul for ER#8473903
10687 			      g_value := p_val;
10688 			      g_color_code := v_color_code;
10689 			      g_rating := v_rating_code;
10690 			      g_grade := grd;
10691 		   END IF;
10692 		   IF p_column = 'COLOR' THEN
10693 		      RETURN g_color_code;
10694 		   ELSIF p_column = 'RATING' THEN
10695 		      RETURN g_rating;
10696 		   ELSIF p_column = 'GRADE' THEN
10697 		      RETURN g_grade;
10698 		   END IF;
10699 END rating_color;
10700 
10701 /* This procedure reverts back to the state before the start of the concurrent program */
10702 PROCEDURE Handle_Exception IS
10703 			   -- varlables for getting CSC schema name
10704 			   v_schema_status VARCHAR2(1);
10705 			   v_industry      VARCHAR2(1);
10706 			   v_schema_name   VARCHAR2(30);
10707 			   v_get_appl      BOOLEAN;
10708 BEGIN
10709 		   v_get_appl :=  FND_INSTALLATION.GET_APP_INFO('CSC', v_schema_status, v_industry, v_schema_name);
10710 		   EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N2 REBUILD NOLOGGING';
10711 		   EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N3 REBUILD NOLOGGING';
10712 		   EXECUTE IMMEDIATE 'ALTER INDEX '|| v_schema_name ||'.CSC_PROF_CHECK_RESULTS_N4 REBUILD NOLOGGING';
10713 		   EXECUTE IMMEDIATE 'ALTER TABLE ' || v_schema_name || '.CSC_PROF_CHECK_RESULTS LOGGING';
10714 END Handle_Exception;
10715 
10716 /******************************
10717  *  End Utilities Definition  *
10718  ******************************/
10719 
10720 END CSC_Profile_Engine_PKG;