DBA Data[Home] [Help]

PACKAGE BODY: APPS.EGO_ITEMCAT_VAL_TO_ID

Source


1 PACKAGE BODY EGO_ItemCat_Val_To_Id AS
2 /* $Header: EGOSVIDB.pls 120.1.12020000.3 2012/07/13 02:11:32 mshirkol ship $ */
3 /****************************************************************************
4 --
5 --  Copyright (c) 1996 Oracle Corporation, Redwood Shores, CA, USA
6 --  All rights reserved.
7 --
8 --  FILENAME
9 --
10 --      EGOSVIDB.pls
11 --
12 --  DESCRIPTION
13 --
14 --      Body of package EGO_ItemCat_Val_To_Id
15 --	Shared value-to-Id conversion package.
16 --  NOTES
17 --
18 --  HISTORY
19 -- --  20-AUG-2002	Rahul Chitko	Initial Creation
20 -- --  09-OCT-2002      Refai Farook    Modified UUI_TI_UI procedure logic to support
21 --					different combinations of key input data(group id,
22 --					name and segments)
23 ****************************************************************************/
24 	G_Pkg_Name	VARCHAR2(30) := 'EGO_ItemCat_Val_To_Id';
25 	g_token_tbl	Error_Handler.Token_Tbl_Type;
26 
27 
28 	G_Error_Msg_Text VARCHAR2(2000);
29 
30 
31        /********************************************************************
32         ** Procedure: Generate_Catalog_Group_Id (Unexposed)
33         ** Purpose  : Generates the next catalog group id
34         ** Returns  : Catalog group id
35         **********************************************************************/
36 
37 	FUNCTION Generate_Catalog_Group_Id
38 	RETURN NUMBER IS
39 	  l_ccid NUMBER;
40 	BEGIN
41 
42                SELECT mtl_item_catalog_groups_b_s.NEXTVAL
43                INTO l_ccid from dual;
44 
45 	       Return l_ccid;
46 
47 	END;
48 
49        /********************************************************************
50         ** Procedure: Check_Catalog_CCID (Unexposed)
51         ** Purpose  : Checks the existence of catalog group id
52         ** Returns  : TRUE if CCID exists and FALSE if not
53         **********************************************************************/
54 
55 
56         FUNCTION Check_Catalog_CCID
57         RETURN BOOLEAN
58         IS
59           l_ccid NUMBER;
60         BEGIN
61 
62                 SELECT item_catalog_group_id INTO l_ccid
63 		FROM mtl_Item_Catalog_Groups_b WHERE
64 		item_catalog_group_id = EGO_Globals.G_Catalog_Group_Rec.catalog_group_id;
65 
66 		Return TRUE;
67 
68 		EXCEPTION WHEN OTHERS
69 		THEN
70 		  Return FALSE;
71         END;
72 
73 	/********************************************************************
74 	** Procedure: Get_Catalog_Group_Id (exposed)
75 	** Purpose  : Will take the concatenated segments for the catalog
76 	**	      group name and will return an Id. If the Id is null
77 	**	      that would mean the concatenated segment does not have
78 	**	      a corresponding record.
79 	** Returns  : The procedure will perform primarily 2 operations
80 	**	      CHECK_COMBINATION AND FIND_COMBINATION
81 	**	      When invoked with CHECK_COMBINATION it would return 0 for
82 	**	      invalid and 1 for valid.
83 	**	      When invoked with FIND_COMBINATION it would return the ccid
84 	**	      if the find is succeessful or else return a null
85 	**********************************************************************/
86 
87 	FUNCTION Get_Catalog_Group_Id
88 		 (  p_catalog_group_name	IN VARCHAR2
89 		  , p_operation			IN VARCHAR2
90 		 )
91 	RETURN NUMBER
92 	IS
93 		l_delimiter varchar2(1) := FND_Flex_Ext.Get_Delimiter
94 					(  application_short_name	=> 'INV'
95 			 		 , key_flex_code	  	=> 'MICG'
96 			 		 , structure_number		=> 101
97 					 );
98 		l_segment_values FND_FLEX_EXT.SegmentArray;
99 		kff        fnd_flex_key_api.flexfield_type;
100    		str        fnd_flex_key_api.structure_type;
101    		seg        fnd_flex_key_api.segment_type;
102    		seg_list   fnd_flex_key_api.segment_list;
103    		j          number;
104    		i          number;
105    		nsegs      number;
106    		ccid	   number;
107 		is_valid  boolean;
108 		is_found  boolean;
109 	BEGIN
110 
111 		-- dbms_output.put_line('validating segments . . .operation -  ' || p_operation );
112 		-- dbms_output.put_line(' concat. value ' || p_catalog_group_name);
113 
114 		is_valid := FND_FLEX_KEYVAL.Validate_Segs
115         	(  operation         => p_operation
116         	,  appl_short_name   => 'INV'
117         	,  key_flex_code     => 'MICG'
118         	,  structure_number  => 101
119         	,  concat_segments   => p_catalog_group_name
120         	);
121 		-- dbms_output.put_line('validate segments finished');
122 
123    		IF (is_valid AND p_operation = 'FIND_COMBINATION') THEN
124 
125 		/*
126 			--
127 			-- Get the segment breakup and arrange the segments so that the segments can be
128 			-- used while insertion or updation.
129 			--
130 
131 		-- dbms_output.put_line('before breakup_segments. . . ');
132 
133 			begin
134 			nsegs := fnd_flex_ext.breakup_segments
135 			(  delimiter	=> l_delimiter
136 			 , concatenated_segs => p_catalog_group_name
137 			 , segments	=> l_segment_values
138 			 );
139 			exception
140 				when others then
141 				  -- dbms_output.put_line('error in breakup: ' || substr(sqlerrm,1,220));
142 			end;
143 
144 		-- dbms_output.put_line('performed breakup_segments. . . ');
145 
146 			--
147 			-- once the segments are received, then order the segments appropriatly so
148 			-- they can be used anywhere.
149 			--
150 
151 			kff := fnd_flex_key_api.find_flexfield('INV','MICG');
152    			str := fnd_flex_key_api.find_structure(kff, 101);
153    			fnd_flex_key_api.get_segments(kff, str, TRUE, nsegs, seg_list);
154 
155    			--
156    			-- The segments in the seg_list array are sorted in display order.
157    			-- i.e. sorted by segment number.
158    			--
159    			for i in 1..nsegs loop
160       			    seg :=
161         		    fnd_flex_key_api.find_segment(kff,
162                                       			  str,
163                                       			  seg_list(i));
164       			    j := to_number(substr(seg.column_name,8));
165       			    EGO_Item_Catalog_Pub.G_KF_SEGMENT_VALUES(j) := l_segment_values(i);
166    			end loop;
167 
168 			-- dbms_output.put_line('returning ccid . . . ' || FND_FLEX_KEYVAL.Combination_ID);
169 		*/
170 
171       			return FND_FLEX_KEYVAL.Combination_ID;
172 
173 		ELSIF (is_valid AND p_operation = 'CHECK_SEGMENTS')
174 		THEN
175 
176 			return 1;
177 		ELSIF ( NOT is_valid AND p_operation = 'CHECK_SEGMENTS')
178 		THEN
179       G_Error_Msg_Text := FND_FLEX_KEYVAL.error_message; -- bug 12380454
180 			return 0;
181 
182 		ELSE
183 			-- dbms_output.put_line('operation: ' || p_operation || ' returning NULL ' );
184 			return NULL;
185 
186 		END IF;
187 
188 	END Get_Catalog_Group_Id;
189 
190 
191 	/********************************************************************
192 	** Procedure: Get_Catalog_Group_Name (Unexposed)
193 	** Purpose  : Will take the Id and return the concatenated segments
194 	**	      a.k.a the catalog group name. If a record is not found
195 	**	      then it means the id is invalid.
196 	*********************************************************************/
197        	FUNCTION Get_Catalog_Group_Name
198                  (  p_catalog_group_id        IN  NUMBER)
199         RETURN VARCHAR2
200         IS
201         BEGIN
202 
203 		-- dbms_output.put_line('validating ID: ' || p_catalog_group_id);
204 
205 		if FND_Flex_KeyVal.validate_ccid(appl_short_name	=> 'INV',
206 				 key_flex_code	  	=> 'MICG',
207 				 structure_number	=> 101,
208 				 combination_id	  	=> p_catalog_group_id
209 				 )
210                 THEN
211 			-- dbms_output.put_line('returning name ' || FND_FLEX_KEYVAL.concatenated_values);
212                         return FND_FLEX_KEYVAL.concatenated_values;
213                 ELSE
214                         return null;
215                 END IF;
216 
217         END Get_Catalog_Group_Name;
218 
219 
220 	/*******************************************************************
221 	* Procedure	: Perform Segment break up and return a ccid
222 	* Purpose	: Performs the a breakup of the semgments are arranges
223 	*		  the segments sequentially. If the create_new param
224 	*		  is true then a new ccid will be returned. Else
225 	*		  It will return 0 to indicate no errors and -1 otherwise
226 	********************************************************************/
227 	FUNCTION Perform_Segment_Breakup (p_create_new	BOOLEAN DEFAULT true)
228 	RETURN NUMBER
229 	IS
230 		l_segment_values FND_FLEX_EXT.SegmentArray;
231                 kff        fnd_flex_key_api.flexfield_type;
232                 str        fnd_flex_key_api.structure_type;
233                 seg        fnd_flex_key_api.segment_type;
234                 seg_list   fnd_flex_key_api.segment_list;
235                 j          number;
236                 i          number;
237                 nsegs      number;
238                 ccid       number := 0;
239                 is_valid  boolean;
240 		l_delimiter varchar2(1) := FND_Flex_Ext.Get_Delimiter
241                                         (  application_short_name       => 'INV'
242                                          , key_flex_code                => 'MICG'
243                                          , structure_number             => 101
244                                          );
245 	BEGIN
246 		nsegs := fnd_flex_ext.breakup_segments
247                          (  delimiter    => l_delimiter
248                           , concatenated_segs =>
249                           	EGO_Globals.G_Catalog_Group_Rec.catalog_group_name
250                           , segments     => l_segment_values
251                           );
252                 kff := fnd_flex_key_api.find_flexfield('INV','MICG');
253                 str := fnd_flex_key_api.find_structure(kff, 101);
254                 fnd_flex_key_api.get_segments(kff, str, TRUE, nsegs, seg_list);
255 
256                 --
257                 -- The segments in the seg_list array are sorted in display order.
258                 -- i.e. sorted by segment number.
259                 --
260                 -- dbms_output.put_line('starting with segment ordering . . .');
261 
262                 for i in 1..nsegs
263                 loop
264                      seg := fnd_flex_key_api.find_segment
265 			      (kff,
266                                str,
267                                seg_list(i));
268                      j := to_number(substr(seg.column_name,8));
269                      EGO_Item_Catalog_Pub.G_KF_SEGMENT_VALUES(j) :=
270                                                     l_segment_values(i);
271 		     -- dbms_output.put_line('value at ' || j || ' is: ' || l_segment_values(i));
272                  end loop;
273 
274 		 IF (p_create_new)
275 		 THEN
276                  	SELECT mtl_item_catalog_groups_b_s.nextval
277                  	INTO ccid
278                  	FROM dual;
279 		 END IF;
280 
281 		 return ccid;
282 
283 	END Perform_Segment_Breakup;
284 
285 	/********************************************************
286 	* Function	: Concatenate_Segments
287 	* Purpose	: Takes the individual segments and
288 	*		  concatenates them based on the flex
289 	*		  structure, by arranging the segments in
290 	*		  display order and then calling the flex api.
291 	* Returns	: the concatenated segment value.
292 	*********************************************************/
293 
294 	FUNCTION concatenate_segments(p_appl_short_name IN VARCHAR2,
295                          	      p_key_flex_code IN VARCHAR2,
296                          	      p_structure_number IN NUMBER)
297   	RETURN VARCHAR2
298   	IS
299 
300      		l_key_flex_field   fnd_flex_key_api.flexfield_type;
301      		l_structure_type   fnd_flex_key_api.structure_type;
302      		l_segment_type     fnd_flex_key_api.segment_type;
303      		l_segment_list     fnd_flex_key_api.segment_list;
304      		l_segment_array    fnd_flex_ext.SegmentArray;
305      		l_num_segments     NUMBER;
306      		l_flag             BOOLEAN;
307      		l_concat           VARCHAR2(2000);
308      		j                  NUMBER;
309      		i                  NUMBER;
310 	BEGIN
311 
312 		-- dbms_output.put_line('Performing segment concatenation . . . ');
313 
314    		fnd_flex_key_api.set_session_mode('seed_data');
315 
316    		l_key_flex_field :=
317      		fnd_flex_key_api.find_flexfield(p_appl_short_name,
318                                      p_key_flex_code);
319 
320    		l_structure_type :=
321      		fnd_flex_key_api.find_structure(l_key_flex_field,
322                                      p_structure_number);
323 
324    		fnd_flex_key_api.get_segments(l_key_flex_field, l_structure_type,
325                                  TRUE, l_num_segments, l_segment_list);
326 
327 
328    		--
329    		-- The segments in the seg_list array are sorted in display order.
330    		-- i.e. sorted by segment number.
331    		--
332    		for i in 1..l_num_segments
333 		loop
334       			l_segment_type :=
335         		fnd_flex_key_api.find_segment(l_key_flex_field,
336                                       l_structure_type,
337                                       l_segment_list(i));
338       			j := to_number(substr(l_segment_type.column_name,8));
339       			l_segment_array(i) := Ego_Item_Catalog_Pub.G_KF_SEGMENT_VALUES(j);
340    		end loop;
341 
342    		--
343    		-- Now we have the all segment values in correct order in segarray.
344    		--
345    		l_concat := fnd_flex_ext.concatenate_segments(l_num_segments,
346                		                  l_segment_array,
347                        		          l_structure_type.segment_separator);
348 
349 		-- dbms_output.put_line('Return from concatenate_segments ' || l_concat);
350 
351    		RETURN l_concat;
352 
353 	END concatenate_segments;
354 
355 	FUNCTION check_segments_populated RETURN BOOLEAN
356 	IS
357 	BEGIN
358 	 	IF ( (EGO_Globals.G_Catalog_Group_Rec.Segment1 IS NOT NULL AND
359                       EGO_Globals.G_Catalog_Group_Rec.Segment1 <> FND_API.G_MISS_CHAR
360                       ) OR
361                      (EGO_Globals.G_Catalog_Group_Rec.Segment2 IS NOT NULL AND
362                       EGO_Globals.G_Catalog_Group_Rec.Segment2 <> FND_API.G_MISS_CHAR
363                       ) OR
364                      (EGO_Globals.G_Catalog_Group_Rec.Segment3 IS NOT NULL AND
365                       EGO_Globals.G_Catalog_Group_Rec.Segment3 <> FND_API.G_MISS_CHAR
366                       ) OR
367                      (EGO_Globals.G_Catalog_Group_Rec.Segment4 IS NOT NULL AND
368                       EGO_Globals.G_Catalog_Group_Rec.Segment4 <> FND_API.G_MISS_CHAR
369                       ) OR
370                      (EGO_Globals.G_Catalog_Group_Rec.Segment5 IS NOT NULL AND
371                       EGO_Globals.G_Catalog_Group_Rec.Segment5 <> FND_API.G_MISS_CHAR
372                       ) OR
373                      (EGO_Globals.G_Catalog_Group_Rec.Segment6 IS NOT NULL AND
374                       EGO_Globals.G_Catalog_Group_Rec.Segment6 <> FND_API.G_MISS_CHAR
375                       ) OR
376                      (EGO_Globals.G_Catalog_Group_Rec.Segment7 IS NOT NULL AND
377                       EGO_Globals.G_Catalog_Group_Rec.Segment7 <> FND_API.G_MISS_CHAR
378                       ) OR
379                      (EGO_Globals.G_Catalog_Group_Rec.Segment8 IS NOT NULL AND
380                       EGO_Globals.G_Catalog_Group_Rec.Segment8 <> FND_API.G_MISS_CHAR
381                       ) OR
382                      (EGO_Globals.G_Catalog_Group_Rec.Segment9 IS NOT NULL AND
383                       EGO_Globals.G_Catalog_Group_Rec.Segment9 <> FND_API.G_MISS_CHAR
384                       ) OR
385                      (EGO_Globals.G_Catalog_Group_Rec.Segment10 IS NOT NULL AND
386                       EGO_Globals.G_Catalog_Group_Rec.Segment10 <> FND_API.G_MISS_CHAR
387                       ) OR
388                      (EGO_Globals.G_Catalog_Group_Rec.Segment11 IS NOT NULL AND
389                       EGO_Globals.G_Catalog_Group_Rec.Segment12 <> FND_API.G_MISS_CHAR
390                       ) OR
391                      (EGO_Globals.G_Catalog_Group_Rec.Segment13 IS NOT NULL AND
392                       EGO_Globals.G_Catalog_Group_Rec.Segment13 <> FND_API.G_MISS_CHAR
393                       ) OR
394                      (EGO_Globals.G_Catalog_Group_Rec.Segment14 IS NOT NULL AND
395                       EGO_Globals.G_Catalog_Group_Rec.Segment14 <> FND_API.G_MISS_CHAR
396                       ) OR
397                      (EGO_Globals.G_Catalog_Group_Rec.Segment15 IS NOT NULL AND
398                       EGO_Globals.G_Catalog_Group_Rec.Segment15 <> FND_API.G_MISS_CHAR
399                       ) OR
400                      (EGO_Globals.G_Catalog_Group_Rec.Segment16 IS NOT NULL AND
401                       EGO_Globals.G_Catalog_Group_Rec.Segment16 <> FND_API.G_MISS_CHAR
402                       ) OR
403                      (EGO_Globals.G_Catalog_Group_Rec.Segment17 IS NOT NULL AND
404                       EGO_Globals.G_Catalog_Group_Rec.Segment17 <> FND_API.G_MISS_CHAR
405                       ) OR
406                      (EGO_Globals.G_Catalog_Group_Rec.Segment18 IS NOT NULL AND
407                       EGO_Globals.G_Catalog_Group_Rec.Segment18 <> FND_API.G_MISS_CHAR
408                       ) OR
409                      (EGO_Globals.G_Catalog_Group_Rec.Segment19 IS NOT NULL AND
410                       EGO_Globals.G_Catalog_Group_Rec.Segment19<> FND_API.G_MISS_CHAR
411                       ) OR
412                      (EGO_Globals.G_Catalog_Group_Rec.Segment20 IS NOT NULL AND
413                       EGO_Globals.G_Catalog_Group_Rec.Segment20 <> FND_API.G_MISS_CHAR
414                       )
415 		    )
416 		 THEN
417 			return true;
418 		 ELSE
419 			return false;
420 		 END IF;
421 	END;
422 
423 
424         /*********************************************************************
425         * Procedure     : EGO_ItemCatalog_UUI_To_UI
426         * Returns       : None
427         * Parameters IN :
428         * Parameters OUT:
429         *                 Message Token Table
430         *                 Return Status
431         * Purpose       :
432         *********************************************************************/
433 	PROCEDURE EGO_ItemCatalog_UUI_To_UI
434         (  x_Mesg_Token_Tbl          OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
435          , x_Return_Status           OUT NOCOPY VARCHAR2
436         )
437         IS
438                 l_Mesg_Token_Tbl         Error_Handler.Mesg_Token_Tbl_Type;
439                 l_return_status         VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
440 		l_result		VARCHAR2(2000);
441 
442                 is_valid  boolean;
443 		is_passed boolean := false;
444 		check_status number;
445 		l_catalog_group_name VARCHAR2(1000);
446 		concat_group_name VARCHAR2(1000);
447         BEGIN
448                 x_return_status := FND_API.G_RET_STS_SUCCESS;
449 
450 		fnd_flex_key_api.set_session_mode('seed_data');
451 		--
452 		-- If the user has specified the name, id and segment then id is first
453 		-- validated and rest of the values are disregarded
454 		-- If the Id is not given and name and segments are given then the name
455 		-- would be validated and segments would be disregarded.
456 		-- Else segments will be validated.
457 		--
458 
459 		IF (EGO_Globals.G_Catalog_Group_Rec.catalog_group_id IS NULL OR
460 		    EGO_Globals.G_Catalog_Group_Rec.catalog_group_id = FND_API.G_MISS_NUM
461 		   ) AND
462 		   ( EGO_Globals.G_Catalog_Group_Rec.catalog_group_name IS NULL OR
463 		     EGO_Globals.G_Catalog_Group_Rec.catalog_group_name = FND_API.G_MISS_CHAR
464 		   ) AND Check_Segments_Populated
465 		THEN
466 			is_passed := TRUE;
467 
468 			EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Name :=
469 			    concatenate_segments(  p_appl_short_name 	=> 'INV'
470                                       		 , p_key_flex_code 	=> 'MICG'
471                                       		 , p_structure_number	=> 101
472 						 );
473 			IF EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Name IS NULL
474                         THEN
475                                 -- dbms_output.put_line('concat group name is NULL  ' );
476 
477                                 Error_Handler.Add_Error_Token
478                                 (  x_mesg_token_Tbl     => l_mesg_token_tbl
479                                  , p_application_id     => 'EGO'
480                                  , p_message_name       => 'EGO_CAT_SEGMENTS_INVALID'
481                                  );
482                                  l_return_status := FND_API.G_RET_STS_ERROR;
483 			ELSE
484 				--
485 				-- Get the corresponding Catalog group id
486 				--
487 			        check_status :=
488                         	Get_Catalog_Group_Id(  p_catalog_group_name =>
489                                                          EGO_Globals.G_Catalog_Group_Rec.catalog_group_name
490                                              	     , p_operation  => 'FIND_COMBINATION'
491                                              	     );
492 				-- dbms_output.put_line('ccid after FIND_COMBINATION . . . ' || check_status );
493 
494                         	IF (check_status IS NOT null)
495                         	THEN
496                                	 	-- if not null then the returned value is the ccid
497 
498                                		EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id := check_status;
499 
500 					/* It is an error if the CCID exists
501 					   when the transaction type is CREATE */
502 
503 					IF EGO_Globals.G_Catalog_Group_Rec.Transaction_Type =
504 								EGO_Globals.G_OPR_CREATE
505 					THEN
506                                 		Error_Handler.Add_Error_Token
507                                 		(  x_mesg_token_Tbl     => l_mesg_token_tbl
508                                  		, p_application_id     => 'EGO'
509                                  		, p_message_name       => 'EGO_CATALOG_ALREADY_EXISTS'
510                                  		);
511                                  		l_return_status := FND_API.G_RET_STS_ERROR;
512 					END IF;
513                         	ELSE
514 
515 					-- dbms_output.put_line('Error if it is update or delete . . .');
516 
517 					/* It is an error if the CCID does not exist
518 					   when the transaction type is DELETE or UPDATE */
519 
520 					IF EGO_Globals.G_Catalog_Group_Rec.Transaction_Type IN
521 						(EGO_Globals.G_OPR_UPDATE,EGO_Globals.G_OPR_DELETE)
522 					THEN
523                                 		Error_Handler.Add_Error_Token
524                                 		(  x_mesg_token_Tbl     => l_mesg_token_tbl
525                                  		, p_application_id     => 'EGO'
526                                  		, p_message_name       => 'EGO_CATALOG_DOESNOT_EXIST'
527                                  		);
528                                  		l_return_status := FND_API.G_RET_STS_ERROR;
529 					ELSE
530 
531 						/* CCID will be generated when it does not exist in the
532 						   case of SYNC and CREATE */
533 
534 						-- dbms_output.put_line('CHECK_SEGMENTS from here . . .');
535 
536                                 		check_status :=
537                                 		Get_Catalog_Group_Id(  p_catalog_group_name =>
538                                        		            EGO_Globals.G_Catalog_Group_Rec.catalog_group_name
539                                                  		, p_operation  => 'CHECK_SEGMENTS'
540                                                   		);
541 
542                                 		-- if segments are valid then proceed
543 
544                                 		IF (check_status = 1)
545                                 		THEN
546                                         		EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id :=
547                                                 		Generate_Catalog_Group_Id;
548 
549                                         		-- dbms_output.put_line('ccid assigned: ' || EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id);
550 						ELSE
551                                 			Error_Handler.Add_Error_Token
552                                 			(  x_mesg_token_Tbl     => l_mesg_token_tbl
553                                  			, p_application_id     => 'EGO'
554                                  			, p_message_name       => 'EGO_CAT_SEGMENTS_INVALID'
555                                  			);
556                                  			l_return_status := FND_API.G_RET_STS_ERROR;
557 						END IF;
558 					END IF;
559                                 END IF;
560 			END IF;
561                 --
562                 -- Convert Catalog_Group_Id into name
563                 --
564                 ELSIF (EGO_Globals.G_Catalog_Group_Rec.catalog_group_id IS NOT NULL AND
565                     EGO_Globals.G_Catalog_Group_Rec.catalog_group_id <> FND_API.G_MISS_NUM)
566                 THEN
567 
568 			is_passed := TRUE;
569 
570 			-- If the user has passed catalog_group_id with the transaction_type as 'SYNC'
571 			-- then we need to derive the intended transaction_type to proceed from here
572 
573 			IF EGO_Globals.G_Catalog_Group_Rec.Transaction_Type = 'SYNC'
574 			THEN
575 				IF Check_Catalog_CCID THEN
576 			  		EGO_Globals.G_Catalog_Group_Rec.Transaction_Type := EGO_Globals.G_OPR_UPDATE;
577 				ELSE
578 			  		EGO_Globals.G_Catalog_Group_Rec.Transaction_Type := EGO_Globals.G_OPR_CREATE;
579 				END IF;
580 			END IF;
581 
582                         -- dbms_output.put_line('Getting Group Name from ID ... ');
583 
584                         l_Catalog_Group_Name :=
585                                 Get_Catalog_Group_Name(p_catalog_group_id =>
586                                                         EGO_Globals.G_Catalog_Group_Rec.catalog_group_id
587                                                        );
588 
589 			/* It is an error if the group name exists
590 			   when the transaction type is CREATE */
591 
592 			IF l_Catalog_Group_Name IS NOT NULL AND EGO_Globals.G_Catalog_Group_Rec.Transaction_Type =
593 						EGO_Globals.G_OPR_CREATE
594 			THEN
595                               		Error_Handler.Add_Error_Token
596                               		(  x_mesg_token_Tbl     => l_mesg_token_tbl
597                                		, p_application_id     => 'EGO'
598                                  	, p_message_name       => 'EGO_CATALOG_ALREADY_EXISTS'
599                               		);
600                                		l_return_status := FND_API.G_RET_STS_ERROR;
601 
602 			/* It is an error if the group name does not exist
603 			   when the transaction type is DELETE or UPDATE */
604 
605                         ELSIF l_Catalog_Group_Name IS NULL AND
606 				EGO_Globals.G_Catalog_Group_Rec.Transaction_Type <> EGO_Globals.G_OPR_CREATE
607                         THEN
608 
609                                 Error_Handler.Add_Error_Token
610                                 (  x_mesg_token_Tbl     => l_mesg_token_tbl
611 				 , p_application_id	=> 'EGO'
612                                  , p_message_name       => 'EGO_CATALOG_DOESNOT_EXIST'
613                                 );
614                                 l_return_status := FND_API.G_RET_STS_ERROR;
615 
616 			ELSIF EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Name IS NOT NULL AND
617 			        EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Name <> FND_API.G_MISS_CHAR
618 			THEN
619 
620 				-- As long as the group name is passed, it takes precedence over the segments
621 
622                                /*   IF EGO_Globals.G_Catalog_Group_Rec.Transaction_Type = EGO_Globals.G_OPR_CREATE OR
623 			 	     EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Name <> l_Catalog_Group_Name
624                                   THEN
625                                                -- breakup the segments and store it for use
626                                                 -- during database writes.
627                                                 check_status := Perform_Segment_Breakup(p_create_new => false);
628                                   END IF;
629 				*/
630                                   check_status := Perform_Segment_Breakup(p_create_new => false);
631 
632 			ELSIF (Check_Segments_Populated)
633 		        THEN
634 				 -- Verify if the concatenated value of any of the segments entered is
635 				 -- different than what the Id would return. If yes then the user
636 				 -- is attempting to rename the catalog group.
637 				 concat_Group_Name := concatenate_segments
638 							(  p_appl_short_name    => 'INV'
639                                                  	 , p_key_flex_code      => 'MICG'
640                                                  	 , p_structure_number   => 101
641                                                  	 );
642 				 --
643 				 -- validate the concatenated segments
644 				 --
645 				 IF (Get_Catalog_Group_Id( p_operation		=> 'CHECK_SEGMENTS'
646 							  ,p_catalog_group_name => concat_Group_Name
647 							  ) = 1
648 				     )
649 				 THEN
650 				      -- catalog_group_name : that is fetched using the id is not the
651 				      -- the same as the concatenation of the segments then, the user
652 				      -- could be renaming the catalog group.
653 
654 				      IF EGO_Globals.G_Catalog_Group_Rec.Transaction_Type = EGO_Globals.G_OPR_CREATE 						OR concat_Group_Name <> l_Catalog_Group_Name
655 				      THEN
656 						-- dbms_output.put_line('concat group name: ' || concat_Group_Name || ' catalog group name from id: ' || l_Catalog_Group_Name);
657 
658 				      		EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Name :=
659 									concat_Group_Name;
660 				      END IF;
661 				 ELSE
662 					Error_Handler.Add_Error_Token
663                                 	(  x_mesg_token_Tbl     => l_mesg_token_tbl
664 				 	 , p_application_id	=> 'EGO'
665                                 	 , p_message_name       => 'EGO_CAT_SEGMENTS_INVALID'
666                                	 	);
667 					l_return_status := FND_API.G_RET_STS_ERROR;
668 				 END IF;
669 
670 			ELSE
671 				/* Default the existing segments if the current operation is not CREATE*/
672 
673 				-- For CREATE this is an error condition since we need either Group name or
674 				-- the Segments apart from the Id
675 
676 				IF EGO_Globals.G_Catalog_Group_Rec.Transaction_Type = EGO_Globals.G_OPR_CREATE
677 				THEN
678 					Error_Handler.Add_Error_Token
679                                 	(  x_mesg_token_Tbl     => l_mesg_token_tbl
680 				 	 , p_application_id	=> 'EGO'
681                                 	 , p_message_name       => 'EGO_CAT_SEGMENTS_INVALID'
682                                	 	);
683 					l_return_status := FND_API.G_RET_STS_ERROR;
684 				ELSE
685 					EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Name := l_Catalog_Group_Name;
686 					check_status := Perform_Segment_Breakup(p_create_new => false);
687 				END IF;
688 		        END IF;
689 
690                 -- Get Catalog Group Id using Catalog Group Name
691                 --
692                 ELSIF (EGO_Globals.G_Catalog_Group_Rec.catalog_group_name IS NOT NULL AND
693                     EGO_Globals.G_Catalog_Group_Rec.catalog_group_name <> FND_API.G_MISS_CHAR)
694                 THEN
695 
696 			is_passed := TRUE;
697 
698 			Error_Handler.Write_Debug('getting id for ' ||
699 						EGO_Globals.G_Catalog_Group_Rec.catalog_group_name);
700 
701 			-- dbms_output.put_line('getting id for ' || EGO_Globals.G_Catalog_Group_Rec.catalog_group_name);
702 
703                         EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_id :=
704                             Get_Catalog_Group_Id(  p_catalog_group_name =>
705                                                    EGO_Globals.G_Catalog_Group_Rec.catalog_group_name
706 						 , p_operation	=> 'FIND_COMBINATION'
707                                                   );
708 
709 			IF (EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id IS NOT NULL)
710 			THEN
711 
712 				check_status := Perform_Segment_Breakup(p_create_new => false);
713 
714 				/* It is an error if the CCID exists
715 			   	when the transaction type is CREATE */
716 
717 				IF EGO_Globals.G_Catalog_Group_Rec.Transaction_Type = EGO_Globals.G_OPR_CREATE
718 				THEN
719                               		Error_Handler.Add_Error_Token
720                               		(  x_mesg_token_Tbl     => l_mesg_token_tbl
721                                		, p_application_id     => 'EGO'
722                                  	, p_message_name       => 'EGO_CATALOG_ALREADY_EXISTS'
723                               		);
724                                		l_return_status := FND_API.G_RET_STS_ERROR;
725 				END IF;
726 			ELSE
727 
728 				/* It is an error if the CCID does not exist
729 			   	when the transaction type is DELETE or UPDATE */
730 
731 				IF EGO_Globals.G_Catalog_Group_Rec.Transaction_Type IN
732 						(EGO_Globals.G_OPR_UPDATE,EGO_Globals.G_OPR_DELETE)
733 				THEN
734                                		Error_Handler.Add_Error_Token
735                                		(  x_mesg_token_Tbl     => l_mesg_token_tbl
736                                		, p_application_id     => 'EGO'
737                                  	, p_message_name       => 'EGO_CATALOG_DOESNOT_EXIST'
738                                		);
739                                		l_return_status := FND_API.G_RET_STS_ERROR;
740 				ELSE
741 
742 					/* Validate the segments and Generate ID if the Transaction type
743 					   is SYNC or CREATE */
744 
745 					check_status :=
746                             		Get_Catalog_Group_Id(  p_catalog_group_name =>
747                                                    EGO_Globals.G_Catalog_Group_Rec.catalog_group_name
748                                                  , p_operation  => 'CHECK_SEGMENTS'
749                                                   );
750 					IF (check_status = 1)
751 			        	THEN
752 						EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id :=
753 							Perform_Segment_Breakup;
754 
755                         			-- dbms_output.put_line('ccid assigned: ' || EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id);
756 					ELSIF (check_status = 0)
757 					THEN
758 						Error_Handler.Add_Error_Token
759                               			(  x_mesg_token_Tbl     => l_mesg_token_tbl
760 					 	, p_application_id     => 'EGO'
761                                		 	, p_message_text       => G_Error_Msg_Text
762                                			);
763                                			l_return_status := FND_API.G_RET_STS_ERROR;
764 					END IF;
765 				END IF;
766 			END IF;
767                 END IF;
768 
769 		-- If there are no key values passed for this row, then raise error
770 		--
771 		IF NOT is_passed THEN
772 			Error_Handler.Add_Error_Token
773                         (  x_mesg_token_Tbl     => l_mesg_token_tbl
774 		 	, p_application_id     => 'EGO'
775                         , p_message_text       => 'EGO_CAT_KEYCOLS_NOT_PASSED'
776                        	);
777                        l_return_status := FND_API.G_RET_STS_ERROR;
778 		END IF;
779                 --
780                 -- Get Parent Catalog Group Id using Parent Catalog Group Name
781                 --
782                 IF (EGO_Globals.G_Catalog_Group_Rec.parent_catalog_group_name IS NOT NULL AND
783                     EGO_Globals.G_Catalog_Group_Rec.parent_catalog_group_name <> FND_API.G_MISS_CHAR
784                    )
785                 THEN
786                         EGO_Globals.G_Catalog_Group_Rec.parent_Catalog_Group_Id :=
787                             Get_Catalog_Group_Id(p_catalog_group_name =>
788                                                    EGO_Globals.G_Catalog_Group_Rec.parent_catalog_group_name
789 						 , p_operation 	=> 'FIND_COMBINATION'
790                                                   );
791 
792 			Error_Handler.Write_Debug('Parent Catalog Group Id: ' ||
793 						  EGO_Globals.G_Catalog_Group_Rec.Parent_Catalog_Group_Id);
794 
795 			-- dbms_output.put_line('Parent Catalog Group Id: ' || EGO_Globals.G_Catalog_Group_Rec.Parent_Catalog_Group_Id);
796 
797                         IF EGO_Globals.G_Catalog_Group_Rec.Parent_Catalog_Group_Id IS NULL
798                         THEN
799 
800 			-- dbms_output.put_line('Parent Catalog Group Id NOT FOUND . . . ');
801                                 Error_Handler.Add_Error_Token
802                                 (  x_mesg_token_Tbl     => l_mesg_token_tbl
803 				 , p_application_id     => 'EGO'
804                                  , p_message_text       => G_Error_Msg_Text
805 				);
806                                 l_return_status := FND_API.G_RET_STS_ERROR;
807                         END IF;
808                 END IF;
809 
810 		--
811 		-- Convert Parent_Catalog_Group_Id into Parent_Catalog_Group_name
812 		--
813                 IF (EGO_Globals.G_Catalog_Group_Rec.parent_catalog_group_id IS NOT NULL AND
814                     EGO_Globals.G_Catalog_Group_Rec.parent_catalog_group_id <> FND_API.G_MISS_NUM
815                    )
816                 THEN
817 			-- dbms_output.put_line('Getting Parent Group Name from ID ... ' || EGO_Globals.G_Catalog_Group_Rec.parent_catalog_group_id);
818 
819                         EGO_Globals.G_Catalog_Group_Rec.parent_Catalog_Group_name :=
820                             Get_Catalog_Group_Name(p_catalog_group_id =>
821                                                    EGO_Globals.G_Catalog_Group_Rec.parent_catalog_group_id
822                                                   );
823 
824                         IF EGO_Globals.G_Catalog_Group_Rec.Parent_Catalog_Group_Name IS NULL
825                         THEN
826 
827                                 Error_Handler.Add_Error_Token
828                                 (  x_mesg_token_Tbl     => l_mesg_token_tbl
829 				 , p_application_id   => 'EGO'
830                                  , p_message_text       => G_Error_Msg_Text
831                                 );
832 				l_return_status := FND_API.G_RET_STS_ERROR;
833                         END IF;
834 			-- dbms_output.put_line('Getting Parent Group Name from ID ... ' || EGO_Globals.G_Catalog_Group_Rec.Parent_Catalog_Group_Name);
835 
836                 END IF;
837 
838 		-- dbms_output.put_line('UUI Conversion done . . .returning ' || l_return_status);
839 		Error_Handler.Write_Debug('UUI Conversion done . . . returning ' || l_return_status) ;
840 
841 		x_return_status := l_return_status;
842 		x_mesg_token_tbl := l_mesg_token_tbl;
843 
844 	END EGO_ItemCatalog_UUI_To_UI;
845 
846 
847         /*********************************************************************
848         * Procedure     : EGO_ItemCatalog_UUI_To_UI2 (Old EGO_ItemCatalog_UUI_To_UI logic)
849         * Returns       : None
850         * Parameters IN :
851         * Parameters OUT:
852         *                 Message Token Table
853         *                 Return Status
854         * Purpose       :
855         *********************************************************************/
856 	PROCEDURE EGO_ItemCatalog_UUI_To_UI2
857         (  x_Mesg_Token_Tbl          OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
858          , x_Return_Status           OUT NOCOPY VARCHAR2
859         )
860         IS
861                 l_Mesg_Token_Tbl         Error_Handler.Mesg_Token_Tbl_Type;
862                 l_return_status         VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
863 		l_result		VARCHAR2(2000);
864 
865                 is_valid  boolean;
866 		is_new    boolean;
867 		check_status number;
868 		l_catalog_group_name VARCHAR2(1000);
869 		concat_group_name VARCHAR2(1000);
870         BEGIN
871                 x_return_status := FND_API.G_RET_STS_SUCCESS;
872 		fnd_flex_key_api.set_session_mode('seed_data');
873 
874 
875 		-- dbms_output.put_line('Performing UUI conversion . . . ');
876 
877 
878 		--
879 		--  If the user has specified the name, id and segment then id is first
880 		-- validated and rest of the values are disregarded
881 		-- If the Id is not given and name and segments are given then the name
882 		-- would be validated and segments would be disregarded.
883 		-- Else segments will be validated.
884 		--
885 
886 		IF (EGO_Globals.G_Catalog_Group_Rec.catalog_group_id IS NULL OR
887 		    EGO_Globals.G_Catalog_Group_Rec.catalog_group_id = FND_API.G_MISS_NUM
888 		   ) AND
889 		   ( EGO_Globals.G_Catalog_Group_Rec.catalog_group_name IS NULL OR
890 		     EGO_Globals.G_Catalog_Group_Rec.catalog_group_name = FND_API.G_MISS_CHAR
891 		   ) AND check_segments_populated
892 		THEN
893 			-- dbms_output.put_line('Segments populated . . . ');
894 			EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Name :=
895 			    concatenate_segments(  p_appl_short_name 	=> 'INV'
896                                       		 , p_key_flex_code 	=> 'MICG'
897                                       		 , p_structure_number	=> 101
898 						 );
899 			IF EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Name IS NULL
900                         THEN
901                                 -- dbms_output.put_line('concat group name is NULL  ' );
902 
903                                 Error_Handler.Add_Error_Token
904                                 (  x_mesg_token_Tbl     => l_mesg_token_tbl
905                                  , p_application_id     => 'EGO'
906                                  , p_message_name       => 'EGO_CAT_SEGMENTS_INVALID'
907                                  );
908                                  l_return_status := FND_API.G_RET_STS_ERROR;
909 			ELSE
910 				--
911 				-- Get the corresponding Catalog group id
912 				--
913 			        check_status :=
914                         	Get_Catalog_Group_Id(  p_catalog_group_name =>
915                                                          EGO_Globals.G_Catalog_Group_Rec.catalog_group_name
916                                              	     , p_operation  => 'FIND_COMBINATION'
917                                              	     );
918 				-- dbms_output.put_line('ccid after FIND_COMBINATION . . . ' || check_status );
919                         	IF (check_status IS NOT null)
920                         	THEN
921                                	 -- if not null then the returned value is the ccid
922 
923                                	 EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id := check_status;
924 
925                         	ELSE
926 					-- dbms_output.put_line('CHECK_SEGMENTS from here . . .');
927 
928                                 	check_status :=
929                                 	Get_Catalog_Group_Id(  p_catalog_group_name =>
930                                        		            EGO_Globals.G_Catalog_Group_Rec.catalog_group_name
931                                                  		, p_operation  => 'CHECK_SEGMENTS'
932                                                   		);
933                                 	-- if segments are valid then proceed
934                                 	IF (check_status = 1)
935                                 	THEN
936                                         	EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id :=
937                                                 	Perform_Segment_Breakup;
938 						is_new := true;
939 
940                                         	-- dbms_output.put_line('ccid assigned: ' || EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id);
941 					END IF;
942                                 END IF;
943 			END IF;
944 
945 		END IF;
946 
947                 --
948                 -- Convert Catalog_Group_Id into name
949                 --
950                 IF (EGO_Globals.G_Catalog_Group_Rec.catalog_group_id IS NOT NULL AND
951                     EGO_Globals.G_Catalog_Group_Rec.catalog_group_id <> FND_API.G_MISS_NUM
952                    ) AND NOT is_new
953                 THEN
954                         -- dbms_output.put_line('Getting Group Name from ID ... ');
955                         l_Catalog_Group_Name :=
956                                 Get_Catalog_Group_Name(p_catalog_group_id =>
957                                                         EGO_Globals.G_Catalog_Group_Rec.catalog_group_id
958                                                        );
959 
960                         IF l_Catalog_Group_Name IS NULL
961                         THEN
962 
963                                 Error_Handler.Add_Error_Token
964                                 (  x_mesg_token_Tbl     => l_mesg_token_tbl
965 				 , p_application_id	=> 'EGO'
966                                  , p_message_text       => G_Error_Msg_Text
967                                 );
968                                 l_return_status := FND_API.G_RET_STS_ERROR;
969 
970 			ELSE IF (EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Name IS NULL OR
971 				 EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Name = FND_API.G_MISS_CHAR
972 				 )
973 				 AND
974 				 check_segments_populated
975 			     THEN
976 				 -- Verify if the concatenated value of any of the segments entered is
977 				 -- different than what the Id would return. If yes then the user
978 				 -- is attempting to rename the catalog group.
979 				 concat_Group_Name := concatenate_segments
980 							(  p_appl_short_name    => 'INV'
981                                                  	 , p_key_flex_code      => 'MICG'
982                                                  	 , p_structure_number   => 101
983                                                  	 );
984 				 --
985 				 -- validate the concatenated segments
986 				 --
987 				 IF (Get_Catalog_Group_Id( p_operation		=> 'CHECK_SEGMENTS'
988 							  ,p_catalog_group_name => concat_Group_Name
989 							  ) = 1
990 				     )
991 				 THEN
992 				      -- catalog_group_name : that is fetched using the id is not the
993 				      -- the same as the concatenation of the segments then, the user
994 				      -- could be renaming the catalog group.
995 
996 				      IF concat_Group_Name <> l_Catalog_Group_Name
997 				      THEN
998 						-- dbms_output.put_line('concat group name: ' || concat_Group_Name || ' catalog group name from id: ' || l_Catalog_Group_Name);
999 
1000 				      		EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Name :=
1001 									concat_Group_Name;
1002 
1003 						-- breakup the segments and store it for use
1004 						-- during database writes.
1005 						check_status := Perform_Segment_Breakup(p_create_new => false);
1006 				      END IF;
1007 				 ELSE
1008 					Error_Handler.Add_Error_Token
1009                                 	(  x_mesg_token_Tbl     => l_mesg_token_tbl
1010 				 	 , p_application_id	=> 'EGO'
1011                                 	 , p_message_name       => 'EGO_CAT_SEGMENTS_INVALID'
1012                                	 	);
1013 					l_return_status := FND_API.G_RET_STS_ERROR;
1014 				 END IF;
1015 			     END IF;
1016 
1017                         END IF;
1018                 END IF;
1019 
1020                 -- Get Catalog Group Id using Catalog Group Name
1021                 --
1022                 IF (EGO_Globals.G_Catalog_Group_Rec.catalog_group_name IS NOT NULL AND
1023                     EGO_Globals.G_Catalog_Group_Rec.catalog_group_name <> FND_API.G_MISS_CHAR AND
1024 		    EGO_Globals.G_Catalog_Group_Rec.Transaction_Type <> EGO_Globals.G_OPR_CREATE AND
1025                     ( EGO_Globals.G_Catalog_Group_Rec.catalog_group_id IS NULL  OR
1026                       EGO_Globals.G_Catalog_Group_Rec.catalog_group_id = FND_API.G_MISS_NUM
1027                      )
1028                    )
1029                 THEN
1030 			Error_Handler.Write_Debug('getting id for ' || EGO_Globals.G_Catalog_Group_Rec.catalog_group_name);
1031 			-- dbms_output.put_line('getting id for ' || EGO_Globals.G_Catalog_Group_Rec.catalog_group_name);
1032                         EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_id :=
1033                             Get_Catalog_Group_Id(  p_catalog_group_name =>
1034                                                    EGO_Globals.G_Catalog_Group_Rec.catalog_group_name
1035 						 , p_operation	=> 'FIND_COMBINATION'
1036                                                   );
1037 
1038 			--
1039 			-- If the transaction type was SYNC and the previous opr. did not return
1040 			-- a row then it could be a create operation
1041 			--
1042 
1043 			if(EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id IS NULL)
1044 			THEN
1045 					check_status :=
1046                             		Get_Catalog_Group_Id(  p_catalog_group_name =>
1047                                                    EGO_Globals.G_Catalog_Group_Rec.catalog_group_name
1048                                                  , p_operation  => 'CHECK_SEGMENTS'
1049                                                   );
1050 				IF (check_status = 1)
1051 			        THEN
1052 					EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id :=
1053 						Perform_Segment_Breakup;
1054 
1055                         		-- dbms_output.put_line('ccid assigned: ' || EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id);
1056 				ELSIF (check_status = 0)
1057 				THEN
1058 					Error_Handler.Add_Error_Token
1059                               		(  x_mesg_token_Tbl     => l_mesg_token_tbl
1060 					 , p_application_id     => 'EGO'
1061                                		 , p_message_text       => G_Error_Msg_Text
1062                                		);
1063                                		l_return_status := FND_API.G_RET_STS_ERROR;
1064 				END IF;
1065 			END IF;
1066 				   /* if the OPERATION IS CREATE rather than SYNC */
1067 		ELSIF (EGO_Globals.G_Catalog_Group_Rec.catalog_group_name IS NOT NULL AND
1068                        EGO_Globals.G_Catalog_Group_Rec.catalog_group_name <> FND_API.G_MISS_CHAR AND
1069                        EGO_Globals.G_Catalog_Group_Rec.Transaction_Type = EGO_Globals.G_OPR_CREATE AND
1070                        ( EGO_Globals.G_Catalog_Group_Rec.catalog_group_id IS NULL  OR
1071                          EGO_Globals.G_Catalog_Group_Rec.catalog_group_id = FND_API.G_MISS_NUM
1072                         )
1073                       )
1074 		THEN
1075 			check_status :=
1076                         Get_Catalog_Group_Id(  p_catalog_group_name =>
1077                                                          EGO_Globals.G_Catalog_Group_Rec.catalog_group_name
1078                                              , p_operation  => 'FIND_COMBINATION'
1079                                              );
1080 			IF (check_status <> null)
1081 			THEN
1082 				-- if not null then the returned value is the ccid
1083 
1084 				EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id := check_status;
1085 			ELSE
1086 			        check_status :=
1087                                 Get_Catalog_Group_Id(  p_catalog_group_name =>
1088                                                    EGO_Globals.G_Catalog_Group_Rec.catalog_group_name
1089                                                  , p_operation  => 'CHECK_SEGMENTS'
1090                                                   );
1091 				-- if segments are valid then proceed
1092                                 IF (check_status = 1)
1093                                 THEN
1094                                         EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id :=
1095                                                 Perform_Segment_Breakup;
1096 
1097                                         -- dbms_output.put_line('ccid assigned: ' || EGO_Globals.G_Catalog_Group_Rec.Catalog_Group_Id);
1098                                 ELSIF (check_status = 0)
1099 				THEN
1100                                         Error_Handler.Add_Error_Token
1101                                         (  x_mesg_token_Tbl     => l_mesg_token_tbl
1102 					 , p_application_id   => 'EGO'
1103                                          , p_message_text       => G_Error_Msg_Text
1104                                         );
1105                                         l_return_status := FND_API.G_RET_STS_ERROR;
1106                                 END IF;
1107                          END IF;
1108                 END IF;
1109 
1110 
1111                 --
1112                 -- Get Parent Catalog Group Id using Parent Catalog Group Name
1113                 --
1114 
1115                 IF (EGO_Globals.G_Catalog_Group_Rec.parent_catalog_group_name IS NOT NULL AND
1116                     EGO_Globals.G_Catalog_Group_Rec.parent_catalog_group_name <> FND_API.G_MISS_CHAR
1117                    )
1118                 THEN
1119                         EGO_Globals.G_Catalog_Group_Rec.parent_Catalog_Group_Id :=
1120                             Get_Catalog_Group_Id(p_catalog_group_name =>
1121                                                    EGO_Globals.G_Catalog_Group_Rec.parent_catalog_group_name
1122 						 , p_operation 	=> 'FIND_COMBINATION'
1123                                                   );
1124 
1125 			Error_Handler.Write_Debug('Parent Catalog Group Id: ' ||
1126 						  EGO_Globals.G_Catalog_Group_Rec.Parent_Catalog_Group_Id);
1127 
1128 			-- dbms_output.put_line('Parent Catalog Group Id: ' || EGO_Globals.G_Catalog_Group_Rec.Parent_Catalog_Group_Id);
1129 
1130                         IF EGO_Globals.G_Catalog_Group_Rec.Parent_Catalog_Group_Id IS NULL
1131                         THEN
1132 
1133 			-- dbms_output.put_line('Parent Catalog Group Id NOT FOUND . . . ');
1134                                 Error_Handler.Add_Error_Token
1135                                 (  x_mesg_token_Tbl     => l_mesg_token_tbl
1136 				 , p_application_id     => 'EGO'
1137                                  , p_message_text       => G_Error_Msg_Text
1138 				);
1139                                 l_return_status := FND_API.G_RET_STS_ERROR;
1140                         END IF;
1141                 END IF;
1142 
1143 		--
1144 		-- Convert Parent_Catalog_Group_Id into Parent_Catalog_Group_name
1145 		--
1146                 IF (EGO_Globals.G_Catalog_Group_Rec.parent_catalog_group_id IS NOT NULL AND
1147                     EGO_Globals.G_Catalog_Group_Rec.parent_catalog_group_id <> FND_API.G_MISS_NUM
1148                    )
1149                 THEN
1150 			-- dbms_output.put_line('Getting Parent Group Name from ID ... ' || EGO_Globals.G_Catalog_Group_Rec.parent_catalog_group_id);
1151 
1152                         EGO_Globals.G_Catalog_Group_Rec.parent_Catalog_Group_name :=
1153                             Get_Catalog_Group_Name(p_catalog_group_id =>
1154                                                    EGO_Globals.G_Catalog_Group_Rec.parent_catalog_group_id
1155                                                   );
1156 
1157                         IF EGO_Globals.G_Catalog_Group_Rec.Parent_Catalog_Group_Name IS NULL
1158                         THEN
1159 
1160                                 Error_Handler.Add_Error_Token
1161                                 (  x_mesg_token_Tbl     => l_mesg_token_tbl
1162 				 , p_application_id   => 'EGO'
1163                                  , p_message_text       => G_Error_Msg_Text
1164                                 );
1165 				l_return_status := FND_API.G_RET_STS_ERROR;
1166                         END IF;
1167 			-- dbms_output.put_line('Getting Parent Group Name from ID ... ' || EGO_Globals.G_Catalog_Group_Rec.Parent_Catalog_Group_Name);
1168                 END IF;
1169 
1170 		-- dbms_output.put_line('UUI Conversion done . . .returning ' || l_return_status);
1171 		Error_Handler.Write_Debug('UUI Conversion done . . . returning ' || l_return_status) ;
1172 
1173 		x_return_status := l_return_status;
1174 		x_mesg_token_tbl := l_mesg_token_tbl;
1175 
1176 	END EGO_ItemCatalog_UUI_To_UI2;
1177 
1178         /*********************************************************************
1179         * Procedure     : EGO_ItemCatalog_VID
1180         * Returns       : None
1181         * Parameters IN :
1182         * Parameters OUT:
1183         *                 Return Status
1184         *                 Message Token Table
1185         * Purpose       :
1186         *********************************************************************/
1187         PROCEDURE EGO_ItemCatalog_VID
1188         (  x_Return_Status         	OUT NOCOPY VARCHAR2
1189          , x_Mesg_Token_Tbl        	OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
1190         )
1191         IS
1192                 l_return_status         VARCHAR2(1):=FND_API.G_RET_STS_SUCCESS;
1193                 l_Mesg_Token_Tbl        Error_Handler.Mesg_Token_Tbl_Type;
1194                 l_err_text              VARCHAR2(2000);
1195                 l_Token_Tbl             Error_Handler.Token_Tbl_Type;
1196         BEGIN
1197 
1198                 Error_Handler.Write_Debug('VID conversion . . . ');
1199 
1200 		x_return_status := l_return_status;
1201 		x_mesg_token_tbl := l_mesg_token_tbl;
1202 
1203 	END EGO_ItemCatalog_VID;
1204 
1205 END EGO_ItemCat_Val_To_Id;