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