DBA Data[Home] [Help]

PACKAGE BODY: APPS.CN_SCA_INTERFACE_MAP_PVT

Source


1 PACKAGE BODY cn_sca_interface_map_pvt AS
2 -- $Header: cnvmpgnb.pls 120.3 2005/11/29 22:20:46 vensrini noship $
3 
4 PROCEDURE get_min ( p_min IN OUT NOCOPY number, p_max number) IS
5 BEGIN
6    IF p_min =0 and p_max <> 0
7    THEN
8       p_min := p_max;
9    ELSIF p_min <> 0 and p_max <> 0
10    THEN
11       IF p_min > p_max
12       THEN
13          p_min := p_max;
14       END IF;
15    END IF;
16 END;
17 
18 -- search the next occurence of delimiter '+ - * / ( ) ' in sql_select portion and return the position
19 FUNCTION search_delimiter_select ( p_input_str varchar2, p_start number)
20   RETURN  number IS
21      l_position_min		NUMBER ;
22      l_position    		NUMBER;
23 BEGIN
24    l_position_min := instr( p_input_str, '*', p_start) ;
25    l_position := instr(p_input_str, '-', p_start);
26    get_min(l_position_min, l_position);
27 
28    l_position := instr(p_input_str, '+', p_start);
29    get_min(l_position_min, l_position);
30 
31    l_position := instr(p_input_str, '/', p_start);
32    get_min(l_position_min, l_position);
33 
34    l_position := instr(p_input_str, '(', p_start);
35    get_min(l_position_min, l_position);
36 
37    l_position := instr(p_input_str, ')', p_start);
38    get_min(l_position_min, l_position);
39 
40    l_position := instr(p_input_str, ',', p_start);
41    get_min(l_position_min, l_position);
42 
43    return l_position_min;
44 END;
45 
46 
47 -- search the next occurence of delimiter ', ' in sql_from portion and return the position
48 FUNCTION search_delimiter_from ( p_input_str varchar2, p_start  number) RETURN
49   NUMBER IS
50      l_position_min        NUMBER :=0;
51      l_position          	NUMBER;
52 BEGIN
53    l_position := instr(p_input_str, ',', p_start);
54    get_min(l_position_min, l_position);
55    return l_position_min;
56 END;
57 
58 -- search the next occurence of delimiter 'and ' in sql_where portion and return the position
59 FUNCTION search_delimiter_where ( p_input_str varchar2, p_start number)
60   RETURN  number IS
61      l_position_min        NUMBER :=0;
62      l_position         	NUMBER;
63 BEGIN
64    l_position := instr(p_input_str, 'and', p_start);
65    get_min(l_position_min, l_position);
66    return l_position_min;
67 END;
68 
69 -- search the next occurence of delimiter empty space in COMMENT and return the position
70 FUNCTION search_delimiter_comment ( p_input_str varchar2, p_start number)
71   RETURN  number IS
72      l_position_min     NUMBER :=0;
73      l_position         NUMBER;
74 BEGIN
75    l_position := instr(p_input_str, ' ', p_start);
76    get_min(l_position_min, l_position);
77    return l_position_min;
78 END search_delimiter_comment ;
79 
80 PROCEDURE split_long_sql ( body_code        IN OUT NOCOPY cn_utils.code_type,
81                            p_input_str      VARCHAR2  ,
82                            sql_type   VARCHAR2) --,
83 --                           p_org_id   IN NUMBER        ) -- MOAC Change
84   IS
85      l_length 		NUMBER;    	/* total length of input string */
86      l_start  		NUMBER;    	/* the start position of current split */
87      l_next   		NUMBER;    	/* position of next delimiter */
88      l_next_prev 	NUMBER; 		/* position of previous delimiter */
89      l_limit  		NUMBER;    	/* the upper boundary of current split */
90 
91      l_sql_segment_length NUMBER := 80;
92 BEGIN
93 
94    DBMS_APPLICATION_INFO.SET_ACTION('inside SPLIT LONG ' );
95 
96    -- Set org Id for CN_UTILS package
97  --  cn_utils.set_org_id( p_org_id ); -- MOAC Change
98 
99    l_start := 1;
100    l_limit := l_start + l_sql_segment_length;
101 
102    l_length := Length(p_input_str);
103    l_next := l_start;
104    l_next_prev := l_start;
105 
106    WHILE l_limit < l_length
107    LOOP
108       WHILE l_next < l_limit
109       LOOP
110 
111        /* the postion of l_next delimiter is not beyong the upper boudary yet  */
112 
113          l_next_prev := l_next;
114 
115          IF sql_type = 'SELECT'
116          THEN
117             l_next := search_delimiter_select(p_input_str, l_next_prev+1 );
118          ELSIF sql_type = 'FROM'
119          THEN
120             l_next := NVL(search_delimiter_from(p_input_str, l_next_prev+1 ),0);
121          ELSIF sql_type = 'WHERE'
122          THEN
123             l_next := search_delimiter_where(p_input_str, l_next_prev+1 );
124          ELSIF sql_type = 'COMMENT'
125          THEN
126             l_next := search_delimiter_comment(p_input_str, l_next_prev+1 );
127          END IF;
128 
129          IF l_next = 0
130          THEN  /* no more delimiter */
131             EXIT;
132          END IF;
133 
134          IF l_next >= l_limit
135          THEN
136            l_next_prev := l_next;
137          END IF;
138 
139 
140       END LOOP;
141 
142       IF sql_type = 'COMMENT'
143       THEN
144          cn_utils.appindcr(body_code, '-- ' || substr(p_input_str, l_start,
145                            l_next_prev -  l_start) );
146       ELSE
147          cn_utils.appindcr(body_code, substr(p_input_str, l_start,
148                                              l_next_prev - l_start));
149       END IF;
150 
151       l_start := l_next_prev ;
152       l_limit := l_start + l_sql_segment_length;
153 
154       IF l_next = 0
155       THEN  /* no more delimiter */
156          EXIT;
157       END IF;
158    END LOOP;
159 
160    IF sql_type = 'COMMENT'
161    THEN
162       cn_utils.appindcr(body_code, '--' || substr(p_input_str, l_start,
163                         l_length -  l_start  + 1));
164    ELSE
165       cn_utils.appindcr(body_code, substr(p_input_str, l_start,
166                                           l_length - l_start  + 1));
167    END IF;
168 
169    -- Unset org_id in CN_UTILS package
170 --   cn_utils.unset_org_id( );   -- MOAC Change
171 END split_long_sql;
172 
173 
174 PROCEDURE pkg_init_boilerplate (
175 	code		     	IN OUT NOCOPY cn_utils.code_type,
176 	package_name	IN cn_obj_packages_v.name%TYPE,
177 	description		IN cn_obj_packages_v.description%TYPE,
178 	object_type		IN VARCHAR2) --,
179 --        p_org_id                IN NUMBER) -- MOAC Change
180 IS
181 	x_userid		VARCHAR2(20);
182 BEGIN
183 	SELECT  user
184 	INTO    x_userid
185 	FROM    sys.dual;
186 
187         -- Set org id in cn_utils package
188 --        cn_utils.set_org_id( p_org_id );  -- MOAC Change
189 
190 	cn_utils.appendcr(code, '--+============================================================================+');
191 	cn_utils.appendcr(code, '--    		       Copyright (c) 1993 Oracle Corporation');
192 	cn_utils.appendcr(code, '--		             Redwood Shores, California, USA');
193 	cn_utils.appendcr(code, '--			               All rights reserved.');
194 	cn_utils.appendcr(code, '--+============================================================================+');
195 	cn_utils.appendcr(code, '-- Package Name');
196 	cn_utils.appendcr(code, '--   '||package_name);
197 	cn_utils.appendcr(code, '-- Purpose');
198 	cn_utils.appendcr(code, '--   '||description);
199 	cn_utils.appendcr(code, '-- History');
200 	cn_utils.appendcr(code, '--   '||SYSDATE||'          '||x_userid ||'            Created');
201 	cn_utils.appendcr(code, '--+============================================================================+');
202 
203 	----+
204 	-- Check For Package type, based on PKS(spec) or PKB(body) generate init section
205 	-- Of your code accordingly
206 	----+
207 	IF (object_type = 'PKS')
208 	THEN
209 		cn_utils.appendcr(code, 'CREATE OR REPLACE PACKAGE ' ||package_name||' AS');
210 	ELSE
211 		cn_utils.appendcr(code, 'CREATE OR REPLACE PACKAGE BODY ' ||package_name||' AS');
212 	END IF;
213 
214 	cn_utils.appendcr(code);
215 
216         -- Unset org id in cn_utils package
217 --        cn_utils.unset_org_id(); -- MOAC Change
218 END pkg_init_boilerplate;
219 
220 PROCEDURE check_create_object(
221 	p_init_msg_list    	IN  	VARCHAR2 := FND_API.G_FALSE,
222   	p_commit           	IN  	VARCHAR2 := FND_API.G_FALSE,
223   	p_validation_level 	IN  	NUMBER   := FND_API.G_VALID_LEVEL_FULL,
224 	p_name             	IN  	cn_objects.name%TYPE,
225 	p_object_type      	IN  	cn_objects.object_type%TYPE,
226 	p_object_id        	IN  	OUT NOCOPY cn_objects.object_id%TYPE,
227 	p_repository_id    	IN  	cn_repositories.repository_id%TYPE,
228         p_org_id                IN      cn_repositories.org_id%TYPE, -- MOAC Change
229 	x_return_status    	OUT 	NOCOPY  VARCHAR2,
230 	x_msg_count        	OUT 	NOCOPY  NUMBER,
231 	x_msg_data         	OUT 	NOCOPY  VARCHAR2)
232 IS
233 	dummy      NUMBER;
234 	x_rowid    ROWID;
235 
236 BEGIN
237 
238 	SAVEPOINT check_create_object;
239 
240 	IF FND_API.to_Boolean( p_init_msg_list )
241 	THEN
242 	  FND_MSG_PUB.initialize;
243 	END IF;
244 
245 	x_return_status := FND_API.G_RET_STS_SUCCESS;
246 
247 ------+
248 -- check whether Mapping Package exist in cn_objects
249 ------+
250 
251 	SELECT  COUNT(*)
252 	INTO   	dummy
253 	FROM   	cn_objects
254 	WHERE  	name = P_NAME
255 	AND    	object_type = P_OBJECT_TYPE
256         AND     org_id = p_org_id;   -- MOAC Change
257 
258 	IF dummy = 0
259 	THEN
260 		P_OBJECT_ID := cn_utils.get_object_id;
261 
262 		cn_objects_pkg.insert_row(
263                         x_org_id                    => p_org_id,  -- MOAC Change
264 			x_rowid                     => x_rowid,
265 			x_object_id                 => p_object_id,
266 			x_dependency_map_complete   => 'n',
267 			x_name                      => p_name,
268 			x_description               => null,
269 			x_object_type               => p_object_type,
270 			x_repository_id             => p_repository_id,
271 			x_next_synchronization_date => NULL,
272 			x_synchronization_frequency => NULL,
273 			x_object_status             => 'a',
274 			x_object_value              => NULL );
275 
276 	ELSIF dummy = 1
277 	THEN
278 		SELECT  object_id
279       INTO    P_OBJECT_ID
280 		FROM    cn_objects
281 		WHERE   name        = P_NAME
282 		AND     object_type = P_OBJECT_TYPE
283                 AND     org_id      = p_org_id;  -- MOAC Change
284 	END IF;
285 
286 	FND_MSG_PUB.Count_And_Get
287 		 (p_count	 =>	x_msg_count,
288 		  p_data     =>	x_msg_data,
289 		  p_encoded  =>	FND_API.G_FALSE);
290 
291 EXCEPTION
292 
293 WHEN FND_API.G_EXC_ERROR
294 THEN
295 	ROLLBACK TO check_create_object;
296 	x_return_status := FND_API.G_RET_STS_ERROR ;
297 	FND_MSG_PUB.Add_Exc_Msg( P_NAME ,'check_create_object' );
298 	FND_MSG_PUB.Count_And_Get
299 			 (p_count	 =>	x_msg_count,
300 			  p_data     =>	x_msg_data,
301 			  p_encoded  =>	FND_API.G_FALSE);
302 
303 WHEN FND_API.G_EXC_UNEXPECTED_ERROR
304 THEN
305 	ROLLBACK TO check_create_object;
306 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
307 	FND_MSG_PUB.Add_Exc_Msg( P_NAME ,'check_create_object' );
308 	FND_MSG_PUB.Count_And_Get
309 			 (p_count	 =>	x_msg_count,
310 			  p_data     =>	x_msg_data,
311 			  p_encoded  =>	FND_API.G_FALSE);
312 WHEN OTHERS THEN
313 	ROLLBACK TO check_create_object;
314 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
315 
316 	FND_MSG_PUB.ADD_EXC_MSG( P_NAME ,'check_create_object');
317 
318 	FND_MSG_PUB.Count_And_Get
319 		 (p_count	 =>	x_msg_count,
320 		  p_data     =>	x_msg_data,
321 		  p_encoded  =>	FND_API.G_FALSE);
322 
323 
324 END check_create_object;
325 
326 PROCEDURE pkg_init (
327 	module_id		    cn_modules.module_id%TYPE,
328     package_name		    cn_obj_packages_v.name%TYPE,
329     package_spec_id     IN OUT NOCOPY  cn_obj_packages_v.package_id%TYPE,
330     package_body_id     IN OUT NOCOPY  cn_obj_packages_v.package_id%TYPE,
331     package_spec_desc   IN OUT NOCOPY  cn_obj_packages_v.description%TYPE,
332     package_body_desc   IN OUT NOCOPY  cn_obj_packages_v.description%TYPE,
333     spec_code	    		IN OUT NOCOPY  cn_utils.code_type,
334     body_code	    		IN OUT NOCOPY  cn_utils.code_type,
335     p_org_id                    IN NUMBER) IS -- MOAC Change
336 
337     x_rowid			ROWID;
338     null_id			NUMBER;
339 
340 BEGIN
341         -- Set org_id in cn_utils
342 --        cn_utils.set_org_id( p_org_id ); -- MOAC Change
343 
344 	-- Find the package objects
345 	cn_utils.find_object(package_name,'PKS',package_spec_id, package_spec_desc, p_org_id); -- MOAC Change
346 	cn_utils.find_object(package_name,'PKB',package_body_id, package_body_desc, p_org_id); -- MOAC Change
347 
348 	-- Delete module source code from cn_source
349 	-- Delete module object dependencies for this module
350 	cn_utils.delete_module(module_id, package_spec_id, package_body_id, p_org_id); -- MOAC Change
351 
352 	cn_utils.init_code (package_spec_id, spec_code);
353 	cn_utils.init_code (package_body_id, body_code);
354 
355 	pkg_init_boilerplate(spec_code, package_name, package_spec_desc, 'PKS');
356 	pkg_init_boilerplate(body_code, package_name, package_body_desc, 'PKB');
357 
358 	cn_utils.indent(spec_code, 1);
359 	cn_utils.indent(body_code, 1);
360 
361         -- Unset org id in cn_utils
362 --        cn_utils.unset_org_id(); -- MOAC Change
363 END pkg_init;
364 
365 PROCEDURE install_package_object(
366 	p_object_name 			IN VARCHAR2,
367         p_org_id                        IN cn_objects.org_id%TYPE,  -- MOAC Change
368 	x_compile_status 		OUT NOCOPY  VARCHAR2,
369 	x_return_status    	OUT NOCOPY  VARCHAR2,
370     x_msg_count        	OUT NOCOPY  NUMBER,
371     x_msg_data         	OUT NOCOPY  VARCHAR2)
372 IS
373 	l_user_id  		 		NUMBER(15) 		:= fnd_global.user_id;
374 	l_login_id 				NUMBER(15) 		:= fnd_global.login_id;
375 	l_object_name       	VARCHAR2(80) 	:= p_object_name;
376 	l_line_length       	NUMBER;
377 	l_send_position     	NUMBER;
378 	l_pkg_object_id     	NUMBER;
379 	l_sqlstring 	    	dbms_sql.varchar2s;
380 	l_empty_sqlstring   	dbms_sql.varchar2s;
381 	i 		            	INTEGER;
382 	j		            	INTEGER;
383 	l_cur 	  	        	INTEGER;
384 	l_new_line_flag     	BOOLEAN := TRUE;
385 	l_retval 	        	NUMBER;
386 	l_error_count       	NUMBER;
387 
388 
389 
390 BEGIN
391 
392 	SAVEPOINT install_package_object;
393 ----+
394 -- Get Object id of the package Body
395 ----+
396 	SELECT	object_id
397 	INTO 		l_pkg_object_id
398 	FROM 		cn_objects
399 	WHERE 	UPPER(name) =  UPPER(p_object_name)
400 	AND 	object_type = 'PKS'
401         AND     org_id = p_org_id;  -- MOAC Change
402 ----+
403 -- Store The Code For Package Specification in l_sqlstring
404 ----+
405 	SELECT	text BULK COLLECT
406 	INTO 	 	l_sqlstring
407 	FROM 	 	cn_source
408 	WHERE 	object_id = l_pkg_object_id
409         AND     org_id = p_org_id -- MOAC Change
410 	ORDER BY source_id;
411 ----+--+
412 -- Compile Package Specification
413 ------+
414 	i := 1;
415 
416 	j := l_sqlstring.count;
417 
418 	l_cur:= DBMS_SQL.OPEN_CURSOR;
419 
420 	DBMS_SQL.PARSE(l_cur, l_sqlstring, i, j, l_new_line_flag, DBMS_SQL.V7);
421 
422 	l_retval:= DBMS_SQL.EXECUTE(l_cur);
423 
424 	DBMS_SQL.CLOSE_CURSOR(l_cur);
425 
426 	l_sqlstring := l_empty_sqlstring;
427 	------+
428 	-- Get Object id of the package Body
429 	------+
430 	SELECT	object_id
431 	INTO 		l_pkg_object_id
432 	FROM 		cn_objects
433 	WHERE 	UPPER(name) =  UPPER(p_object_name)
434 	AND 		object_type = 'PKB'
435         AND     org_id = p_org_id; -- MOAC Change
436 ------+
437 -- Store The Code For Package Body in l_sqlstring
438 ------+
439 	SELECT	text BULK COLLECT
440 	INTO 	 	l_sqlstring
441 	FROM 	 	cn_source
442 	WHERE 	object_id = l_pkg_object_id
443         AND     org_id = p_org_id  -- MOAC Change
444 	ORDER BY source_id;
445 ------+
446 -- Compile Package Body
447 ------+
448 	i := 1;
449 
450 	j := l_sqlstring.count;
451 
452 	l_cur := DBMS_SQL.OPEN_CURSOR;
453 
454 	DBMS_SQL.PARSE(l_cur, l_sqlstring, i, j, l_new_line_flag, DBMS_SQL.V7);
455 
456 	l_retval:= DBMS_SQL.EXECUTE(l_cur);
457 
458 	DBMS_SQL.CLOSE_CURSOR(l_cur);
459 
460 	l_sqlstring := l_empty_sqlstring;
461 	------+
462 	-- Check Whether Package Compiled Successfully
463 	------+
464 	SELECT  COUNT(ROWNUM)
465 	INTO    l_error_count
466 	FROM    user_errors
467 	WHERE   name = p_object_name
468 	AND     type IN ('PACKAGE', 'PACKAGE BODY');
469 
470 
471 	IF (l_error_count > 0)
472 	THEN
473 		x_compile_status := 'INCOMPLETE';
474 	ELSE
475 		x_compile_status := 'COMPLETE';
476 	END IF;
477 
478 	FND_MSG_PUB.Count_And_Get
479 		 (p_count	 =>	x_msg_count,
480 		  p_data     =>	x_msg_data,
481 		  p_encoded  =>	FND_API.G_FALSE);
482 
483 EXCEPTION
484 WHEN FND_API.G_EXC_UNEXPECTED_ERROR
485 THEN
486 	ROLLBACK TO install_package_object;
487 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
488 	x_compile_status := 'INCOMPLETE';
489 	FND_MSG_PUB.Count_And_Get
490     	(p_count    =>  x_msg_count,
491 	 	 p_data     =>  x_msg_data);
492 WHEN OTHERS
493 THEN
494 	ROLLBACK TO install_package_object;
495 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
496 	x_compile_status := 'INCOMPLETE';
497 	FND_MSG_PUB.Count_And_Get
498     	(p_count    =>  x_msg_count,
499 	 	 p_data     =>  x_msg_data);
500 END install_package_object;
501 
502 PROCEDURE GENERATE (
503     p_api_version       IN NUMBER,
504     p_init_msg_list     IN VARCHAR2 := fnd_api.g_false,
505     p_commit            IN VARCHAR2 := fnd_api.g_false,
506     p_validation_level  IN VARCHAR2 := fnd_api.g_valid_level_full,
507     p_org_id            IN NUMBER, -- MOAC Change
508     x_return_status     OUT NOCOPY VARCHAR2,
509     x_msg_count         OUT NOCOPY NUMBER,
510     x_msg_data          OUT NOCOPY VARCHAR2)
511 AS
512 	l_module_id	        cn_modules.module_id%TYPE;
513 	l_object_id         cn_objects.object_id%TYPE;
514 	l_org_id            VARCHAR2(5);
515 	l_pkg_spec_id       cn_obj_packages_v.package_id%TYPE;
516 	l_pkg_body_id       cn_obj_packages_v.package_id%TYPE;
517 	l_spec_code         cn_utils.code_type;
518 	l_body_code         cn_utils.code_type;
519 	l_pkg_spec_desc     cn_obj_packages_v.description%TYPE;
520 	l_pkg_body_desc     cn_obj_packages_v.description%TYPE;
521 	l_pkg_name          cn_obj_packages_v.NAME%TYPE;
522 	l_creation_status   BOOLEAN;
523 	l_user              VARCHAR2(15);
524 	l_repository_id     cn_repositories.repository_id%TYPE;
525 
526 	l_api_name	        CONSTANT VARCHAR2(10) := 'MAP';
527 	l_api_version       CONSTANT NUMBER       := 1.0;
528 	l_user_id  	        NUMBER(15)  := fnd_global.user_id;
529 	l_login_id 	        NUMBER(15)  := fnd_global.login_id;
530 
531 	l_init_msg_list		VARCHAR2(5) := fnd_api.g_false;
532 	l_commit					VARCHAR2(5) := fnd_api.g_false;
533 	l_validation_level	NUMBER 		:= fnd_api.g_valid_level_full;
534 
535 	l_return_status     VARCHAR2(20);
536 	l_compile_status    VARCHAR2(20);
537 	l_msg_count         NUMBER;
538 	l_msg_data          VARCHAR2(2000);
539 
540 ------++
541 -- For Compiled Dynamic Generated Mapping Package Status
542 ------++
543 --	l_compile_status 	VARCHAR2(20);
544 ------++
545 -- Variables for CN_SCA_HEADERS_INTERFACE.SCA_TRX_TYPE
546 ------++
547 	l_trx_type   cn_sca_headers_interface.source_type%TYPE;
548 ------++
549 -- FOR CN_SCA_HEADERS_INTERFACE.TRANSACTION_SOURCE
550 ------++
551 	l_trx_source   	VARCHAR2(10) := '''CN''';
552 ------++
553 -- List of arguments for MAP API.
554 ------++
555 	l_proc_arg1    VARCHAR2(60) := '    p_sca_process_batch_id  IN NUMBER';
556 	l_proc_arg2    VARCHAR2(60) := '    p_start_date            IN DATE';
557 	l_proc_arg3    VARCHAR2(60) := '    p_end_date              IN DATE';
558 	l_proc_arg4    VARCHAR2(65) := '    p_api_version           IN NUMBER';
559 	l_proc_arg5    VARCHAR2(60) := '    p_init_msg_list         IN VARCHAR2 := fnd_api.g_false';
560 	l_proc_arg6    VARCHAR2(60) := '    p_commit                IN VARCHAR2 := fnd_api.g_false';
561 	l_proc_arg7    VARCHAR2(80) := '    p_validation_level      IN NUMBER   := fnd_api.g_valid_level_full';
562 	l_proc_arg8    VARCHAR2(60) := '    p_org_id                IN NUMBER';
563 	l_proc_arg9    VARCHAR2(60) := '    x_return_status         OUT NOCOPY VARCHAR2';
564 	l_proc_arg10   VARCHAR2(60) := '    x_msg_count             OUT NOCOPY NUMBER';
565 	l_proc_arg11   VARCHAR2(60) := '    x_msg_data              OUT NOCOPY VARCHAR2';
566 ------++
567 -- Variable declaration for few loop counters
568 ------++
569 	l_loop_cntr1    INTEGER := 0;
570 	l_loop_cntr2    INTEGER := 1;
571 	l_loop_cntr3    INTEGER := 1;
572 ------++
573 -- PL/SQL Table type and Variable declaration for
574 -- CN_SCA_RULE_ATTRIBUTES.SRC_COLUMN_NAME
575 ------++
576 	TYPE src_column_name
577 	IS   TABLE OF VARCHAR2(4000)
578 	INDEX BY BINARY_INTEGER;
579 	l_src_column_name src_column_name;
580 ------++
581 -- PL/SQL Table type and Variable declaration for
582 -- CN_SCA_RULE_ATTRIBUTES.TRX_SRC_COLUMN_NAME
583 ------++
584 	TYPE trx_src_column_name
585 	IS TABLE OF VARCHAR2(4000)
586 	INDEX BY BINARY_INTEGER;
587 	l_trx_src_column_name trx_src_column_name;
588 ------++
589 -- Cursor and Variable declaration to get SOURCE and
590 -- TRANSACTION SOURCE Mapping column names from CN_SCA_RULE_ATTRIBUTES
591 ------++
592 	CURSOR 	cn_sca_rule_attr_cur
593 	IS
594 	SELECT 	sca_rule_attribute_id,
595 			 	LOWER(src_column_name) src_column_name,
596 			 	LOWER(user_column_name) user_column_name,
597 			 	LOWER(trx_src_column_name) trx_src_column_name
598 	FROM   	cn_sca_rule_attributes
599 	WHERE  	transaction_source = 'CN'
600         AND     org_id = p_org_id  -- MOAC Change
601 	ORDER BY src_column_name;
602 
603 	cnracv  	cn_sca_rule_attr_cur%ROWTYPE;
604 BEGIN
605 
606 	SAVEPOINT generate_map_package;
607 ------++
608 -- Initialize message list if p_init_msg_list is set to TRUE.
609 ------++
610 	IF FND_API.to_Boolean( p_init_msg_list )
611 	THEN
612 		FND_MSG_PUB.initialize;
613 	END IF;
614 ------++
615 -- Initialize API return status to success
616 ------++
617 	x_return_status := FND_API.G_RET_STS_SUCCESS;
618 ------++
619 -- Get Values for repository_id and org_id
620 ------++
621 	SELECT  repository_id, org_id
622 	INTO    l_repository_id, l_org_id
623 	FROM    cn_repositories
624        WHERE    org_id = p_org_id;   -- MOAC Change
625 ------++
626 -- Get Value For module_id
627 ------++
628 	SELECT  module_id
629 	INTO    l_module_id
630 	FROM    cn_modules
631 	WHERE   NAME = 'Collection'
632           AND   org_id = p_org_id;  -- MOAC Change
633 ------++
634 -- Get Vaule For module_id
635 ------++
636 	SELECT  USER
637 	INTO    l_user
638 	FROM    dual;
639 ------++
640 -- Process cn_sca_rule_attr_cur to get values for runtime call to
641 -- INSERT INTO SCA HEADERS AS SELECT FROM OIC API
642 ------++
643 ------++
644 -- Append ORG_ID to the dynamic package name
645 ------++
646 	l_pkg_name := 'CN_SCA_MAP_CN_'||l_org_id;
647 
648 
649 	FOR cnracv
650 	IN cn_sca_rule_attr_cur
651 	LOOP
652 		IF NOT cn_sca_rule_attr_cur%NOTFOUND
653 		THEN
654 			l_loop_cntr1 := l_loop_cntr1 + 1;
655 			l_src_column_name(l_loop_cntr1) := cnracv.src_column_name;
656 			l_trx_src_column_name(l_loop_cntr1) := cnracv.trx_src_column_name;
657 		ELSE
658 			x_return_status := fnd_api.g_ret_sts_error;
659 			FND_MESSAGE.SET_NAME('CN','CN_SCA_NO_ATTR_MAP');
660 	 		FND_MSG_PUB.Add_Exc_Msg( 'CN_SCA_INTERFACE_MAP_PVT' ,'GENERATE');
661 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
662 		END IF;
663 
664 	END LOOP;
665 ------++
666 -- Loop to convert src_column_name values in comma seperated row format
667 ------++
668 	FOR l_loop_cntr2
669 	IN 2..l_src_column_name.COUNT
670 	LOOP
671 	   l_src_column_name(l_loop_cntr3) :=
672 			l_src_column_name(l_loop_cntr3)||','||l_src_column_name(l_loop_cntr2);
673 
674 	END LOOP;
675 ------++
676 -- Loop to convert trx_src_column_name values in comma seperated row format
677 ------++
678 	FOR l_loop_cntr2
679 	IN 2..l_trx_src_column_name.COUNT
680 	LOOP
681 		l_trx_src_column_name(l_loop_cntr3) :=
682 			l_trx_src_column_name(l_loop_cntr3)||','||l_trx_src_column_name(l_loop_cntr2);
683 	END LOOP;
684 ------++
685 -- Dynamic Package Generation Code Starts Here
686 -- Call Check Create Object to Check whether Mappong Package Spec Already Exists
687 -- If it exists It will use the same object Id or create a new object using the
688 -- parameter values provided
689 -- This is For Package Specification.
690 ------++
691 
692 --++ Set org_id for cn_utils package
693 cn_utils.set_org_id( p_org_id );
694 
695 	check_create_object(
696 			p_init_msg_list		=> l_init_msg_list,
697 			p_commit					=> l_commit,
698 			p_validation_level 	=> l_validation_level,
699 			p_name         		=> l_pkg_name,
700 			p_object_type 			=> 'PKS',
701 			p_object_id     		=> l_object_id,
702 			p_repository_id		=> l_repository_id,
703                         p_org_id                => p_org_id, -- MOAC Change
704 			x_return_status 		=> l_return_status,
705 			x_msg_count				=> l_msg_count,
706 			x_msg_data				=> l_msg_data);
707 
708 ------++
709 -- Store Package Spec Id in l_pkg_spec_id
710 ------++
711 	l_pkg_spec_id :=  l_object_id;
712 ------++
713 -- This is For Package Body
714 ------++
715 	check_create_object(
716 			p_init_msg_list		=> l_init_msg_list,
717 			p_commit					=> l_commit,
718 			p_validation_level 	=> l_validation_level,
719 			p_name         		=> l_pkg_name,
720 			p_object_type 			=> 'PKB',
721 			p_object_id     		=> l_object_id,
722 			p_repository_id		=> l_repository_id,
723                         p_org_id                => p_org_id, -- MOAC Change
724 			x_return_status 		=> l_return_status,
725 			x_msg_count				=> l_msg_count,
726 			x_msg_data				=> l_msg_data);
727 ------++
728 -- Store Package Body Id in l_pkg_spec_id
729 ------++
730 	l_pkg_body_id :=  l_object_id;
731 ------++
732 -- Assign Value to l_pkg_spec_desc and l_pkg_body_desc
733 ------++
734 	l_pkg_spec_desc := 'Package Specification For SCA Interface Mapping Package';
735 	l_pkg_body_desc := 'Package Body For SCA Interface Mapping Package';
736 ------++
737 -- Call cn_utils.pkg_init to create a new package and do initialization
738 ------++
739 	pkg_init(
740 			module_id	        =>  l_module_id,
741 			package_name	     =>  l_pkg_name,
742 			package_spec_id     =>  l_pkg_spec_id,
743 			package_body_id     =>  l_pkg_body_id,
744 			package_spec_desc   =>  l_pkg_spec_desc,
745 			package_body_desc   =>  l_pkg_body_desc,
746 			spec_code	        =>  l_spec_code,
747 			body_code           =>  l_body_code,
748                         p_org_id            =>  p_org_id);  -- MOAC Change
749 ------++
750 -- Call cn_utils.init_code to populate object_id, line, ident and text of
751 -- record type cn_utils.code_type
752 -- This will populate value of l_pkg_spec_id into x_object_id and use
753 -- package spec id to store package spec code into cn_source.
754 ------++
755 	cn_utils.init_code (
756 			x_object_id =>   l_pkg_spec_id,
757 			code        =>   l_spec_code);
758 ------++
759 -- This code will write package specification code for dynamic mapping package
760 -- All the arbuments for MAP API.
761 ------++
762 
763 	cn_utils.appendcr(l_spec_code,'-- Package Specification For Interface Mapping Package ');
764 	cn_utils.appendcr(l_spec_code,' PROCEDURE map ('||l_proc_arg1||',');
765 	cn_utils.appendcr(l_spec_code,l_proc_arg2||',');
766 	cn_utils.appendcr(l_spec_code,l_proc_arg3||',');
767 	cn_utils.appendcr(l_spec_code,l_proc_arg4||',');
768 	cn_utils.appendcr(l_spec_code,l_proc_arg5||',');
769 	cn_utils.appendcr(l_spec_code,l_proc_arg6||',');
770 	cn_utils.appendcr(l_spec_code,l_proc_arg7||',');
771 	cn_utils.appendcr(l_spec_code,l_proc_arg8||',');
772 	cn_utils.appendcr(l_spec_code,l_proc_arg9||',');
773         cn_utils.appendcr(l_spec_code,l_proc_arg10||',');
774 	cn_utils.appendcr(l_spec_code,l_proc_arg11||');');
775 	cn_utils.appendcr(l_spec_code);
776 	cn_utils.appendcr(l_spec_code,'END '||l_pkg_name||';');
777 
778 ------++
779 -- Call cn_utils.init_code to populate object_id, line, ident and text of
780 -- record type cn_utils.code_type
781 -- This will populate value of l_pkg_spec_id into x_object_id and use
782 -- package body id to store package body code into cn_source.
783 ------++
784 	cn_utils.init_code (
785 					x_object_id =>   l_pkg_body_id,
786 					code        =>   l_body_code);
787 ------++
788 -- This code will write package body code for dynamic mapping package
789 -- All the arbuments for MAP API
790 ------++
791 	------++
792 	-- Procedure Debug Message
793 	------++
794 	cn_utils.appendcr(l_body_code,'PROCEDURE debugmsg(msg VARCHAR2) IS');
795 	cn_utils.appendcr(l_body_code,'BEGIN');
796 	cn_utils.appendcr(l_body_code,'	IF fnd_profile.value(''CN_DEBUG'') = ''Y'' ');
797 	cn_utils.appendcr(l_body_code,'	THEN');
798 	cn_utils.appendcr(l_body_code,'		cn_message_pkg.debug(substr(msg,1,254));');
799 	cn_utils.appendcr(l_body_code,'	ELSE');
800 	cn_utils.appendcr(l_body_code,'		NULL;');
801 	cn_utils.appendcr(l_body_code,'	END IF;');
802 	cn_utils.appendcr(l_body_code,'	END debugmsg;');
803 
804 	cn_utils.appendcr(l_body_code,'FUNCTION get_adjusted_by(p_sca_process_batch_id 	cn_sca_process_batches.sca_process_batch_id%TYPE,');
805 	cn_utils.appendcr(l_body_code,'                         p_org_id         	cn_sca_process_batches.org_id%TYPE)');
806 	cn_utils.appendcr(l_body_code,'   RETURN VARCHAR2 IS');
807 	cn_utils.appendcr(l_body_code,'   l_adjusted_by 	VARCHAR2(100) := ''0'';');
808 	cn_utils.appendcr(l_body_code,'BEGIN');
809 	cn_utils.appendcr(l_body_code,'  SELECT	user_name');
810 	cn_utils.appendcr(l_body_code,'	 INTO 	l_adjusted_by');
811 	cn_utils.appendcr(l_body_code,'	 FROM 	fnd_user');
812 	cn_utils.appendcr(l_body_code,'	 WHERE 	user_id  = (SELECT	created_by');
813 	cn_utils.appendcr(l_body_code,'	 					FROM	cn_sca_process_batches');
814 	cn_utils.appendcr(l_body_code,'	 					WHERE	sca_process_batch_id = p_sca_process_batch_id');
815 	cn_utils.appendcr(l_body_code,'	 					AND     org_id = p_org_id);');
816 	cn_utils.appendcr(l_body_code,'   RETURN l_adjusted_by;');
817 	cn_utils.appendcr(l_body_code,'EXCEPTION');
818 	cn_utils.appendcr(l_body_code,'   WHEN OTHERS THEN');
819 	cn_utils.appendcr(l_body_code,'	  RETURN l_adjusted_by;');
820 	cn_utils.appendcr(l_body_code,'END get_adjusted_by;');
821 	------++
822 	-- Procedure get_init_values Initiates the l_trx_type, l_start_id and l_end_id Variables
823 	------++
824 	cn_utils.appendcr(l_body_code,'		PROCEDURE get_init_values(');
825 	cn_utils.appendcr(l_body_code,'			p_api_version          	IN  NUMBER,');
826 	cn_utils.appendcr(l_body_code,'			p_init_msg_list			IN  VARCHAR2 := fnd_api.g_false,');
827 	cn_utils.appendcr(l_body_code,'			p_commit	    		IN  VARCHAR2 := fnd_api.g_false,');
828 	cn_utils.appendcr(l_body_code,'			p_sca_process_batch_id 	IN  cn_sca_process_batches.sca_process_batch_id%TYPE,');
829 	cn_utils.appendcr(l_body_code,'			p_org_id         	IN  cn_sca_process_batches.org_id%TYPE,');
830 	cn_utils.appendcr(l_body_code,'			x_trx_type 				OUT NOCOPY  cn_sca_process_batches.type%TYPE,');
831 	cn_utils.appendcr(l_body_code,'			x_start_id 				OUT NOCOPY  cn_sca_process_batches.start_id%TYPE,');
832 	cn_utils.appendcr(l_body_code,'			x_end_id   				OUT NOCOPY  cn_sca_process_batches.end_id%TYPE,');
833 	cn_utils.appendcr(l_body_code,'			x_return_status			OUT VARCHAR2,');
834 	cn_utils.appendcr(l_body_code,'			x_msg_count				OUT NUMBER,');
835 	cn_utils.appendcr(l_body_code,'			x_msg_data				OUT VARCHAR2)');
836 	cn_utils.appendcr(l_body_code,'		IS');
837 	cn_utils.appendcr(l_body_code,'			sca_proc_batch_id_error  EXCEPTION;');
838 	cn_utils.appendcr(l_body_code,'			l_api_name		CONSTANT VARCHAR2(30)	:= ''get_init_values'';');
839 	cn_utils.appendcr(l_body_code,'			l_api_version	CONSTANT NUMBER 		:= 1.0;');
840 
841 	cn_utils.appendcr(l_body_code,'		BEGIN');
842 
843 	cn_utils.appendcr(l_body_code,'			SAVEPOINT	get_init_values;');
844 
845 	cn_utils.appendcr(l_body_code,'			IF NOT FND_API.Compatible_API_Call (');
846 	cn_utils.appendcr(l_body_code,'					l_api_version,');
847 	cn_utils.appendcr(l_body_code,'					l_api_version,');
848 	cn_utils.appendcr(l_body_code,'					l_api_name,');
849 	cn_utils.appendcr(l_body_code,'					NULL)');
850 	cn_utils.appendcr(l_body_code,'			THEN');
851 	cn_utils.appendcr(l_body_code,'				RAISE FND_API.G_EXC_UNEXPECTED_ERROR;');
852 	cn_utils.appendcr(l_body_code,'			END IF;');
853 
854 	cn_utils.appendcr(l_body_code,'			IF FND_API.to_Boolean( p_init_msg_list )');
855 	cn_utils.appendcr(l_body_code,'			THEN');
856 	cn_utils.appendcr(l_body_code,'				FND_MSG_PUB.initialize;');
857 	cn_utils.appendcr(l_body_code,'			END IF;');
858 
859 	cn_utils.appendcr(l_body_code,'			--  Initialize API return status to success');
860 	cn_utils.appendcr(l_body_code,'			x_return_status := FND_API.G_RET_STS_SUCCESS;');
861 
862 	cn_utils.appendcr(l_body_code,'			SELECT	start_id,   end_id, type');
863 	cn_utils.appendcr(l_body_code,'				INTO   	x_start_id, x_end_id, x_trx_type');
864 	cn_utils.appendcr(l_body_code,'				FROM   	cn_sca_process_batches');
865 	cn_utils.appendcr(l_body_code,'				WHERE  	sca_process_batch_id = p_sca_process_batch_id');
866 	cn_utils.appendcr(l_body_code,'				AND  	org_id = p_org_id;');
867 	cn_utils.appendcr(l_body_code,'				IF	((x_start_id IS NULL) OR (x_end_id IS NULL))');
868 	cn_utils.appendcr(l_body_code,'				THEN');
869 	cn_utils.appendcr(l_body_code,'					x_return_status := FND_API.G_RET_STS_ERROR;');
870 	cn_utils.appendcr(l_body_code,'					FND_MESSAGE.SET_NAME(''CN'',''CN_SCA_INVALID_BATCH_ID'');');
871 	cn_utils.appendcr(l_body_code,'					FND_MSG_PUB.ADD;');
872 	cn_utils.appendcr(l_body_code,'					RAISE FND_API.G_EXC_ERROR;');
873 	cn_utils.appendcr(l_body_code,'					FND_MSG_PUB.count_and_get');
874 	cn_utils.appendcr(l_body_code,'						(p_count    => x_msg_count,');
875 	cn_utils.appendcr(l_body_code,'						 p_data     => x_msg_data);');
876 	cn_utils.appendcr(l_body_code,'				END IF;');
877 
878 	cn_utils.appendcr(l_body_code,'		EXCEPTION');
879 	cn_utils.appendcr(l_body_code,'			WHEN FND_API.G_EXC_ERROR');
880 	cn_utils.appendcr(l_body_code,'			THEN');
881 	cn_utils.appendcr(l_body_code,'				ROLLBACK TO get_init_values;');
882 	cn_utils.appendcr(l_body_code,'				x_return_status := FND_API.G_RET_STS_ERROR;');
883 	cn_utils.appendcr(l_body_code,'				debugmsg(''Error In Procedure GET_INIT_VALUES'');');
884 	cn_utils.appendcr(l_body_code,'				FND_MSG_PUB.count_and_get');
885 	cn_utils.appendcr(l_body_code,'					(p_count    => x_msg_count,');
886 	cn_utils.appendcr(l_body_code,'					 p_data     => x_msg_data);');
887 	cn_utils.appendcr(l_body_code,'			WHEN FND_API.G_EXC_UNEXPECTED_ERROR');
888 	cn_utils.appendcr(l_body_code,'			THEN');
889 	cn_utils.appendcr(l_body_code,'				ROLLBACK TO get_init_values;');
890 	cn_utils.appendcr(l_body_code,'				x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;');
891 	cn_utils.appendcr(l_body_code,'				debugmsg(''Unexpected Error In Procedure GET_INIT_VALUES''||SQLERRM);');
892 	cn_utils.appendcr(l_body_code,'				FND_MSG_PUB.Count_And_Get');
893 	cn_utils.appendcr(l_body_code,'						(p_count   =>  x_msg_count,');
894 	cn_utils.appendcr(l_body_code,'						 p_data    =>  x_msg_data);');
895 	cn_utils.appendcr(l_body_code,'			WHEN OTHERS');
896 	cn_utils.appendcr(l_body_code,'			THEN ');
897 	cn_utils.appendcr(l_body_code,'				ROLLBACK TO get_init_values;');
898 	cn_utils.appendcr(l_body_code,'				x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;');
899 	cn_utils.appendcr(l_body_code,'				debugmsg(''Unhandled Error In Procedure GET_INIT_VALUES''||SQLERRM);');
900 	cn_utils.appendcr(l_body_code,'				FND_MSG_PUB.Count_And_Get');
901 	cn_utils.appendcr(l_body_code,'		    		(p_count	=>      x_msg_count,');
902 	cn_utils.appendcr(l_body_code,'		   			 p_data 	=>      x_msg_data);');
903 	cn_utils.appendcr(l_body_code,'		END get_init_values;');
904 
905 	------++
906 	-- Procedure check_update_revenue_error Updates cn_comm_lines_api's Adjust Status to SCA_REVENUE_ERROR
907 	-- for all the orders / invoices that are submitted to SCA Engine and having invalid REVENUE_TYPE
908 	------++
909 cn_utils.appendcr(l_body_code,'		PROCEDURE check_reset_error_normal(');
910 	cn_utils.appendcr(l_body_code,'			p_api_version          	IN NUMBER,');
911 	cn_utils.appendcr(l_body_code,'			p_init_msg_list			IN VARCHAR2 := FND_API.G_FALSE,');
912 	cn_utils.appendcr(l_body_code,'			p_commit	    		IN VARCHAR2 := FND_API.G_FALSE,');
913 	cn_utils.appendcr(l_body_code,'			p_validation_level		IN NUMBER   := FND_API.G_VALID_LEVEL_FULL,');
914 	cn_utils.appendcr(l_body_code,'			p_start_date            IN cn_comm_lines_api.processed_Date%TYPE,');
915 	cn_utils.appendcr(l_body_code,'			p_end_date              IN cn_comm_lines_api.processed_Date%TYPE,');
916 	cn_utils.appendcr(l_body_code,'			p_trx_type				IN cn_comm_lines_api.trx_type%TYPE,');
917 	cn_utils.appendcr(l_body_code,'			p_start_id 				IN cn_sca_process_batches.start_id%TYPE,');
918 	cn_utils.appendcr(l_body_code,'			p_end_id   				IN cn_sca_process_batches.end_id%TYPE,');
919 	cn_utils.appendcr(l_body_code,'			p_sca_process_batch_id  IN cn_sca_process_batches.sca_process_batch_id%TYPE,');
920 	cn_utils.appendcr(l_body_code,'			p_org_id                IN cn_sca_process_batches.org_id%TYPE,');
921 	cn_utils.appendcr(l_body_code,'			x_reset_ord_recs		OUT NOCOPY NUMBER,');
922 	cn_utils.appendcr(l_body_code,'			x_reset_inv_recs		OUT NOCOPY NUMBER,');
923 	cn_utils.appendcr(l_body_code,'			x_return_status			OUT	NOCOPY VARCHAR2,');
924 	cn_utils.appendcr(l_body_code,'			x_msg_count				OUT	NOCOPY NUMBER,');
925 	cn_utils.appendcr(l_body_code,'			x_msg_data				OUT	NOCOPY VARCHAR2)');
926 	cn_utils.appendcr(l_body_code,'		IS');
927 	cn_utils.appendcr(l_body_code,'			l_api_name				CONSTANT VARCHAR2(30)	:= ''check_update_revenue_error'';');
928 	cn_utils.appendcr(l_body_code,'			l_user_id  				NUMBER 					:= fnd_global.user_id;');
929 	cn_utils.appendcr(l_body_code,'			l_adj_by				VARCHAR(100);');
930 
931 	cn_utils.appendcr(l_body_code,'			CURSOR sca_reset_ord_err_cur');
932 	cn_utils.appendcr(l_body_code,'			IS');
933 	cn_utils.appendcr(l_body_code,'			SELECT	comm_lines_api_id');
934 	cn_utils.appendcr(l_body_code,'			FROM	cn_comm_lines_api');
935 	cn_utils.appendcr(l_body_code,'			WHERE	(order_number BETWEEN TO_NUMBER(p_start_id) AND TO_NUMBER(p_end_id))');
936 	cn_utils.appendcr(l_body_code,'			AND		(TRUNC(processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
937 	cn_utils.appendcr(l_body_code,'			AND     (load_status = ''UNLOADED'')');
938 	cn_utils.appendcr(l_body_code,'			AND     (order_number IS NOT NULL)');
939 	cn_utils.appendcr(l_body_code,'			AND     (invoice_number IS NULL)');
940 	cn_utils.appendcr(l_body_code,'			AND     (org_id = p_org_id)');
941 	cn_utils.appendcr(l_body_code,'			AND     (line_number IS NOT NULL)');
942 
943 	-- For Bug Fix : 3114337 Modified Typo From SCA_DISTINCT_ERRIR to SCA_DISTINCT_ERROR
944 	cn_utils.appendcr(l_body_code,'			AND     (adjust_status in (''SCA_SRP_ERROR'',''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''));');
945 
946 	cn_utils.appendcr(l_body_code,'			CURSOR sca_reset_inv_err_cur');
947 	cn_utils.appendcr(l_body_code,'			IS');
948 	cn_utils.appendcr(l_body_code,'			SELECT	comm_lines_api_id');
949 	cn_utils.appendcr(l_body_code,'			FROM	cn_comm_lines_api');
950 	cn_utils.appendcr(l_body_code,'			WHERE	(invoice_number BETWEEN p_start_id AND p_end_id)');
951 	cn_utils.appendcr(l_body_code,'			AND		(TRUNC(processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
952 	cn_utils.appendcr(l_body_code,'			AND     (load_status = ''UNLOADED'')');
953 	cn_utils.appendcr(l_body_code,'			AND     (invoice_number IS NOT NULL)');
954 	cn_utils.appendcr(l_body_code,'			AND     (line_number IS NOT NULL)');
955 	cn_utils.appendcr(l_body_code,'			AND     (org_id = p_org_id)');
956 
957 	-- For Bug Fix : 3114337 Modified Typo From SCA_DISTINCT_ERRIR to SCA_DISTINCT_ERROR
958 	cn_utils.appendcr(l_body_code,'			AND     (adjust_status in (''SCA_SRP_ERROR'',''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''));');
959 
960 	cn_utils.appendcr(l_body_code,'			TYPE ccla_id_type IS');
961 	cn_utils.appendcr(l_body_code,'			TABLE OF cn_comm_lines_api.comm_lines_api_id%TYPE');
962 	cn_utils.appendcr(l_body_code,'			INDEX BY BINARY_INTEGER;');
963 
964 	cn_utils.appendcr(l_body_code,'			ccla_id_var	ccla_id_type;');
965 
966 	cn_utils.appendcr(l_body_code,'			BEGIN');
967 	cn_utils.appendcr(l_body_code,'			SAVEPOINT check_reset_error_normal;');
968 
969 	cn_utils.appendcr(l_body_code,'			IF NOT FND_API.Compatible_API_Call (');
970 	cn_utils.appendcr(l_body_code,'					p_api_version,');
971 	cn_utils.appendcr(l_body_code,'					p_api_version,');
972 	cn_utils.appendcr(l_body_code,'					l_api_name,');
973 	cn_utils.appendcr(l_body_code,'					NULL)');
974 	cn_utils.appendcr(l_body_code,'			THEN');
975 	cn_utils.appendcr(l_body_code,'				RAISE FND_API.G_EXC_UNEXPECTED_ERROR;');
976 	cn_utils.appendcr(l_body_code,'			END IF;');
977 
978 	cn_utils.appendcr(l_body_code,'			-----+');
979 	cn_utils.appendcr(l_body_code,'			-- Initialize message list if p_init_msg_list is set to TRUE.');
980 	cn_utils.appendcr(l_body_code,'			-----+');
981 	cn_utils.appendcr(l_body_code,'			IF FND_API.to_Boolean( p_init_msg_list ) THEN');
982 	cn_utils.appendcr(l_body_code,'				FND_MSG_PUB.initialize;');
983 	cn_utils.appendcr(l_body_code,'			END IF;');
984 
985 	cn_utils.appendcr(l_body_code,'			l_adj_by := get_adjusted_by(p_sca_process_batch_id, p_org_id);');
986 
987 	cn_utils.appendcr(l_body_code,'			x_return_status := FND_API.G_RET_STS_SUCCESS;');
988 
989 	cn_utils.appendcr(l_body_code,'			IF p_trx_type = ''ORD'' ');
990 	cn_utils.appendcr(l_body_code,'			THEN');
991 	cn_utils.appendcr(l_body_code,'				OPEN sca_reset_ord_err_cur;');
992 	cn_utils.appendcr(l_body_code,'				FETCH sca_reset_ord_err_cur');
993 	cn_utils.appendcr(l_body_code,'				BULK COLLECT INTO ccla_id_var LIMIT 1000;');
994 	cn_utils.appendcr(l_body_code,'				CLOSE sca_reset_ord_err_cur;');
995 
996 	cn_utils.appendcr(l_body_code,'				IF ccla_id_var.COUNT > 0');
997 	cn_utils.appendcr(l_body_code,'				THEN');
998 	cn_utils.appendcr(l_body_code,'					FORALL i IN ccla_id_var.FIRST..ccla_id_var.LAST');
999 	cn_utils.appendcr(l_body_code,'					UPDATE	cn_comm_lines_api');
1000 	cn_utils.appendcr(l_body_code,'					SET		adjust_status = NULL,');
1001 	cn_utils.appendcr(l_body_code,'							adjust_comments = ''SCA_CHECK'',');
1002 	cn_utils.appendcr(l_body_code,'							adjust_date = SYSDATE,');
1003 	cn_utils.appendcr(l_body_code,'							adjusted_by = l_adj_by,');
1004 	cn_utils.appendcr(l_body_code,'							last_updated_by  = l_user_id,');
1005 	cn_utils.appendcr(l_body_code,'							last_update_date = SYSDATE');
1006 	cn_utils.appendcr(l_body_code,'					WHERE	comm_lines_api_id = ccla_id_var(i)');
1007 	cn_utils.appendcr(l_body_code,'					AND	org_id = p_org_id;');
1008 	cn_utils.appendcr(l_body_code,'					debugmsg(SQL%ROWCOUNT||'' Errored Records Of Type ORDER Are Updated To Process By SCA'');');
1009 	cn_utils.appendcr(l_body_code,'					x_reset_ord_recs := SQL%ROWCOUNT;');
1010 	cn_utils.appendcr(l_body_code,'				ELSE');
1011 	cn_utils.appendcr(l_body_code,'					debugmsg(''No Errored ORDER Records Are Present In This Batch For Reset'');');
1012 	cn_utils.appendcr(l_body_code,'					x_reset_ord_recs := 0;');
1013 	cn_utils.appendcr(l_body_code,'				END IF;');
1014 
1015 	cn_utils.appendcr(l_body_code,'			ELSIF p_trx_type = ''INV'' ');
1016 	cn_utils.appendcr(l_body_code,'			THEN');
1017 	cn_utils.appendcr(l_body_code,'				OPEN sca_reset_inv_err_cur;');
1018 	cn_utils.appendcr(l_body_code,'				FETCH sca_reset_inv_err_cur');
1019 	cn_utils.appendcr(l_body_code,'				BULK COLLECT INTO ccla_id_var LIMIT 1000;');
1020 	cn_utils.appendcr(l_body_code,'				CLOSE sca_reset_inv_err_cur;');
1021 
1022 	cn_utils.appendcr(l_body_code,'				IF ccla_id_var.COUNT > 0');
1023 	cn_utils.appendcr(l_body_code,'				THEN');
1024 	cn_utils.appendcr(l_body_code,'					FORALL i IN ccla_id_var.FIRST..ccla_id_var.LAST');
1025 	cn_utils.appendcr(l_body_code,'					UPDATE	cn_comm_lines_api');
1026 	cn_utils.appendcr(l_body_code,'					SET		adjust_status = NULL,');
1027 	cn_utils.appendcr(l_body_code,'							adjust_comments = ''SCA_CHECK'',');
1028 	cn_utils.appendcr(l_body_code,'							adjust_date = SYSDATE,');
1029 	cn_utils.appendcr(l_body_code,'							adjusted_by = l_adj_by,');
1030 	cn_utils.appendcr(l_body_code,'							last_updated_by  = l_user_id,');
1031 	cn_utils.appendcr(l_body_code,'							last_update_date = SYSDATE');
1032 	cn_utils.appendcr(l_body_code,'					WHERE	comm_lines_api_id = ccla_id_var(i)');
1033 	cn_utils.appendcr(l_body_code,'					AND	org_id = p_org_id;');
1034 	cn_utils.appendcr(l_body_code,'					debugmsg(SQL%ROWCOUNT||'' Errored Records Of Type INVOICE Are Updated To Process By SCA'');');
1035 	cn_utils.appendcr(l_body_code,'					x_reset_inv_recs := SQL%ROWCOUNT;');
1036 	cn_utils.appendcr(l_body_code,'				ELSE');
1037 	cn_utils.appendcr(l_body_code,'					debugmsg(''No Errored INVOICE Records Are Present In This Batch For Reset'');');
1038 	cn_utils.appendcr(l_body_code,'					x_reset_inv_recs := 0;');
1039 	cn_utils.appendcr(l_body_code,'				END IF;');
1040 
1041 	cn_utils.appendcr(l_body_code,'			END IF;');
1042 	cn_utils.appendcr(l_body_code,'			EXCEPTION');
1043 	cn_utils.appendcr(l_body_code,'				WHEN FND_API.G_EXC_UNEXPECTED_ERROR');
1044 	cn_utils.appendcr(l_body_code,'				THEN');
1045 	cn_utils.appendcr(l_body_code,'					ROLLBACK TO check_reset_error_normal;');
1046 	cn_utils.appendcr(l_body_code,'					x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;');
1047 	cn_utils.appendcr(l_body_code,'					debugmsg(''Unexpected Error In Procedure CHECK_RESET_ERROR_NORMAL''||SQLERRM);');
1048 	cn_utils.appendcr(l_body_code,'					FND_MSG_PUB.Count_And_Get');
1049 	cn_utils.appendcr(l_body_code,'						(p_count   =>  x_msg_count,');
1050 	cn_utils.appendcr(l_body_code,'						 p_data    =>  x_msg_data);');
1051 	cn_utils.appendcr(l_body_code,'				WHEN OTHERS');
1052 	cn_utils.appendcr(l_body_code,'				THEN');
1053 	cn_utils.appendcr(l_body_code,'					ROLLBACK TO check_reset_error_normal;');
1054 	cn_utils.appendcr(l_body_code,'					debugmsg(''Error In Procedure CHECK_RESET_ERROR_NORMAL''||SQLERRM);');
1055 	cn_utils.appendcr(l_body_code,'					x_return_status := FND_API.G_RET_STS_ERROR;');
1056 	cn_utils.appendcr(l_body_code,'					FND_MSG_PUB.count_and_get');
1057 	cn_utils.appendcr(l_body_code,'						(p_count    => x_msg_count,');
1058 	cn_utils.appendcr(l_body_code,'						 p_data     => x_msg_data);');
1059 	cn_utils.appendcr(l_body_code,'		END check_reset_error_normal;');
1060 	cn_utils.appendcr(l_body_code,'		PROCEDURE check_update_revenue_error(');
1061 	cn_utils.appendcr(l_body_code,'			p_api_version          	IN NUMBER,');
1062 	cn_utils.appendcr(l_body_code,'			p_init_msg_list			IN VARCHAR2 := FND_API.G_FALSE,');
1063 	cn_utils.appendcr(l_body_code,'			p_commit	    		IN VARCHAR2 := FND_API.G_FALSE,');
1064 	cn_utils.appendcr(l_body_code,'			p_validation_level		IN NUMBER   := FND_API.G_VALID_LEVEL_FULL,');
1065 	cn_utils.appendcr(l_body_code,'			p_start_date            IN cn_comm_lines_api.processed_Date%TYPE,');
1066 	cn_utils.appendcr(l_body_code,'			p_end_date              IN cn_comm_lines_api.processed_Date%TYPE,');
1067 	cn_utils.appendcr(l_body_code,'			p_trx_type				IN cn_comm_lines_api.trx_type%TYPE,');
1068 	cn_utils.appendcr(l_body_code,'			p_start_id 				IN cn_sca_process_batches.start_id%TYPE,');
1069 	cn_utils.appendcr(l_body_code,'			p_end_id  				IN cn_sca_process_batches.end_id%TYPE,');
1070         cn_utils.appendcr(l_body_code,'			p_org_id   				IN cn_sca_process_batches.org_id%TYPE,');
1071 	cn_utils.appendcr(l_body_code,'			x_ord_rev_recs		    OUT NOCOPY NUMBER,');
1072 	cn_utils.appendcr(l_body_code,'			x_inv_rev_recs		    OUT NOCOPY NUMBER,');
1073 	cn_utils.appendcr(l_body_code,'			x_return_status			OUT	NOCOPY VARCHAR2,');
1074 	cn_utils.appendcr(l_body_code,'			x_msg_count				OUT	NOCOPY NUMBER,');
1075 	cn_utils.appendcr(l_body_code,'			x_msg_data				OUT	NOCOPY VARCHAR2)');
1076 	cn_utils.appendcr(l_body_code,'		IS');
1077 	cn_utils.appendcr(l_body_code,'			l_api_name				CONSTANT VARCHAR2(30)	:= ''check_update_revenue_error'';');
1078 	cn_utils.appendcr(l_body_code,'			l_user_id  				NUMBER 					:= fnd_global.user_id;');
1079 
1080 	cn_utils.appendcr(l_body_code,'			CURSOR rev_typ_all_ord_cur');
1081 	cn_utils.appendcr(l_body_code,'			IS');
1082 	cn_utils.appendcr(l_body_code,'			SELECT  comm_lines_api_id');
1083 	cn_utils.appendcr(l_body_code,'			FROM');
1084 	cn_utils.appendcr(l_body_code,'				(SELECT  order_number, line_number, comm_lines_api_id');
1085 	cn_utils.appendcr(l_body_code,'				 FROM    cn_comm_lines_api');
1086 	cn_utils.appendcr(l_body_code,'				 WHERE   (load_status = ''UNLOADED'')');
1087 	cn_utils.appendcr(l_body_code,'				 AND     (order_number IS NOT NULL)');
1088 	cn_utils.appendcr(l_body_code,'				 AND     (invoice_number IS NULL)');
1089 	cn_utils.appendcr(l_body_code,'				 AND     (line_number IS NOT NULL)');
1090 	cn_utils.appendcr(l_body_code,'				 AND     (org_id = p_org_id)');
1091 	cn_utils.appendcr(l_body_code,'				 AND     (order_number BETWEEN TO_NUMBER(p_start_id) AND TO_NUMBER(p_end_id))');
1092 	cn_utils.appendcr(l_body_code,'				 AND     (TRUNC(processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1093 	cn_utils.appendcr(l_body_code,'				 AND     ((adjust_status IS NULL) OR adjust_status NOT IN');
1094 	cn_utils.appendcr(l_body_code,'				 		 (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'',');
1095 	cn_utils.appendcr(l_body_code,'				 		  ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''))');
1096 	cn_utils.appendcr(l_body_code,'				 AND     ((trx_type = ''ORD'') OR (trx_type = ''MAN'')))   ord_tbl');
1097 	cn_utils.appendcr(l_body_code,'				 WHERE NOT EXISTS');
1098 	cn_utils.appendcr(l_body_code,'				 		 (SELECT	1');
1099 	cn_utils.appendcr(l_body_code,'				 		  FROM 	cn_comm_lines_api');
1100 	cn_utils.appendcr(l_body_code,'				 		  WHERE   (load_status = ''UNLOADED'')');
1101 	cn_utils.appendcr(l_body_code,'				 		  AND     (invoice_number IS NULL)');
1102 	cn_utils.appendcr(l_body_code,'				                  AND     (org_id = p_org_id)');
1103 	cn_utils.appendcr(l_body_code,'				 		  AND     (order_number = ord_tbl.order_number)');
1104 	cn_utils.appendcr(l_body_code,'				 		  AND     (line_number = ord_tbl.line_number)');
1105 	cn_utils.appendcr(l_body_code,'				 		  AND     (TRUNC(processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1106 	cn_utils.appendcr(l_body_code,'				 		  AND     ((adjust_status IS NULL) OR adjust_status NOT IN');
1107 	cn_utils.appendcr(l_body_code,'				 		  		  (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'',');
1108 	cn_utils.appendcr(l_body_code,'				 		  		   ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''))');
1109 	cn_utils.appendcr(l_body_code,'				 		  AND     ((trx_type = ''ORD'') OR (trx_type = ''MAN''))');
1110 	cn_utils.appendcr(l_body_code,'				 		  AND 	  (revenue_type = ''REVENUE''));');
1111 
1112 	cn_utils.appendcr(l_body_code,'			CURSOR rev_typ_all_inv_cur');
1113 	cn_utils.appendcr(l_body_code,'			IS');
1114 	cn_utils.appendcr(l_body_code,'			SELECT  comm_lines_api_id');
1115 	cn_utils.appendcr(l_body_code,'			FROM');
1116 	cn_utils.appendcr(l_body_code,'				(SELECT  invoice_number, line_number, comm_lines_api_id');
1117 	cn_utils.appendcr(l_body_code,'				 FROM    cn_comm_lines_api');
1118 	cn_utils.appendcr(l_body_code,'				 WHERE   (load_status = ''UNLOADED'')');
1119 	cn_utils.appendcr(l_body_code,'				 AND     (invoice_number IS NOT NULL)');
1120 	cn_utils.appendcr(l_body_code,'				 AND     (line_number IS NOT NULL)');
1121 	cn_utils.appendcr(l_body_code,'				 AND     (org_id = p_org_id)');
1122 	cn_utils.appendcr(l_body_code,'				 AND     (invoice_number BETWEEN p_start_id AND p_end_id)');
1123 	cn_utils.appendcr(l_body_code,'				 AND     (TRUNC(processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1124 	cn_utils.appendcr(l_body_code,'				 AND     ((adjust_status IS NULL) OR adjust_status NOT IN');
1125 	cn_utils.appendcr(l_body_code,'				  		 (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'',');
1126 	cn_utils.appendcr(l_body_code,'				 		  ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''))');
1127 	cn_utils.appendcr(l_body_code,'				 AND     ((trx_type = ''INV'') OR (trx_type = ''MAN'')))   inv_tbl');
1128 	cn_utils.appendcr(l_body_code,'				 WHERE NOT EXISTS');
1129 	cn_utils.appendcr(l_body_code,'				 		 (SELECT	1');
1130 	cn_utils.appendcr(l_body_code,'				 		  FROM 	  cn_comm_lines_api');
1131  	cn_utils.appendcr(l_body_code,'				 		  WHERE   (load_status = ''UNLOADED'')');
1132 	cn_utils.appendcr(l_body_code,'				 		  AND     (invoice_number = inv_tbl.invoice_number)');
1133 	cn_utils.appendcr(l_body_code,'				                  AND     (org_id = p_org_id)');
1134  	cn_utils.appendcr(l_body_code,'				 		  AND     (line_number = inv_tbl.line_number)');
1135  	cn_utils.appendcr(l_body_code,'				 		  AND     (TRUNC(processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1136 	cn_utils.appendcr(l_body_code,'				 		  AND     ((adjust_status IS NULL) OR adjust_status NOT IN');
1137 	cn_utils.appendcr(l_body_code,'				 		  		  (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'',');
1138 	cn_utils.appendcr(l_body_code,'				 		  		   ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''))');
1139 	cn_utils.appendcr(l_body_code,'				 		  AND     ((trx_type = ''INV'') OR (trx_type = ''MAN''))');
1140 	cn_utils.appendcr(l_body_code,'				 		  AND 	  (revenue_type = ''REVENUE''));');
1141 
1142 	cn_utils.appendcr(l_body_code,'		TYPE ccla_id_type');
1143 	cn_utils.appendcr(l_body_code,'		IS TABLE OF cn_comm_lines_api.comm_lines_api_id%TYPE');
1144 	cn_utils.appendcr(l_body_code,'		INDEX BY BINARY_INTEGER;');
1145 	cn_utils.appendcr(l_body_code,'		ccla_id_var    ccla_id_type;');
1146 
1147 	cn_utils.appendcr(l_body_code,'		BEGIN');
1148 	cn_utils.appendcr(l_body_code,'			SAVEPOINT check_update_revenue_error;');
1149 
1150 	cn_utils.appendcr(l_body_code,'			IF NOT FND_API.Compatible_API_Call (');
1151 	cn_utils.appendcr(l_body_code,'					p_api_version,');
1152 	cn_utils.appendcr(l_body_code,'					p_api_version,');
1153 	cn_utils.appendcr(l_body_code,'					l_api_name,');
1154 	cn_utils.appendcr(l_body_code,'					NULL)');
1155 	cn_utils.appendcr(l_body_code,'			THEN');
1156 	cn_utils.appendcr(l_body_code,'				RAISE FND_API.G_EXC_UNEXPECTED_ERROR;');
1157 	cn_utils.appendcr(l_body_code,'			END IF;');
1158 
1159 	cn_utils.appendcr(l_body_code,'			-----+');
1160 	cn_utils.appendcr(l_body_code,'			-- Initialize message list if p_init_msg_list is set to TRUE.');
1161 	cn_utils.appendcr(l_body_code,'			-----+');
1162 	cn_utils.appendcr(l_body_code,'			IF FND_API.to_Boolean( p_init_msg_list ) THEN');
1163 	cn_utils.appendcr(l_body_code,'				FND_MSG_PUB.initialize;');
1164 	cn_utils.appendcr(l_body_code,'			END IF;');
1165 
1166 	cn_utils.appendcr(l_body_code,'			x_return_status := FND_API.G_RET_STS_SUCCESS;');
1167 
1168 	cn_utils.appendcr(l_body_code,'			IF p_trx_type = ''ORD'' ');
1169 	cn_utils.appendcr(l_body_code,'			THEN');
1170 	cn_utils.appendcr(l_body_code,'				OPEN	rev_typ_all_ord_cur;');
1171 	cn_utils.appendcr(l_body_code,'				FETCH	rev_typ_all_ord_cur');
1172 	cn_utils.appendcr(l_body_code,'				BULK COLLECT INTO');
1173 	cn_utils.appendcr(l_body_code,'						ccla_id_var LIMIT 1000;');
1174 	cn_utils.appendcr(l_body_code,'				CLOSE 	rev_typ_all_ord_cur;');
1175 
1176 	cn_utils.appendcr(l_body_code,'					IF (ccla_id_var.COUNT > 0)');
1177 	cn_utils.appendcr(l_body_code,'					THEN');
1178 	cn_utils.appendcr(l_body_code,'						FORALL i IN ccla_id_var.FIRST..ccla_id_var.LAST');
1179 	cn_utils.appendcr(l_body_code,'						UPDATE	cn_comm_lines_api');
1180 	cn_utils.appendcr(l_body_code,'						SET		adjust_status    = ''SCA_REVENUE_ERROR'',');
1181 	cn_utils.appendcr(l_body_code,'								last_updated_by  = l_user_id,');
1182 	cn_utils.appendcr(l_body_code,'								last_update_date = SYSDATE');
1183 	cn_utils.appendcr(l_body_code,'						WHERE	comm_lines_api_id = ccla_id_var(i)');
1184 	cn_utils.appendcr(l_body_code,'				                  AND     org_id = p_org_id;');
1185 
1186 	cn_utils.appendcr(l_body_code,'						IF (SQL%ROWCOUNT > 0)');
1187 	cn_utils.appendcr(l_body_code,'						THEN');
1188 	cn_utils.appendcr(l_body_code,'							debugmsg(SQL%ROWCOUNT||''Records Of Type ORDER Are Updated With Error SCA_REVENUE_ERROR'');');
1189 	cn_utils.appendcr(l_body_code,'							x_ord_rev_recs := SQL%ROWCOUNT;');
1190 	cn_utils.appendcr(l_body_code,'						ELSE');
1191 	cn_utils.appendcr(l_body_code,'							debugmsg(''All Record(s) of Type ORDER Are REVENUE Type Record(s).'');');
1192 	cn_utils.appendcr(l_body_code,'							x_ord_rev_recs := 0;');
1193 	cn_utils.appendcr(l_body_code,'						END IF;');
1194 	cn_utils.appendcr(l_body_code,'					END IF;');
1195 
1196 	cn_utils.appendcr(l_body_code,'				ELSIF (p_trx_type = ''INV'')');
1197 	cn_utils.appendcr(l_body_code,'				THEN');
1198 
1199 	cn_utils.appendcr(l_body_code,'					OPEN	rev_typ_all_inv_cur;');
1200 	cn_utils.appendcr(l_body_code,'					FETCH	rev_typ_all_inv_cur');
1201 	cn_utils.appendcr(l_body_code,'					BULK COLLECT INTO');
1202 	cn_utils.appendcr(l_body_code,'							ccla_id_var LIMIT 1000;');
1203 	cn_utils.appendcr(l_body_code,'					CLOSE 	rev_typ_all_inv_cur;');
1204 
1205 	cn_utils.appendcr(l_body_code,'					IF	(ccla_id_var.COUNT > 0)');
1206 	cn_utils.appendcr(l_body_code,'					THEN');
1207 	cn_utils.appendcr(l_body_code,'						FORALL i IN ccla_id_var.FIRST..ccla_id_var.LAST');
1208 	cn_utils.appendcr(l_body_code,'						UPDATE	cn_comm_lines_api');
1209 	cn_utils.appendcr(l_body_code,'						SET		adjust_status    = ''SCA_REVENUE_ERROR'',');
1210 	cn_utils.appendcr(l_body_code,'								last_updated_by  = l_user_id,');
1211 	cn_utils.appendcr(l_body_code,'								last_update_date = SYSDATE');
1212 	cn_utils.appendcr(l_body_code,'						WHERE	comm_lines_api_id = ccla_id_var(i)');
1213 	cn_utils.appendcr(l_body_code,'				                AND     org_id = p_org_id;');
1214 
1215 	cn_utils.appendcr(l_body_code,'						IF (SQL%ROWCOUNT > 0)');
1216 	cn_utils.appendcr(l_body_code,'						THEN');
1217 	cn_utils.appendcr(l_body_code,'							debugmsg(SQL%ROWCOUNT||''Records Of Type INVOICE Are Updated With Error SCA_REVENUE_ERROR'');');
1218 	cn_utils.appendcr(l_body_code,'							x_ord_rev_recs := SQL%ROWCOUNT;');
1219 	cn_utils.appendcr(l_body_code,'						ELSE');
1220 	cn_utils.appendcr(l_body_code,'							debugmsg(''All Record(s) of Type INVOICE Are REVENUE Type Record(s).'');');
1221 	cn_utils.appendcr(l_body_code,'							x_ord_rev_recs := 0;');
1222 	cn_utils.appendcr(l_body_code,'						END IF;');
1223 
1224 	cn_utils.appendcr(l_body_code,'					END IF;');
1225 
1226 	cn_utils.appendcr(l_body_code,'				END IF;');
1227 
1228 	cn_utils.appendcr(l_body_code,'			EXCEPTION');
1229 	cn_utils.appendcr(l_body_code,'				WHEN FND_API.G_EXC_UNEXPECTED_ERROR');
1230 	cn_utils.appendcr(l_body_code,'				THEN');
1231 	cn_utils.appendcr(l_body_code,'					ROLLBACK TO check_update_revenue_error;');
1232 	cn_utils.appendcr(l_body_code,'					x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;');
1233 	cn_utils.appendcr(l_body_code,'					debugmsg(''Unexpected Error In Procedure CHECK_UPDATE_REVENUE_ERROR''||SQLERRM);');
1234 	cn_utils.appendcr(l_body_code,'					FND_MSG_PUB.Count_And_Get');
1235 	cn_utils.appendcr(l_body_code,'						(p_count   =>  x_msg_count,');
1236 	cn_utils.appendcr(l_body_code,'						 p_data    =>  x_msg_data);');
1237 	cn_utils.appendcr(l_body_code,'				WHEN OTHERS');
1238 	cn_utils.appendcr(l_body_code,'				THEN');
1239 	cn_utils.appendcr(l_body_code,'					ROLLBACK TO check_update_revenue_error;');
1240 	cn_utils.appendcr(l_body_code,'					debugmsg(''Error In Procedure CHECK_UPDATE_REVENUE_ERROR''||SQLERRM);');
1241 	cn_utils.appendcr(l_body_code,'					x_return_status := FND_API.G_RET_STS_ERROR;');
1242 	cn_utils.appendcr(l_body_code,'					FND_MSG_PUB.count_and_get');
1243 	cn_utils.appendcr(l_body_code,'						(p_count    => x_msg_count,');
1244 	cn_utils.appendcr(l_body_code,'						 p_data     => x_msg_data);');
1245 	cn_utils.appendcr(l_body_code,'			END check_update_revenue_error;');
1246 
1247 	------++
1248 	-- Procedure check_update_role_error Updates cn_comm_lines_api's Adjust Status to SCA_ROLE_ERROR
1249 	-- for all the orders / invoices that are submitted to SCA Engine and not having valid ROLE_ID
1250 	------++
1251 
1252 	cn_utils.appendcr(l_body_code,'		PROCEDURE check_update_role_error(');
1253 	cn_utils.appendcr(l_body_code,'				p_api_version          	IN NUMBER,');
1254 	cn_utils.appendcr(l_body_code,'				p_init_msg_list			IN VARCHAR2 := FND_API.G_FALSE,');
1255 	cn_utils.appendcr(l_body_code,'				p_commit	    		IN VARCHAR2 := FND_API.G_FALSE,');
1256 	cn_utils.appendcr(l_body_code,'				p_validation_level		IN NUMBER   := FND_API.G_VALID_LEVEL_FULL,');
1257 	cn_utils.appendcr(l_body_code,'			   p_sca_process_batch_id  IN cn_sca_process_batches.sca_process_batch_id%TYPE,');
1258 	cn_utils.appendcr(l_body_code,'			   p_start_date            IN cn_comm_lines_api.processed_Date%TYPE,');
1259 	cn_utils.appendcr(l_body_code,'			   p_end_date              IN cn_comm_lines_api.processed_Date%TYPE,');
1260 	cn_utils.appendcr(l_body_code,'			   p_trx_type				IN cn_comm_lines_api.trx_type%TYPE,');
1261 	cn_utils.appendcr(l_body_code,'				p_start_id 				IN cn_sca_process_batches.start_id%TYPE,');
1262 	cn_utils.appendcr(l_body_code,'				p_end_id   				IN cn_sca_process_batches.end_id%TYPE,');
1263 	cn_utils.appendcr(l_body_code,'				p_org_id   				IN cn_sca_process_batches.org_id%TYPE,');
1264 	cn_utils.appendcr(l_body_code,'				x_ord_role_recs		    OUT NOCOPY NUMBER,');
1265 	cn_utils.appendcr(l_body_code,'			   x_inv_role_recs		    OUT NOCOPY NUMBER,');
1266 	cn_utils.appendcr(l_body_code,'			   x_return_status			OUT	NOCOPY VARCHAR2,');
1267 	cn_utils.appendcr(l_body_code,'				x_msg_count				OUT	NOCOPY NUMBER,');
1268 	cn_utils.appendcr(l_body_code,'				x_msg_data				OUT	NOCOPY VARCHAR2)');
1269 	cn_utils.appendcr(l_body_code,'			IS');
1270 	cn_utils.appendcr(l_body_code,'				l_api_name				CONSTANT VARCHAR2(30)	:= ''check_update_role_error'';');
1271 	cn_utils.appendcr(l_body_code,'			    l_user_id  				NUMBER 					:= fnd_global.user_id;');
1272 
1273 	cn_utils.appendcr(l_body_code,'			    TYPE  ccla_id_tbl IS');
1274 	cn_utils.appendcr(l_body_code,'			    TABLE OF cn_comm_lines_api.comm_lines_api_id%TYPE');
1275 	cn_utils.appendcr(l_body_code,'				 INDEX BY BINARY_INTEGER;');
1276 
1277 	cn_utils.appendcr(l_body_code,'			    TYPE  ccla_ord_tbl IS');
1278 	cn_utils.appendcr(l_body_code,'			    TABLE OF cn_comm_lines_api.order_number%TYPE');
1279 	cn_utils.appendcr(l_body_code,'				 INDEX BY BINARY_INTEGER;');
1280 
1281 	cn_utils.appendcr(l_body_code,'			    TYPE  ccla_inv_tbl IS');
1282 	cn_utils.appendcr(l_body_code,'			    TABLE OF cn_comm_lines_api.invoice_number%TYPE');
1283 	cn_utils.appendcr(l_body_code,'				 INDEX BY BINARY_INTEGER;');
1284 
1285 	cn_utils.appendcr(l_body_code,'			    TYPE ccla_ord_rec IS RECORD');
1286 	cn_utils.appendcr(l_body_code,'			    	(id_col	   ccla_id_tbl,');
1287 	cn_utils.appendcr(l_body_code,'			    	 ord_col   ccla_ord_tbl);');
1288 	cn_utils.appendcr(l_body_code,'				 ccla_ord_rec_var	ccla_ord_rec;');
1289 
1290 	cn_utils.appendcr(l_body_code,'			    TYPE ccla_inv_rec IS RECORD');
1291 	cn_utils.appendcr(l_body_code,'			    	(id_col	   ccla_id_tbl,');
1292 	cn_utils.appendcr(l_body_code,'			    	 inv_col   ccla_inv_tbl);');
1293 	cn_utils.appendcr(l_body_code,'				 ccla_inv_rec_var	ccla_inv_rec;');
1294 
1295 	cn_utils.appendcr(l_body_code,'		BEGIN');
1296 
1297 	cn_utils.appendcr(l_body_code,'				SAVEPOINT	check_update_role_error;');
1298 	cn_utils.appendcr(l_body_code,'				IF NOT FND_API.Compatible_API_Call (');
1299 	cn_utils.appendcr(l_body_code,'						p_api_version,');
1300 	cn_utils.appendcr(l_body_code,'						p_api_version,');
1301 	cn_utils.appendcr(l_body_code,'						l_api_name,');
1302 	cn_utils.appendcr(l_body_code,'						NULL)');
1303 	cn_utils.appendcr(l_body_code,'				THEN');
1304 	cn_utils.appendcr(l_body_code,'					RAISE FND_API.G_EXC_UNEXPECTED_ERROR;');
1305 	cn_utils.appendcr(l_body_code,'				END IF;');
1306 	cn_utils.appendcr(l_body_code,'				-- Initialize message list if p_init_msg_list is set to TRUE.');
1307 	cn_utils.appendcr(l_body_code,'				IF FND_API.to_Boolean( p_init_msg_list ) THEN');
1308 	cn_utils.appendcr(l_body_code,'					FND_MSG_PUB.initialize;');
1309 	cn_utils.appendcr(l_body_code,'				END IF;');
1310 
1311 	cn_utils.appendcr(l_body_code,'				--  Initialize API return status to success');
1312 	cn_utils.appendcr(l_body_code,'				x_return_status := FND_API.G_RET_STS_SUCCESS;');
1313 	cn_utils.appendcr(l_body_code,'			    IF (p_trx_type = ''ORD'')');
1314 	cn_utils.appendcr(l_body_code,'			    THEN');
1315 	cn_utils.appendcr(l_body_code,'         		SELECT  ccla.comm_lines_api_id,');
1316 	cn_utils.appendcr(l_body_code,'         		        ccla.order_number');
1317 	cn_utils.appendcr(l_body_code,'         		BULK COLLECT INTO');
1318 	cn_utils.appendcr(l_body_code,'         		        ccla_ord_rec_var.id_col,');
1319 	cn_utils.appendcr(l_body_code,'		    		        ccla_ord_rec_var.ord_col');
1320 	cn_utils.appendcr(l_body_code,'         		FROM    ');
1321 	cn_utils.appendcr(l_body_code,'         		        cn_comm_lines_api ccla');
1322 
1323 	cn_utils.appendcr(l_body_code,'         		WHERE   (TRUNC(ccla.processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1324 	cn_utils.appendcr(l_body_code,'		    		AND     (ccla.load_status = ''UNLOADED'')');
1325 	cn_utils.appendcr(l_body_code,'		    		AND     (ccla.org_id = p_org_id)');
1326 	cn_utils.appendcr(l_body_code,'         		AND     (ccla.order_number IS NOT NULL)');
1327 	cn_utils.appendcr(l_body_code,'         		AND     (ccla.line_number IS NOT NULL)');
1328 	cn_utils.appendcr(l_body_code,'         		AND     (ccla.invoice_number IS NULL)');
1329 	cn_utils.appendcr(l_body_code,'					AND     ((ccla.adjust_status IS NULL) OR ccla.adjust_status NOT IN');
1330 	cn_utils.appendcr(l_body_code,'						    (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'',');
1331 	cn_utils.appendcr(l_body_code,'					         ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''))');
1332 	cn_utils.appendcr(l_body_code,'         		AND     (ccla.order_number BETWEEN TO_NUMBER(p_start_id) AND TO_NUMBER(p_end_id))');
1333 	cn_utils.appendcr(l_body_code,'         		AND     ((ccla.trx_type = ''ORD'') OR (ccla.trx_type = ''MAN''))');
1334    cn_utils.appendcr(l_body_code,'         		AND     NOT EXISTS ');
1335    cn_utils.appendcr(l_body_code,'         			(SELECT 1 ');
1336    cn_utils.appendcr(l_body_code,'         		         FROM cn_srp_roles csro ');
1337 	cn_utils.appendcr(l_body_code,'         		         WHERE   (csro.ROLE_id = ccla.role_id)');
1338 	cn_utils.appendcr(l_body_code,'         		         AND     (ccla.salesrep_id = csro.salesrep_id)');
1339 	cn_utils.appendcr(l_body_code,'         		         AND     (ccla.org_id = csro.org_id)');
1340    cn_utils.appendcr(l_body_code,'         		      AND     (TRUNC(ccla.processed_date) BETWEEN TRUNC(csro.start_date) AND NVL(TRUNC(csro.end_date), TRUNC(ccla.processed_date)))); ');
1341 
1342 	cn_utils.appendcr(l_body_code,'					IF ccla_ord_rec_var.id_col.COUNT > 0');
1343 	cn_utils.appendcr(l_body_code,'					THEN');
1344 	cn_utils.appendcr(l_body_code,'						FORALL i IN ccla_ord_rec_var.id_col.FIRST..ccla_ord_rec_var.id_col.LAST');
1345 	cn_utils.appendcr(l_body_code,'						UPDATE 	cn_comm_lines_api');
1346 	cn_utils.appendcr(l_body_code,'						SET		adjust_status    = ''SCA_ROLE_ERROR'',');
1347 	cn_utils.appendcr(l_body_code,'								last_updated_by  = l_user_id,');
1348 	cn_utils.appendcr(l_body_code,'								last_update_date = SYSDATE');
1349 	cn_utils.appendcr(l_body_code,'						WHERE comm_lines_api_id = ccla_ord_rec_var.id_col(i)');
1350 	cn_utils.appendcr(l_body_code,'						AND   org_id = p_org_id;');
1351 	cn_utils.appendcr(l_body_code,'						debugmsg(SQL%ROWCOUNT||''Record(s) of Type ORDER Updated To SCA_ROLE_ERROR In CN_COMM_LINES_API'');');
1352 	cn_utils.appendcr(l_body_code,'						x_ord_role_recs := SQL%ROWCOUNT;');
1353 	cn_utils.appendcr(l_body_code,'					ELSE');
1354 	cn_utils.appendcr(l_body_code,'						debugmsg(''All Record(s) of Type ORDER Are Having Valid Role Assigned.'');');
1355 	cn_utils.appendcr(l_body_code,'						x_ord_role_recs := 0;');
1356 	cn_utils.appendcr(l_body_code,'					END IF;');
1357 
1358 	cn_utils.appendcr(l_body_code,'			    ELSIF (p_trx_type = ''INV'')');
1359 	cn_utils.appendcr(l_body_code,'			    THEN');
1360 	cn_utils.appendcr(l_body_code,'         		SELECT  ccla.comm_lines_api_id,');
1361 	cn_utils.appendcr(l_body_code,'         		        ccla.invoice_number');
1362 	cn_utils.appendcr(l_body_code,'					BULK COLLECT INTO');
1363 	cn_utils.appendcr(l_body_code,'							ccla_inv_rec_var.id_col,');
1364 	cn_utils.appendcr(l_body_code,'							ccla_inv_rec_var.inv_col');
1365 	cn_utils.appendcr(l_body_code,'         		FROM ');
1366 	cn_utils.appendcr(l_body_code,'         		        cn_comm_lines_api ccla');
1367 	cn_utils.appendcr(l_body_code,'					WHERE   (TRUNC(ccla.processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1368 	cn_utils.appendcr(l_body_code,'					AND   	(ccla.load_status = ''UNLOADED'')');
1369 	cn_utils.appendcr(l_body_code,'					AND   	(ccla.org_id = p_org_id)');
1370 	cn_utils.appendcr(l_body_code,'					AND     (ccla.invoice_number IS NOT NULL)');
1371 	cn_utils.appendcr(l_body_code,'					AND     (ccla.line_number IS NOT NULL)');
1372 	cn_utils.appendcr(l_body_code,'					AND   	((ccla.adjust_status IS NULL) OR ccla.adjust_status NOT IN');
1373 	cn_utils.appendcr(l_body_code,'						    (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'',');
1374 	cn_utils.appendcr(l_body_code,'			                 ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''))');
1375 	cn_utils.appendcr(l_body_code,'					AND     (ccla.invoice_number BETWEEN p_start_id AND p_end_id)');
1376 	cn_utils.appendcr(l_body_code,'					AND     ((ccla.trx_type = ''INV'') OR (ccla.trx_type = ''MAN''))');
1377 
1378    cn_utils.appendcr(l_body_code,'         		AND     NOT EXISTS ');
1379    cn_utils.appendcr(l_body_code,'         			(SELECT 1 ');
1380    cn_utils.appendcr(l_body_code,'         		         FROM cn_srp_roles csro ');
1381 	cn_utils.appendcr(l_body_code,'         		         WHERE   (csro.ROLE_id = ccla.role_id)');
1382    cn_utils.appendcr(l_body_code,'         		         AND     (ccla.salesrep_id = csro.salesrep_id)');
1383    cn_utils.appendcr(l_body_code,'         		         AND     (ccla.org_id = csro.org_id)');
1384    cn_utils.appendcr(l_body_code,'         		      	AND     (TRUNC(ccla.processed_date) BETWEEN TRUNC(csro.start_date) AND NVL(TRUNC(csro.end_date), TRUNC(ccla.processed_date)))); ');
1385 
1386 	cn_utils.appendcr(l_body_code,'					IF ccla_inv_rec_var.id_col.COUNT > 0');
1387 	cn_utils.appendcr(l_body_code,'					THEN');
1388 	cn_utils.appendcr(l_body_code,'		    			FORALL i IN ccla_inv_rec_var.id_col.FIRST..ccla_inv_rec_var.id_col.LAST');
1389 	cn_utils.appendcr(l_body_code,'						UPDATE 	cn_comm_lines_api');
1390 	cn_utils.appendcr(l_body_code,'						SET		adjust_status    = ''SCA_ROLE_ERROR'',');
1391 	cn_utils.appendcr(l_body_code,'									last_updated_by  = l_user_id,');
1392 	cn_utils.appendcr(l_body_code,'									last_update_date = SYSDATE');
1393 	cn_utils.appendcr(l_body_code,'						WHERE comm_lines_api_id = ccla_inv_rec_var.id_col(i)');
1394 	cn_utils.appendcr(l_body_code,'						AND   org_id = p_org_id;');
1395 	cn_utils.appendcr(l_body_code,'			        	debugmsg(SQL%ROWCOUNT||''Record(s) of Type INVOICE Updated To SCA_ROLE_ERROR In CN_COMM_LINES_API'');');
1396 	cn_utils.appendcr(l_body_code,'						x_inv_role_recs := SQL%ROWCOUNT;');
1397 	cn_utils.appendcr(l_body_code,'					ELSE');
1398 	cn_utils.appendcr(l_body_code,'						debugmsg(''All Record(s) of Type INVOICE Are Having Valid Role Assigned.'');');
1399 	cn_utils.appendcr(l_body_code,'						x_inv_role_recs := 0;');
1400 	cn_utils.appendcr(l_body_code,'			        END IF;');
1401 	cn_utils.appendcr(l_body_code,'			    END IF;');
1402 	cn_utils.appendcr(l_body_code,'			EXCEPTION');
1403 	cn_utils.appendcr(l_body_code,'			WHEN FND_API.G_EXC_UNEXPECTED_ERROR');
1404 	cn_utils.appendcr(l_body_code,'			THEN');
1405 	cn_utils.appendcr(l_body_code,'				ROLLBACK TO check_update_role_error;');
1406 	cn_utils.appendcr(l_body_code,'				x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;');
1407 	cn_utils.appendcr(l_body_code,'				debugmsg(''Unexpected Error In Procedure CHECK_UPDATE_ROLE_ERROR''||SQLERRM);');
1408 	cn_utils.appendcr(l_body_code,'				FND_MSG_PUB.Count_And_Get');
1409 	cn_utils.appendcr(l_body_code,'					(p_count   =>  x_msg_count,');
1410 	cn_utils.appendcr(l_body_code,'					 p_data    =>  x_msg_data);');
1411 	cn_utils.appendcr(l_body_code,'			    WHEN OTHERS');
1412 	cn_utils.appendcr(l_body_code,'			    THEN');
1413 	cn_utils.appendcr(l_body_code,'			    	ROLLBACK TO check_update_role_error;');
1414 	cn_utils.appendcr(l_body_code,'					x_return_status := FND_API.G_RET_STS_ERROR;');
1415 	cn_utils.appendcr(l_body_code,'					debugmsg(''Unhandled Error In Procedure CHECK_UPDATE_ROLE_ERROR''||SQLERRM);');
1416 	cn_utils.appendcr(l_body_code,'					FND_MSG_PUB.count_and_get');
1417 	cn_utils.appendcr(l_body_code,'							(p_count    => x_msg_count,');
1418 	cn_utils.appendcr(l_body_code,'							 p_data     => x_msg_data);');
1419 	cn_utils.appendcr(l_body_code,'		END check_update_role_error;');
1420 	------++
1421 	-- Procedure check_update_resource_error Updates cn_comm_lines_api's Adjust Status to SCA_SRP_ERROR
1422 	-- for all the orders / invoices that are submitted to SCA Engine and not having valid SALESREP_ID
1423 	------++
1424 	cn_utils.appendcr(l_body_code,'		PROCEDURE check_update_resource_error(');
1425 	cn_utils.appendcr(l_body_code,'			p_api_version          	IN NUMBER,');
1426 	cn_utils.appendcr(l_body_code,'			p_init_msg_list			IN VARCHAR2 := FND_API.G_FALSE,');
1427 	cn_utils.appendcr(l_body_code,'			p_commit	    				IN VARCHAR2 := FND_API.G_FALSE,');
1428 	cn_utils.appendcr(l_body_code,'			p_sca_process_batch_id 	IN cn_sca_process_batches.sca_process_batch_id%TYPE,');
1429 	cn_utils.appendcr(l_body_code,'			p_start_date            IN cn_comm_lines_api.processed_Date%TYPE,');
1430 	cn_utils.appendcr(l_body_code,'			p_end_date              IN cn_comm_lines_api.processed_Date%TYPE,');
1431 	cn_utils.appendcr(l_body_code,'			p_validation_level		IN NUMBER   := FND_API.G_VALID_LEVEL_FULL,');
1432 	cn_utils.appendcr(l_body_code,'			p_trx_type 					IN cn_sca_process_batches.type%TYPE,');
1433 	cn_utils.appendcr(l_body_code,'			p_start_id 					IN cn_sca_process_batches.start_id%TYPE,');
1434 	cn_utils.appendcr(l_body_code,'			p_end_id   					IN cn_sca_process_batches.end_id%TYPE,');
1435 	cn_utils.appendcr(l_body_code,'			p_org_id   					IN cn_sca_process_batches.org_id%TYPE,');
1436 	cn_utils.appendcr(l_body_code,'			x_ord_res_recs		    	OUT NOCOPY NUMBER,');
1437 	cn_utils.appendcr(l_body_code,'			x_inv_res_recs		    	OUT NOCOPY NUMBER,');
1438 	cn_utils.appendcr(l_body_code,'			x_return_status			OUT NOCOPY VARCHAR2,');
1439 	cn_utils.appendcr(l_body_code,'			x_msg_count					OUT NOCOPY NUMBER,');
1440 	cn_utils.appendcr(l_body_code,'			x_msg_data					OUT NOCOPY VARCHAR2)');
1441 	cn_utils.appendcr(l_body_code,'		IS');
1442 	cn_utils.appendcr(l_body_code,'			l_api_name	CONSTANT VARCHAR2(50)	:=	''check_update_resource_error'';');
1443 	cn_utils.appendcr(l_body_code,'		    l_user_id  	NUMBER := fnd_global.user_id;');
1444 
1445 	cn_utils.appendcr(l_body_code,'		   TYPE  ccla_id_tbl IS');
1446 	cn_utils.appendcr(l_body_code,'			TABLE OF cn_comm_lines_api.comm_lines_api_id%TYPE');
1447 	cn_utils.appendcr(l_body_code,'			INDEX BY BINARY_INTEGER;');
1448 
1449 	cn_utils.appendcr(l_body_code,'			TYPE  ccla_ord_tbl IS');
1450 	cn_utils.appendcr(l_body_code,'			TABLE OF cn_comm_lines_api.order_number%TYPE');
1451 	cn_utils.appendcr(l_body_code,'			INDEX BY BINARY_INTEGER;');
1452 
1453 	cn_utils.appendcr(l_body_code,'			TYPE  ccla_inv_tbl IS');
1454 	cn_utils.appendcr(l_body_code,'			TABLE OF cn_comm_lines_api.invoice_number%TYPE');
1455 	cn_utils.appendcr(l_body_code,'			INDEX BY BINARY_INTEGER;');
1456 
1457 	cn_utils.appendcr(l_body_code,'			TYPE ccla_ord_rec IS RECORD');
1458 	cn_utils.appendcr(l_body_code,'			     (id_col	   ccla_id_tbl,');
1459 	cn_utils.appendcr(l_body_code,'			      ord_col   ccla_ord_tbl);');
1460 	cn_utils.appendcr(l_body_code,'			ccla_ord_rec_var	ccla_ord_rec;');
1461 
1462 	cn_utils.appendcr(l_body_code,'			TYPE ccla_inv_rec IS RECORD');
1463 	cn_utils.appendcr(l_body_code,'				 (id_col	   ccla_id_tbl,');
1464 	cn_utils.appendcr(l_body_code,'			      inv_col   ccla_inv_tbl);');
1465 	cn_utils.appendcr(l_body_code,'			ccla_inv_rec_var	ccla_inv_rec;');
1466 
1467 	cn_utils.appendcr(l_body_code,'		BEGIN');
1468 	cn_utils.appendcr(l_body_code,'			SAVEPOINT check_update_resource_error;');
1469 	cn_utils.appendcr(l_body_code,'			IF NOT FND_API.Compatible_API_Call (');
1470 	cn_utils.appendcr(l_body_code,'				p_api_version,');
1471 	cn_utils.appendcr(l_body_code,'				p_api_version,');
1472 	cn_utils.appendcr(l_body_code,'				l_api_name,');
1473 	cn_utils.appendcr(l_body_code,'				NULL)');
1474 	cn_utils.appendcr(l_body_code,'			THEN');
1475 	cn_utils.appendcr(l_body_code,'				RAISE FND_API.G_EXC_UNEXPECTED_ERROR;');
1476 	cn_utils.appendcr(l_body_code,'			END IF;');
1477 
1478 	cn_utils.appendcr(l_body_code,'			-- Initialize message list if p_init_msg_list is set to TRUE.');
1479 	cn_utils.appendcr(l_body_code,'			IF FND_API.to_Boolean( p_init_msg_list ) THEN');
1480 	cn_utils.appendcr(l_body_code,'				FND_MSG_PUB.initialize;');
1481 	cn_utils.appendcr(l_body_code,'			END IF;');
1482 
1483 	cn_utils.appendcr(l_body_code,'			x_return_status := FND_API.G_RET_STS_SUCCESS;');
1484 
1485 	cn_utils.appendcr(l_body_code,'		    IF (p_trx_type = ''ORD'')');
1486 	cn_utils.appendcr(l_body_code,'		    THEN');
1487 	cn_utils.appendcr(l_body_code,'				SELECT 	comm_lines_api_id,');
1488 	cn_utils.appendcr(l_body_code,'							order_number');
1489 	cn_utils.appendcr(l_body_code,'				BULK COLLECT INTO');
1490 	cn_utils.appendcr(l_body_code,'						ccla_ord_rec_var.id_col,');
1491 	cn_utils.appendcr(l_body_code,'						ccla_ord_rec_var.ord_col');
1492 	cn_utils.appendcr(l_body_code,'				FROM 	cn_comm_lines_api');
1493 	cn_utils.appendcr(l_body_code,'				WHERE	comm_lines_api_id');
1494 	cn_utils.appendcr(l_body_code,'					IN');
1495 	cn_utils.appendcr(l_body_code,'					(SELECT 	ccla.comm_lines_api_id');
1496 	cn_utils.appendcr(l_body_code,'					 FROM 	jtf_rs_salesreps jrs, cn_comm_lines_api ccla');
1497 	cn_utils.appendcr(l_body_code,'					 WHERE (ccla.salesrep_id = jrs.salesrep_id(+))');
1498 	cn_utils.appendcr(l_body_code,'					 AND   (ccla.org_id = jrs.org_id(+))');
1499 	cn_utils.appendcr(l_body_code,'					 AND   (ccla.salesrep_id IS NOT NULL)');
1500 	cn_utils.appendcr(l_body_code,'					 AND   (ccla.org_id = p_org_id)');
1501 	cn_utils.appendcr(l_body_code,'					 AND   (nvl(jrs.resource_id,0) = 0)');
1502 	cn_utils.appendcr(l_body_code,'					 AND   (TRUNC(ccla.processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1503 	cn_utils.appendcr(l_body_code,'					 AND   (ccla.load_status = ''UNLOADED'')');
1504 	cn_utils.appendcr(l_body_code,'					 AND   (order_number IS NOT NULL)');
1505 	cn_utils.appendcr(l_body_code,'					 AND   (line_number IS NOT NULL)');
1506 	cn_utils.appendcr(l_body_code,'					 AND   (invoice_number IS NULL)');
1507 	cn_utils.appendcr(l_body_code,'					 AND   (ccla.order_number BETWEEN TO_NUMBER(p_start_id) AND TO_NUMBER(p_end_id))');
1508 	cn_utils.appendcr(l_body_code,'					 AND   ((adjust_status IS NULL) OR adjust_status NOT IN');
1509 	cn_utils.appendcr(l_body_code,'						    (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'',');
1510 	cn_utils.appendcr(l_body_code,'					        ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''))');
1511 	cn_utils.appendcr(l_body_code,'					 AND   ((ccla.trx_type = ''ORD'') OR (ccla.trx_type = ''MAN'')));');
1512 
1513 	cn_utils.appendcr(l_body_code,'					IF ccla_ord_rec_var.id_col.COUNT > 0');
1514 	cn_utils.appendcr(l_body_code,'					THEN');
1515 	cn_utils.appendcr(l_body_code,'						FORALL i IN ccla_ord_rec_var.id_col.FIRST..ccla_ord_rec_var.id_col.LAST');
1516 	cn_utils.appendcr(l_body_code,'						UPDATE   cn_comm_lines_api');
1517 	cn_utils.appendcr(l_body_code,'						SET      adjust_status    = ''SCA_SRP_ERROR'',');
1518 	cn_utils.appendcr(l_body_code,'									last_updated_by  = l_user_id,');
1519 	cn_utils.appendcr(l_body_code,'									last_update_date = SYSDATE');
1520 	cn_utils.appendcr(l_body_code,'						WHERE  comm_lines_api_id = ccla_ord_rec_var.id_col(i)');
1521 	cn_utils.appendcr(l_body_code,'						AND    org_id = p_org_id;');
1522 	cn_utils.appendcr(l_body_code,'						debugmsg(SQL%ROWCOUNT||''Record(s) of Type ORDER Updated To SCA_SRP_ERROR In CN_COMM_LINES_API.'');');
1523 	cn_utils.appendcr(l_body_code,'						x_ord_res_recs := SQL%ROWCOUNT;');
1524 	cn_utils.appendcr(l_body_code,'					ELSE');
1525 	cn_utils.appendcr(l_body_code,'						debugmsg(''All Record(s) of Type ORDER Are Having Valid Salesrep Id Assigned.'');');
1526 	cn_utils.appendcr(l_body_code,'						x_ord_res_recs := 0;');
1527 	cn_utils.appendcr(l_body_code,'					END IF;');
1528 
1529 	cn_utils.appendcr(l_body_code,'		    ELSIF (p_trx_type = ''INV'')');
1530 	cn_utils.appendcr(l_body_code,'		    THEN');
1531 	cn_utils.appendcr(l_body_code,'		    	SELECT 	comm_lines_api_id,');
1532 	cn_utils.appendcr(l_body_code,'							invoice_number');
1533 	cn_utils.appendcr(l_body_code,'				BULK COLLECT INTO');
1534 	cn_utils.appendcr(l_body_code,'						ccla_inv_rec_var.id_col,');
1535 	cn_utils.appendcr(l_body_code,'						ccla_inv_rec_var.inv_col');
1536 	cn_utils.appendcr(l_body_code,'				FROM 	cn_comm_lines_api');
1537 	cn_utils.appendcr(l_body_code,'				WHERE	comm_lines_api_id ');
1538 	cn_utils.appendcr(l_body_code,'					IN');
1539 	cn_utils.appendcr(l_body_code,'					(SELECT ccla.comm_lines_api_id');
1540 	cn_utils.appendcr(l_body_code,'					FROM 	jtf_rs_salesreps jrs, cn_comm_lines_api ccla');
1541 	cn_utils.appendcr(l_body_code,'					WHERE (ccla.salesrep_id = jrs.salesrep_id(+))');
1542 	cn_utils.appendcr(l_body_code,'					AND   (ccla.org_id = jrs.org_id(+))');
1543 	cn_utils.appendcr(l_body_code,'					AND   (ccla.salesrep_id IS NOT NULL)');
1544 	cn_utils.appendcr(l_body_code,'					AND   (ccla.org_id = p_org_id)');
1545 	cn_utils.appendcr(l_body_code,'					AND   (nvl(jrs.resource_id,0) = 0)');
1546 	cn_utils.appendcr(l_body_code,'					AND   (TRUNC(ccla.processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1547 	cn_utils.appendcr(l_body_code,'					AND   (ccla.load_status = ''UNLOADED'') ');
1548 	cn_utils.appendcr(l_body_code,'					AND   (invoice_number IS NOT NULL)');
1549 	cn_utils.appendcr(l_body_code,'					AND   (line_number IS NOT NULL)');
1550 	cn_utils.appendcr(l_body_code,'					AND   (ccla.invoice_number BETWEEN p_start_id AND p_end_id)');
1551 	cn_utils.appendcr(l_body_code,'					AND   ((adjust_status IS NULL) OR adjust_status NOT IN');
1552 	cn_utils.appendcr(l_body_code,'						   (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'',');
1553 	cn_utils.appendcr(l_body_code,'					       ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''))');
1554 	cn_utils.appendcr(l_body_code,'					AND   ((ccla.trx_type = ''INV'') OR (ccla.trx_type = ''MAN'')));');
1555 
1556 	cn_utils.appendcr(l_body_code,'					IF ccla_inv_rec_var.id_col.COUNT > 0');
1557 	cn_utils.appendcr(l_body_code,'					THEN');
1558 	cn_utils.appendcr(l_body_code,'						FORALL i IN ccla_inv_rec_var.id_col.FIRST..ccla_inv_rec_var.id_col.LAST');
1559 	cn_utils.appendcr(l_body_code,'						UPDATE  	cn_comm_lines_api ');
1560 	cn_utils.appendcr(l_body_code,'						SET     	adjust_status    = ''SCA_SRP_ERROR'',');
1561 	cn_utils.appendcr(l_body_code,'									last_updated_by  = l_user_id,');
1562 	cn_utils.appendcr(l_body_code,'									last_update_date = SYSDATE');
1563 	cn_utils.appendcr(l_body_code,'						WHERE comm_lines_api_id = ccla_inv_rec_var.id_col(i)');
1564 	cn_utils.appendcr(l_body_code,'						AND   org_id = p_org_id;');
1565 	cn_utils.appendcr(l_body_code,'						debugmsg(SQL%ROWCOUNT||''Record(s) of Type INVOICE Updated To SCA_SRP_ERROR In CN_COMM_LINES_API'');');
1566 	cn_utils.appendcr(l_body_code,'						x_inv_res_recs := SQL%ROWCOUNT;');
1567 	cn_utils.appendcr(l_body_code,'					ELSE');
1568 	cn_utils.appendcr(l_body_code,'						debugmsg(''All Record(s) of Type INVOICE Are Having Valid Salesrep Id Assigned.'');');
1569 	cn_utils.appendcr(l_body_code,'						x_inv_res_recs := 0;');
1570 	cn_utils.appendcr(l_body_code,'					END IF;');
1571  	cn_utils.appendcr(l_body_code,'		    END IF;');
1572 	cn_utils.appendcr(l_body_code,'		EXCEPTION');
1573 	cn_utils.appendcr(l_body_code,'			WHEN FND_API.G_EXC_UNEXPECTED_ERROR');
1574 	cn_utils.appendcr(l_body_code,'			THEN');
1575 	cn_utils.appendcr(l_body_code,'				ROLLBACK TO check_update_resource_error;');
1576 	cn_utils.appendcr(l_body_code,'				x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;');
1577 	cn_utils.appendcr(l_body_code,'				debugmsg(''Unexpected Error In Procedure CHECK_UPDATE_RESOURCE_ERROR''||SQLERRM);');
1578 	cn_utils.appendcr(l_body_code,'				FND_MSG_PUB.Count_And_Get');
1579 	cn_utils.appendcr(l_body_code,'					(p_count   =>  x_msg_count,');
1580 	cn_utils.appendcr(l_body_code,'					 p_data    =>  x_msg_data);');
1581 	cn_utils.appendcr(l_body_code,'		    WHEN OTHERS');
1582 	cn_utils.appendcr(l_body_code,'		    THEN');
1583 	cn_utils.appendcr(l_body_code,'		    	ROLLBACK TO check_update_resource_error;');
1584 	cn_utils.appendcr(l_body_code,'				debugmsg(''Error In Procedure CHECK_UPDATE_RESOURCE_ERROR''||SQLERRM);');
1585 	cn_utils.appendcr(l_body_code,'		    	x_return_status := FND_API.G_RET_STS_ERROR;');
1586 	cn_utils.appendcr(l_body_code,'		    	FND_MSG_PUB.count_and_get');
1587 	cn_utils.appendcr(l_body_code,'		    		(p_count    => x_msg_count,');
1588 	cn_utils.appendcr(l_body_code,'		    		 p_data     => x_msg_data);');
1589 	cn_utils.appendcr(l_body_code,'		END check_update_resource_error;');
1590 	------++
1591 	-- Procedure check_update_distinct_error Updates cn_comm_lines_api's Adjust Status to SCA_DISTINCT_ERROR
1592 	-- for all the orders / invoices that are submitted to SCA Engine and not having distinct attribute values across
1593 	-- order / invoice lines
1594 	------++
1595 	cn_utils.appendcr(l_body_code,'		PROCEDURE check_update_distinct_error(');
1596 	cn_utils.appendcr(l_body_code,'			p_api_version          	IN NUMBER,');
1597 	cn_utils.appendcr(l_body_code,'			p_init_msg_list			IN VARCHAR2 := FND_API.G_FALSE,');
1598 	cn_utils.appendcr(l_body_code,'			p_commit	    				IN VARCHAR2 := FND_API.G_FALSE,');
1599 	cn_utils.appendcr(l_body_code,'			p_sca_process_batch_id 	IN cn_sca_process_batches.sca_process_batch_id%TYPE,');
1600 	cn_utils.appendcr(l_body_code,'			p_start_date            IN cn_comm_lines_api.processed_Date%TYPE,');
1601 	cn_utils.appendcr(l_body_code,'			p_end_date              IN cn_comm_lines_api.processed_Date%TYPE,');
1602 	cn_utils.appendcr(l_body_code,'			p_validation_level		IN NUMBER   := FND_API.G_VALID_LEVEL_FULL,');
1603 	cn_utils.appendcr(l_body_code,'			p_trx_type 					IN cn_sca_process_batches.type%TYPE,');
1604 	cn_utils.appendcr(l_body_code,'			p_start_id 					IN cn_sca_process_batches.start_id%TYPE,');
1605 	cn_utils.appendcr(l_body_code,'			p_end_id   					IN cn_sca_process_batches.end_id%TYPE,');
1606 	cn_utils.appendcr(l_body_code,'			p_org_id   					IN cn_sca_process_batches.org_id%TYPE,');
1607 	cn_utils.appendcr(l_body_code,'			x_ord_dist_recs		   OUT NOCOPY NUMBER,');
1608 	cn_utils.appendcr(l_body_code,'			x_inv_dist_recs		   OUT NOCOPY NUMBER,');
1609 	cn_utils.appendcr(l_body_code,'			x_return_status			OUT NOCOPY VARCHAR2,');
1610 	cn_utils.appendcr(l_body_code,'			x_msg_count					OUT NOCOPY NUMBER,');
1611 	cn_utils.appendcr(l_body_code,'			x_msg_data					OUT NOCOPY VARCHAR2)');
1612 	cn_utils.appendcr(l_body_code,'		IS');
1613 	cn_utils.appendcr(l_body_code,'			l_api_name	CONSTANT VARCHAR2(30)	:= ''check_update_distinct_error'';');
1614 	cn_utils.appendcr(l_body_code,'		BEGIN');
1615 	cn_utils.appendcr(l_body_code,'			SAVEPOINT	check_update_distinct_error;');
1616 	cn_utils.appendcr(l_body_code,'			IF NOT FND_API.Compatible_API_Call (');
1617 	cn_utils.appendcr(l_body_code,'					p_api_version,');
1618 	cn_utils.appendcr(l_body_code,'					p_api_version,');
1619 	cn_utils.appendcr(l_body_code,'					l_api_name,');
1620 	cn_utils.appendcr(l_body_code,'					NULL)');
1621 	cn_utils.appendcr(l_body_code,'			THEN');
1622 	cn_utils.appendcr(l_body_code,'				RAISE FND_API.G_EXC_ERROR;');
1623 	cn_utils.appendcr(l_body_code,'			END IF;');
1624 
1625 	cn_utils.appendcr(l_body_code,'			-- Initialize message list if p_init_msg_list is set to TRUE.');
1626 	cn_utils.appendcr(l_body_code,'			IF FND_API.to_Boolean( p_init_msg_list ) THEN');
1627 	cn_utils.appendcr(l_body_code,'				FND_MSG_PUB.initialize;');
1628 	cn_utils.appendcr(l_body_code,'			END IF;');
1629 
1630 	cn_utils.appendcr(l_body_code,'			--  Initialize API return status to success');
1631 	cn_utils.appendcr(l_body_code,'			x_return_status := FND_API.G_RET_STS_SUCCESS;');
1632 
1633 	cn_utils.appendcr(l_body_code,'		    IF (p_trx_type = ''ORD'')');
1634 	cn_utils.appendcr(l_body_code,'		    THEN');
1635 	cn_utils.appendcr(l_body_code,'				UPDATE  cn_comm_lines_api');
1636 	cn_utils.appendcr(l_body_code,'				SET     adjust_status = ''SCA_DISTINCT_ERROR'' ');
1637 	cn_utils.appendcr(l_body_code,'				WHERE   (comm_lines_api_id, trx_type) IN');
1638 	cn_utils.appendcr(l_body_code,'				         (SELECT  comm_lines_api_id, trx_type');
1639 	cn_utils.appendcr(l_body_code,'				          FROM cn_comm_lines_api');
1640 	cn_utils.appendcr(l_body_code,'				          WHERE (order_number, line_number)');
1641 	cn_utils.appendcr(l_body_code,'				          IN');
1642 	cn_utils.appendcr(l_body_code,'				             (SELECT  ord_no, line_no');
1643 	cn_utils.appendcr(l_body_code,'				          	  FROM');
1644 	cn_utils.appendcr(l_body_code,'				          	  (SELECT distinct order_number ord_no,line_number line_no,');
1645 
1646 	split_long_sql(l_body_code,l_trx_src_column_name(l_loop_cntr3),'SELECT');
1647 
1648 	cn_utils.appendcr(l_body_code,'				    FROM    cn_comm_lines_api');
1649 	cn_utils.appendcr(l_body_code,'				    WHERE   (order_number BETWEEN TO_NUMBER(p_start_id) AND TO_NUMBER(p_end_id))');
1650 	cn_utils.appendcr(l_body_code,'				    AND     (TRUNC(processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1651 	cn_utils.appendcr(l_body_code,'				    AND     (load_status = ''UNLOADED'')');
1652 	cn_utils.appendcr(l_body_code,'				    AND     (org_id = p_org_id)');
1653 	cn_utils.appendcr(l_body_code,'				    AND     (order_number IS NOT NULL)');
1654 	cn_utils.appendcr(l_body_code,'				    AND     (line_number IS NOT NULL)');
1655 	cn_utils.appendcr(l_body_code,'				    AND     (invoice_number IS NULL)');
1656 	cn_utils.appendcr(l_body_code,'				    AND     ((trx_type = ''ORD'') OR (trx_type = ''MAN''))');
1657 	cn_utils.appendcr(l_body_code,'					 AND     ((adjust_status IS NULL) OR adjust_status NOT IN');
1658 	cn_utils.appendcr(l_body_code,'						      (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'',');
1659 	cn_utils.appendcr(l_body_code,'					          ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR'')))');
1660 	cn_utils.appendcr(l_body_code,'				    HAVING COUNT(ord_no) > 1');
1661 	cn_utils.appendcr(l_body_code,'				    GROUP BY ord_no, line_no)');
1662 	cn_utils.appendcr(l_body_code,'			AND (trx_type IN (''ORD'',''MAN''))');
1663 	cn_utils.appendcr(l_body_code,'			AND (adjust_status NOT IN (''FROZEN'',''REVERSAL'') OR adjust_status IS NULL));');
1664 
1665 	cn_utils.appendcr(l_body_code,'				    IF SQL%ROWCOUNT > 0');
1666 	cn_utils.appendcr(l_body_code,'				    THEN');
1667 	cn_utils.appendcr(l_body_code,'				    	debugmsg(SQL%ROWCOUNT||''Records Of Type ORDER Are Updated With Error SCA_DISTINCT_ERROR'');');
1668 	cn_utils.appendcr(l_body_code,'						x_ord_dist_recs := SQL%ROWCOUNT;');
1669 	cn_utils.appendcr(l_body_code,'				    ELSE');
1670 	cn_utils.appendcr(l_body_code,'				    	debugmsg(''Each ORDER Is Having Distinct Attribute Values'');');
1671 	cn_utils.appendcr(l_body_code,'						x_ord_dist_recs := 0;');
1672 	cn_utils.appendcr(l_body_code,'				    END IF;');
1673 
1674 	cn_utils.appendcr(l_body_code,'		    ELSIF (p_trx_type = ''INV'')');
1675 	cn_utils.appendcr(l_body_code,'		    THEN');
1676 	cn_utils.appendcr(l_body_code,'				UPDATE  cn_comm_lines_api');
1677 	cn_utils.appendcr(l_body_code,'				SET     adjust_status = ''SCA_DISTINCT_ERROR'' ');
1678 	cn_utils.appendcr(l_body_code,'				WHERE   (comm_lines_api_id,trx_type) IN');
1679 	cn_utils.appendcr(l_body_code,'				        (SELECT  comm_lines_api_id, trx_type');
1680 	cn_utils.appendcr(l_body_code,'				         FROM cn_comm_lines_api');
1681 	cn_utils.appendcr(l_body_code,'				         WHERE (invoice_number, line_number)');
1682 	cn_utils.appendcr(l_body_code,'				         IN');
1683 	cn_utils.appendcr(l_body_code,'				          (SELECT  inv_no, line_no');
1684 	cn_utils.appendcr(l_body_code,'				           FROM');
1685 	cn_utils.appendcr(l_body_code,'				    	      (SELECT distinct invoice_number inv_no,line_number line_no,');
1686 
1687 	split_long_sql(l_body_code,l_trx_src_column_name(l_loop_cntr3),'SELECT');
1688 
1689 	cn_utils.appendcr(l_body_code,'				    FROM     cn_comm_lines_api');
1690 	cn_utils.appendcr(l_body_code,'				    WHERE   (invoice_number BETWEEN p_start_id AND p_end_id)');
1691 	cn_utils.appendcr(l_body_code,'				    AND     (TRUNC(processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1692 	cn_utils.appendcr(l_body_code,'					 AND  	(load_status = ''UNLOADED'') ');
1693 	cn_utils.appendcr(l_body_code,'				         AND    (org_id = p_org_id)');
1694 	cn_utils.appendcr(l_body_code,'					 AND  	(invoice_number IS NOT NULL)');
1695 	cn_utils.appendcr(l_body_code,'					 AND  	(line_number IS NOT NULL)');
1696 	cn_utils.appendcr(l_body_code,'					 AND  	((trx_type = ''INV'') OR (trx_type = ''MAN''))');
1697 	cn_utils.appendcr(l_body_code,'					 AND     ((adjust_status IS NULL) OR adjust_status NOT IN');
1698 	cn_utils.appendcr(l_body_code,'						      (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'',');
1699 	cn_utils.appendcr(l_body_code,'					          ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR'')))');
1700 	cn_utils.appendcr(l_body_code,'				    HAVING COUNT(inv_no) > 1');
1701 	cn_utils.appendcr(l_body_code,'				    GROUP BY inv_no, line_no)');
1702 	cn_utils.appendcr(l_body_code,'			AND (trx_type IN (''INV'',''MAN''))');
1703 	cn_utils.appendcr(l_body_code,'			AND (adjust_status NOT IN (''FROZEN'',''REVERSAL'') OR adjust_status IS NULL));');
1704 
1705 	cn_utils.appendcr(l_body_code,'				    IF SQL%ROWCOUNT > 0');
1706 	cn_utils.appendcr(l_body_code,'				    THEN');
1707 	cn_utils.appendcr(l_body_code,'				    	debugmsg(SQL%ROWCOUNT||''Records Of Type INVOICE Are Updated With Error SCA_DISTINCT_ERROR'');');
1708 	cn_utils.appendcr(l_body_code,'						x_inv_dist_recs := SQL%ROWCOUNT;');
1709 	cn_utils.appendcr(l_body_code,'				    ELSE');
1710 	cn_utils.appendcr(l_body_code,'				    	debugmsg(''Each INVOICE Is Having Distinct Attribute Values'');');
1711 	cn_utils.appendcr(l_body_code,'						x_inv_dist_recs := 0;');
1712 	cn_utils.appendcr(l_body_code,'				    END IF;');
1713 
1714 	cn_utils.appendcr(l_body_code,'			END IF;');
1715 	cn_utils.appendcr(l_body_code,'		EXCEPTION');
1716 	cn_utils.appendcr(l_body_code,'			WHEN FND_API.G_EXC_UNEXPECTED_ERROR');
1717 	cn_utils.appendcr(l_body_code,'			THEN');
1718 	cn_utils.appendcr(l_body_code,'				ROLLBACK TO check_update_distinct_error;');
1719 	cn_utils.appendcr(l_body_code,'				x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;');
1720 	cn_utils.appendcr(l_body_code,'				debugmsg(''Unexpected Error In Procedure CHECK_UPDATE_DISTINCT_ERROR''||SQLERRM);');
1721 	cn_utils.appendcr(l_body_code,'				FND_MSG_PUB.Count_And_Get');
1722 	cn_utils.appendcr(l_body_code,'					(p_count   =>  x_msg_count,');
1723 	cn_utils.appendcr(l_body_code,'					 p_data    =>  x_msg_data);');
1724 	cn_utils.appendcr(l_body_code,'			WHEN OTHERS');
1725 	cn_utils.appendcr(l_body_code,'			THEN');
1726 	cn_utils.appendcr(l_body_code,'				ROLLBACK TO check_update_distinct_error;');
1727 	cn_utils.appendcr(l_body_code,'				debugmsg(''Error In Procedure CHECK_UPDATE_DISTINCT_ERROR''||SQLERRM); ');
1728 	cn_utils.appendcr(l_body_code,'				x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;');
1729 	cn_utils.appendcr(l_body_code,'				FND_MSG_PUB.count_and_get');
1730 	cn_utils.appendcr(l_body_code,'						(p_count    => x_msg_count,');
1731 	cn_utils.appendcr(l_body_code,'						 p_data     => x_msg_data);');
1732 	cn_utils.appendcr(l_body_code,'		END check_update_distinct_error;');
1733 
1734 	cn_utils.appendcr(l_body_code,'------+');
1735 	cn_utils.appendcr(l_body_code,'-- Package Body For Interface Mapping Package ');
1736 	cn_utils.appendcr(l_body_code,'------+');
1737 	cn_utils.appendcr(l_body_code,' PROCEDURE map (');
1738 	cn_utils.appendcr(l_body_code,		l_proc_arg1 ||',');
1739 	cn_utils.appendcr(l_body_code,		l_proc_arg2 ||',');
1740 	cn_utils.appendcr(l_body_code,		l_proc_arg3 ||',');
1741 	cn_utils.appendcr(l_body_code,		l_proc_arg4 ||',');
1742 	cn_utils.appendcr(l_body_code,		l_proc_arg5 ||',');
1743 	cn_utils.appendcr(l_body_code,		l_proc_arg6 ||',');
1744 	cn_utils.appendcr(l_body_code,		l_proc_arg7 ||',');
1745 	cn_utils.appendcr(l_body_code,		l_proc_arg8 ||',');
1746 	cn_utils.appendcr(l_body_code,		l_proc_arg9 ||',');
1747 	cn_utils.appendcr(l_body_code,		l_proc_arg10||',');
1748 	cn_utils.appendcr(l_body_code,		l_proc_arg11||')');
1749 	cn_utils.appendcr(l_body_code,'IS ');
1750 
1751 	cn_utils.appendcr(l_body_code,'------+');
1752 	cn_utils.appendcr(l_body_code,'-- To Store values to update WHO Columns');
1753 	cn_utils.appendcr(l_body_code,'------+');
1754 	cn_utils.appendcr(l_body_code,'     l_user_id  		NUMBER(15) := fnd_global.user_id;');
1755 	cn_utils.appendcr(l_body_code,'     l_login_id 		NUMBER(15) := fnd_global.login_id;');
1756 
1757 	cn_utils.appendcr(l_body_code,'------+');
1758 	cn_utils.appendcr(l_body_code,'-- To store values for start_id and end_id of CN_SCA_PROCESS_BATCHES');
1759 	cn_utils.appendcr(l_body_code,'------+');
1760 	cn_utils.appendcr(l_body_code,'     l_start_id   	cn_sca_process_batches.start_id%TYPE;');
1761 	cn_utils.appendcr(l_body_code,'     l_end_id     	cn_sca_process_batches.end_id%TYPE;');
1762 	cn_utils.appendcr(l_body_code,'     l_trx_type   	cn_sca_headers_interface.source_type%TYPE;');
1763 
1764 	cn_utils.appendcr(l_body_code,'     l_return_status VARCHAR2(50);');
1765 	cn_utils.appendcr(l_body_code,'     l_msg_count		 NUMBER;');
1766 	cn_utils.appendcr(l_body_code,'     l_msg_data		 VARCHAR2(2000);');
1767 	cn_utils.appendcr(l_body_code,'	   l_upd_ccla		 VARCHAR2(1) := ''N''; ');
1768 
1769 	cn_utils.appendcr(l_body_code,'	    -----+');
1770 	cn_utils.appendcr(l_body_code,'	    -- Variable Declarations To Hold Values Of Rows Effected By 5 Check Procedures');
1771 	cn_utils.appendcr(l_body_code,'	    -----+');
1772 	cn_utils.appendcr(l_body_code,'	    l_reset_ord_recs		NUMBER := 0;');
1773 	cn_utils.appendcr(l_body_code,'	    l_reset_inv_recs		NUMBER := 0;');
1774 	cn_utils.appendcr(l_body_code,'	    l_ord_role_recs		NUMBER := 0;');
1775 	cn_utils.appendcr(l_body_code,'	    l_inv_role_recs		NUMBER := 0;');
1776 	cn_utils.appendcr(l_body_code,'	    l_ord_res_recs		NUMBER := 0;');
1777 	cn_utils.appendcr(l_body_code,'	    l_inv_res_recs		NUMBER := 0;');
1778 	cn_utils.appendcr(l_body_code,'	    l_ord_dist_recs		NUMBER := 0;');
1779 	cn_utils.appendcr(l_body_code,'	    l_inv_dist_recs		NUMBER := 0;');
1780 	cn_utils.appendcr(l_body_code,'	    l_ord_rev_recs		NUMBER := 0;');
1781 	cn_utils.appendcr(l_body_code,'	    l_inv_rev_recs		NUMBER := 0;');
1782 	cn_utils.appendcr(l_body_code,'	    -----+');
1783 	cn_utils.appendcr(l_body_code,'	    -- Variable Declarations To Hold Values Of Rows Inserted into CN_SCA_HEADERS_INTERFACE,');
1784 	cn_utils.appendcr(l_body_code,'	    -- CN_SCA_LINES_INTERFACE And Rows Updated Into CN_COMM_LINES_API For Each ORDER and/or INVOICE');
1785 	cn_utils.appendcr(l_body_code,'	    -----+');
1786 
1787 	cn_utils.appendcr(l_body_code,'	    l_ord_ccla_recs 		NUMBER := 0;');
1788 	cn_utils.appendcr(l_body_code,'	    l_ord_cshi_recs		NUMBER := 0;');
1789 	cn_utils.appendcr(l_body_code,'	    l_ord_csli_recs		NUMBER := 0;');
1790 	cn_utils.appendcr(l_body_code,'	    l_inv_ccla_recs		NUMBER := 0;');
1791 	cn_utils.appendcr(l_body_code,'	    l_inv_csli_recs		NUMBER := 0;');
1792 	cn_utils.appendcr(l_body_code,'	    l_inv_cshi_recs		NUMBER := 0;');
1793 
1794 	cn_utils.appendcr(l_body_code,'		CURSOR   sca_head_ord_cur');
1795 	cn_utils.appendcr(l_body_code,'		IS');
1796 	cn_utils.appendcr(l_body_code,'		SELECT trx_amt, comm_lines_api_id, order_number, line_number from ');
1797 	cn_utils.appendcr(l_body_code,'		(SELECT SUM(transaction_amount) trx_amt,');
1798 	cn_utils.appendcr(l_body_code,'			   MAX(comm_lines_api_id) comm_lines_api_id,');
1799 	cn_utils.appendcr(l_body_code,'			   order_number,');
1800 	cn_utils.appendcr(l_body_code,'			   line_number');
1801 	cn_utils.appendcr(l_body_code,'		FROM   cn_comm_lines_api ccla');
1802 	cn_utils.appendcr(l_body_code,'		WHERE  (TRUNC(processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1803 	cn_utils.appendcr(l_body_code,'		AND    (load_status = ''UNLOADED'')');
1804 	cn_utils.appendcr(l_body_code,'		AND    (org_id = p_org_id)');
1805 	cn_utils.appendcr(l_body_code,'		AND    (order_number IS NOT NULL)');
1806 	cn_utils.appendcr(l_body_code,'		AND    (line_number IS NOT NULL)');
1807 	cn_utils.appendcr(l_body_code,'		AND    (invoice_number IS NULL)');
1808 	cn_utils.appendcr(l_body_code,'		AND    ((adjust_status IS NULL) OR adjust_status NOT IN');
1809 	cn_utils.appendcr(l_body_code,'			    (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'',');
1810 	cn_utils.appendcr(l_body_code,'			     ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''))');
1811 	cn_utils.appendcr(l_body_code,'		AND    (order_number BETWEEN TO_NUMBER(l_start_id) AND TO_NUMBER(l_end_id))');
1812 	cn_utils.appendcr(l_body_code,'		AND    (trx_type = ''ORD'' OR trx_type = ''MAN'')');
1813    cn_utils.appendcr(l_body_code,'		AND    (revenue_type = ''REVENUE'')');
1814 	cn_utils.appendcr(l_body_code,'		GROUP BY  order_number, line_number) ord_tbl');
1815 	cn_utils.appendcr(l_body_code,'		WHERE NOT EXISTS');
1816    cn_utils.appendcr(l_body_code,'		    (SELECT 1 FROM cn_comm_lines_api');
1817 	cn_utils.appendcr(l_body_code,'		         WHERE order_number = ord_tbl.order_number');
1818 	cn_utils.appendcr(l_body_code,'		         AND line_number = ord_tbl.line_number');
1819 	cn_utils.appendcr(l_body_code,'		         AND org_id = p_org_id');
1820 	cn_utils.appendcr(l_body_code,'		         AND adjust_status IN (''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR'')); ');
1821 
1822 	cn_utils.appendcr(l_body_code,'		CURSOR  sca_line_ord_cur');
1823 	cn_utils.appendcr(l_body_code,'		IS');
1824 	cn_utils.appendcr(l_body_code,'		SELECT	cshi.sca_headers_interface_id,');
1825 	cn_utils.appendcr(l_body_code,'					jrs.resource_id,');
1826 	cn_utils.appendcr(l_body_code,'					ccla.role_id,');
1827 	cn_utils.appendcr(l_body_code,'					ccla.comm_lines_api_id,');
1828 	cn_utils.appendcr(l_body_code,'		        	ccla.object_version_number');
1829 	cn_utils.appendcr(l_body_code,'		FROM		cn_comm_lines_api ccla,');
1830 	cn_utils.appendcr(l_body_code,'					jtf_rs_salesreps jrs,');
1831 	cn_utils.appendcr(l_body_code,'					cn_sca_headers_interface cshi');
1832 	cn_utils.appendcr(l_body_code,'		WHERE	(ccla.salesrep_id  = jrs.salesrep_id)');
1833 	cn_utils.appendcr(l_body_code,'		AND   (ccla.load_status = ''UNLOADED'')');
1834 	cn_utils.appendcr(l_body_code,'		AND 	(order_number IS NOT NULL)');
1835 	cn_utils.appendcr(l_body_code,'		AND 	(ccla.org_id = p_org_id)');
1836 	cn_utils.appendcr(l_body_code,'		AND 	(ccla.org_id = jrs.org_id)');
1837 	cn_utils.appendcr(l_body_code,'		AND 	(jrs.org_id = cshi.org_id)');
1838 	cn_utils.appendcr(l_body_code,'		AND 	(line_number IS NOT NULL)');
1839 	cn_utils.appendcr(l_body_code,'		AND 	(invoice_number IS NULL)');
1840 	cn_utils.appendcr(l_body_code,'		AND	(ccla.order_number BETWEEN TO_NUMBER(l_start_id) AND TO_NUMBER(l_end_id))');
1841 	cn_utils.appendcr(l_body_code,'		AND   (TRUNC(ccla.processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1842 	cn_utils.appendcr(l_body_code,'		AND   ((ccla.adjust_status IS NULL) OR ccla.adjust_status NOT IN');
1843 	cn_utils.appendcr(l_body_code,'			   (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'', ');
1844 	cn_utils.appendcr(l_body_code,'			    ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR'')) ');
1845 	cn_utils.appendcr(l_body_code,'	    AND	(ccla.order_number = cshi.source_id)');
1846 	cn_utils.appendcr(l_body_code,'	    AND	(ccla.line_number  = cshi.source_line_id)');
1847 	cn_utils.appendcr(l_body_code,'	    AND  (ccla.trx_type     = ''ORD'' OR ccla.trx_type = ''MAN'')');
1848 	cn_utils.appendcr(l_body_code,'		 AND  (cshi.source_type  = ''ORD'');');
1849 
1850 	cn_utils.appendcr(l_body_code,'		CURSOR sca_ord_ccla_cur');
1851 	cn_utils.appendcr(l_body_code,'		IS');
1852 	cn_utils.appendcr(l_body_code,'		SELECT  comm_lines_api_id ');
1853 	cn_utils.appendcr(l_body_code,'		FROM    cn_comm_lines_api ccla');
1854 	cn_utils.appendcr(l_body_code,'		WHERE   (order_number BETWEEN TO_NUMBER(l_start_id) AND TO_NUMBER(l_end_id))');
1855 	cn_utils.appendcr(l_body_code,'		AND     (TRUNC(processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1856 	cn_utils.appendcr(l_body_code,'		AND 	  (load_Status = ''UNLOADED'')');
1857 	cn_utils.appendcr(l_body_code,'		AND 	  (trx_type = ''ORD'' OR trx_type = ''MAN'')');
1858 	cn_utils.appendcr(l_body_code,'		AND 	  (order_number IS NOT NULL)');
1859 	cn_utils.appendcr(l_body_code,'		AND 	  (org_id = p_org_id)');
1860 	cn_utils.appendcr(l_body_code,'		AND 	  (line_number IS NOT NULL)');
1861 	cn_utils.appendcr(l_body_code,'		AND 	  (invoice_number IS NULL)');
1862 	cn_utils.appendcr(l_body_code,'		AND     ((adjust_status IS NULL) OR adjust_status NOT IN');
1863 	cn_utils.appendcr(l_body_code,'			     (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'', ');
1864 	cn_utils.appendcr(l_body_code,'			      ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''))');
1865 	cn_utils.appendcr(l_body_code,'		AND NOT EXISTS');
1866 	cn_utils.appendcr(l_body_code,'		       (SELECT 1 FROM cn_comm_lines_api');
1867 	cn_utils.appendcr(l_body_code,'		        WHERE order_number = ccla.order_number');
1868 	cn_utils.appendcr(l_body_code,'		        AND line_number = ccla.line_number');
1869 	cn_utils.appendcr(l_body_code,'		        AND org_id = p_org_id');
1870 	cn_utils.appendcr(l_body_code,'		        AND adjust_status IN (''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''));');
1871 
1872 	cn_utils.appendcr(l_body_code,'		CURSOR   sca_head_inv_cur');
1873 	cn_utils.appendcr(l_body_code,'		IS');
1874 	cn_utils.appendcr(l_body_code,'		SELECT trx_amt, comm_lines_api_id, invoice_number, line_number FROM');
1875 	cn_utils.appendcr(l_body_code,'		(SELECT SUM(transaction_amount) trx_amt,');
1876 	cn_utils.appendcr(l_body_code,'			     MAX(comm_lines_api_id) comm_lines_api_id,');
1877 	cn_utils.appendcr(l_body_code,'				  invoice_number,');
1878 	cn_utils.appendcr(l_body_code,'				  line_number');
1879 	cn_utils.appendcr(l_body_code,'		FROM    cn_comm_lines_api');
1880 	cn_utils.appendcr(l_body_code,'		WHERE   (TRUNC(processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1881 	cn_utils.appendcr(l_body_code,'		AND     (load_status = ''UNLOADED'') ');
1882 	cn_utils.appendcr(l_body_code,'		AND     (org_id = p_org_id) ');
1883  	cn_utils.appendcr(l_body_code,'		AND 	  (invoice_number IS NOT NULL)');
1884  	cn_utils.appendcr(l_body_code,'		AND 	  (line_number IS NOT NULL)');
1885 	cn_utils.appendcr(l_body_code,'		AND     ((adjust_status IS NULL) OR adjust_status NOT IN ');
1886 	cn_utils.appendcr(l_body_code,'				 (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'', ');
1887 	cn_utils.appendcr(l_body_code,'				  ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR'')) ');
1888 	cn_utils.appendcr(l_body_code,'		AND      (invoice_number BETWEEN l_start_id AND l_end_id) ');
1889 	cn_utils.appendcr(l_body_code,'		AND      (trx_type = ''INV'' OR trx_type = ''MAN'') ');
1890 	cn_utils.appendcr(l_body_code,'		AND      (revenue_type = ''REVENUE'')');
1891 	cn_utils.appendcr(l_body_code,'		GROUP BY invoice_number, line_number) inv_tbl');
1892 	cn_utils.appendcr(l_body_code,'		WHERE NOT EXISTS');
1893    cn_utils.appendcr(l_body_code,'		    (SELECT 1 FROM cn_comm_lines_api');
1894 	cn_utils.appendcr(l_body_code,'		     WHERE  invoice_number = inv_tbl.invoice_number');
1895    cn_utils.appendcr(l_body_code,'		     AND 	line_number = inv_tbl.line_number');
1896    cn_utils.appendcr(l_body_code,'		     AND 	org_id = p_org_id');
1897 	cn_utils.appendcr(l_body_code,'		     AND 	adjust_status IN (''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR'')); ');
1898 
1899 	cn_utils.appendcr(l_body_code,'		CURSOR  sca_line_inv_cur');
1900 	cn_utils.appendcr(l_body_code,'		IS');
1901 	cn_utils.appendcr(l_body_code,'		SELECT	cshi.sca_headers_interface_id,');
1902 	cn_utils.appendcr(l_body_code,'			    	jrs.resource_id,');
1903 	cn_utils.appendcr(l_body_code,'			    	ccla.role_id,');
1904 	cn_utils.appendcr(l_body_code,'			    	ccla.comm_lines_api_id,');
1905 	cn_utils.appendcr(l_body_code,'			    	ccla.object_version_number');
1906 	cn_utils.appendcr(l_body_code,'		FROM		cn_comm_lines_api ccla,');
1907 	cn_utils.appendcr(l_body_code,'					jtf_rs_salesreps jrs,');
1908 	cn_utils.appendcr(l_body_code,'					cn_sca_headers_interface cshi');
1909 	cn_utils.appendcr(l_body_code,'		WHERE	(ccla.salesrep_id  = jrs.salesrep_id)');
1910 	cn_utils.appendcr(l_body_code,'		AND   (ccla.load_status = ''UNLOADED'')');
1911 	cn_utils.appendcr(l_body_code,'		AND 	(invoice_number IS NOT NULL)');
1912 	cn_utils.appendcr(l_body_code,'		AND 	(ccla.org_id = p_org_id)');
1913 	cn_utils.appendcr(l_body_code,'		AND 	(ccla.org_id = jrs.org_id)');
1914 	cn_utils.appendcr(l_body_code,'		AND 	(jrs.org_id = cshi.org_id)');
1915  	cn_utils.appendcr(l_body_code,'		AND 	(line_number IS NOT NULL)');
1916 	cn_utils.appendcr(l_body_code,'		AND	(ccla.invoice_number BETWEEN l_start_id AND l_end_id)');
1917 	cn_utils.appendcr(l_body_code,'		AND   (TRUNC(ccla.processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1918 	cn_utils.appendcr(l_body_code,'		AND   ((ccla.adjust_status IS NULL) OR ccla.adjust_status NOT IN');
1919 	cn_utils.appendcr(l_body_code,'			   (''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'', ');
1920 	cn_utils.appendcr(l_body_code,'			    ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR'')) ');
1921 	cn_utils.appendcr(l_body_code,'		AND	(ccla.invoice_number = cshi.source_id)');
1922 	cn_utils.appendcr(l_body_code,'		AND	(ccla.line_number    = cshi.source_line_id)');
1923 	cn_utils.appendcr(l_body_code,'		AND   (ccla.trx_type      = ''INV'' OR ccla.trx_type = ''MAN'')');
1924 	cn_utils.appendcr(l_body_code,'		AND   (cshi.source_type   = ''INV'');');
1925 
1926 	cn_utils.appendcr(l_body_code,'		CURSOR sca_inv_ccla_cur');
1927 	cn_utils.appendcr(l_body_code,'		IS');
1928 	cn_utils.appendcr(l_body_code,'		SELECT  comm_lines_api_id');
1929 	cn_utils.appendcr(l_body_code,'		FROM    cn_comm_lines_api ccla');
1930 
1931 	cn_utils.appendcr(l_body_code,'		WHERE (invoice_number BETWEEN l_start_id AND l_end_id)');
1932 	cn_utils.appendcr(l_body_code,'		AND   (TRUNC(processed_date) BETWEEN TRUNC(p_start_date) AND TRUNC(p_end_date))');
1933 	cn_utils.appendcr(l_body_code,'		AND 	(load_Status = ''UNLOADED'')');
1934 	cn_utils.appendcr(l_body_code,'		AND 	(org_id = p_org_id)');
1935 	cn_utils.appendcr(l_body_code,'		AND 	(invoice_number IS NOT NULL)');
1936 	cn_utils.appendcr(l_body_code,'		AND 	(line_number IS NOT NULL)');
1937 	cn_utils.appendcr(l_body_code,'		AND 	(trx_type = ''INV'' OR trx_type = ''MAN'')');
1938 	cn_utils.appendcr(l_body_code,'		AND   ((adjust_status IS NULL) OR adjust_status NOT IN');
1939 	cn_utils.appendcr(l_body_code,'				(''SCA_PENDING'', ''SCA_ALLOCATED'', ''SCA_NOT_ALLOCATED'',''SCA_NO_RULE'',''REVERSAL'',''FROZEN'', ');
1940 	cn_utils.appendcr(l_body_code,'				 ''SCA_NOT_ELIGIBLE'',''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''))');
1941 	cn_utils.appendcr(l_body_code,'		AND NOT EXISTS');
1942 	cn_utils.appendcr(l_body_code,'		       (SELECT 1 FROM cn_comm_lines_api');
1943 	cn_utils.appendcr(l_body_code,'		        WHERE invoice_number = ccla.invoice_number');
1944 	cn_utils.appendcr(l_body_code,'		        AND line_number = ccla.line_number');
1945 	cn_utils.appendcr(l_body_code,'		        AND org_id = p_org_id');
1946 	cn_utils.appendcr(l_body_code,'		        AND adjust_status IN (''SCA_SRP_ERROR'', ''SCA_ROLE_ERROR'',''SCA_DISTINCT_ERROR'',''SCA_REVENUE_ERROR''));');
1947 
1948 	cn_utils.appendcr(l_body_code,'		TYPE  ord_num_tbl IS');
1949 	cn_utils.appendcr(l_body_code,'		TABLE OF cn_comm_lines_api.order_number%TYPE');
1950 	cn_utils.appendcr(l_body_code,'		INDEX BY BINARY_INTEGER;');
1951 
1952 	cn_utils.appendcr(l_body_code,'		TYPE  inv_num_tbl IS');
1953 	cn_utils.appendcr(l_body_code,'		TABLE OF cn_comm_lines_api.invoice_number%TYPE');
1954 	cn_utils.appendcr(l_body_code,'		INDEX BY BINARY_INTEGER;');
1955 
1956 	cn_utils.appendcr(l_body_code,'		TYPE line_num_tbl IS');
1957 	cn_utils.appendcr(l_body_code,'		TABLE OF cn_comm_lines_api.line_number%TYPE');
1958 	cn_utils.appendcr(l_body_code,'		INDEX BY BINARY_INTEGER;');
1959 
1960 	cn_utils.appendcr(l_body_code,'		TYPE trx_amt_sum_tbl IS');
1961 	cn_utils.appendcr(l_body_code,'		TABLE OF NUMBER');
1962 	cn_utils.appendcr(l_body_code,'		INDEX BY BINARY_INTEGER;');
1963 
1964 	cn_utils.appendcr(l_body_code,'		TYPE  ccla_id_tbl IS');
1965 	cn_utils.appendcr(l_body_code,'		TABLE OF cn_comm_lines_api.comm_lines_api_id%TYPE');
1966 	cn_utils.appendcr(l_body_code,'		INDEX BY BINARY_INTEGER;');
1967 
1968 	cn_utils.appendcr(l_body_code,'    TYPE sca_head_ord_rec IS RECORD(');
1969 	cn_utils.appendcr(l_body_code,'         ord_num     ord_num_tbl,');
1970 	cn_utils.appendcr(l_body_code,'         line_num    line_num_tbl,');
1971 	cn_utils.appendcr(l_body_code,'         amt_sum     trx_amt_sum_tbl,');
1972 	cn_utils.appendcr(l_body_code,'         api_id      ccla_id_tbl);');
1973 	cn_utils.appendcr(l_body_code,'    sca_head_ord_var    sca_head_ord_rec;');
1974 
1975 	cn_utils.appendcr(l_body_code,'    TYPE sca_head_inv_rec IS RECORD(');
1976 	cn_utils.appendcr(l_body_code,'         inv_num     inv_num_tbl,');
1977 	cn_utils.appendcr(l_body_code,'         line_num    line_num_tbl,');
1978 	cn_utils.appendcr(l_body_code,'         amt_sum     trx_amt_sum_tbl,');
1979 	cn_utils.appendcr(l_body_code,'         api_id      ccla_id_tbl);');
1980 	cn_utils.appendcr(l_body_code,'    sca_head_inv_var    sca_head_inv_rec;');
1981 
1982 	cn_utils.appendcr(l_body_code,'		TYPE cshi_id_tbl IS');
1983 	cn_utils.appendcr(l_body_code,'		TABLE OF cn_sca_headers_interface.sca_headers_interface_id%TYPE');
1984 	cn_utils.appendcr(l_body_code,'		INDEX BY BINARY_INTEGER;');
1985 
1986 	cn_utils.appendcr(l_body_code,'		TYPE jrs_rs_id_tbl IS');
1987 	cn_utils.appendcr(l_body_code,'		TABLE OF jtf_rs_salesreps.resource_id%TYPE');
1988 	cn_utils.appendcr(l_body_code,'		INDEX BY BINARY_INTEGER;');
1989 
1990 	cn_utils.appendcr(l_body_code,'		TYPE ccla_rl_id_tbl IS');
1991 	cn_utils.appendcr(l_body_code,'		TABLE OF cn_comm_lines_api.role_id%TYPE');
1992 	cn_utils.appendcr(l_body_code,'		INDEX BY BINARY_INTEGER;');
1993 
1994 	cn_utils.appendcr(l_body_code,'		TYPE ccla_api_id_tbl IS');
1995 	cn_utils.appendcr(l_body_code,'		TABLE OF cn_comm_lines_api.comm_lines_api_id%TYPE');
1996 	cn_utils.appendcr(l_body_code,'		INDEX BY BINARY_INTEGER;');
1997 
1998 	cn_utils.appendcr(l_body_code,'		TYPE ccla_ovn_tbl IS');
1999 	cn_utils.appendcr(l_body_code,'		TABLE OF cn_comm_lines_api.object_version_number%TYPE');
2000 	cn_utils.appendcr(l_body_code,'		INDEX BY BINARY_INTEGER;');
2001 
2002 	cn_utils.appendcr(l_body_code,'    TYPE sca_line_rec IS RECORD(');
2003 	cn_utils.appendcr(l_body_code,'			cshi_id cshi_id_tbl,');
2004 	cn_utils.appendcr(l_body_code,'			jrs_id  jrs_rs_id_tbl,');
2005 	cn_utils.appendcr(l_body_code,'			role_id ccla_rl_id_tbl,');
2006 	cn_utils.appendcr(l_body_code,'			api_id  ccla_api_id_tbl,');
2007 	cn_utils.appendcr(l_body_code,'			ovn_no  ccla_ovn_tbl);');
2008 
2009 	cn_utils.appendcr(l_body_code,'		sca_line_rec_var  sca_line_rec;');
2010 	cn_utils.appendcr(l_body_code,'		sca_ccla_id_var		ccla_id_tbl;');
2011 
2012 	cn_utils.appendcr(l_body_code,'BEGIN');
2013 	cn_utils.appendcr(l_body_code,'		SAVEPOINT map_package_savepoint;');
2014 
2015 
2016 	cn_utils.appendcr(l_body_code,'		get_init_values(');
2017 	cn_utils.appendcr(l_body_code,'		p_api_version		=> 	1.0,');
2018 	cn_utils.appendcr(l_body_code,'		p_sca_process_batch_id	=> 	p_sca_process_batch_id,');
2019 	cn_utils.appendcr(l_body_code,'		p_org_id         	=> 	p_org_id,');
2020 	cn_utils.appendcr(l_body_code,'		x_trx_type		=>	l_trx_type,');
2021 	cn_utils.appendcr(l_body_code,'		x_start_id		=> 	l_start_id,');
2022 	cn_utils.appendcr(l_body_code,'		x_end_id		=> 	l_end_id,');
2023 	cn_utils.appendcr(l_body_code,'     	x_return_status		=>	l_return_status,');
2024 	cn_utils.appendcr(l_body_code,'     	x_msg_count		=> 	l_msg_count,');
2025 	cn_utils.appendcr(l_body_code,'     	x_msg_data		=>	l_msg_data);');
2026 
2027 
2028 	cn_utils.appendcr(l_body_code,'		IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)');
2029 	cn_utils.appendcr(l_body_code,'		THEN');
2030 	cn_utils.appendcr(l_body_code,'			x_return_status := l_return_status;');
2031 	cn_utils.appendcr(l_body_code,'			FND_MESSAGE.SET_NAME(''CN'',''CN_GET_INIT_VALUES_ERROR'');');
2032 	cn_utils.appendcr(l_body_code,'			FND_MSG_PUB.ADD;');
2033 	cn_utils.appendcr(l_body_code,'			RAISE FND_API.G_EXC_ERROR;');
2034 	cn_utils.appendcr(l_body_code,'		END IF;');
2035 
2036 	cn_utils.appendcr(l_body_code,'		check_reset_error_normal(');
2037 	cn_utils.appendcr(l_body_code,'		p_api_version		=> 	1.0,');
2038 	cn_utils.appendcr(l_body_code,'		p_start_date		=>	p_start_date,');
2039 	cn_utils.appendcr(l_body_code,'		p_end_date		=>	p_end_date,');
2040 	cn_utils.appendcr(l_body_code,'		p_trx_type		=>	l_trx_type,');
2041 	cn_utils.appendcr(l_body_code,'		p_start_id		=>	l_start_id,');
2042 	cn_utils.appendcr(l_body_code,'		p_end_id		=>	l_end_id,');
2043 	cn_utils.appendcr(l_body_code,'		p_org_id         	=> 	p_org_id,');
2044 	cn_utils.appendcr(l_body_code,'		p_sca_process_batch_id	=> 	p_sca_process_batch_id,');
2045 	cn_utils.appendcr(l_body_code,'		x_reset_ord_recs	=>	l_reset_ord_recs,');
2046 	cn_utils.appendcr(l_body_code,'		x_reset_inv_recs	=>	l_reset_inv_recs,');
2047 	cn_utils.appendcr(l_body_code,'     	x_return_status		=>	l_return_status,');
2048 	cn_utils.appendcr(l_body_code,'     	x_msg_count		=> 	l_msg_count,');
2049 	cn_utils.appendcr(l_body_code,'     	x_msg_data		=>	l_msg_data);');
2050 
2051 	cn_utils.appendcr(l_body_code,'		IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)');
2052 	cn_utils.appendcr(l_body_code,'		THEN');
2053 	cn_utils.appendcr(l_body_code,'			x_return_status := l_return_status;');
2054 	cn_utils.appendcr(l_body_code,'			FND_MESSAGE.SET_NAME(''CN'',''CN_CHECK_RESET_ERROR_NORMAL'');');
2055 	cn_utils.appendcr(l_body_code,'			FND_MSG_PUB.ADD;');
2056 	cn_utils.appendcr(l_body_code,'			RAISE FND_API.G_EXC_ERROR;');
2057 	cn_utils.appendcr(l_body_code,'		END IF;');
2058 
2059 	cn_utils.appendcr(l_body_code,'		check_update_revenue_error(');
2060 	cn_utils.appendcr(l_body_code,'			p_api_version		=> 	1.0,');
2061 	cn_utils.appendcr(l_body_code,'			p_start_date		=>	p_start_date,');
2062 	cn_utils.appendcr(l_body_code,'			p_end_date		=>	p_end_date,');
2063 	cn_utils.appendcr(l_body_code,'			p_trx_type		=>	l_trx_type,');
2064 	cn_utils.appendcr(l_body_code,'			p_start_id		=>	l_start_id,');
2065 	cn_utils.appendcr(l_body_code,'			p_end_id		=>	l_end_id,');
2066 	cn_utils.appendcr(l_body_code,'		        p_org_id         	=> 	p_org_id,');
2067 	cn_utils.appendcr(l_body_code,'			x_ord_rev_recs		=>	l_ord_rev_recs,');
2068 	cn_utils.appendcr(l_body_code,'			x_inv_rev_recs		=>	l_inv_rev_recs,');
2069 	cn_utils.appendcr(l_body_code,'     		x_return_status		=>	l_return_status,');
2070 	cn_utils.appendcr(l_body_code,'     		x_msg_count		=> 	l_msg_count,');
2071 	cn_utils.appendcr(l_body_code,'     		x_msg_data		=>	l_msg_data);');
2072 
2073 	cn_utils.appendcr(l_body_code,'		IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)');
2074 	cn_utils.appendcr(l_body_code,'		THEN');
2075 	cn_utils.appendcr(l_body_code,'			x_return_status := l_return_status;');
2076 	cn_utils.appendcr(l_body_code,'			FND_MESSAGE.SET_NAME(''CN'',''CN_CHK_REV_ERROR'');');
2077 	cn_utils.appendcr(l_body_code,'			FND_MSG_PUB.ADD;');
2078 	cn_utils.appendcr(l_body_code,'			RAISE FND_API.G_EXC_ERROR;');
2079 	cn_utils.appendcr(l_body_code,'		END IF;');
2080 
2081 	cn_utils.appendcr(l_body_code,'		check_update_role_error(');
2082 	cn_utils.appendcr(l_body_code,'			p_api_version		=> 	1.0,');
2083 	cn_utils.appendcr(l_body_code,'			p_sca_process_batch_id	=>	p_sca_process_batch_id,');
2084 	cn_utils.appendcr(l_body_code,'			p_start_date		=>	p_start_date,');
2085 	cn_utils.appendcr(l_body_code,'			p_end_date		=>	p_end_date,');
2086 	cn_utils.appendcr(l_body_code,'			p_trx_type		=>	l_trx_type,');
2087 	cn_utils.appendcr(l_body_code,'			p_start_id		=>	l_start_id,');
2088 	cn_utils.appendcr(l_body_code,'			p_end_id		=>	l_end_id,');
2089 	cn_utils.appendcr(l_body_code,'	        	p_org_id         	=> 	p_org_id,');
2090 	cn_utils.appendcr(l_body_code,'			x_ord_role_recs		=>	l_ord_role_recs,');
2091 	cn_utils.appendcr(l_body_code,'			x_inv_role_recs		=>	l_inv_role_recs,');
2092 	cn_utils.appendcr(l_body_code,'     	x_return_status			=>	l_return_status,');
2093 	cn_utils.appendcr(l_body_code,'     	x_msg_count			=> 	l_msg_count,');
2094 	cn_utils.appendcr(l_body_code,'     	x_msg_data			=>	l_msg_data);');
2095 
2096 	cn_utils.appendcr(l_body_code,'		IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)');
2097 	cn_utils.appendcr(l_body_code,'		THEN');
2098 	cn_utils.appendcr(l_body_code,'			x_return_status := l_return_status;');
2099 	cn_utils.appendcr(l_body_code,'			FND_MESSAGE.SET_NAME(''CN'',''CN_CHK_ROLE_ERROR'');');
2100 	cn_utils.appendcr(l_body_code,'			FND_MSG_PUB.ADD;');
2101 	cn_utils.appendcr(l_body_code,'			RAISE FND_API.G_EXC_ERROR;');
2102 	cn_utils.appendcr(l_body_code,'		END IF;');
2103 
2104 	cn_utils.appendcr(l_body_code,'		check_update_resource_error(');
2105 	cn_utils.appendcr(l_body_code,'			p_api_version		=>  	1.0,');
2106 	cn_utils.appendcr(l_body_code,'			p_sca_process_batch_id	=>	p_sca_process_batch_id,');
2107 	cn_utils.appendcr(l_body_code,'			p_start_date		=>	p_start_date,');
2108 	cn_utils.appendcr(l_body_code,'			p_end_date		=>	p_end_date,');
2109 	cn_utils.appendcr(l_body_code,'			p_trx_type		=>	l_trx_type,');
2110 	cn_utils.appendcr(l_body_code,'			p_start_id		=>	l_start_id,');
2111 	cn_utils.appendcr(l_body_code,'			p_end_id		=>	l_end_id,');
2112 	cn_utils.appendcr(l_body_code,'	        	p_org_id         	=> 	p_org_id,');
2113 	cn_utils.appendcr(l_body_code,'			x_ord_res_recs		=>	l_ord_res_recs,');
2114 	cn_utils.appendcr(l_body_code,'			x_inv_res_recs		=> 	l_inv_res_recs,');
2115 	cn_utils.appendcr(l_body_code,'     	x_return_status			=>	l_return_status,');
2116 	cn_utils.appendcr(l_body_code,'     	x_msg_count			=> 	l_msg_count,');
2117 	cn_utils.appendcr(l_body_code,'     	x_msg_data			=>	l_msg_data);');
2118 
2119 	cn_utils.appendcr(l_body_code,'		IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)');
2120 	cn_utils.appendcr(l_body_code,'		THEN');
2121 	cn_utils.appendcr(l_body_code,'			x_return_status := l_return_status;');
2122 	cn_utils.appendcr(l_body_code,'			FND_MESSAGE.SET_NAME(''CN'',''CN_CHK_RES_ERROR'');');
2123 	cn_utils.appendcr(l_body_code,'			FND_MSG_PUB.ADD;');
2124 	cn_utils.appendcr(l_body_code,'			RAISE FND_API.G_EXC_ERROR;');
2125 	cn_utils.appendcr(l_body_code,'		END IF;');
2126 
2127 	cn_utils.appendcr(l_body_code,'		check_update_distinct_error(');
2128 	cn_utils.appendcr(l_body_code,'			p_api_version		=>  	1.0,');
2129 	cn_utils.appendcr(l_body_code,'			p_sca_process_batch_id	=>	p_sca_process_batch_id,');
2130 	cn_utils.appendcr(l_body_code,'			p_start_date		=>	p_start_date,');
2131 	cn_utils.appendcr(l_body_code,'			p_end_date		=>	p_end_date,');
2132 	cn_utils.appendcr(l_body_code,'			p_trx_type		=>	l_trx_type,');
2133 	cn_utils.appendcr(l_body_code,'			p_start_id		=>	l_start_id,');
2134 	cn_utils.appendcr(l_body_code,'			p_end_id		=>	l_end_id,');
2135 	cn_utils.appendcr(l_body_code,'	        	p_org_id         	=> 	p_org_id,');
2136 	cn_utils.appendcr(l_body_code,'			x_ord_dist_recs		=>	l_ord_dist_recs,');
2137 	cn_utils.appendcr(l_body_code,'			x_inv_dist_recs		=>	l_inv_dist_recs,');
2138 	cn_utils.appendcr(l_body_code,'     	x_return_status			=>	l_return_status,');
2139 	cn_utils.appendcr(l_body_code,'     	x_msg_count			=> 	l_msg_count,');
2140 	cn_utils.appendcr(l_body_code,'     	x_msg_data			=>	l_msg_data);');
2141 
2142 	cn_utils.appendcr(l_body_code,'		IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)');
2143 	cn_utils.appendcr(l_body_code,'		THEN');
2144 	cn_utils.appendcr(l_body_code,'			x_return_status := l_return_status;');
2145 	cn_utils.appendcr(l_body_code,'			FND_MESSAGE.SET_NAME(''CN'',''CN_CHK_DIST_ERROR'');');
2146 	cn_utils.appendcr(l_body_code,'			FND_MSG_PUB.ADD;');
2147 	cn_utils.appendcr(l_body_code,'			RAISE FND_API.G_EXC_ERROR;');
2148 	cn_utils.appendcr(l_body_code,'		END IF;');
2149 
2150    cn_utils.appendcr(l_body_code,'    IF l_trx_type = ''ORD'' ');
2151    cn_utils.appendcr(l_body_code,'    THEN');
2152    cn_utils.appendcr(l_body_code,'	   OPEN  sca_head_ord_cur;');
2153 
2154    cn_utils.appendcr(l_body_code,'	   FETCH sca_head_ord_cur ');
2155    cn_utils.appendcr(l_body_code,'	   BULK COLLECT INTO ');
2156    cn_utils.appendcr(l_body_code,'				sca_head_ord_var.amt_sum,');
2157    cn_utils.appendcr(l_body_code,'		    		sca_head_ord_var.api_id,');
2158    cn_utils.appendcr(l_body_code,'				sca_head_ord_var.ord_num,');
2159    cn_utils.appendcr(l_body_code,'	  			sca_head_ord_var.line_num LIMIT 1000;');
2160    cn_utils.appendcr(l_body_code,'	   CLOSE sca_head_ord_cur;');
2161 	cn_utils.appendcr(l_body_code,'	   IF sca_head_ord_var.api_id.COUNT > 0');
2162 	cn_utils.appendcr(l_body_code,'	   THEN');
2163 
2164 	cn_utils.appendcr(l_body_code,'	   	   l_ord_cshi_recs := sca_head_ord_var.api_id.COUNT;');
2165 
2166 	cn_utils.appendcr(l_body_code,'	   	   l_upd_ccla := ''Y'';');
2167  	cn_utils.appendcr(l_body_code,'        FORALL i IN sca_head_ord_var.ord_num.FIRST..sca_head_ord_var.ord_num.LAST');
2168  	cn_utils.appendcr(l_body_code,' 	         INSERT INTO cn_sca_headers_interface');
2169 	cn_utils.appendcr(l_body_code,' 		         (sca_headers_interface_id, transaction_source, source_type,');
2170 	cn_utils.appendcr(l_body_code,' 		          source_id, source_line_id, transaction_amount,');
2171 	cn_utils.appendcr(l_body_code,' 		          object_version_number, processed_date, process_status, transaction_status,');
2172 	cn_utils.appendcr(l_body_code,' 		          created_by, creation_Date, org_id,');
2173 
2174 	split_long_sql(l_body_code,l_src_column_name(l_loop_cntr3),'SELECT');
2175 	cn_utils.appendcr(l_body_code,')');
2176 
2177 	cn_utils.appendcr(l_body_code,' 		     SELECT');
2178 	cn_utils.appendcr(l_body_code,' 			    cn_sca_headers_interface_s.NEXTVAL, ''CN'' ,''ORD'',');
2179 	cn_utils.appendcr(l_body_code,' 			    order_number, line_number, sca_head_ord_var.amt_sum(i),');
2180 	cn_utils.appendcr(l_body_code,' 			    object_version_number, processed_date, ''SCA_UNPROCESSED'' ,''SCA_UNPROCESSED'' ,');
2181 	cn_utils.appendcr(l_body_code,' 			    '||l_login_id||', SYSDATE, org_id,');
2182 
2183 	split_long_sql(l_body_code,l_trx_src_column_name(l_loop_cntr3),'SELECT');
2184 
2185 	cn_utils.appendcr(l_body_code,' 		     FROM  cn_comm_lines_api');
2186 	cn_utils.appendcr(l_body_code,' 		     WHERE order_number      = sca_head_ord_var.ord_num(i)');
2187 	cn_utils.appendcr(l_body_code,' 		     AND   line_number       = sca_head_ord_var.line_num(i)');
2188 	cn_utils.appendcr(l_body_code,' 		     AND   comm_lines_api_id = sca_head_ord_var.api_id(i)');
2189 	cn_utils.appendcr(l_body_code,' 		     AND   org_id = p_org_id;');
2190 	cn_utils.appendcr(l_body_code,'	   ELSE');
2191 	cn_utils.appendcr(l_body_code,'	   	   l_upd_ccla := ''N'';');
2192 	cn_utils.appendcr(l_body_code,'	   END IF;');
2193 
2194 	cn_utils.appendcr(l_body_code,'	   IF l_upd_ccla = ''Y'' ');
2195 	cn_utils.appendcr(l_body_code,'	   THEN');
2196 	cn_utils.appendcr(l_body_code,'			OPEN sca_line_ord_cur;');
2197 	cn_utils.appendcr(l_body_code,'			FETCH sca_line_ord_cur');
2198 	cn_utils.appendcr(l_body_code,'			BULK COLLECT INTO');
2199 	cn_utils.appendcr(l_body_code,'				sca_line_rec_var.cshi_id,');
2200 	cn_utils.appendcr(l_body_code,'				sca_line_rec_var.jrs_id,');
2201 	cn_utils.appendcr(l_body_code,'				sca_line_rec_var.role_id,');
2202 	cn_utils.appendcr(l_body_code,'				sca_line_rec_var.api_id,');
2203 	cn_utils.appendcr(l_body_code,'			    sca_line_rec_var.ovn_no LIMIT 1000;');
2204 	cn_utils.appendcr(l_body_code,'			CLOSE sca_line_ord_cur;');
2205 
2206 	cn_utils.appendcr(l_body_code,'			l_ord_csli_recs	:=	sca_line_rec_var.cshi_id.COUNT;');
2207 
2208 	cn_utils.appendcr(l_body_code,'		    	FORALL j IN sca_line_rec_var.cshi_id.FIRST..sca_line_rec_var.cshi_id.LAST');
2209 	cn_utils.appendcr(l_body_code,' 			         INSERT INTO cn_sca_lines_interface');
2210 	cn_utils.appendcr(l_body_code,'					    (sca_lines_interface_id, sca_headers_interface_id, resource_id, role_id,');
2211 	cn_utils.appendcr(l_body_code,'					     source_trx_id,org_id, object_version_number, created_by, creation_date)');
2212 	cn_utils.appendcr(l_body_code,'					 VALUES');
2213 	cn_utils.appendcr(l_body_code,'					    (cn_sca_lines_interface_s.NEXTVAL, sca_line_rec_var.cshi_id(j), sca_line_rec_var.jrs_id(j), sca_line_rec_var.role_id(j),');
2214 	cn_utils.appendcr(l_body_code,'					     sca_line_rec_var.api_id(j),'||l_org_id||' ,sca_line_rec_var.ovn_no(j),'||l_user_id||', SYSDATE);');
2215 
2216 	cn_utils.appendcr(l_body_code,'	    	OPEN sca_ord_ccla_cur;');
2217 	cn_utils.appendcr(l_body_code,'	    	FETCH sca_ord_ccla_cur');
2218 	cn_utils.appendcr(l_body_code,'	    	BULK COLLECT INTO');
2219 	cn_utils.appendcr(l_body_code,'	    		sca_ccla_id_var	LIMIT 1000;');
2220 	cn_utils.appendcr(l_body_code,'	    	CLOSE sca_ord_ccla_cur;');
2221 
2222 	cn_utils.appendcr(l_body_code,'	    	l_ord_ccla_recs	:=	sca_ccla_id_var.COUNT;');
2223 
2224 	cn_utils.appendcr(l_body_code,'	    	FORALL k in sca_ccla_id_var.FIRST..sca_ccla_id_var.LAST');
2225 	cn_utils.appendcr(l_body_code,'	    		UPDATE cn_comm_lines_api');
2226 	cn_utils.appendcr(l_body_code,'	    		SET');
2227 	cn_utils.appendcr(l_body_code,'					adjust_status        = ''SCA_PENDING'',');
2228 	cn_utils.appendcr(l_body_code,'					last_updated_by      = '||l_user_id||',');
2229 	cn_utils.appendcr(l_body_code,'					last_update_login    = '||l_login_id||',');
2230 	cn_utils.appendcr(l_body_code,'					last_update_date     = SYSDATE');
2231 	cn_utils.appendcr(l_body_code,'	    		WHERE comm_lines_api_id  = sca_ccla_id_var(k)');
2232 	cn_utils.appendcr(l_body_code,'                 AND   org_id = p_org_id;');
2233 	cn_utils.appendcr(l_body_code,'     	x_return_status := FND_API.G_RET_STS_SUCCESS;');
2234 	cn_utils.appendcr(l_body_code,'     	FND_MSG_PUB.count_and_get');
2235 	cn_utils.appendcr(l_body_code,'                (p_count    => x_msg_count,');
2236 	cn_utils.appendcr(l_body_code,'                 p_data     => x_msg_data,');
2237 	cn_utils.appendcr(l_body_code,'           		p_encoded  => FND_API.G_TRUE);');
2238 	cn_utils.appendcr(l_body_code,'	    END IF;');
2239 
2240 	cn_utils.appendcr(l_body_code,'	   ELSIF l_trx_type = ''INV'' ');
2241 	cn_utils.appendcr(l_body_code,'    THEN');
2242 
2243 	cn_utils.appendcr(l_body_code,'		OPEN sca_head_inv_cur;');
2244 	cn_utils.appendcr(l_body_code,'		FETCH sca_head_inv_cur');
2245 	cn_utils.appendcr(l_body_code,'		BULK COLLECT INTO ');
2246 	cn_utils.appendcr(l_body_code,'				 sca_head_inv_var.amt_sum,');
2247 	cn_utils.appendcr(l_body_code,'				 sca_head_inv_var.api_id,');
2248 	cn_utils.appendcr(l_body_code,'				 sca_head_inv_var.inv_num,');
2249 	cn_utils.appendcr(l_body_code,'				 sca_head_inv_var.line_num LIMIT 1000;');
2250 	cn_utils.appendcr(l_body_code,'		CLOSE sca_head_inv_cur;');
2251 	cn_utils.appendcr(l_body_code,'		IF sca_head_inv_var.api_id.COUNT > 0');
2252 	cn_utils.appendcr(l_body_code,'		THEN');
2253 
2254 	cn_utils.appendcr(l_body_code,'	   	   l_inv_cshi_recs	:=	sca_head_inv_var.api_id.COUNT;');
2255 
2256 	cn_utils.appendcr(l_body_code,'	   	   l_upd_ccla := ''Y'';');
2257 	cn_utils.appendcr(l_body_code,'        FORALL i IN sca_head_inv_var.inv_num.FIRST..sca_head_inv_var.inv_num.LAST');
2258 	cn_utils.appendcr(l_body_code,' 	         INSERT INTO cn_sca_headers_interface');
2259 	cn_utils.appendcr(l_body_code,' 		         (sca_headers_interface_id, transaction_source, source_type,');
2260 	cn_utils.appendcr(l_body_code,' 		          source_id, source_line_id, transaction_amount,');
2261 	cn_utils.appendcr(l_body_code,' 		          object_version_number, processed_date, process_status, transaction_status,');
2262 	cn_utils.appendcr(l_body_code,' 		          created_by, creation_Date, org_id,');
2263 
2264 	split_long_sql(l_body_code,l_src_column_name(l_loop_cntr3),'SELECT');
2265 	cn_utils.appendcr(l_body_code,')');
2266 
2267 	cn_utils.appendcr(l_body_code,' 		     SELECT');
2268 	cn_utils.appendcr(l_body_code,' 			    cn_sca_headers_interface_s.NEXTVAL, ''CN'' ,''INV'',');
2269 	cn_utils.appendcr(l_body_code,' 			    invoice_number, line_number, sca_head_inv_var.amt_sum(i),');
2270 	cn_utils.appendcr(l_body_code,' 			    object_version_number, processed_date, ''SCA_UNPROCESSED'' ,''SCA_UNPROCESSED'' ,');
2271 	cn_utils.appendcr(l_body_code,' 			    '||l_login_id||', SYSDATE, org_id,');
2272 
2273 	split_long_sql(l_body_code,l_trx_src_column_name(l_loop_cntr3),'SELECT');
2274 
2275 	cn_utils.appendcr(l_body_code,' 		     FROM  cn_comm_lines_api');
2276 	cn_utils.appendcr(l_body_code,' 		     WHERE invoice_number    = sca_head_inv_var.inv_num(i)');
2277 	cn_utils.appendcr(l_body_code,' 		     AND   line_number       = sca_head_inv_var.line_num(i)');
2278 	cn_utils.appendcr(l_body_code,' 		     AND   comm_lines_api_id = sca_head_inv_var.api_id(i)');
2279 	cn_utils.appendcr(l_body_code,' 		     AND   org_id = p_org_id;');
2280 	cn_utils.appendcr(l_body_code,'	    ELSE');
2281 	cn_utils.appendcr(l_body_code,'	   	   l_upd_ccla := ''N'';');
2282 	cn_utils.appendcr(l_body_code,'		END IF;');
2283 
2284 	cn_utils.appendcr(l_body_code,'	    IF l_upd_ccla = ''Y'' ');
2285 	cn_utils.appendcr(l_body_code,'	    THEN');
2286 	cn_utils.appendcr(l_body_code,'			OPEN sca_line_inv_cur;');
2287 	cn_utils.appendcr(l_body_code,'			FETCH sca_line_inv_cur');
2288 	cn_utils.appendcr(l_body_code,'			BULK COLLECT INTO');
2289 	cn_utils.appendcr(l_body_code,'					sca_line_rec_var.cshi_id,');
2290 	cn_utils.appendcr(l_body_code,'					sca_line_rec_var.jrs_id,');
2291 	cn_utils.appendcr(l_body_code,'					sca_line_rec_var.role_id,');
2292 	cn_utils.appendcr(l_body_code,'					sca_line_rec_var.api_id,');
2293 	cn_utils.appendcr(l_body_code,'			        sca_line_rec_var.ovn_no LIMIT 1000;');
2294 	cn_utils.appendcr(l_body_code,'			CLOSE sca_line_inv_cur;');
2295 
2296 	cn_utils.appendcr(l_body_code,'			l_inv_csli_recs	:=	sca_line_rec_var.cshi_id.COUNT;');
2297 
2298 	cn_utils.appendcr(l_body_code,'	    	FORALL j IN sca_line_rec_var.cshi_id.FIRST..sca_line_rec_var.cshi_id.LAST');
2299 	cn_utils.appendcr(l_body_code,' 		         INSERT INTO cn_sca_lines_interface');
2300 	cn_utils.appendcr(l_body_code,'				     (sca_lines_interface_id, sca_headers_interface_id, resource_id, role_id,');
2301 	cn_utils.appendcr(l_body_code,'				      source_trx_id,org_id, object_version_number, created_by, creation_date)');
2302 	cn_utils.appendcr(l_body_code,'				 VALUES');
2303 	cn_utils.appendcr(l_body_code,'				    (cn_sca_lines_interface_s.NEXTVAL, sca_line_rec_var.cshi_id(j), sca_line_rec_var.jrs_id(j), sca_line_rec_var.role_id(j),');
2304 	cn_utils.appendcr(l_body_code,'				     sca_line_rec_var.api_id(j),'||l_org_id||' ,sca_line_rec_var.ovn_no(j),'||l_user_id||', SYSDATE);');
2305 
2306 	cn_utils.appendcr(l_body_code,'	    	OPEN sca_inv_ccla_cur;');
2307 	cn_utils.appendcr(l_body_code,'	    	FETCH sca_inv_ccla_cur');
2308 	cn_utils.appendcr(l_body_code,'	    	BULK COLLECT INTO');
2309 	cn_utils.appendcr(l_body_code,'	    		sca_ccla_id_var	LIMIT 1000;');
2310 	cn_utils.appendcr(l_body_code,'	    	CLOSE sca_inv_ccla_cur;');
2311 
2312 	cn_utils.appendcr(l_body_code,'	    	l_inv_ccla_recs	:=	sca_ccla_id_var.COUNT;');
2313 
2314 	cn_utils.appendcr(l_body_code,'	    	FORALL k in sca_ccla_id_var.FIRST..sca_ccla_id_var.LAST');
2315 	cn_utils.appendcr(l_body_code,'	    		UPDATE cn_comm_lines_api');
2316 	cn_utils.appendcr(l_body_code,'	    		SET');
2317 	cn_utils.appendcr(l_body_code,'					adjust_status        = ''SCA_PENDING'',');
2318 	cn_utils.appendcr(l_body_code,'					last_updated_by      = '||l_user_id||',');
2319 	cn_utils.appendcr(l_body_code,'					last_update_login    = '||l_login_id||',');
2320 	cn_utils.appendcr(l_body_code,'					last_update_date     = SYSDATE');
2321 	cn_utils.appendcr(l_body_code,'	    		WHERE comm_lines_api_id  = sca_ccla_id_var(k)');
2322 	cn_utils.appendcr(l_body_code,' 		AND   org_id = p_org_id;');
2323 	cn_utils.appendcr(l_body_code,'     	x_return_status := FND_API.G_RET_STS_SUCCESS;');
2324 	cn_utils.appendcr(l_body_code,'     	FND_MSG_PUB.count_and_get');
2325 	cn_utils.appendcr(l_body_code,'                (p_count    => x_msg_count,');
2326 	cn_utils.appendcr(l_body_code,'                 p_data     => x_msg_data,');
2327 	cn_utils.appendcr(l_body_code,'           		p_encoded  => FND_API.G_TRUE);');
2328 	cn_utils.appendcr(l_body_code,'	    END IF;');
2329 	cn_utils.appendcr(l_body_code,'END IF;');
2330 
2331 	cn_utils.appendcr(l_body_code,'		debugmsg(''***** START OF PROCESSED RECORD SUMMARY *****'');');
2332 
2333 	cn_utils.appendcr(l_body_code,'		debugmsg(''*RESET RECORDS SUMMARY*'');');
2334 	cn_utils.appendcr(l_body_code,'		debugmsg(''-----------------------'');');
2335 	cn_utils.appendcr(l_body_code,'		debugmsg(''TRANSACTION TYPE*****|***RESET RECORD COUNT'');');
2336 	cn_utils.appendcr(l_body_code,'		debugmsg(''---------------------|---------------------'');');
2337 	cn_utils.appendcr(l_body_code,'		debugmsg(''ORDER TRANSACTION****|''||nvl(l_reset_ord_recs,0));');
2338 	cn_utils.appendcr(l_body_code,'		debugmsg(''INVOICE TRANSACTION**|''||nvl(l_reset_inv_recs,0));');
2339 	cn_utils.appendcr(l_body_code,'		debugmsg(''---------------------|-----------------------|------------------'');');
2340 	cn_utils.appendcr(l_body_code,'		debugmsg(''ERROR NAME***********|***TRANSACTION TYPE****|*****#OF RECORDS'');');
2341 	cn_utils.appendcr(l_body_code,'		debugmsg(''---------------------|-----------------------|------------------'');');
2342 	cn_utils.appendcr(l_body_code,'		debugmsg(''SCA_ROLE_ERROR*******|***ORDER***************|''||nvl(l_ord_role_recs,0));');
2343 	cn_utils.appendcr(l_body_code,'		debugmsg(''SCA_ROLE_ERROR*******|***INVOICE*************|''||nvl(l_inv_role_recs,0));');
2344 	cn_utils.appendcr(l_body_code,'		debugmsg(''---------------------|-----------------------|------------------'');');
2345 	cn_utils.appendcr(l_body_code,'		debugmsg(''SCA_RESOURCE_ERROR***|***ORDER***************|''||nvl(l_ord_res_recs,0));');
2346 	cn_utils.appendcr(l_body_code,'		debugmsg(''SCA_RESOURCE_ERROR***|***INVOICE*************|''||nvl(l_inv_res_recs,0));');
2347 	cn_utils.appendcr(l_body_code,'		debugmsg(''---------------------|-----------------------|------------------'');');
2348 	cn_utils.appendcr(l_body_code,'		debugmsg(''SCA_DISTINCT_ERROR***|***ORDER***************|''||nvl(l_ord_dist_recs,0));');
2349 	cn_utils.appendcr(l_body_code,'		debugmsg(''SCA_DISTINCT_ERROR***|***INVOICE*************|''||nvl(l_inv_dist_recs,0));');
2350 	cn_utils.appendcr(l_body_code,'		debugmsg(''---------------------|-----------------------|------------------'');');
2351 	cn_utils.appendcr(l_body_code,'		debugmsg(''SCA_REVENUE_ERROR****|***ORDER***************|''||nvl(l_ord_rev_recs,0));');
2352 	cn_utils.appendcr(l_body_code,'		debugmsg(''SCA_REVENUE_ERROR****|***INVOICE*************|''||nvl(l_inv_rev_recs,0));');
2353 	cn_utils.appendcr(l_body_code,'		debugmsg(''---------------------|-----------------------|------------------'');');
2354 
2355 	cn_utils.appendcr(l_body_code,'		debugmsg(''-------------------------|-----------------------|---------------'');');
2356 	cn_utils.appendcr(l_body_code,'		debugmsg(''RECORDS INSERTED INTO****|***TRANSACTION TYPE****|****#OF RECORDS'');');
2357 	cn_utils.appendcr(l_body_code,'		debugmsg(''-------------------------|-----------------------|---------------'');');
2358 	cn_utils.appendcr(l_body_code,'		debugmsg(''CN_SCA_HEADERS_INTERFACE*| ORDER*****************|''||nvl(l_ord_cshi_recs,0));');
2359 	cn_utils.appendcr(l_body_code,'		debugmsg(''CN_SCA_LINES_INTERFACE***| ORDER*****************|''||nvl(l_ord_csli_recs,0));');
2360 	cn_utils.appendcr(l_body_code,'		debugmsg(''CN_SCA_HEADERS_INTERFACE*| INVOICE***************|''||nvl(l_inv_cshi_recs,0));');
2361 	cn_utils.appendcr(l_body_code,'		debugmsg(''CN_SCA_LINES_INTERFACE***| INVOICE***************|''||nvl(l_inv_csli_recs,0));');
2362 	cn_utils.appendcr(l_body_code,'		debugmsg(''-------------------------|-----------------------|---------------'');');
2363 
2364 	cn_utils.appendcr(l_body_code,'		debugmsg(''RECORDS UPDATED IN CN_COMM_LINES_INTERFACE WITH SCA_PENDING STATUS'');');
2365 	cn_utils.appendcr(l_body_code,'		debugmsg(''---------------------|---------------------'');');
2366 	cn_utils.appendcr(l_body_code,'		debugmsg(''TRANSACTION TYPE*****|*******#OF RECORDS'');');
2367 	cn_utils.appendcr(l_body_code,'		debugmsg(''---------------------|---------------------'');');
2368 	cn_utils.appendcr(l_body_code,'		debugmsg(''ORDER****************|''||l_ord_ccla_recs);');
2369 	cn_utils.appendcr(l_body_code,'		debugmsg(''INVOICE**************|''||l_inv_ccla_recs);');
2370 	cn_utils.appendcr(l_body_code,'		debugmsg(''---------------------|---------------------'');');
2371 
2372 	cn_utils.appendcr(l_body_code,'		debugmsg(''***** END OF PROCESSED RECORD SUMMARY *****'');');
2373 
2374 	cn_utils.appendcr(l_body_code,'EXCEPTION');
2375 	cn_utils.appendcr(l_body_code,'	WHEN FND_API.G_EXC_ERROR');
2376 	cn_utils.appendcr(l_body_code,'		THEN');
2377 	cn_utils.appendcr(l_body_code,'		ROLLBACK TO map_package_savepoint;');
2378 	cn_utils.appendcr(l_body_code,'		debugmsg(''User Error In Dynamic Mapping Package'');');
2379 	cn_utils.appendcr(l_body_code,'		x_return_status := FND_API.G_RET_STS_ERROR;');
2380 	cn_utils.appendcr(l_body_code,'		FND_MSG_PUB.count_and_get');
2381 	cn_utils.appendcr(l_body_code,'				(p_count    => x_msg_count,');
2382 	cn_utils.appendcr(l_body_code,'				 p_data     => x_msg_data,');
2383 	cn_utils.appendcr(l_body_code,'				 p_encoded  => FND_API.G_TRUE);');
2384   	cn_utils.appendcr(l_body_code,'	WHEN FND_API.G_EXC_UNEXPECTED_ERROR');
2385 	cn_utils.appendcr(l_body_code,'		THEN');
2386 	cn_utils.appendcr(l_body_code,'		ROLLBACK TO map_package_savepoint;');
2387 	cn_utils.appendcr(l_body_code,'		debugmsg(''Unexpected Error In Dynamic Mapping Package'');');
2388 	cn_utils.appendcr(l_body_code,'		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;');
2389 	cn_utils.appendcr(l_body_code,'		FND_MSG_PUB.Count_And_Get');
2390 	cn_utils.appendcr(l_body_code,'				(p_count   =>  x_msg_count,');
2391 	cn_utils.appendcr(l_body_code,'				 p_data    =>  x_msg_data,');
2392 	cn_utils.appendcr(l_body_code,'				 p_encoded  => FND_API.G_TRUE);');
2393 	cn_utils.appendcr(l_body_code,'	WHEN OTHERS');
2394 	cn_utils.appendcr(l_body_code,'		THEN');
2395 	cn_utils.appendcr(l_body_code,'		ROLLBACK TO map_package_savepoint;');
2396 	cn_utils.appendcr(l_body_code,'		debugmsg(''Unhandled Error In Dynamic Mapping Package''||SQLCODE||'' ''||SQLERRM);');
2397 	cn_utils.appendcr(l_body_code,'		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;');
2398 	cn_utils.appendcr(l_body_code,'		FND_MSG_PUB.Count_And_Get');
2399 	cn_utils.appendcr(l_body_code,'				(p_count   =>  x_msg_count,');
2400 	cn_utils.appendcr(l_body_code,'				 p_data    =>  x_msg_data,');
2401 	cn_utils.appendcr(l_body_code,'				 p_encoded  => FND_API.G_TRUE);');
2402 
2403 	cn_utils.appendcr(l_body_code,'END map;');
2404 	cn_utils.appendcr(l_body_code,'END '||l_pkg_name||';');
2405 
2406 
2407 	-----+
2408 	-- Call to install_package_object will pull out source code of CN_SCA_MAP_CN_204 package
2409 	-- And compile it in the database
2410 	-----+
2411 	install_package_object(p_object_name    => l_pkg_name,
2412                                p_org_id         => p_org_id,
2413 						   x_compile_status => l_compile_status,
2414 						   x_return_status  => l_return_status,
2415 						   x_msg_count		=> l_msg_count,
2416 						   x_msg_data		=> l_msg_data);
2417 
2418 	IF  (l_compile_status = 'COMPLETE')
2419 	THEN
2420 		x_return_status := FND_API.G_RET_STS_SUCCESS;
2421 		FND_MSG_PUB.count_and_get
2422 				(p_count    => x_msg_count,
2423 				 p_data     => x_msg_data,
2424 				 p_encoded  => FND_API.G_TRUE);
2425 	ELSE
2426 		RAISE FND_API.G_EXC_ERROR;
2427 	END IF;
2428 
2429 --++ Unset org id for cn_utils package
2430 	cn_utils.unset_org_id();
2431 
2432 EXCEPTION
2433    	WHEN FND_API.G_EXC_ERROR THEN
2434 		-- ROLLBACK TO generate_map_package;
2435 		x_return_status := FND_API.G_RET_STS_ERROR ;
2436 		FND_MSG_PUB.Count_And_Get
2437     		(p_count    =>      x_msg_count,
2438 		 	 p_data         =>      x_msg_data);
2439 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2440 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2441 		FND_MSG_PUB.Count_And_Get
2442     		(p_count    =>      x_msg_count,
2443 		 	 p_data     =>      x_msg_data);
2444 	WHEN OTHERS THEN
2445 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2446 		FND_MSG_PUB.Count_And_Get
2447     		(p_count    =>      x_msg_count,
2448 		 	 p_data     =>      x_msg_data);
2449 END generate;
2450 END cn_sca_interface_map_pvt;