DBA Data[Home] [Help]

PACKAGE BODY: APPS.EGO_VS_BULKLOAD_PVT

Source


1 PACKAGE BODY ego_vs_bulkload_pvt AS
2 /* $Header: EGOVVSBB.pls 120.24 2011/08/25 07:49:15 vijoshi noship $ */
3 
4 /*==========================================================================+
5 |   Copyright (c) 1993 Oracle Corporation Belmont, California, USA          |
6 |                          All rights reserved.                             |
7 +===========================================================================+
8 |                                                                           |
9 | File Name    : EGOVVSBB.pls                                               |
10 | DESCRIPTION  : This file is a packaged procedure for importing value set  |
11 |                and corresponding values using interface or concurrent     |
12 |                program route.                                             |
13 +==========================================================================*/
14 
15    ---------------------------------------------------------------
16    -- Global Variables and Constants --
17    ---------------------------------------------------------------
18    G_PKG_NAME                     CONSTANT  VARCHAR2(30)   := 'EGO_VS_BULKLOAD_PVT';
19    G_APP_SHORT_NAME               CONSTANT  VARCHAR2(3)    := 'EGO';
20 
21    ---------------------------------------------------------------
22    -- Transaction Type.                                         --
23    ---------------------------------------------------------------
24 
25    G_CREATE                       CONSTANT  VARCHAR2(10) := 'CREATE';
26    G_UPDATE                       CONSTANT  VARCHAR2(10) := 'UPDATE';
27    G_SYNC                         CONSTANT  VARCHAR2(10) := 'SYNC';
28    G_VAL_TRANS_TYPE                         VARCHAR2(10) := NULL;
29 
30 
31    ---------------------------------------------------------------
32    -- API Return status.                                      --
33    ---------------------------------------------------------------
34    G_RET_STS_SUCCESS              CONSTANT  VARCHAR2(1) :=  FND_API.G_RET_STS_SUCCESS;
35    G_RET_STS_ERROR                CONSTANT  VARCHAR2(1) :=  FND_API.G_RET_STS_ERROR;
36    G_RET_STS_UNEXP_ERROR          CONSTANT  VARCHAR2(1) :=  FND_API.G_RET_STS_UNEXP_ERROR;
37 
38 
39    ---------------------------------------------------------------
40    -- WHO Columns        .                                      --
41    ---------------------------------------------------------------
42    G_USER_ID                                NUMBER      :=  FND_GLOBAL.User_Id;
43    G_LOGIN_ID                               NUMBER      :=  FND_GLOBAL.Login_Id;
44    G_APPLICATION_ID                         NUMBER;
45    G_APPL_NAME                              VARCHAR2(3) := 'EGO';
46    G_Party_Id                               NUMBER      :=  FND_GLOBAL.Party_Id;
47    G_Party_Name                             VARCHAR2(500);
48    G_Locking_Party_Name                     VARCHAR2(500);
49 
50    G_PROG_APPL_ID                 CONSTANT  NUMBER      :=  FND_GLOBAL.PROG_APPL_ID;
51    G_PROGRAM_ID                   CONSTANT  NUMBER      :=  FND_GLOBAL.CONC_PROGRAM_ID;
52    G_REQUEST_ID                   CONSTANT  NUMBER      :=  FND_GLOBAL.CONC_REQUEST_ID;
53 
54 
55    ---------------------------------------------------------------
56    -- Data Types for Value Set.--
57    ---------------------------------------------------------------
58    G_CHAR_DATA_TYPE               CONSTANT  VARCHAR2(1) := 'C';
59    G_NUMBER_DATA_TYPE             CONSTANT  VARCHAR2(1) := 'N';
60    G_DATE_DATA_TYPE               CONSTANT  VARCHAR2(1) := 'X';
61    G_DATE_TIME_DATA_TYPE          CONSTANT  VARCHAR2(1) := 'Y';
62 
63 
64    G_COL_DATE_DATA_TYPE           CONSTANT  VARCHAR2(1) := 'D';
65 
66    G_NUMBER_FORMAT                CONSTANT  VARCHAR2(20):= 'Number';
67    G_DATE_FORMAT                  CONSTANT  VARCHAR2(20):= 'Standard Date';
68    G_DATETIME_FORMAT              CONSTANT  VARCHAR2(20):= 'Standard DateTime';
69 
70 
71 
72 
73    ---------------------------------------------------------------
74    -- Validation Type for Value Set.--
75    ---------------------------------------------------------------
76    G_TRANS_IND_VALIDATION_CODE    CONSTANT  VARCHAR2(1) := 'X';
77    G_INDEPENDENT_VALIDATION_CODE  CONSTANT  VARCHAR2(1) := 'I';
78    G_NONE_VALIDATION_CODE         CONSTANT  VARCHAR2(1) := 'N';
79    G_TABLE_VALIDATION_CODE        CONSTANT  VARCHAR2(1) := 'F';
80 
81 
82    ---------------------------------------------------------------
83    -- Longlist Type for Value Set.--                            --
84    ---------------------------------------------------------------
85    G_LOV_LONGLIST_FLAG            CONSTANT  VARCHAR2(1) := 'N';
86    G_POPLIST_LONGLIST_FLAG        CONSTANT  VARCHAR2(1) := 'X';
87 
88    --------------------------------------------------------------
92    G_ENTITY_VS                    CONSTANT  VARCHAR2(30)  := 'VS';
89    -- The Entity Codes are used for error-handling purposes. --
90    --------------------------------------------------------------
91    G_BO_IDENTIFIER_VS             CONSTANT  VARCHAR2(30)  := 'VS_BO';
93    G_ENTITY_CHILD_VS              CONSTANT  VARCHAR2(30)  := 'CHILD_VS';
94    G_ENTITY_VS_VAL                CONSTANT  VARCHAR2(30)  := 'VS_VALUE';
95    G_ENTITY_VS_VER                CONSTANT  VARCHAR2(30)  := 'VS_VERSION';
96    G_ENTITY_VS_TABLE              CONSTANT  VARCHAR2(30)  := 'VS_TABLE';
97 
98    G_ENTITY_VS_HEADER_TAB         CONSTANT  VARCHAR2(240) := 'EGO_FLEX_VALUE_SET_INTF';
99    G_ENTITY_VAL_HEADER_TAB        CONSTANT  VARCHAR2(240) := 'EGO_FLEX_VALUE_INTF';
100    G_ENTITY_VAL_TL_HEADER_TAB     CONSTANT  VARCHAR2(240) := 'EGO_FLEX_VALUE_TL_INTF';
101 
102    --------------------------------------------------------------
103    -- The Object Name for locking and object. --
104    --------------------------------------------------------------
105    G_OBJECT_VALUE_SET             CONSTANT  VARCHAR2(30)  := 'EGO_VALUE_SET';
106    G_P4TP_PROFILE_ENABLED                   BOOLEAN      :=  FALSE;
107 
108 
109    G_TABLE_NAME                   CONSTANT  VARCHAR2(30) := 'EGO_FLEX_VALUE_SET_INTF';
110    G_TOKEN_TBL                              Error_Handler.Token_Tbl_Type;
111 
112    --------------------------------------------------------------
113    -- The Entity Codes are used for error-handling purposes. --
114    --------------------------------------------------------------
115    G_VALUE_SET                    CONSTANT  NUMBER        := 1;
116    G_VALUE                        CONSTANT  VARCHAR2(30)  := 2;
117    --G_Child_VS                     CONSTANT  VARCHAR2(30)  := 3;
118    G_DEBUG                                  NUMBER        := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
119 
120 
121 
122   --  The new standard is to treat missing values as NULL and to use the
123   --
124   --G_NULL_XXX constants to assign a value of NULL to a variable if needed.
125   G_NULL_NUM                      CONSTANT  NUMBER        := 9.99E125;
126   G_NULL_CHAR                       CONSTANT  VARCHAR2(1) := Chr(0);
127   G_NULL_DATE                       CONSTANT  DATE        := TO_DATE('1','j');
128 
129 
130   G_PROCESS_RECORD                CONSTANT  NUMBER := 1;
131   G_ERROR_RECORD                  CONSTANT  NUMBER := 3;
132   G_SUCCESS_RECORD                CONSTANT  NUMBER := 7;
133 
134    --------------------------------------------------------------
135    -- Variable to fid out source of program call.              --
136    --------------------------------------------------------------
137 
138   G_EGO_MD_INTF                   CONSTANT  NUMBER := 2;
139   G_EGO_MD_API                    CONSTANT  NUMBER := 1;
140   G_FLOW_TYPE                               NUMBER :=G_EGO_MD_API;
141 
142 
143 
144   G_USER_LANG                                   VARCHAR2(10);
145   G_NLS_LANGUAGE                                VARCHAR2(100);
146   G_OUT_VERSION_SEQ_ID                      NUMBER;
147 
148   --
149   -- added for bug 12651548 , so that for versions we
150   -- always compare dates with a 'fixed' SYSDATE
151   ---
152   G_SYSDATE                      CONSTANT   DATE := SYSDATE;
153 
154 
155 
156 
157 
158 
159 
160 
161 
162 
163   -----------------------------------------------
164   -- Write Debug statements to Concurrent Log  --
165   -----------------------------------------------
166   PROCEDURE Write_Debug ( p_pkg_name  IN  VARCHAR2,
167                           p_api_name  IN  VARCHAR2,
168                           p_msg       IN  VARCHAR2)
169   IS
170 
171   BEGIN
172 
173       ego_metadata_bulkload_pvt.write_debug(p_pkg_name||'.'||p_api_name||p_msg);
174 
175   END write_debug;
176 
177 
178 
179 
180 
181 
182   -----------------------------------------------
183   -- Function to get application Id            --
184   -----------------------------------------------
185   FUNCTION Get_Application_Id
186 
187     RETURN NUMBER
188 
189   IS
190 
191       l_application_id NUMBER        := NULL;
192       l_api_name       VARCHAR2(100) := 'Get_Application_Id';
193 
194   BEGIN
195 
196       write_debug(G_PKG_Name,l_api_name,' Start of API ');
197 
198 
199       -- Get application id
200       SELECT application_id
201         INTO l_Application_Id
202       FROM fnd_application
203       WHERE application_short_name ='EGO';
204 
205       write_debug(G_PKG_Name,l_api_name,' End of API l_Application_Id = '||l_Application_Id);
206 
207       RETURN l_Application_Id;--G_Application_Id;
208 
209   EXCEPTION
210       WHEN OTHERS THEN
211           write_debug(G_PKG_Name,l_api_name,' In Exception ');
212           l_Application_Id  :=  NULL;
213   END;
214 
215 
216 
217   ---------------------------------------------------------------------------------
218   -- Procedure to convert a entity name to entity id , If exist.
219   ---------------------------------------------------------------------------------
220   Procedure Convert_Name_To_Id (
221             Name                IN              VARCHAR2,
222             Entity_Id           IN              NUMBER,
223             Parent_Id           IN              NUMBER  DEFAULT NULL, -- Here Parent Id will be Id of parent entity for a sub entity.
224             Id                  OUT NOCOPY      NUMBER)
225 
226   IS
227 
228     l_name      VARCHAR2(1000)  :=  Name;
229     l_id        NUMBER          :=  NULL;
230     l_parent_id NUMBER          :=  Parent_Id;
231 
232     l_api_name       VARCHAR2(100) := 'Convert_Name_To_Id';
236     IS
233 
234     -- Cursor to get Value Set id
235     CURSOR  cur_value_set_id( cp_value_set_name  VARCHAR2)
237         SELECT flex_value_set_id
238         FROM fnd_flex_value_sets
239         WHERE flex_value_set_name = cp_value_set_name;
240 
241 
242     -- Cursor to get Value id
243     CURSOR cur_value_id ( cp_value_set_id   NUMBER,
244                           cp_flex_value     VARCHAR2)
245     IS
246 
247       SELECT val.flex_value_id  value_id
248       FROM  fnd_flex_value_sets vs,
249             fnd_flex_values val
250       WHERE vs.flex_value_set_id  = val.flex_value_set_id
251         AND vs.flex_value_set_id  = cp_value_set_id
252         AND val.flex_value        = cp_flex_value;
253 
254   BEGIN
255 
256       write_debug(G_PKG_Name,l_api_name,' Start of API  ');
257       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API  ');
258 
259       -- Coverting Value Set Name to Id
260       If Entity_Id =G_Value_Set THEN
261 
262         -- Get value set id
263           FOR i IN cur_value_set_id(l_name)
264           LOOP
265 
266             l_id  := i.flex_value_set_id;
267 
268           END LOOP;
269 
270 
271 
272       ELSIF Entity_Id=G_Value THEN
273 
274         -- Get value set id if value set name is passed
275           FOR i IN cur_value_id(l_parent_id, l_name)
276           LOOP
277 
278             l_id  := i.value_id;
279 
280           END LOOP;
281 
282       END IF;--
283 
284       Id  :=  l_id;
285 
286       write_debug(G_PKG_Name,l_api_name,' End of API  : Value of id = '||Id);
287       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API  : Value of id = '||Id);
288 
289   EXCEPTION
290       WHEN OTHERS THEN
291           Id  :=  NULL;
292           write_debug(G_PKG_Name,l_api_name,' In exception part : Error Msg : '||SQLERRM);
293           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' In exception part : Error Msg : '||SQLERRM);
294 
295   END Convert_Name_To_Id;
296 
297 
298 
299   ---------------------------------------------------------------------------------
300   -- Procedure to convert a entity name to entity id , If exist.
301   ---------------------------------------------------------------------------------
302   Procedure Convert_Id_To_Name (
303             Id                  IN OUT NOCOPY   NUMBER,
304             Entity_Id           IN              NUMBER,
305             Parent_Id           IN              NUMBER  DEFAULT NULL, -- Here Parent Id will be Id of parent entity for a sub entity.
306             Name                OUT NOCOPY      VARCHAR2 )
307 
308   IS
309 
310     l_name      VARCHAR2(1000)  :=  NULL;
311     l_id        NUMBER          :=  Id;
312     l_parent_id NUMBER          :=  Parent_Id;
313     l_api_name  VARCHAR2(100)   := 'Convert_Id_To_Name';
314 
315     -- Cursor to get value_set_name for a passed in value set id
316     CURSOR  cur_value_set_name(cp_value_set_id  NUMBER)
317     IS
318       SELECT flex_value_set_name
319       FROM fnd_flex_value_sets
320       WHERE flex_value_set_id = cp_value_set_id;
321 
322 
323     -- Cursor to find out if value already exist in system.
324     CURSOR cur_value_name(  cp_flex_value_set_id  NUMBER,
325                             cp_flex_value_id      NUMBER )
326     IS
327       SELECT flex_value
328       FROM fnd_flex_values
329       WHERE flex_value_set_id= cp_flex_value_set_id
330         AND flex_value_id = cp_flex_value_id;
331 
332 
333 
334   BEGIN
335 
336       write_debug(G_PKG_Name,l_api_name,' Start of API  ');
337       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API  ');
338 
339       -- Coverting Value Set Name to Id
340       If Entity_Id =G_Value_Set THEN
341 
342           FOR i IN cur_value_set_name(l_id)
343           LOOP
344 
345             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' G_Value_Set l_id = '|| l_id ||' l_name = '|| l_name );
346 
347             l_name  := i.flex_value_set_name;
348           END LOOP;
349 
350           IF l_name IS NULL THEN
351             Id      :=  NULL;
352           END IF;
353 
354 
355 
356 
357       ELSIF Entity_Id=G_Value THEN
358 
359           FOR i IN cur_value_name(l_parent_id,l_id)
360           LOOP
361             l_name  :=  i.flex_value;
362           EXIT
363             WHEN cur_value_name%NOTFOUND;
364           END LOOP;
365 
366           IF l_name IS NULL THEN
367 
368             Id      :=  NULL;
369 
370           END IF;
371 
372 
373       END IF;--
374 
375       Name  :=  l_name;
376 
377       write_debug(G_PKG_Name,l_api_name,' End of API  : Value of Name = '||Name);
378       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API  : Value of Name = '||Name);
379 
380   EXCEPTION
381       WHEN OTHERS THEN
382           Name  :=  NULL;
383           write_debug(G_PKG_Name,l_api_name,' In exception part: Error '||SQLERRM);
384           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' In exception part: Error '||SQLERRM);
385 
386 
387   END Convert_Id_To_Name;
388 
389 
390 
391 
392 
393   ---------------------------------------------------------------------------------
394   -- Check if passed in parameter is in valid date format
395   ---------------------------------------------------------------------------------
396   FUNCTION Is_Valid_Date  ( p_user_date IN  VARCHAR2 )
397     RETURN NUMBER
398   IS
399 
403       l_yr_end      VARCHAR2(1) :=NULL;
400       l_dummydate   DATE;
401       l_api_name    VARCHAR2(100) := 'Is_Valid_Date';
402 
404       l_mm_end      VARCHAR2(1) :=NULL;
405 
406 
407   BEGIN
408 
409       write_debug(G_PKG_Name,l_api_name,' Start of API ');
410       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API  ');
411 
412 
413       l_Yr_End := SubStr(p_user_date ,5,1);
414       --Dbms_Output.put_line(' l_Yr  = '||l_Yr_End );
415 
416       IF l_Yr_End ='-' THEN
417 
418           l_mm_End := SubStr(p_user_date ,8,1);
419           --Dbms_Output.put_line(' l_mm  = '||l_mm_End  );
420 
421           IF l_mm_End <> '-' THEN
422 
423             RETURN(1);
424 
425           END IF;
426 
427       ELSE
428         RETURN(1);
429 
430       END IF;
431 
432 
433 
434 
435       l_dummydate   := TO_DATE(p_user_date,EGO_USER_ATTRS_COMMON_PVT.G_DATE_FORMAT);
436       RETURN (0);
437 
438       write_debug(G_PKG_Name,l_api_name,' End of API ');
439       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API  ');
440 
441   EXCEPTION
442       WHEN OTHERS THEN
443       RETURN (1);
444 
445   END;
446 
447 
448 
449 
450   -- Bug 9701510
451   PROCEDURE Convert_Value_To_DbDate ( p_value         IN  OUT NOCOPY        VARCHAR2)
452   IS
453 
454 
455       l_api_name                VARCHAR2(100) :=  'Convert_Value_To_DbDate';
456       l_mask_format             VARCHAR2(100) :=NULL;
457       l_value                   VARCHAR2(100) :=LTrim(RTrim(p_value));
458       l_User_Pref_Date          DATE  ;
459       l_User_Pref_Date_val      VARCHAR2(100);
460       l_return_status           VARCHAR2(1)  :=  G_RET_STS_SUCCESS;
461 
462 
463 
464   BEGIN
465 
466       write_debug(G_PKG_Name,l_api_name,' Start of API. ');
467       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API. ');
468 
469 
470       -- Call API to get current value of mask.
471       FND_PROFILE.GET('ICX_DATE_FORMAT_MASK',l_mask_format);
472 
473       -- Get char value in date format
474       --l_User_Pref_Date := To_Date (l_value,l_mask_format );
475 
476       l_User_Pref_Date := To_Date (l_value,EGO_USER_ATTRS_COMMON_PVT.G_DATE_FORMAT );
477       --Dbms_Output.put_line('  Format mask in user preferred format is : '||l_mask_format);
478 
479       --l_User_Pref_Date_val := LTrim(RTrim ( To_Char(l_User_Pref_Date,l_mask_format)));
480 
481       -- Mask it to DB format if require.
482       l_value := LTrim(RTrim (To_Char( l_User_Pref_Date,EGO_USER_ATTRS_COMMON_PVT.G_DATE_FORMAT)));
483       --Dbms_Output.put_line(' DB Date format: '||l_value);
484 
485       -- Assign value back.
486       p_value := l_value;
487 
488 
489 
490       write_debug(G_PKG_Name,l_api_name,' End of API. ');
491       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API. ');
492 
493 
494   EXCEPTION
495       WHEN OTHERS THEN
496 
497             write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
498             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
499 
500             /*x_return_status := G_RET_STS_UNEXP_ERROR;
501             x_return_msg    := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);*/
502 
503   END;
504 
505 
506 
507 
508   -- Bug 9701510
509   PROCEDURE Validate_User_Preferred_Date (p_value             IN OUT NOCOPY     VARCHAR2,
510                                           p_format_code       IN                VARCHAR2,
511                                           p_transaction_id    IN                VARCHAR2,
512                                           x_return_status     OUT NOCOPY        VARCHAR2,
513                                           x_return_msg        OUT NOCOPY        VARCHAR2)
514 
515   IS
516 
517       l_api_name                VARCHAR2(100) :=  'Validate_User_Preferred_Date';
518       l_mask_format             VARCHAR2(100) :=  NULL;
519       l_value                   VARCHAR2(100) :=  LTrim(RTrim(p_value));
520       l_User_Pref_Date          DATE  ;
521       l_User_Pref_Date_val      VARCHAR2(100);
522       l_format_meaning          VARCHAR2(100) :=  NULL;
523 
524       l_format_code             VARCHAR2(1)   :=  p_format_code;
525       l_transaction_id          NUMBER        :=  p_transaction_id;
526 
527       -- Local variable for Error handling
528       l_error_message_name      VARCHAR2(240);
529       l_entity_code             VARCHAR2(30) :=  G_ENTITY_VS_VAL;
530       l_table_name              VARCHAR2(240):=  G_ENTITY_VAL_HEADER_TAB;
531       l_return_status           VARCHAR2(1)  :=  G_RET_STS_SUCCESS;
532       l_application_id          NUMBER       :=  G_Application_Id;
533       l_token_table             ERROR_HANDLER.Token_Tbl_Type;
534       l_valid_type              NUMBER       :=  NULL;
535 
536       CURSOR Cur_format_meaning(cp_format_code VARCHAR2)
537       IS
538       SELECT meaning
539       FROM ego_vs_format_codes_v
540       WHERE lookup_code = cp_format_code;
541 
542 
543 
544   BEGIN
545 
546       write_debug(G_PKG_Name,l_api_name,' Start of API. ');
547       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API. ');
548 
549       --Dbms_Output.put_line(' Passed in value is : '||l_value);
550 
551 
552       -- Call API to get current value of mask.
556 
553       FND_PROFILE.GET('ICX_DATE_FORMAT_MASK',l_mask_format);
554 
555 
557       /*FOR i IN Cur_Format_Meaning (l_format_code)
558       LOOP
559 
560           l_format_meaning  := i.meaning;
561 
562       END LOOP;
563 
564 
565       -- Get char value in date format
566       l_User_Pref_Date      := To_Date (l_value,l_mask_format );
567 
568 
569       l_User_Pref_Date_val  := To_Char(l_User_Pref_Date,l_mask_format);
570       --Dbms_Output.put_line(' Value in user preferred date format:'||l_User_Pref_Date_val);
571 
572 
573 
574 
575       IF l_User_Pref_Date_val <> l_value THEN
576 
577           --Dbms_Output.put_line(' Date is not entered in user preferred format ');
578           l_return_status := G_RET_STS_ERROR;
579 
580           IF p_format_code IN (G_DATE_DATA_TYPE) THEN --,G_DATE_TIME_DATA_TYPE) THEN
581 
582                 l_error_message_name          := 'EGO_EF_DATE_INT_NAME_ERR';
583 
584                 l_token_table(1).TOKEN_NAME   := 'FORMAT_MEANING';
585                 l_token_table(1).TOKEN_VALUE  := l_format_meaning;
586 
587                 l_token_table(2).TOKEN_NAME   := 'DATE_EXAMPLE';
588                 l_token_table(2).TOKEN_VALUE  := To_Char(SYSDATE,l_mask_format) ;
589 
590 
591 
592                 ERROR_HANDLER.Add_Error_Message(
593                   p_message_name                   => l_error_message_name
594                   ,p_application_id                => G_App_Short_Name
595                   ,p_token_tbl                     => l_token_table
596                   ,p_message_type                  => G_RET_STS_ERROR
597                   ,p_row_identifier                => l_transaction_id
598                   ,p_entity_code                   => l_entity_code
599                   ,p_table_name                    => l_table_name
600                 );
601 
602                 l_token_table.DELETE;
603 
604 
605           END IF;
606 
607 
608 
609           IF p_format_code IN (G_DATE_TIME_DATA_TYPE) THEN
610 
611                 l_error_message_name          := 'EGO_EF_DATE_TIME_INT_NAME_ERR';
612                 -- Set process_status to 3
613                 l_token_table(1).TOKEN_NAME   := 'FORMAT_MEANING';
614                 l_token_table(1).TOKEN_VALUE  := l_format_meaning;
615 
616                 l_token_table(2).TOKEN_NAME   := 'DATE_EXAMPLE';
617                 l_token_table(2).TOKEN_VALUE  := To_Char(SYSDATE,l_mask_format) ;
618 
619 
620 
621                 ERROR_HANDLER.Add_Error_Message(
622                   p_message_name                   => l_error_message_name
623                   ,p_application_id                => G_App_Short_Name
624                   ,p_token_tbl                     => l_token_table
625                   ,p_message_type                  => G_RET_STS_ERROR
626                   ,p_row_identifier                => l_transaction_id
627                   ,p_entity_code                   => l_entity_code
628                   ,p_table_name                    => l_table_name
629                 );
630 
631                 l_token_table.DELETE;
632 
633           END IF;
634 
635       END IF;
636       */
637 
638 
639 
640 
641       --Dbms_Output.put_line(' Calling Is_Valid_Date API .');
642       l_valid_type  := Is_Valid_Date (l_value);
643       --Dbms_Output.put_line(' Call to Is_Valid_Date API is done. Value of l_valid_type =.'||l_valid_type);
644 
645       -- For a Date type VS, length should not be greater than 11.
646 
647              --
648              -- Bug 12394675. Issue #6. Date sync-ing was erroring out.
649              -- Source always stores the DATE type with time format.
650              -- So trunc time format if the length is more than 11.
651              -- sreharih. Tue Apr 26 15:44:49 PDT 2011
652              --
653 
654       IF  l_format_code =  G_DATE_DATA_TYPE THEN
655 
656           IF Length(l_value) >11 THEN
657               p_value := trim(substr(trim(p_value),1,11)); -- bug 12394675
658               l_value := p_value;  -- bug 12394675
659               --l_valid_type := 1;
660 
661           END IF;
662 
663       END IF;
664 
665 
666       IF  l_valid_type = 1 THEN
667 
668         --Dbms_Output.put_line(' Date format is not valid format.');
669 
670         IF  l_format_code =  G_DATE_DATA_TYPE THEN
671 
672           l_error_message_name          := 'EGO_EF_DATE_INT_NAME_ERR';
673 
674           l_token_table(1).TOKEN_NAME   := 'FORMAT_MEANING';
675           l_token_table(1).TOKEN_VALUE  := G_DATE_FORMAT;
676 
677           l_token_table(2).TOKEN_NAME   := 'DATE_EXAMPLE';
678           l_token_table(2).TOKEN_VALUE  := To_Char(SYSDATE,'YYYY-MM-DD') ;
679 
680 
681         ELSIF l_format_code =  G_DATE_TIME_DATA_TYPE THEN
682 
683           l_error_message_name          := 'EGO_EF_DATE_TIME_INT_NAME_ERR';
684 
685           l_token_table(1).TOKEN_NAME   := 'FORMAT_MEANING';
686           l_token_table(1).TOKEN_VALUE  := G_DATETIME_FORMAT;
687           l_token_table(2).TOKEN_NAME   := 'DATE_EXAMPLE';
688           l_token_table(2).TOKEN_VALUE  := To_Char(SYSDATE,'YYYY-MM-DD') ;
689 
690         END IF ; -- END IF  l_format_code =  G_DATE_DATA_TYPE THEN
691 
692         --Log error
693         l_return_status               := G_RET_STS_ERROR;
694 
695 
696         ERROR_HANDLER.Add_Error_Message(
697           p_message_name                   => l_error_message_name
701           ,p_row_identifier                => l_transaction_id
698           ,p_application_id                => G_App_Short_Name
699           ,p_token_tbl                     => l_token_table
700           ,p_message_type                  => G_RET_STS_ERROR
702           ,p_entity_code                   => l_entity_code
703           ,p_table_name                    => l_table_name);
704 
705         l_token_table.DELETE;
706 
707 
708       END IF;-- END F  l_valid_num = 1 THEN
709 
710       l_valid_type :=NULL;
711 
712 
713 
714 
715 
716 
717       IF l_return_status IS NULL THEN
718 
719             l_return_status := G_RET_STS_SUCCESS;
720 
721       END IF;
722 
723 
724 
725       x_return_status := l_return_status;
726       write_debug(G_PKG_Name,l_api_name,' End of API. ');
727       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API. ');
728 
729 
730   EXCEPTION
731       WHEN OTHERS THEN
732 
733             write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
734             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
735 
736             x_return_status := G_RET_STS_UNEXP_ERROR;
737             x_return_msg    := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
738 
739 
740   END;
741 
742 
743 
744 
745 
746   ---------------------------------------------------------------------------------
747   -- Check if passed in parameter is in valid number format
748   ---------------------------------------------------------------------------------
749   FUNCTION Is_Valid_Number( p_user_num IN   VARCHAR2)
750     RETURN NUMBER
751 
752   IS
753 
754     l_api_name    VARCHAR2(100) := 'Is_Valid_Number';
755 
756   BEGIN
757 
758       write_debug(G_PKG_Name,l_api_name,' Start of API ');
759       --Dbms_Output.put_line(G_PKG_Name||' Start of API  ');
760 
761       -- Return '1' is input is not in number format
762       IF NOT REGEXP_LIKE(p_user_num, '^[0-9]+$')  THEN
763         RETURN (1);
764 
765       ELSE
766         RETURN (0);
767 
768       END IF;
769 
770       write_debug(G_PKG_Name,l_api_name,' End of API ');
771       --Dbms_Output.put_line(G_PKG_Name||' End of API  ');
772 
773 
774   EXCEPTION
775       WHEN OTHERS THEN
776       RETURN (1);
777 
778   END;
779 
780 
781 
782 
783 
784   -----------------------------------------------
785   --  API  Get_Effective_Version_Date          --
786   -----------------------------------------------
787   PROCEDURE Get_Effective_Version_Date (  p_value_set_id          IN         NUMBER,
788                                           p_version_seq_id        IN         NUMBER,
789                                           x_start_active_date     OUT NOCOPY DATE,
790                                           x_end_active_date       OUT NOCOPY DATE
791                                         )
792   IS
793 
794       l_value_set_id    NUMBER        :=  p_value_set_id;
795       l_version_seq_id  NUMBER        :=  p_version_seq_id;
796       l_api_name        VARCHAR2(100) := 'Get_Effective_Version_Date';
797 
798       CURSOR Cur_Version_date
799       IS
800       SELECT start_active_date, end_active_date
801       FROM ego_flex_valueset_version_b
802       WHERE flex_value_set_id = l_value_set_id
803         AND version_seq_id  = l_version_seq_id;
804 
805 
806   BEGIN
807 
808       write_debug(G_PKG_Name,l_api_name,' Start of API  ');
809 
810       FOR i IN Cur_version_date
811       LOOP
812         x_start_active_date :=  i.start_active_date;
813         x_end_active_date   :=  i.end_active_date;
814       END LOOP;
815 
816       write_debug(G_PKG_Name,l_api_name,' End of API  ');
817 
818   EXCEPTION
819       WHEN OTHERS THEN
820 
821           write_debug(G_PKG_Name,l_api_name,' In exception part  '||SQLERRM);
822           x_start_active_date :=  NULL;
823           x_end_active_date   :=  NULL;
824 
825   END Get_Effective_Version_Date;
826 
827 
828 
829 
830 
831 
832 
833 
834 
835   ---------------------------------------------------------------------------------
836   -- Procedure to validate child VS.
837   ---------------------------------------------------------------------------------
838   PROCEDURE Validate_Child_Value_Set (
839                                       p_value_set_name      IN    VARCHAR2,
840                                       p_value_set_id        IN    NUMBER,
841                                       p_validation_code     IN    VARCHAR2,
842                                       p_longlist_flag       IN    VARCHAR2,
843                                       p_format_code         IN    VARCHAR2,
844                                       p_version_seq_id      IN    NUMBER,
845                                       p_transaction_id      IN    NUMBER,
846                                       x_return_status      OUT NOCOPY VARCHAR2,
847                                       x_return_msg         OUT NOCOPY VARCHAR2)
848 
849   IS
850 
851           l_api_name            VARCHAR2(100) := 'Validate_Child_Value_Set';
852           l_value_set_name      VARCHAR2(100) :=  p_value_set_name;
853           l_value_set_id        NUMBER        :=  p_value_set_id;
857           l_version_seq_id      NUMBER        :=  p_version_seq_id;
854           l_validation_code     VARCHAR2(1)   :=  p_validation_code;
855           l_longlist_flag       VARCHAR2(1)   :=  p_longlist_flag;
856           l_format_code         VARCHAR2(1)   :=  p_format_code;
858           l_transaction_id      NUMBER        :=  p_transaction_id;
859 
860           /* Local variable to be used in error handling mechanism*/
861           l_entity_code         VARCHAR2(40)  :=  G_ENTITY_CHILD_VS;
862           l_table_name          VARCHAR2(240) :=  G_ENTITY_VS_HEADER_TAB;
863           l_application_id      NUMBER        :=  G_Application_Id;
864 
865           l_token_table         ERROR_HANDLER.Token_Tbl_Type;
866           l_error_message_name  VARCHAR2(500);
867           l_return_status       VARCHAR2(1)   := G_RET_STS_SUCCESS;
868 
869 
870   BEGIN
871 
872           write_debug(G_PKG_Name,l_api_name,' Start of API. ');
873           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API. ');
874 
875 
876           -- Validation code validation
877           IF l_validation_code NOT IN (G_TABLE_VALIDATION_CODE) THEN
878 
879 
880 
881               write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS,VS Id)=('
882                                           ||l_value_set_name||','||l_value_set_id||')'||' A child value set should be of table type. ');
883 
884 
885 
886 
887               l_return_status               := G_RET_STS_ERROR;
888               l_error_message_name          := 'EGO_CHILD_VS_VALIDATION_ERROR';
889 
890               l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
891               l_token_table(1).TOKEN_VALUE  := l_value_set_name;
892 
893               l_token_table(2).TOKEN_NAME   := 'VALUE_SET_ID';
894               l_token_table(2).TOKEN_VALUE  := l_value_set_id;
895 
896 
897               ERROR_HANDLER.Add_Error_Message(
898                 p_message_name                   => l_error_message_name
899                 ,p_application_id                => G_App_Short_Name
900                 ,p_token_tbl                     => l_token_table
901                 ,p_message_type                  => G_RET_STS_ERROR
902                 ,p_row_identifier                => l_transaction_id
903                 ,p_entity_code                   => G_ENTITY_CHILD_VS
904                 ,p_table_name                    => G_ENTITY_VS_HEADER_TAB
905               );
906 
907               -- Set process_status to 3
908 
909               l_token_table.DELETE;
910 
911 
912           END IF;
913 
914 
915 
916 
917 
918 
919           -- Version validation
920           IF  l_version_seq_id IS NOT NULL THEN
921 
922               write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS,VS Id)=('
923                                           ||l_value_set_name||','||l_value_set_id||')'||' A child value set can not be a versioned value set.');
924 
925 
926 
927               l_error_message_name          := 'EGO_TABLE_VS_VERSION_ERROR';
928               l_return_status               := G_RET_STS_ERROR;
929 
930               l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
931               l_token_table(1).TOKEN_VALUE  := l_value_set_name;
932 
933 
934               ERROR_HANDLER.Add_Error_Message(
935                 p_message_name                  => l_error_message_name
936                 ,p_application_id                => G_App_Short_Name
937                 ,p_token_tbl                     => l_token_table
938                 ,p_message_type                  => G_RET_STS_ERROR
939                 ,p_row_identifier                => l_transaction_id
940                 ,p_entity_code                   => l_entity_code
941                 ,p_table_name                    => l_table_name
942               );
943 
944               l_token_table.DELETE;
945 
946           END IF; --IF  l_validation_code = G_TABLE_VALIDATION_CODE THEN
947 
948 
949 
950           -- Check for Longlist Flag
951           IF l_longlist_flag NOT IN (G_LOV_LONGLIST_FLAG,G_POPLIST_LONGLIST_FLAG)  THEN
952 
953 
954 
955               write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS,VS Id)=('
956                                           ||l_value_set_name||','||l_value_set_id||')'||' A child value set does not have valid longlist flag. ');
957 
958 
959               l_error_message_name          := 'EGO_VSET_LONGLIST_ERROR';
960               l_return_status               := G_RET_STS_ERROR;
961 
962               l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
963               l_token_table(1).TOKEN_VALUE  := l_value_set_name;
964 
965 
966               ERROR_HANDLER.Add_Error_Message(
967                 p_message_name                  => l_error_message_name
968                 ,p_application_id                => G_App_Short_Name
969                 ,p_token_tbl                     => l_token_table
970                 ,p_message_type                  => G_RET_STS_ERROR
971                 ,p_row_identifier                => l_transaction_id
972                 ,p_entity_code                   => l_entity_code
973                 ,p_table_name                    => l_table_name
974               );
975 
976               l_token_table.DELETE;
977 
978           END IF;
979 
980 
981 
982           -- Check for Date Type
983           IF l_format_code NOT IN (G_CHAR_DATA_TYPE,G_NUMBER_DATA_TYPE,G_DATE_DATA_TYPE, G_DATE_TIME_DATA_TYPE)  THEN
984 
985 
986               write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS,VS Id)=('
990               l_error_message_name          := 'EGO_VSET_DATA_TYPE_ERROR';
987                           ||l_value_set_name||','||l_value_set_id||')'||' A child value set does not have valid data type. ');
988 
989 
991               l_return_status               := G_RET_STS_ERROR;
992 
993 
994               l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
995               l_token_table(1).TOKEN_VALUE  := l_value_set_name;
996 
997 
998               ERROR_HANDLER.Add_Error_Message(
999                 p_message_name                  => l_error_message_name
1000                 ,p_application_id                => G_App_Short_Name
1001                 ,p_token_tbl                     => l_token_table
1002                 ,p_message_type                  => G_RET_STS_ERROR
1003                 ,p_row_identifier                => l_transaction_id
1004                 ,p_entity_code                   => l_entity_code
1005                 ,p_table_name                    => l_table_name
1006               );
1007 
1008               l_token_table.DELETE;
1009 
1010           END IF;
1011 
1012 
1013 
1014           IF l_return_status IS NULL THEN
1015 
1016                 l_return_status := G_RET_STS_SUCCESS;
1017 
1018           END IF;
1019           x_return_status := l_return_status;
1020 
1021 
1022           write_debug(G_PKG_Name,l_api_name,' End of API. ');
1023           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API. ');
1024 
1025   EXCEPTION
1026       WHEN OTHERS THEN
1027 
1028           write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
1029           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
1030 
1031           x_return_status := G_RET_STS_UNEXP_ERROR;
1032           x_return_msg    := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
1033           RETURN;
1034 
1035 
1036   END Validate_Child_Value_Set;
1037 
1038 
1039 
1040 
1041 
1042 
1043   ---------------------------------------------------------------------------------
1044   -- Procedure to validate table type VS.
1045   ---------------------------------------------------------------------------------
1046   PROCEDURE Validate_Table_Value_Set (
1047                                       p_value_set_name            IN    VARCHAR2,
1048                                       p_value_set_id              IN    NUMBER,
1049                                       p_format_code               IN    VARCHAR2,
1050 
1051                                       p_application_table_name    IN    VARCHAR2,
1052                                       p_additional_where_clause   IN    VARCHAR2  DEFAULT NULL,
1053 
1054                                       p_value_column_name         IN    VARCHAR2,
1055                                       p_value_column_type         IN    VARCHAR2,
1056                                       p_value_column_size         IN    NUMBER,
1057 
1058                                       p_id_column_name            IN    VARCHAR2  DEFAULT NULL ,
1059                                       p_id_column_type            IN    VARCHAR2  DEFAULT NULL ,
1060                                       p_id_column_size            IN    NUMBER    DEFAULT NULL ,
1061 
1062                                       p_meaning_column_name       IN    VARCHAR2  DEFAULT NULL ,
1063                                       p_meaning_column_type       IN    VARCHAR2  DEFAULT NULL ,
1064                                       p_meaning_column_size       IN    NUMBER    DEFAULT NULL ,
1065 
1066                                       p_transaction_id      IN    NUMBER,
1067                                       x_return_status      OUT NOCOPY VARCHAR2,
1068                                       x_return_msg         OUT NOCOPY VARCHAR2)
1069 
1070   IS
1071 
1072         l_api_name                VARCHAR2(100) := 'Validate_Table_Value_Set';
1073         l_value_set_name          VARCHAR2(100) :=  p_value_set_name;
1074         l_value_set_id            NUMBER        :=  p_value_set_id;
1075 
1076         l_application_table_name  VARCHAR2(240) :=  p_application_table_name;
1077         l_additional_where_clause VARCHAR2(240) :=  p_additional_where_clause;
1078         l_value_column_name       VARCHAR2(240) :=  p_value_column_name;
1079         l_value_column_type       VARCHAR2(1)   :=  p_value_column_type;
1080         l_value_column_size       NUMBER        :=  p_value_column_size;
1081 
1082 
1083         l_id_column_name          VARCHAR2(240) :=  p_id_column_name;
1084         l_id_column_type          VARCHAR2(1)   :=  p_id_column_type;
1085         l_id_column_size          NUMBER        :=  p_id_column_size;
1086 
1087         l_meaning_column_name     VARCHAR2(240) :=  p_meaning_column_name;
1088         l_meaning_column_type     VARCHAR2(1)   :=  p_meaning_column_type;
1089         l_meaning_column_size     NUMBER        :=  p_meaning_column_size;
1090 
1091 
1092         /* Local variable to be used in error handling mechanism*/
1093         l_entity_code         VARCHAR2(40)      :=  G_ENTITY_VS;
1094         l_table_name          VARCHAR2(240)     :=  G_ENTITY_VS_HEADER_TAB;
1095         l_transaction_id        NUMBER            :=  p_transaction_id;
1096         l_application_id      NUMBER            :=  G_Application_Id;
1097 
1098         l_return_status       VARCHAR2(1)       := G_RET_STS_SUCCESS;
1099 
1100         l_token_table         ERROR_HANDLER.Token_Tbl_Type;
1101         l_error_message_name  VARCHAR2(500);
1102         l_tab_exist           NUMBER            :=  NULL;
1103         l_col_exist           NUMBER            :=  NULL;
1104 
1105         l_cols                VARCHAR2(1000)    :=  NULL;
1106         l_where_clause        VARCHAR2(2000)    :=  NULL;
1107         l_sql                 VARCHAR2(2000)    :=  NULL;
1108 
1112         IS
1109 
1110 
1111         /*CURSOR Cur_Tab_Exist(cp_application_table_name VARCHAR2)
1113         SELECT 1 AS tab_exist
1114         FROM all_objects
1115         WHERE object_name =Upper(l_application_table_name)
1116           AND object_type IN ('VIEW','SYNONYM','TABLE');
1117 
1118 
1119         CURSOR Cur_Col_Exist( cp_application_table_name VARCHAR2,
1120                               cp_value_column_name      VARCHAR2 )
1121         IS
1122         SELECT 1 AS col_exist
1123         FROM all_tab_columns
1124         WHERE TABLE_NAME    =   Upper(l_application_table_name)
1125             AND COLUMN_NAME =   Upper(l_value_column_name);
1126 
1127         */
1128 
1129 
1130   BEGIN
1131 
1132           write_debug(G_PKG_Name,l_api_name,' Start of API. ');
1133           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API. ');
1134 
1135           IF p_format_code IN (G_CHAR_DATA_TYPE,G_NUMBER_DATA_TYPE ) THEN
1136 
1137                 IF  l_value_column_type <> p_format_code THEN
1138 
1139                     write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS,VS Id)=('
1140                                                 ||l_value_set_name||','||l_value_set_id||')'||' The Data Type of the Value Set and the Value Column do not match. 1 ');
1141 
1142                     l_error_message_name          := 'EGO_VS_VAL_DATA_TYPE_MISMATCH';
1143                     l_return_status               := G_RET_STS_ERROR;
1144 
1145                     ERROR_HANDLER.Add_Error_Message(
1146                       p_message_name                  => l_error_message_name
1147                       ,p_application_id                => G_App_Short_Name
1148                       ,p_token_tbl                     => l_token_table
1149                       ,p_message_type                  => G_RET_STS_ERROR
1150                       ,p_row_identifier                => l_transaction_id
1151                       ,p_entity_code                   => l_entity_code
1152                       ,p_table_name                    => l_table_name
1153                     );
1154 
1155                 END IF; --
1156 
1157 
1158 
1159                 IF  l_id_column_type  IS NOT NULL THEN
1160                     IF  l_id_column_type <> p_format_code THEN
1161 
1162                         write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS,VS Id)=('
1163                                                     ||l_value_set_name||','||l_value_set_id||')'||' The Data Type of the Value Set and the Id Column do not match. 2');
1164 
1165                         l_error_message_name          := 'EGO_VS_VAL_DATA_TYPE_MISMATCH';
1166                         l_return_status               := G_RET_STS_ERROR;
1167 
1168                         ERROR_HANDLER.Add_Error_Message(
1169                           p_message_name                  => l_error_message_name
1170                           ,p_application_id                => G_App_Short_Name
1171                           ,p_token_tbl                     => l_token_table
1172                           ,p_message_type                  => G_RET_STS_ERROR
1173                           ,p_row_identifier                => l_transaction_id
1174                           ,p_entity_code                   => l_entity_code
1175                           ,p_table_name                    => l_table_name
1176                         );
1177 
1178                     END IF; --
1179 
1180                 END IF;
1181 
1182           END IF; -- END IF p_format_code IN (G_CHAR_DATA_TYPE,G_NUMBER_DATA_TYPE ) THEN
1183 
1184 
1185           -- Bug 9702862
1186           IF p_format_code IN (G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE) THEN
1187 
1188                 IF  l_value_column_type <> G_COL_DATE_DATA_TYPE THEN
1189 
1190                     write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS,VS Id)=('
1191                                                 ||l_value_set_name||','||l_value_set_id||')'||' The Data Type of the Value Set and the Value Column do not match. 3');
1192 
1193                     l_error_message_name          := 'EGO_VS_VAL_DATA_TYPE_MISMATCH';
1194                     l_return_status               := G_RET_STS_ERROR;
1195 
1196                     ERROR_HANDLER.Add_Error_Message(
1197                       p_message_name                  => l_error_message_name
1198                       ,p_application_id                => G_App_Short_Name
1199                       ,p_token_tbl                     => l_token_table
1200                       ,p_message_type                  => G_RET_STS_ERROR
1201                       ,p_row_identifier                => l_transaction_id
1202                       ,p_entity_code                   => l_entity_code
1203                       ,p_table_name                    => l_table_name
1204                     );
1205 
1206                 END IF; --
1207 
1208 
1209 
1210                 IF  l_id_column_type  IS NOT NULL THEN
1211                     IF  l_id_column_type <> G_COL_DATE_DATA_TYPE THEN
1212 
1213                         write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS,VS Id)=('
1214                                                     ||l_value_set_name||','||l_value_set_id||')'||' The Data Type of the Value Set and the Id Column do not match. 4');
1215 
1216                         l_error_message_name          := 'EGO_VS_VAL_DATA_TYPE_MISMATCH';
1217                         l_return_status               := G_RET_STS_ERROR;
1218 
1219                         ERROR_HANDLER.Add_Error_Message(
1220                           p_message_name                  => l_error_message_name
1221                           ,p_application_id                => G_App_Short_Name
1222                           ,p_token_tbl                     => l_token_table
1226                           ,p_table_name                    => l_table_name
1223                           ,p_message_type                  => G_RET_STS_ERROR
1224                           ,p_row_identifier                => l_transaction_id
1225                           ,p_entity_code                   => l_entity_code
1227                         );
1228 
1229                     END IF; --
1230 
1231                 END IF;
1232 
1233           END IF; -- END IF p_format_code IN (G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE ) THEN
1234 
1235 
1236 
1237 
1238 
1239           ---
1240           --- bug 12650716
1241           --- changed validation to include G_COL_DATE_DATA_TYPE instead of G_DATE_DATA_TYPE
1242           ---
1243           IF  l_meaning_column_type  IS NOT NULL THEN
1244               IF  l_meaning_column_type NOT IN (G_CHAR_DATA_TYPE,G_NUMBER_DATA_TYPE ,G_COL_DATE_DATA_TYPE) THEN
1245 
1246                   write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS,VS Id)=('
1247                                               ||l_value_set_name||','||l_value_set_id||')'||' The Data Type of the Value Set and the meaning Column do not match. 5');
1248 
1249                   l_error_message_name          := 'EGO_VS_VAL_DATA_TYPE_MISMATCH';
1250                   l_return_status               := G_RET_STS_ERROR;
1251 
1252                   ERROR_HANDLER.Add_Error_Message(
1253                     p_message_name                  => l_error_message_name
1254                     ,p_application_id                => G_App_Short_Name
1255                     ,p_token_tbl                     => l_token_table
1256                     ,p_message_type                  => G_RET_STS_ERROR
1257                     ,p_row_identifier                => l_transaction_id
1258                     ,p_entity_code                   => l_entity_code
1259                     ,p_table_name                    => l_table_name
1260                   );
1261 
1262               END IF; --
1263 
1264           END IF;
1265 
1266 
1267 
1268 
1269           IF ( l_application_table_name IS NOT NULL OR l_value_column_name IS NOT NULL
1270                 OR l_additional_where_clause IS NOT NULL )  THEN
1271 
1272 
1273                   BEGIN
1274 
1275                         l_cols :=l_value_column_name;
1276 
1277                         IF l_id_column_name IS NOT NULL THEN
1278 
1279                             l_cols :=l_cols||','||l_id_column_name;
1280 
1281                         END IF;
1282 
1283 
1284                         IF l_meaning_column_name IS NOT NULL THEN
1285 
1286                             l_cols :=l_cols||','||l_meaning_column_name;
1287 
1288                         END IF;
1289 
1290                         ---
1291                         --- bug 12640054 if WHERE clause contains special substitutions like
1292                         --- :$ATTRIBUTEGROUP or :$INVENTORY_ITEM_ID etc .. then do not validate the
1293                         --- WHERE clause as part of SQL, behaviour same as UI
1294                         ---
1295                         IF  l_additional_where_clause IS NOT NULL
1296                             AND
1297                             InStr(l_additional_where_clause, ':$') = 0
1298 
1299                             THEN
1300 
1301                             IF ( ( InStr(  Upper(LTrim(RTrim(l_additional_where_clause))), 'WHERE ' ) <> 1  )  AND  ( InStr(  Upper(LTrim(RTrim(l_additional_where_clause))), 'ORDER ' ) <> 1  ) )  THEN
1302 
1303                                 l_where_clause := ' WHERE '||l_additional_where_clause;
1304 
1305                             ELSE
1306                                 l_where_clause := l_additional_where_clause;
1307 
1308                             END IF;
1309                         ELSIF l_additional_where_clause IS NOT NULL
1310                             AND
1311                             InStr(l_additional_where_clause, ':$') <> 0 THEN
1312                               l_where_clause := NULL;
1313                         END IF;
1314 
1315                         l_sql := 'SELECT '||l_cols||' FROM '||l_application_table_name||' '||l_where_clause;
1316 
1317                         write_debug(G_PKG_Name,l_api_name, ' Prepared sql for table validation '||l_sql);
1318                         --Dbms_Output.put_line(G_PKG_Name||','||l_api_name||' Prepared sql for table validation '||l_sql);
1319 
1320                         EXECUTE IMMEDIATE l_sql;
1321 
1322 
1323                   EXCEPTION
1324                       WHEN OTHERS THEN
1325 
1326                             write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS,VS Id)=('
1327                                                         ||l_value_set_name||','||l_value_set_id||')'
1328                                                         ||' Value Set is defined incorrectly. Please contact a system administrator to set up the Value Set correctly. Table Name : '
1329                                                         ||l_application_table_name||' Value Col Name : '||l_value_column_name);
1330 
1331                             l_error_message_name          := 'EGO_VS_TABLE_SETUP_ERROR';
1332                             l_return_status               := G_RET_STS_ERROR;
1333 
1334                             ERROR_HANDLER.Add_Error_Message(
1335                               p_message_name                  => l_error_message_name
1336                               ,p_application_id                => G_App_Short_Name
1337                               ,p_token_tbl                     => l_token_table
1338                               ,p_message_type                  => G_RET_STS_ERROR
1339                               ,p_row_identifier                => l_transaction_id
1340                               ,p_entity_code                   => l_entity_code
1341                               ,p_table_name                    => l_table_name);
1342 
1343                   END;
1344 
1345 
1346           END IF;
1347 
1348 
1349 
1350           IF l_return_status IS NULL THEN
1351 
1352                 l_return_status := G_RET_STS_SUCCESS;
1353 
1354           END IF;
1355           x_return_status := l_return_status;
1356 
1357 
1358           write_debug(G_PKG_Name,l_api_name,' End of API. ');
1359           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API. ');
1360 
1361   EXCEPTION
1362       WHEN OTHERS THEN
1363 
1364           write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
1365           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
1366 
1367           x_return_status := G_RET_STS_UNEXP_ERROR;
1368           x_return_msg    := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
1369           RETURN;
1370 
1371 
1372   END Validate_Table_Value_Set;
1373 
1374 
1375 
1376 
1377 
1378 
1379 
1380 ---------------------------------------------------------------------------------
1381 -- Procedure to resolve transaction type for a entity.
1382 ---------------------------------------------------------------------------------
1383 PROCEDURE Resolve_Transaction_Type
1384               ( p_set_process_id    IN          NUMBER,
1385                 x_return_status     OUT NOCOPY  VARCHAR2,
1386                 x_return_msg        OUT NOCOPY  VARCHAR2
1387               )
1388 
1389 IS
1390   l_set_process_id  NUMBER(15,0)    := p_set_process_id;
1391   l_api_name        VARCHAR2(100)   := 'Resolve_Transaction_Type';
1392 
1393 BEGIN
1394 
1395   write_debug(G_PKG_Name,l_api_name,' Start of API  ');
1396   --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API  ');
1397   ---------------------------------------------------
1398   -- Update transaction type for value set inteface table.
1399   ---------------------------------------------------
1400 
1401   -- Create Mode Value Set
1402   UPDATE Ego_Flex_Value_Set_Intf efvsi
1403   SET efvsi.transaction_type= G_CREATE,
1404       efvsi.last_updated_by = g_user_id,
1405       efvsi.last_update_date = SYSDATE,
1406       efvsi.last_update_login = g_login_id
1407   WHERE (p_set_process_id IS NULL
1408           OR set_process_id = p_set_process_id
1409         )
1410     AND NOT EXISTS
1411     (
1412       SELECT 1
1413       FROM fnd_flex_value_sets  ffvs
1414       WHERE ffvs.flex_value_set_name = efvsi.value_set_name
1415     )
1416     AND Upper(efvsi.transaction_type) =G_SYNC;
1417 
1418 
1419   -- Update Mode Value Set
1420   UPDATE Ego_Flex_Value_Set_Intf efvsi
1421   SET efvsi.transaction_type= G_UPDATE,
1422       efvsi.last_updated_by = g_user_id,
1423       efvsi.last_update_date = SYSDATE,
1424       efvsi.last_update_login = g_login_id
1425   WHERE (p_set_process_id IS NULL
1426           OR set_process_id = p_set_process_id
1427         )
1428     AND EXISTS
1429     (
1430       SELECT 1
1431       FROM fnd_flex_value_sets  ffvs
1432       WHERE ffvs.flex_value_set_name = efvsi.value_set_name
1433     )
1434     AND Upper(efvsi.transaction_type) =G_SYNC;
1435 
1436 
1437 
1438 
1439 
1440   ---------------------------------------------------
1441   -- Update transaction type for value inteface table.
1442   ---------------------------------------------------
1443 
1444   -- Create Mode Value.
1445   UPDATE Ego_Flex_Value_Intf evsvi
1446   SET evsvi.transaction_type= G_CREATE,
1447       evsvi.last_updated_by = g_user_id,
1448       evsvi.last_update_date = SYSDATE,
1449       evsvi.last_update_login = g_login_id
1450 
1451   WHERE (p_set_process_id IS NULL
1452           OR set_process_id = p_set_process_id
1453         )
1454     AND NOT EXISTS --evsvi.flex_value NOT IN
1455     (
1456       SELECT flex_value
1457       FROM fnd_flex_value_sets FVS,
1458            fnd_flex_values FVSV
1459            --Ego_Flex_Value_Set_Intf EVS
1460       WHERE fvs.flex_value_set_id= fvsv.flex_value_set_id
1461         AND fvs.flex_value_set_name = evsvi.value_set_name
1462         --AND evs.value_set_name = evsv.value_set_name
1463 
1464     )
1465     AND Upper(transaction_type) =G_SYNC;
1466 
1467   -- Update Mode Value.
1468   UPDATE Ego_Flex_Value_Intf EVSV
1469   SET EVSV.transaction_type= G_UPDATE ,
1470       last_updated_by = g_user_id,
1471       last_update_date = SYSDATE,
1472       last_update_login = g_login_id
1473 
1474       --flex_value_id = fvsv.flex_value_id  --?
1475   WHERE (p_set_process_id IS NULL
1476           OR EVSV.set_process_id = p_set_process_id
1477         )
1478     AND EVSV.flex_value IN
1479     (
1480       SELECT FVSV.flex_value
1481       FROM fnd_flex_value_sets FVS,
1482            fnd_flex_values FVSV
1483            --Ego_Flex_Value_Set_Intf EVS
1484       WHERE fvs.flex_value_set_id= fvsv.flex_value_set_id
1485         AND fvs.flex_value_set_name = evsv.value_set_name
1486         --AND evs.value_set_name = evsv.value_set_name
1487 
1488     )
1489     AND Upper(EVSV.transaction_type) =G_SYNC;
1490 
1491 
1492 
1493 
1494   ---------------------------------------------------
1495   -- Update transaction type for translatable value inteface table.
1496   ---------------------------------------------------
1497 
1498   -- Create Mode translatable values.
1499   UPDATE Ego_Flex_Value_Tl_Intf EVSTV
1500   SET transaction_type= G_CREATE
1501   WHERE (p_set_process_id IS NULL
1502           OR set_process_id = p_set_process_id
1503         )
1504     AND flex_value NOT IN
1505     (
1506       SELECT fvsv.flex_value
1507       FROM fnd_flex_value_sets FVS,
1508            fnd_flex_values    FVSV,
1509            fnd_flex_values_tl FVSTV,
1510            Ego_Flex_Value_Set_Intf EVS,
1511            Ego_Flex_Value_Intf EVSV
1512       WHERE fvs.flex_value_set_id= fvsv.flex_value_set_id
1513         AND fvsv.flex_value_id= fvstv.flex_value_id
1514         AND fvs.flex_value_set_name = EVSTV.value_set_name
1515         AND evs.value_set_name= EVSV.value_set_name
1516         AND EVSV.flex_value= EVSTV.flex_value
1517 
1518     )
1519     AND Upper(transaction_type) =G_SYNC;
1520 
1521 
1522   -- Update Mode translatable values.
1523   UPDATE Ego_Flex_Value_Tl_Intf EVSTV
1524   SET transaction_type= G_UPDATE,
1525       last_updated_by = g_user_id,
1526       last_update_date = SYSDATE,
1527        last_update_login = g_login_id
1528 
1529       --flex_value_id= fvsv.flex_value_id --?
1530   WHERE (p_set_process_id IS NULL
1531           OR EVSTV.set_process_id = p_set_process_id
1532         )
1533     AND EVSTV.flex_value IN
1534     (
1535       SELECT fvsv.flex_value
1536       FROM fnd_flex_value_sets FVS,
1537            fnd_flex_values    FVSV,
1538            fnd_flex_values_tl FVSTV,
1539            Ego_Flex_Value_Set_Intf EVS
1540       WHERE fvs.flex_value_set_id= fvsv.flex_value_set_id
1541         AND fvsv.flex_value_id= fvstv.flex_value_id
1542         AND fvs.flex_value_set_name = evs.value_set_name
1543         AND evstv.flex_value= fvsv.flex_value
1544 
1545     )
1546     AND Upper(transaction_type) =G_SYNC;
1547 
1548   write_debug(G_PKG_Name,l_api_name,' End of API  ');
1549 
1550 EXCEPTION
1551   WHEN OTHERS THEN
1552     write_debug(G_PKG_Name,l_api_name,' In Exception part. Error '||SQLERRM);
1553     x_return_status := G_RET_STS_UNEXP_ERROR;
1554     x_return_msg := G_PKG_Name||'.'||l_api_name||'  - '||SQLERRM;
1555       RETURN;
1556 
1557 END Resolve_Transaction_Type;
1558 
1559 
1560 
1561 
1562 
1563 
1564 
1565   ---------------------------------------------------
1566   -- Procedure to validate transaction type
1567   ---------------------------------------------------
1568   PROCEDURE Validate_Transaction_Type
1569                 ( p_set_process_id    IN          NUMBER,
1570                   x_return_status     OUT NOCOPY  VARCHAR2,
1571                   x_return_msg        OUT NOCOPY  VARCHAR2
1572                 )
1573 
1574   IS
1575 
1576       l_api_name            VARCHAR2(100)   := 'Validate_Transaction_Type';
1577       l_set_process_id      NUMBER(15,0)    :=  p_set_process_id;
1578       l_err_message_name    VARCHAR2(50)    :=  'EGO_TRANS_TYPE_INVALID';
1579       l_err_message_text    VARCHAR2(500)   := fnd_message.get;
1580 
1581   BEGIN
1582       write_debug(G_PKG_Name,l_api_name,' Start of API  ');
1583       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API  ');
1584       ---------------------------------------------------
1585       -- Insert errored record for value Set inteface table.
1586       ---------------------------------------------------
1587 
1588       -- Insert record for invalida transaction type into error for table EGO_FLEX_VALUE_SET_INTF
1589       INSERT
1590       INTO
1591         MTL_INTERFACE_ERRORS
1592         (
1593           TRANSACTION_ID,
1594           UNIQUE_ID,
1595           ORGANIZATION_ID,
1596           COLUMN_NAME,
1597           TABLE_NAME,
1598           MESSAGE_NAME,
1599           ERROR_MESSAGE,
1600           bo_identifier,
1601           ENTITY_IDENTIFIER,
1602           LAST_UPDATE_DATE,
1603           LAST_UPDATED_BY,
1604           CREATION_DATE,
1605           CREATED_BY,
1606           LAST_UPDATE_LOGIN,
1607           REQUEST_ID,
1608           PROGRAM_APPLICATION_ID,
1609           PROGRAM_ID,
1610           PROGRAM_UPDATE_DATE
1611         )
1612       SELECT
1613         evsi.transaction_id,
1614         MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
1615         NULL,
1616         NULL,
1617         G_ENTITY_VS_HEADER_TAB,
1618         l_err_message_name,
1619         l_err_message_text,
1620         G_BO_IDENTIFIER_VS,
1621         G_ENTITY_VS,
1622         NVL(LAST_UPDATE_DATE, SYSDATE),
1623         NVL(LAST_UPDATED_BY, G_USER_ID),
1624         NVL(CREATION_DATE,SYSDATE),
1625         NVL(CREATED_BY, G_USER_ID),
1626         NVL(LAST_UPDATE_LOGIN, G_LOGIN_ID),
1627         G_REQUEST_ID,
1628         NVL(PROGRAM_APPLICATION_ID, G_PROG_APPL_ID),
1629         NVL(PROGRAM_ID, G_PROGRAM_ID),
1630         NVL(PROGRAM_UPDATE_DATE, sysdate)
1631       FROM Ego_Flex_Value_Set_Intf evsi
1632       WHERE (p_set_process_id IS NULL
1633               OR set_process_id = p_set_process_id
1634             )
1635         AND Upper(transaction_type) NOT IN (G_CREATE, G_UPDATE,G_SYNC)
1636         AND process_status=G_PROCESS_RECORD;
1637 
1638 
1639 
1640       -- Error out record for those where transaction_type NOT IN (G_CREATE,G_UPDATE)
1641       UPDATE Ego_Flex_Value_Set_Intf
1642       SET process_status=G_ERROR_RECORD
1643       WHERE (p_set_process_id IS NULL
1644               OR set_process_id = p_set_process_id
1645             )
1646         AND Upper(transaction_type) NOT IN (G_CREATE, G_UPDATE,G_SYNC);
1647 
1648 
1649 
1650 
1651       -- Insert record for invalida transaction type for table EGO_FLEX_VALUE_INTF
1652       INSERT
1653       INTO
1654         MTL_INTERFACE_ERRORS
1655         (
1656           TRANSACTION_ID,
1657           UNIQUE_ID,
1658           ORGANIZATION_ID,
1659           COLUMN_NAME,
1660           TABLE_NAME,
1661           MESSAGE_NAME,
1662           ERROR_MESSAGE,
1663           bo_identifier,
1664           ENTITY_IDENTIFIER,
1665           LAST_UPDATE_DATE,
1666           LAST_UPDATED_BY,
1667           CREATION_DATE,
1668           CREATED_BY,
1669           LAST_UPDATE_LOGIN,
1670           REQUEST_ID,
1671           PROGRAM_APPLICATION_ID,
1672           PROGRAM_ID,
1673           PROGRAM_UPDATE_DATE
1674         )
1675       SELECT
1676         evsvi.transaction_id,
1677         MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
1678         NULL,
1679         NULL,
1680         G_ENTITY_VAL_HEADER_TAB,
1681         l_err_message_name,
1682         l_err_message_text,
1683         G_BO_IDENTIFIER_VS,
1684         G_ENTITY_VS_VAL,
1685         NVL(LAST_UPDATE_DATE, SYSDATE),
1686         NVL(LAST_UPDATED_BY, G_USER_ID),
1687         NVL(CREATION_DATE,SYSDATE),
1688         NVL(CREATED_BY, G_USER_ID),
1689         NVL(LAST_UPDATE_LOGIN, G_LOGIN_ID),
1690         G_REQUEST_ID,
1691         NVL(PROGRAM_APPLICATION_ID, G_PROG_APPL_ID),
1692         NVL(PROGRAM_ID, G_PROGRAM_ID),
1693         NVL(PROGRAM_UPDATE_DATE, sysdate)
1694       FROM Ego_Flex_Value_Intf evsvi
1695       WHERE (p_set_process_id IS NULL
1696               OR set_process_id = p_set_process_id
1697             )
1698         AND Upper(transaction_type) NOT IN (G_CREATE, G_UPDATE,G_SYNC)
1699         AND process_status=G_PROCESS_RECORD;
1700 
1701 
1702       -- Set process_status for invalid transaction_type.
1703       UPDATE Ego_Flex_Value_Intf
1704       SET process_status=G_ERROR_RECORD
1705       WHERE (p_set_process_id IS NULL
1706               OR set_process_id = p_set_process_id
1707             )
1708         AND Upper(transaction_type) NOT IN (G_CREATE, G_UPDATE,G_SYNC);
1709 
1710 
1711 
1712 
1713       -- Insert record for invalida transaction type in EGO_FLEX_VALUE_TL_INTF
1714       INSERT
1715       INTO
1716         MTL_INTERFACE_ERRORS
1717         (
1718           TRANSACTION_ID,
1719           UNIQUE_ID,
1720           ORGANIZATION_ID,
1721           COLUMN_NAME,
1722           TABLE_NAME,
1723           MESSAGE_NAME,
1724           ERROR_MESSAGE,
1725           bo_identifier,
1726           ENTITY_IDENTIFIER,
1727           LAST_UPDATE_DATE,
1728           LAST_UPDATED_BY,
1729           CREATION_DATE,
1730           CREATED_BY,
1731           LAST_UPDATE_LOGIN,
1732           REQUEST_ID,
1733           PROGRAM_APPLICATION_ID,
1734           PROGRAM_ID,
1735           PROGRAM_UPDATE_DATE
1736         )
1737       SELECT
1738         evstvi.transaction_id,
1739         MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
1740         NULL,
1741         NULL,
1742         G_ENTITY_VAL_TL_HEADER_TAB,
1743         l_err_message_name,
1744         l_err_message_text,
1745         G_BO_IDENTIFIER_VS,
1746         G_ENTITY_VS_VAL,
1747         NVL(LAST_UPDATE_DATE, SYSDATE),
1748         NVL(LAST_UPDATED_BY, G_USER_ID),
1749         NVL(CREATION_DATE,SYSDATE),
1750         NVL(CREATED_BY, G_USER_ID),
1751         NVL(LAST_UPDATE_LOGIN, G_LOGIN_ID),
1752         G_REQUEST_ID,
1753         NVL(PROGRAM_APPLICATION_ID, G_PROG_APPL_ID),
1754         NVL(PROGRAM_ID, G_PROGRAM_ID),
1755         NVL(PROGRAM_UPDATE_DATE, sysdate)
1756       FROM Ego_Flex_Value_Tl_Intf evstvi
1757       WHERE (p_set_process_id IS NULL
1758               OR set_process_id = p_set_process_id
1759             )
1760         AND Upper(transaction_type) NOT IN (G_CREATE, G_UPDATE,G_SYNC)
1761         AND process_status=G_PROCESS_RECORD;
1762 
1763 
1764 
1765       -- Check transaction_type in translatable value table.
1766       UPDATE Ego_Flex_Value_Tl_Intf
1767       SET process_status=G_ERROR_RECORD
1768       WHERE (p_set_process_id IS NULL
1769               OR set_process_id = p_set_process_id
1770             )
1771         AND Upper(transaction_type) NOT IN (G_CREATE, G_UPDATE,G_SYNC);
1772 
1773       write_debug(G_PKG_Name,l_api_name,' End of API  ');
1774       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API  ');
1775 
1776   EXCEPTION
1777       WHEN OTHERS THEN
1778 
1779           write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error :  '||SQLERRM);
1780           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' In Exception of API. Error :  '||SQLERRM);
1781           x_return_status := G_RET_STS_UNEXP_ERROR;
1782           x_return_msg := G_PKG_Name||'.'||l_api_name||'  - '||SQLERRM;
1783           RETURN;
1784 
1785   END Validate_Transaction_type;
1786 
1787 
1788 
1789 
1790 
1791   -- Bug 9804379
1792   --------------------------------------------------------------------------------
1793   -- Procedure to sync draft version with latest release version of a value set.
1794   -------------------------------------------------------------------------------
1795   PROCEDURE Sync_VS_With_Draft ( p_value_set_id      IN NUMBER
1796                                 ,p_version_number    IN NUMBER
1797                                 ,x_return_status     OUT NOCOPY VARCHAR2
1798                                 ,x_return_msg        OUT NOCOPY VARCHAR2)
1799   IS
1800 
1801 
1802       CURSOR Sync_Draft
1803       IS
1804           SELECT flex_value_id,SEQUENCE
1805           FROM ego_flex_value_version_b
1806           WHERE version_seq_id = p_version_number
1807             AND flex_value_set_id = p_value_set_id;
1808 
1809       l_api_name                      VARCHAR2(100) := 'Sync_VS_With_Draft';
1810       DraftRec          Sync_Draft%rowtype;
1811 
1812   BEGIN
1813 
1814       write_debug(G_PKG_Name,l_api_name,' Start of API  ');
1815       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API  ');
1816 
1817 
1818       DELETE FROM  EGO_FLEX_VALUE_VERSION_TL
1819       WHERE VERSION_SEQ_ID =0
1820         AND FLEX_VALUE_ID IN  ( SELECT FLEX_VALUE_ID
1821                                 FROM EGO_FLEX_VALUE_VERSION_B
1822                                 WHERE FLEX_VALUE_SET_ID =P_VALUE_SET_ID
1823                                   AND VERSION_SEQ_ID = 0);
1824 
1825       DELETE FROM EGO_FLEX_VALUE_VERSION_B
1826       WHERE FLEX_VALUE_SET_ID =P_VALUE_SET_ID
1827         AND VERSION_SEQ_ID = 0;
1828 
1829 
1830 
1831       OPEN Sync_Draft;
1832       LOOP
1833 
1834           FETCH Sync_Draft INTO DraftRec;
1835           EXIT WHEN  Sync_Draft%NOTFOUND;
1836 
1837           INSERT INTO EGO_FLEX_VALUE_VERSION_B
1838                   ( FLEX_VALUE_SET_ID,FLEX_VALUE_ID,VERSION_SEQ_ID,SEQUENCE,CREATED_BY,
1839                     CREATION_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE,LAST_UPDATE_LOGIN)
1840           VALUES  ( P_VALUE_SET_ID,DraftRec.FLEX_VALUE_ID,0,DraftRec.SEQUENCE,FND_GLOBAL.PARTY_ID,
1841                     SYSDATE,FND_GLOBAL.PARTY_ID,SYSDATE,FND_GLOBAL.LOGIN_ID );
1842 
1843 
1844       END LOOP;
1845       CLOSE Sync_Draft;
1846 
1847 
1848       INSERT INTO EGO_FLEX_VALUE_VERSION_TL
1849                   ( FLEX_VALUE_ID,VERSION_SEQ_ID,LAST_UPDATE_DATE,LAST_UPDATED_BY,CREATION_DATE,CREATED_BY,
1850                     LAST_UPDATE_LOGIN,DESCRIPTION,FLEX_VALUE_MEANING,LANGUAGE,SOURCE_LANG)
1851 
1852               SELECT FLEX_VALUE_ID,0,SYSDATE,FND_GLOBAL.PARTY_ID,SYSDATE,FND_GLOBAL.PARTY_ID,
1853                     FND_GLOBAL.LOGIN_ID,DESCRIPTION,FLEX_VALUE_MEANING,LANGUAGE,SOURCE_LANG FROM EGO_FLEX_VALUE_VERSION_TL
1854               WHERE VERSION_SEQ_ID = P_VERSION_NUMBER AND FLEX_VALUE_ID
1855                 IN ( SELECT FLEX_VALUE_ID
1856                     FROM EGO_FLEX_VALUE_VERSION_B
1857                     WHERE  FLEX_VALUE_SET_ID = P_VALUE_SET_ID
1858                         AND VERSION_SEQ_ID =  P_VERSION_NUMBER);
1859 
1860 
1861       x_return_status :=G_RET_STS_SUCCESS;
1862 
1863 
1864       write_debug(G_PKG_Name,l_api_name,' End of API  ');
1865       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API  ');
1866 
1867 
1868   EXCEPTION
1869 
1873           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' In Exception of API. Error :  '||SQLERRM);
1870       WHEN OTHERS THEN
1871 
1872           write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error :  '||SQLERRM);
1874           x_return_status := G_RET_STS_UNEXP_ERROR;
1875           x_return_msg := G_PKG_Name||'.'||l_api_name||'  - '||SQLERRM;
1876 
1877           RETURN;
1878 
1879 
1880   END Sync_VS_With_Draft;
1881 
1882 
1883 
1884 
1885 
1886 
1887 
1888 
1889   --------------------------------------------------------------------------------
1890   -- Procedure is to release a value set.
1891   --------------------------------------------------------------------------------
1892   PROCEDURE Release_Value_Set_Version(
1893                     p_value_set_id       IN NUMBER,
1894                     p_description        IN VARCHAR2,
1895                     p_start_date         IN TIMESTAMP,
1896                     p_end_date           IN TIMESTAMP,
1897                     p_version_seq_id     IN NUMBER,
1898                     p_transaction_id     IN NUMBER,
1899                     x_out_vers_seq_id    OUT NOCOPY NUMBER,
1900                     x_return_status      OUT NOCOPY VARCHAR2,
1901                     x_return_msg         OUT NOCOPY VARCHAR2 )
1902   IS
1903 
1904       --Local variable
1905       l_api_name                      VARCHAR2(100) := 'Release_Value_Set_Version';
1906       l_same_rel_date                 NUMBER;
1907       l_future_effective              BOOLEAN ;
1908       l_relver_end_date               DATE ;
1909       l_prev_future_version           NUMBER;
1910       l_min_start_active_date         DATE ;
1911       l_return_status                 VARCHAR2(1);
1912       l_return_msg                    VARCHAR2(1000);
1913 
1914       l_version_seq_id                NUMBER;
1915       l_min_future_start_date         DATE;
1916       l_value_set_id                  NUMBER:=p_value_set_id;
1917       l_description                   VARCHAR2(1000)  :=p_description;
1918       l_transaction_id                NUMBER          :=p_transaction_id;
1919 
1920 
1921       l_entity_code                   VARCHAR2(40) :=  G_ENTITY_VS_VER;
1922       l_table_name                    VARCHAR2(240):=  G_ENTITY_VS_HEADER_TAB;
1923       l_application_id                NUMBER       :=  G_Application_Id;
1924 
1925       l_token_table                   ERROR_HANDLER.Token_Tbl_Type;
1926       l_error_message_name            VARCHAR2(500);
1927 
1928 
1929       l_target_max_ver                NUMBER    :=  NULL ;
1930       l_draft_exist                   NUMBER    :=  NULL;
1931       l_draft_version                 BOOLEAN   :=  FALSE;
1932 
1933       l_locking_party_id              NUMBER   :=  NULL ;
1934       l_lock_flag                     VARCHAR2(1) :=  NULL ;
1935       l_UnLock                        BOOLEAN;
1936       l_start_date                    DATE := NULL;
1937 
1938       CURSOR Getversiondates
1939       IS
1940         SELECT start_active_date ,end_active_date,version_seq_id
1941         FROM ego_flex_valueset_version_b
1942         WHERE flex_value_set_id =  p_value_set_id AND version_seq_id  <> 0 ;
1943 
1944 
1945       -- Cursor to get maximum available version on target instance.
1946       CURSOR Cur_Max_Ver(cp_value_set_id       NUMBER)
1947       IS
1948         SELECT Max(version_seq_id) max_ver --,start_active_date, end_active_date
1949         FROM ego_flex_valueset_version_b
1950         WHERE flex_value_set_id = cp_value_set_id
1951           AND  version_seq_id  <> 0;
1952 
1953 
1954 
1955       -- Cursor to check if draft version is there.
1956       CURSOR Cur_Draft_Ver(cp_value_set_id     NUMBER)
1957       IS
1958         SELECT (version_seq_id) draft_ver
1959         FROM ego_flex_valueset_version_b
1960         WHERE flex_value_set_id = cp_value_set_id
1961           AND  version_seq_id = 0;
1962 
1963 
1964 
1965 
1966       VersionDate_rec Getversiondates%rowtype;
1967 
1968 
1969 
1970   BEGIN
1971 
1972 
1973         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API  ');
1974         write_debug(G_PKG_Name,l_api_name,' Start of API  ');
1975 
1976         l_start_date := p_start_date;
1977 
1978 
1979 
1980         -- Here we will have start_date either as present date or future effective date
1981 
1982         ---
1983         --- bug 12651548
1984         ---
1985         IF ( (
1986              p_start_date < G_SYSDATE
1987               AND
1988               (p_end_date IS NOT NULL AND p_end_date < G_SYSDATE)
1989              )
1990              OR
1991              p_start_date IS NULL
1992              OR
1993              ( p_start_date IS NOT NULL AND p_end_date IS NOT NULL
1994                AND p_start_date > p_end_date
1995              )
1996            )
1997         THEN
1998               write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS Id)=('
1999                                           ||l_value_set_id||')'||' Effectivity in past or effectivity incorrectly entered');
2000 
2001 
2002 
2003 
2004               x_return_status               :=  G_RET_STS_ERROR;
2005               l_error_message_name          := 'EGO_VSET_VERSION_DATE_ERROR';
2006 
2007               ERROR_HANDLER.Add_Error_Message(
2008                 p_message_name                   => l_error_message_name
2009                 ,p_application_id                => G_App_Short_Name
2010                 ,p_token_tbl                     => l_token_table
2011                 ,p_message_type                  => G_RET_STS_ERROR
2012                 ,p_row_identifier                => l_transaction_id
2013                 ,p_entity_code                   => l_entity_code
2014                 ,p_table_name                    => l_table_name);
2015 
2016               RETURN;
2017 
2018         END IF;
2019 
2020         ---
2021         --- set the start date to current sysdate
2022         ---
2023         IF   l_start_date < G_SYSDATE
2024               AND
2025               (p_end_date IS NULL  OR p_end_date = G_NULL_DATE OR p_end_date > G_SYSDATE)
2026 
2027         THEN
2028           l_start_date  := G_SYSDATE;
2029         END IF;
2030 
2031 
2032 
2033         /* commented bug 12651548
2034 
2035         IF(p_start_date < G_SYSDATE OR p_start_date IS NULL ) THEN
2036 
2037 
2038               write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS Id)=('
2039                                           ||l_value_set_id||')'||' Passed in start date belongs to past date. ');
2040 
2041 
2042 
2043 
2044               x_return_status               :=  G_RET_STS_ERROR;
2045               l_error_message_name          := 'EGO_VSET_VERSION_DATE_ERROR';
2046 
2047               ERROR_HANDLER.Add_Error_Message(
2048                 p_message_name                   => l_error_message_name
2049                 ,p_application_id                => G_App_Short_Name
2050                 ,p_token_tbl                     => l_token_table
2051                 ,p_message_type                  => G_RET_STS_ERROR
2052                 ,p_row_identifier                => l_transaction_id
2053                 ,p_entity_code                   => l_entity_code
2054                 ,p_table_name                    => l_table_name);
2055 
2056               RETURN;
2057 
2058         END IF ;
2059 
2060         */
2061 
2062 
2063 
2064         --Validate if Value Set has been released on same Start Date or End date should not be same.
2065         SELECT COUNT(*) INTO  l_same_rel_date
2066         FROM EGO_FLEX_VALUESET_VERSION_B
2067         WHERE FLEX_VALUE_SET_ID = P_VALUE_SET_ID
2068           AND ( START_ACTIVE_DATE=  l_start_date
2069                 OR END_ACTIVE_DATE = l_start_date
2070               )
2071           AND VERSION_SEQ_ID <>0;
2072 
2073 
2074 
2075 
2076         -- Log an error
2077         IF(l_same_rel_date > 0) THEN
2078 
2079 
2080               write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS Id)=('
2081                                           ||l_value_set_id||')'||' Value Set has already been released on same Start Date. ');
2082 
2083               x_return_status               :=  G_RET_STS_ERROR;
2084               l_error_message_name          := 'EGO_VSET_VER_RELDATE_ERROR';
2085               l_token_table(1).TOKEN_NAME   := 'VALUE_SET_ID';
2086               l_token_table(1).TOKEN_VALUE  := l_value_set_id;
2087 
2088               ERROR_HANDLER.Add_Error_Message(
2089                 p_message_name                   => l_error_message_name
2090                 ,p_application_id                => G_App_Short_Name
2091                 ,p_token_tbl                     => l_token_table
2092                 ,p_message_type                  => G_RET_STS_ERROR
2093                 ,p_row_identifier                => l_transaction_id
2094                 ,p_entity_code                   => l_entity_code
2095                 ,p_table_name                    => l_table_name);
2096 
2097               l_token_table.DELETE;
2098 
2099               RETURN;
2100         END IF ;
2101 
2102 
2103 
2104 
2105         OPEN Getversiondates;
2106         LOOP
2107 
2108             FETCH Getversiondates INTO VersionDate_rec;
2109 
2110             EXIT WHEN Getversiondates%NOTFOUND;
2111 
2112 
2113             -- Setting Value for l_future_effective.It means if l_future_effective is true than the
2114             --releasing version  Start active date  falls in between the already released version start active date and
2115             --end active date.
2116             IF ( l_start_date >= VersionDate_rec.start_active_date
2117                   AND ( l_start_date <= VersionDate_rec.end_active_date OR VersionDate_rec.end_active_date IS NULL )
2118               ) THEN
2119 
2120                   l_future_effective := TRUE;
2121                   l_prev_future_version := VersionDate_rec.version_seq_id;
2122                   l_relver_end_date :=   VersionDate_rec.end_active_date;   -- End date of new version to be released
2123 
2124                   EXIT;
2125 
2126             END IF;
2127 
2128         END LOOP;
2129         CLOSE Getversiondates;
2130 
2131 
2132 
2133         -- Get Max Version at target system
2134         FOR i IN Cur_Max_Ver (p_value_set_id)
2135         LOOP
2136             l_target_max_ver  :=  i.max_ver;
2137 
2138         END LOOP;
2139 
2140 
2141 
2142         -- Check if draft version exist
2143         FOR i IN Cur_Draft_Ver (p_value_set_id)
2144         LOOP
2145 
2146             l_draft_exist  :=  i.draft_ver;
2147 
2148         END LOOP;
2149 
2150 
2151 
2152         -- If No version record exist then set l_draft_version to true to create draft record
2153         IF l_draft_exist IS NULL
2154         THEN
2155 
2156             l_draft_version :=  TRUE;
2157 
2158         END IF;
2159 
2160 
2161 
2162 
2163 
2164 
2165         IF l_draft_version THEN
2166 
2167             write_debug(G_PKG_Name,l_api_name,' Creating draft Version ');
2168             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Creating draft Version G_Party_id = '||G_Party_id);
2169 
2170             -- Create record for draft version with sysdate as start date
2171             INSERT INTO EGO_FLEX_VALUESET_VERSION_B
2172                     (flex_value_set_id,version_seq_id,description, start_active_date, end_active_date ,
2173                     created_by,creation_date,last_updated_by,last_update_date,last_update_login)
2174             VALUES  ( l_value_set_id, 0, l_description, SYSDATE, NULL,
2175                       G_Party_Id,SYSDATE,G_Party_Id,SYSDATE,G_Login_Id);
2176 
2177 
2178             -- Inserting record in lock table to lock the record.
2179             -- Need to see if I need to insert it.
2180             INSERT INTO  EGO_OBJECT_LOCK
2181                         ( LOCK_ID,OBJECT_NAME,PK1_VALUE,LOCKING_PARTY_ID,LOCK_FLAG,
2182                           CREATED_BY,CREATION_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE,LAST_UPDATE_LOGIN)
2183             VALUES      ( EGO_OBJECT_LOCK_S.NEXTVAL,'EGO_VALUE_SET',l_value_set_id,G_Party_id,'L',
2184                           G_Party_id,SYSDATE,G_Party_id,SYSDATE,G_Login_Id)   ;
2185 
2186             write_debug(G_PKG_Name,l_api_name,' Draft Version created ');
2187             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Draft Version created ');
2188 
2189         END IF; -- END IF l_draft_version THEN
2190 
2191 
2192         write_debug(G_PKG_Name,l_api_name,'  Passed in version seq id is :  '||p_version_seq_id||' Start Date is : '||To_Char(l_start_date,'dd.mm.yyyy hh24:mi:ss'));
2193         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  Passed in version seq id is :  '||p_version_seq_id||' Start Date is : '||To_Char(l_start_date,'dd.mm.yyyy hh24:mi:ss'));
2194 
2195 
2196         write_debug(G_PKG_Name,l_api_name,' Version sqe id to be created on target system is :  '||l_target_max_ver);
2197         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  Version sqe id to be created on target system is :  '||l_target_max_ver);
2198 
2199 
2200 
2201 
2202 
2203 
2204 
2205 
2206         -- Bug 9804411
2207         -- Get user who locked this object
2208         ego_metadata_bulkload_pvt.Get_Lock_Info ( p_object_name       =>  G_OBJECT_VALUE_SET,
2209                                                   p_pk1_value         =>  l_value_set_id,
2210                                                   x_locking_party_id  =>  l_locking_party_id,
2211                                                   x_lock_flag         =>  l_lock_flag,
2212                                                   x_return_msg        =>  l_return_msg,
2213                                                   x_return_status     =>  l_return_status);
2214 
2215 
2216         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Locking Party is : '||l_locking_party_id);
2217         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' After calling to Get_Lock_Info. return status is : '||l_return_status);
2218 
2219         IF (Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS ) THEN
2220 
2221             l_return_status                     := G_RET_STS_SUCCESS;
2222 
2223         ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
2224 
2225 
2226             write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS Id)=('
2227                                       ||l_value_set_id||')'||' Error in getting lock information. ');
2228 
2229 
2230 
2231             x_return_status             := l_return_status;
2232 
2233                 G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
2234             G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS_VER;
2235             G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
2236             G_TOKEN_TBL(2).Token_Value  :=  G_CREATE;
2237             G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
2241 
2238             G_TOKEN_TBL(3).Token_Value  :=  'EGO_VS_BULKLOAD_PVT';
2239             G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
2240             G_TOKEN_TBL(4).Token_Value  :=  'Get_Lock_Info';
2242 
2243             ERROR_HANDLER.Add_Error_Message (
2244               p_message_name                   => 'EGO_ENTITY_API_FAILED'
2245               ,p_application_id                => G_App_Short_Name
2246               ,p_token_tbl                     => G_TOKEN_TBL
2247               ,p_message_type                  => G_RET_STS_ERROR
2248               ,p_row_identifier                => l_transaction_id
2249               ,p_entity_code                   => G_ENTITY_VS_VER
2250               ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
2251 
2252             G_TOKEN_TBL.DELETE;
2253 
2254 
2255         ELSE    -- case of unexpected error
2256 
2257             x_return_status := G_RET_STS_UNEXP_ERROR;
2258             x_return_msg    := l_return_msg;
2259             RETURN;
2260 
2261         END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
2262 
2263         -- Bug 9804411
2264         -- If creation of version failed then do not process value entity further.
2265         IF l_return_status = G_RET_STS_SUCCESS THEN
2266 
2267               -- Check if same user locked record
2268               IF l_lock_flag = 'L'  AND Nvl(l_locking_party_id,G_Party_Id)  <> G_Party_Id THEN
2269 
2270                     ego_metadata_bulkload_pvt.Get_Party_Name (  p_party_id    =>  l_locking_party_id,
2271                                                                 x_party_name  =>  G_Locking_Party_Name);
2272 
2273                     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' This Value Set is locked by some other user.'||G_Locking_Party_Name);
2274                     write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS Id)=('
2275                                                 ||l_value_set_id||')'||' This Value Set is locked by some other user. ');
2276 
2277                     l_return_status               :=  G_RET_STS_ERROR;
2278                     l_error_message_name          := 'EGO_ENTITY_LOCKED';
2279                     l_token_table(1).TOKEN_NAME   := 'ENTITY_NAME';
2280                     l_token_table(1).TOKEN_VALUE  := G_ENTITY_VS;
2281 
2282                     l_token_table(2).TOKEN_NAME   := 'PARTY_NAME';
2283                     l_token_table(2).TOKEN_VALUE  := G_Locking_Party_Name;
2284 
2285 
2286                     ERROR_HANDLER.Add_Error_Message(
2287                       p_message_name                   => l_error_message_name
2288                       ,p_application_id                => G_App_Short_Name
2289                       ,p_token_tbl                     => l_token_table
2290                       ,p_message_type                  => G_RET_STS_ERROR
2291                       ,p_row_identifier                => l_transaction_id
2292                       ,p_entity_code                   => l_entity_code
2293                       ,p_table_name                    => l_table_name);
2294 
2295                     l_token_table.DELETE;
2296 
2297 
2298 
2299               END IF;
2300 
2301 
2302 
2303               IF l_return_status = G_RET_STS_SUCCESS THEN
2304               -- Bug 9804411
2305 
2306 
2307                     IF(l_future_effective) THEN
2308 
2309                         Update ego_flex_valueset_version_b
2310                         SET end_active_date= l_start_date-1/(24*60*60),
2311                             LAST_UPDATED_BY= G_Party_Id,
2312                             LAST_UPDATE_DATE = SYSDATE,
2313                             LAST_UPDATE_LOGIN = G_LOGIN_ID
2314                         WHERE flex_value_set_id = p_value_set_id
2315                           AND version_seq_id= l_prev_future_version;
2316 
2317 
2318                         -- need to decide which version we need to insert, same as user passed of l_target_max_ver+1
2319                         INSERT INTO EGO_FLEX_VALUESET_VERSION_B
2320                                 (flex_value_set_id, version_seq_id,description, start_active_date,end_active_date,
2321                                 created_by,creation_date,last_updated_by,last_update_date,last_update_login)
2322                         VALUES (l_value_set_id, Nvl(l_target_max_ver,0)+1,l_description, l_start_date,l_relver_end_date,
2323                                 G_Party_Id,sysdate,G_Party_Id,sysdate,G_Login_id)   ;
2324 
2325 
2326                     -- Case when we already have version released in future and all of them have start date greater then passed in date
2327                     ELSE
2328 
2329                         -- Get least future effective start active date which is higher then passed in date
2330                         SELECT Min(start_active_date ) INTO l_min_future_start_date
2331                         FROM  EGO_FLEX_VALUESET_VERSION_B
2332                         WHERE   FLEX_VALUE_SET_ID =  p_value_set_id
2333                           AND version_seq_id >0;
2334 
2335                         -- This is the case where passed in start date will always be greater than all available version
2336                         IF ( l_min_future_start_date < l_start_date) THEN
2337 
2338 
2339                           Update ego_flex_valueset_version_b
2340                           SET end_active_date= l_start_date-1/(24*60*60),
2341                               LAST_UPDATED_BY= G_Party_Id,
2342                               LAST_UPDATE_DATE = SYSDATE,
2343                               LAST_UPDATE_LOGIN = G_LOGIN_ID
2344                           WHERE flex_value_set_id = p_value_set_id
2345                             AND (start_active_date =( SELECT Max(start_active_date )
2346                                                       FROM ego_flex_valueset_version_b
2347                                                       WHERE flex_value_set_id =  p_value_set_id
2348                                                         AND version_seq_id >0
2349                                                     )
2350                                 );
2351 
2352                       END IF;
2353 
2354 
2355                       -- Create a new version
2356                       INSERT INTO EGO_FLEX_VALUESET_VERSION_B
2357                               (flex_value_set_id, version_seq_id,description, start_active_date,end_active_date,
2358                               created_by,creation_date,last_updated_by,last_update_date,last_update_login)
2359                       VALUES (l_value_set_id, Nvl(l_target_max_ver,0)+1,l_description, l_start_date,NULL ,
2360                               G_Party_Id,sysdate,G_Party_Id,sysdate,G_Login_id)   ;
2361 
2362 
2363                       -- This is the case where passed in start date will always be lesser than all available version
2364                       IF ( l_start_date< l_min_future_start_date)  THEN
2365 
2366                           Update ego_flex_valueset_version_b
2367                           SET end_active_date= l_min_future_start_date-1/(24*60*60),
2368                               LAST_UPDATED_BY= G_Party_Id,
2369                               LAST_UPDATE_DATE = SYSDATE,
2370                               LAST_UPDATE_LOGIN = G_LOGIN_ID
2371                           WHERE flex_value_set_id = p_value_set_id
2372                             AND start_active_date = l_start_date ;
2373 
2374                       END IF ;
2375 
2376                     END IF; -- END IF(l_future_effective) THEN
2377 
2378 
2379 
2380                     IF l_lock_flag = 'U' THEN
2381 
2382                       l_UnLock := TRUE;
2383 
2384                     ELSE
2385 
2386                       l_UnLock := FALSE;
2387 
2388                     END IF;
2389 
2390 
2391                     -- Bug 9804411
2392                     -- Insert/update a record into ego_object_lock based on status of lock flag.
2393                     ego_metadata_bulkload_pvt.Lock_Unlock_Object  ( p_object_name       =>  G_OBJECT_VALUE_SET,
2394                                                                     p_pk1_value         =>  l_value_set_id,
2395                                                                     p_party_id          =>  G_PARTY_ID,
2396                                                                     p_lock_flag         =>  l_UnLock,
2397                                                                     -- If current lock_flag is 'U' then insert a new rec with 'U' else update current rec with 'U'
2398                                                                     x_return_msg        =>  l_return_msg,
2399                                                                     x_return_status     =>  l_return_status);
2400 
2401 
2402                     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  After Call to  Lock_Unlock_Object. Return status is '||l_return_status);
2403 
2404                     IF (Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS ) THEN
2405 
2406                         l_return_status                     := G_RET_STS_SUCCESS;
2407 
2408                     ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
2409 
2410 
2411                         write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS Id)=('
2412                                                   ||l_value_set_id||')'||' Error in setting lock. ');
2413 
2414 
2415                         x_return_status             := l_return_status;
2416 
2417                             G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
2418                         G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS_VER;
2419                         G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
2420                         G_TOKEN_TBL(2).Token_Value  :=  G_CREATE;
2421                         G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
2422                         G_TOKEN_TBL(3).Token_Value  :=  'EGO_VS_BULKLOAD_PVT';
2423                         G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
2424                         G_TOKEN_TBL(4).Token_Value  :=  'Lock_Unlock_Object';
2425 
2426 
2427                         ERROR_HANDLER.Add_Error_Message (
2428                           p_message_name                   => 'EGO_ENTITY_API_FAILED'
2429                           ,p_application_id                => G_App_Short_Name
2430                           ,p_token_tbl                     => G_TOKEN_TBL
2431                           ,p_message_type                  => G_RET_STS_ERROR
2432                           ,p_row_identifier                => l_transaction_id
2433                           ,p_entity_code                   => G_ENTITY_VS_VER
2434                           ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
2435 
2436                         G_TOKEN_TBL.DELETE;
2437 
2438 
2439                     ELSE    -- case of unexpected error
2440 
2441                         x_return_status := G_RET_STS_UNEXP_ERROR;
2442                         x_return_msg    := l_return_msg;
2443                         RETURN;
2444 
2445                     END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
2446 
2447 
2448 
2449               END IF;   -- Bug 9804411
2450 
2451         END IF;         -- Bug 9804411
2452 
2453 
2454         x_out_vers_seq_id   :=   Nvl(l_target_max_ver,0)+1;
2455 
2456         write_debug(G_PKG_Name,l_api_name,' Version seq id to be created on target system is  = '||x_out_vers_seq_id );
2457         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Version seq id to be created on target system is = '||x_out_vers_seq_id );
2458 
2459         write_debug(G_PKG_Name,l_api_name,' End of API  ');
2460         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API  ');
2461 
2462         -- Set return status finally.
2463         IF l_return_status IS NULL
2464         THEN
2465             l_return_status    := G_RET_STS_SUCCESS;
2466         END IF;
2467         x_return_status :=  l_return_status;
2468 
2469 
2470 
2471 
2472   EXCEPTION
2473         WHEN OTHERS THEN
2474 
2475             write_debug(G_PKG_Name,l_api_name,' In Exception of API Release_Value_Set_Version. Error : '||SubStr(SQLERRM,1,500));
2476             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' In Exception of API Release_Value_Set_Version. Error : '||SubStr(SQLERRM,1,500));
2477 
2478             x_return_status := G_RET_STS_UNEXP_ERROR;
2479             x_return_msg := G_PKG_Name||'.'||l_api_name||'  - '||SQLERRM;
2480             --RETURN;
2481 
2482   END Release_Value_Set_Version;
2483 
2484 
2485 
2486 
2487 
2488   --------------------------------------------------------------------------------
2489   -- Procedure to get key value for a given value set.
2490   --------------------------------------------------------------------------------
2491   PROCEDURE Get_Key_VS_Columns
2492             ( p_value_set_id        IN                NUMBER,
2493               p_transaction_id      IN                NUMBER,
2494               x_maximum_size        IN OUT  NOCOPY    VARCHAR2,
2495               x_maximum_value       IN OUT  NOCOPY    VARCHAR2,
2496               x_minimum_value       IN OUT  NOCOPY    VARCHAR2,
2497               x_description         IN OUT  NOCOPY    VARCHAR2,
2498               x_longlist_flag       IN OUT  NOCOPY    VARCHAR2,
2499               x_format_code         IN OUT  NOCOPY    VARCHAR2,
2500               x_validation_code     IN OUT  NOCOPY    VARCHAR2,
2501               x_return_status       OUT     NOCOPY    VARCHAR2,
2502               x_return_msg          OUT     NOCOPY    VARCHAR2
2503             )
2504   IS
2505 
2506 
2507           l_api_name            VARCHAR2(100) := 'Get_Key_VS_Columns';
2508           l_value_set_id        NUMBER        :=  p_value_set_id;
2509           l_value_set_name      VARCHAR2(60)  :=  NULL;
2510           l_validation_code     VARCHAR2(1)   :=  NULL;
2511           l_longlist_flag       VARCHAR2(1)   :=  NULL;
2512           l_format_code         VARCHAR2(1)   :=  NULL;
2513           l_transaction_id      NUMBER        :=  p_transaction_id;
2514 
2515           /* Local variable to be used in error handling mechanism*/
2516           l_entity_code         VARCHAR2(40)  :=  G_ENTITY_VS;
2517           l_table_name          VARCHAR2(240) :=  G_ENTITY_VS_HEADER_TAB;
2518           l_application_id      NUMBER        :=  G_Application_Id;
2519 
2520           l_token_table         ERROR_HANDLER.Token_Tbl_Type;
2521           l_error_message_name  VARCHAR2(500);
2522 
2523 
2524           CURSOR cur_value
2525           IS
2526           SELECT validation_type, format_type, maximum_value,minimum_value,longlist_flag,maximum_size,description
2527           FROM fnd_flex_value_sets
2528           WHERE flex_value_set_id = p_value_set_id;
2529 
2530 
2531           CURSOR cur_value_set_name
2532           IS
2533           SELECT flex_value_set_name
2534           FROM fnd_flex_value_sets
2535           WHERE flex_value_set_id = p_value_set_id;
2536 
2537 
2538   BEGIN
2539 
2540         write_debug(G_PKG_Name,l_api_name,' Start of API  ');
2541 
2542         FOR Cur_VSName IN cur_value_set_name
2543         LOOP
2547 
2544             l_value_set_name :=Cur_VSName.flex_value_set_name;
2545 
2546         END LOOP;
2548         FOR i IN cur_value
2549         LOOP
2550 
2551 
2552             l_format_code       :=  i.format_type;
2553             l_validation_code   :=  i.validation_type;
2554             l_longlist_flag     :=  i.longlist_flag;
2555 
2556 
2557             IF x_format_code IS NULL THEN
2558               x_format_code       :=  i.format_type;
2559             END IF;
2560 
2561             IF x_validation_code IS NULL THEN
2562               x_validation_code   :=  i.validation_type;
2563             END IF; -- END IF x_validation_code IS NULL THEN
2564 
2565 
2566             IF x_longlist_flag IS NULL THEN
2567               x_longlist_flag :=  i.longlist_flag;
2568             END IF;
2569 
2570             -- User can pass null value as well.
2571             IF x_description IS NULL THEN
2572               x_description :=  i.description;
2573             END IF;
2574 
2575             -- Get maximum size. It will always be greater than zero.
2576             -- Updateable only for NUMBER and CHAR type
2577             IF  x_format_code IN (  G_NUMBER_DATA_TYPE,G_CHAR_DATA_TYPE) THEN
2578 
2579                 IF x_maximum_size IS NULL THEN
2580                   x_maximum_size :=  i.maximum_size;
2581                 END IF;
2582 
2583             END IF; -- END IF  x_format_code IN (  G_NUMBER_DATA_TYPE,G_CHAR_DATA_TYPE) THEN
2584 
2585 
2586             -- Max/ Min value only for NONE type VS and data type not in char
2587             IF  (x_format_code IN (  G_NUMBER_DATA_TYPE,G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE )
2588                     AND x_validation_code= G_NONE_VALIDATION_CODE
2589                 ) THEN
2590 
2591 
2592                 IF x_maximum_value IS NULL THEN
2593                     x_maximum_value :=  i.maximum_value;
2594                 END IF;
2595 
2596 
2597                 IF x_minimum_value IS NULL THEN
2598                     x_minimum_value :=  i.minimum_value;
2599                 END IF;
2600 
2601 
2602             END IF;
2603 
2604         END LOOP;
2605 
2606 
2607         IF l_format_code <> x_format_code THEN
2608 
2609 
2610             write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS Id)=('
2611                                         ||l_value_set_id||')'||' Pass correct data type for value set. ');
2612 
2613 
2614 
2615             l_error_message_name          := 'EGO_VSET_DATA_TYPE_ERROR';
2616             x_return_status               := G_RET_STS_ERROR;
2617 
2618             l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
2619             l_token_table(1).TOKEN_VALUE  := l_value_set_name;
2620 
2621 
2622             ERROR_HANDLER.Add_Error_Message(
2623               p_message_name                  => l_error_message_name
2624               ,p_application_id                => G_App_Short_Name
2625               ,p_token_tbl                     => l_token_table
2626               ,p_message_type                  => G_RET_STS_ERROR
2627               ,p_row_identifier                => l_transaction_id
2628               ,p_entity_code                   => l_entity_code
2629               ,p_table_name                    => l_table_name);
2630 
2631 
2632             l_token_table.DELETE;
2633 
2634 
2635         END IF;
2636 
2637 
2638 
2639         IF l_validation_code <> x_validation_code THEN
2640 
2641             write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS Id)=('
2642                                         ||l_value_set_id||')'||' Pass correct validation code for value set. ');
2643 
2644 
2645             l_error_message_name          := 'EGO_VSET_VALIDATION_ERROR';
2646             x_return_status               := G_RET_STS_ERROR;
2647             l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
2648             l_token_table(1).TOKEN_VALUE  := l_value_set_name;
2649 
2650 
2651             ERROR_HANDLER.Add_Error_Message(
2652                p_message_name                  => l_error_message_name
2653               ,p_application_id                => G_App_Short_Name
2654               ,p_token_tbl                     => l_token_table
2655               ,p_message_type                  => G_RET_STS_ERROR
2656               ,p_row_identifier                => l_transaction_id
2657               ,p_entity_code                   => l_entity_code
2658               ,p_table_name                    => l_table_name);
2659 
2660             l_token_table.DELETE;
2661 
2662         END IF;
2663 
2664 
2665 
2666         ---
2667         --- commented this code , issue was long list flag ( LOV or POPlist) can
2668         --- be updated for an existing value set and this check
2669         --- was preventing this update
2670         ---
2671         /*
2672         IF l_longlist_flag  <> x_longlist_flag THEN
2673 
2674             write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS Id)=('
2675                                         ||l_value_set_id||')'||' Pass correct longlist flag for value set. ');
2676 
2677             l_error_message_name          := 'EGO_VSET_LONGLIST_ERROR';
2678             x_return_status               := G_RET_STS_ERROR;
2679 
2680 
2681             l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
2682             l_token_table(1).TOKEN_VALUE  := l_value_set_name;
2683 
2684             ERROR_HANDLER.Add_Error_Message(
2685                p_message_name                  => l_error_message_name
2686               ,p_application_id                => G_App_Short_Name
2687               ,p_token_tbl                     => l_token_table
2691               ,p_table_name                    => l_table_name
2688               ,p_message_type                  => G_RET_STS_ERROR
2689               ,p_row_identifier                => l_transaction_id
2690               ,p_entity_code                   => l_entity_code
2692             );
2693 
2694             l_token_table.DELETE;
2695 
2696         END IF;
2697 
2698         */
2699 
2700         -- Bug 9702845
2701         --This code is written in validate_value_set API thus not writing again.
2702         /*IF  (x_format_code IN (  G_NUMBER_DATA_TYPE,G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE )
2703                             AND x_validation_code= G_NONE_VALIDATION_CODE
2704                         ) THEN
2705 
2706 
2707                 IF x_maximum_value < x_minimum_value  THEN
2708 
2709 
2710                     write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS Id)=('
2711                                                 ||l_value_set_id||')'||' Maximum value should always be greater than minimum value. ');
2712 
2713 
2714 
2715                     l_error_message_name          := 'EGO_VAL_MUST_LT_MAXVALUE';
2716                     x_return_status               := G_RET_STS_ERROR;
2717 
2718                     l_token_table(1).TOKEN_NAME   := 'MAXVALUE';
2719                     l_token_table(1).TOKEN_VALUE  := x_maximum_value;
2720 
2721 
2722                     ERROR_HANDLER.Add_Error_Message(
2723                       p_message_name                  => l_error_message_name
2724                       ,p_application_id                => G_App_Short_Name
2725                       ,p_token_tbl                     => l_token_table
2726                       ,p_message_type                  => G_RET_STS_ERROR
2727                       ,p_row_identifier                => l_transaction_id
2728                       ,p_entity_code                   => l_entity_code
2729                       ,p_table_name                    => l_table_name);
2730 
2731 
2732                     l_token_table.DELETE;
2733 
2734 
2735                 END IF;
2736 
2737         END IF;-- END IF  (x_format_code IN (  G_NUMBER_DATA_TYPE,G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE )
2738         */
2739 
2740 
2741         IF x_return_status IS NULL THEN
2742             x_return_status :=  G_RET_STS_SUCCESS;
2743         END IF; --
2744 
2745         write_debug(G_PKG_Name,l_api_name,' End of API  x_return_status = '||x_return_status);
2746 
2747 
2748   EXCEPTION
2749 
2750         WHEN OTHERS THEN
2751             write_debug(G_PKG_Name,l_api_name,' In Exception of API Get_Key_VS_Columns ');
2752             x_return_status := G_RET_STS_UNEXP_ERROR;
2753             x_return_msg := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
2754             RETURN;
2755 
2756   END Get_Key_VS_Columns;
2757 
2758 
2759 
2760 
2761   --------------------------------------------------------------------------------
2762   -- Procedure to get key value for a given value of a value set.
2763   --------------------------------------------------------------------------------
2764   PROCEDURE Get_Key_Value_Columns
2765             ( p_value_set_id        IN                NUMBER,
2766               p_value_id            IN                NUMBER,
2767               x_display_name        IN OUT  NOCOPY    VARCHAR2,
2768               x_disp_sequence       IN OUT  NOCOPY    NUMBER,
2769               x_start_date_active   IN OUT  NOCOPY    DATE, --Bug 12692653
2770               x_end_date_active     IN OUT  NOCOPY    DATE, --Bug 12692653
2771               x_description         IN OUT  NOCOPY    VARCHAR2,
2772               x_enabled_flag        IN OUT  NOCOPY    VARCHAR2,
2773               x_return_status       OUT     NOCOPY    VARCHAR2,
2774               x_return_msg          OUT     NOCOPY    VARCHAR2
2775             )
2776   IS
2777 
2778 
2779         l_api_name          VARCHAR2(100) := 'Get_Key_Value_Columns';
2780 
2781         CURSOR Cur_Value
2782         IS
2783         SELECT FLEX_VALUE_MEANING,DESCRIPTION, START_DATE_ACTIVE,END_DATE_ACTIVE, ENABLED_FLAG
2784         FROM FND_FLEX_VALUES ,FND_FLEX_VALUES_TL
2785         WHERE  FND_FLEX_VALUES.flex_value_set_id = p_value_set_id
2786           AND FND_FLEX_VALUES.FLEX_VALUE_ID = p_value_id
2787           AND FND_FLEX_VALUES.FLEX_VALUE_ID = FND_FLEX_VALUES_TL.FLEX_VALUE_ID
2788           AND LANGUAGE = userenv('LANG')
2789           AND ROWNUM=1;
2790 
2791 
2792  --
2793  -- Bug 12394675. Issue #5.
2794  -- Parent sequnce is getting messed up. Added condition
2795  -- for valueset id.
2796  -- sreharih. Tue Apr 26 15:44:49 PDT 2011
2797  --
2798 
2799 
2800         -- Cursor to get display sequence.
2801         CURSOR c_get_disp_sequence (cp_flex_value_id  IN  NUMBER)
2802         IS
2803         SELECT disp_sequence
2804         FROM ego_vs_values_disp_order
2805         WHERE value_set_value_id = cp_flex_value_id
2806           AND value_set_id       = p_value_set_id; -- Bug 12394675.
2807 
2808 
2809   BEGIN
2810 
2811         write_debug(G_PKG_Name,l_api_name,' Start of API  ');
2812 
2813         FOR i IN cur_value
2814         LOOP
2815 
2816             IF x_display_name IS NULL THEN
2817               x_display_name :=  i.FLEX_VALUE_MEANING;
2818             END IF;
2819 
2820             -- User can pass null value as well.
2821             IF x_description IS NULL THEN
2822               x_description :=  i.description;
2823             END IF;
2824 
2825 
2826             IF x_start_date_active IS NULL THEN
2827                 x_start_date_active :=  i.start_date_active;
2828             END IF; -- END IF
2829 
2830 
2831             IF x_end_date_active IS NULL THEN
2832                 x_end_date_active :=  i.end_date_active;
2833             END IF; -- END IF
2834 
2835             -- User can pass null value as well.
2836             IF x_enabled_flag IS NULL THEN
2837               x_enabled_flag :=  i.enabled_flag;
2838             END IF;
2839 
2840         END LOOP;
2841 
2842 
2843 
2844         IF x_disp_sequence IS NULL THEN
2845             FOR Disp_Seq IN   c_get_disp_sequence (p_value_id)
2846             LOOP
2847 
2848               x_disp_sequence :=  Disp_Seq.disp_sequence;
2849 
2850             END LOOP; -- END FOR Disp_Seq IN   c_get_disp_sequence (p_value_id)
2851 
2852         END IF; -- END IF x_disp_sequence IS NULL THEN
2853 
2854 
2855         write_debug(G_PKG_Name,l_api_name,'Display seq after ' || x_disp_sequence );
2856         IF x_return_status IS NULL THEN
2857           x_return_status   :=  G_RET_STS_SUCCESS;
2858         END IF; -- END IF x_return_status IS NULL THEN
2859 
2860 
2861         --Dbms_Output.put_line(G_PKG_NAME||'.'||l_api_name||'  End of API  x_return_status = '||x_return_status);
2862 
2863 
2864 
2865   EXCEPTION
2866         WHEN OTHERS THEN
2867             write_debug(G_PKG_Name,l_api_name,' In Exception of API Get_Key_Value_Columns '||SubStr(SQLERRM,1,500) );
2868             --Dbms_Output.put_line(G_PKG_NAME||'.'||l_api_name||'   In Exception of API Get_Key_Value_Columns '||SubStr(SQLERRM,1,500) );
2869 
2870             x_return_status := G_RET_STS_UNEXP_ERROR;
2871             x_return_msg := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
2872             RETURN;
2873 
2874   END Get_Key_Value_Columns;
2875 
2876 
2877 
2878 
2879 
2880 
2881   --------------------------------------------------------------------------------
2882   -- Procedure to populate data back to value set interface table.
2883   --------------------------------------------------------------------------------
2884   PROCEDURE Populate_VS_Interface ( p_valueset_tbl    IN          Ego_Metadata_Pub.Value_Set_Tbl,
2885                                     x_return_status   OUT NOCOPY  VARCHAR2,
2886                                     x_return_msg      OUT NOCOPY  VARCHAR2)
2887   IS
2888 
2889       l_api_name       VARCHAR2(100) := 'Populate_VS_Interface';
2890       l_trans_id       Dbms_Sql.number_table;
2891 
2892   BEGIN
2893 
2894       write_debug(G_PKG_Name,l_api_name,' Start of API. Count of record is   '||p_valueset_tbl.Count );
2895       --Dbms_Output.put_line(G_PKG_NAME||'.'||l_api_name||'   Start of API. Count of record is   '||p_valueset_tbl.Count );
2896 
2897 
2898 
2899       FOR i IN p_valueset_tbl.FIRST..p_valueset_tbl.LAST
2900       LOOP
2901 
2902           l_trans_id(i) := p_valueset_tbl(i).transaction_id;
2903 
2904       END LOOP;
2905 
2906 
2907 
2908       FORALL i IN p_valueset_tbl.first..p_valueset_tbl.last
2909         UPDATE Ego_Flex_Value_Set_Intf
2910         SET ROW = p_valueset_tbl(i)
2911         WHERE transaction_id = l_trans_id(i);
2912 
2913 
2914 
2915       write_debug(G_PKG_Name,l_api_name,' End of API  ');
2916 
2917 
2918 
2919       IF x_return_status IS NULL THEN
2920         x_return_status :=  G_RET_STS_SUCCESS;
2921       END IF; -- END IF x_return_status IS NULL THEN
2922 
2923 
2924   EXCEPTION
2925       WHEN OTHERS THEN
2926           write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
2927           x_return_status := G_RET_STS_UNEXP_ERROR;
2928           x_return_msg := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
2929           RETURN;
2930   END Populate_VS_Interface;
2931 
2932 
2933 
2934 
2935 
2936 
2937 
2938 
2939   --------------------------------------------------------------------------------
2940   -- Procedure to populate data back to value interface table.
2941   --------------------------------------------------------------------------------
2942 
2943   PROCEDURE Populate_VS_Val_Interface ( p_valueset_val_tbl    IN          Ego_Metadata_Pub.Value_Set_Value_Tbl,
2944                                         x_return_status      OUT NOCOPY  VARCHAR2,
2945                                         x_return_msg         OUT NOCOPY  VARCHAR2)
2946   IS
2947 
2948       l_api_name       VARCHAR2(100) := 'Populate_VS_Val_Interface';
2949       l_trans_id       Dbms_Sql.number_table;
2950 
2951   BEGIN
2952 
2953       write_debug(G_PKG_Name,l_api_name,' Start of API. Count of passed in table  p_valueset_val_tbl = '||p_valueset_val_tbl.Count);
2954 
2955       IF p_valueset_val_tbl.count > 0 THEN   -- added if ocndition bug 12362025
2956 
2957         FOR i IN p_valueset_val_tbl.FIRST..p_valueset_val_tbl.LAST
2958         LOOP
2959             l_trans_id(i) := p_valueset_val_tbl(i).transaction_id;
2960 
2961         END LOOP;
2962 
2963 
2964 
2965         FORALL i IN p_valueset_val_tbl.first..p_valueset_val_tbl.last
2966           UPDATE Ego_Flex_Value_Intf
2967           SET ROW = p_valueset_val_tbl(i)
2968           WHERE transaction_id = l_trans_id(i);
2969 
2970       END IF;
2971 
2972 
2973         write_debug(G_PKG_Name,l_api_name,' End of API Populate_VS_Val_Interface ');
2974 
2975 
2976   EXCEPTION
2977 
2978         WHEN OTHERS THEN
2979             write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
2980             x_return_status := G_RET_STS_UNEXP_ERROR;
2981             x_return_msg := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
2982             RETURN;
2983 
2984   END Populate_VS_Val_Interface;
2985 
2986 
2987 
2988 
2989 
2990 
2991 
2992   --------------------------------------------------------------------------------
2993   -- Procedure to populate data back to value interface table.
2994   --------------------------------------------------------------------------------
2995   PROCEDURE Populate_VS_Val_Tl_Interface (p_valueset_val_tl_tbl     IN          Ego_Metadata_Pub.Value_Set_Value_Tl_Tbl,
2996                                           x_return_status           OUT NOCOPY  VARCHAR2,
2997                                           x_return_msg              OUT NOCOPY  VARCHAR2)
2998   IS
2999 
3000       l_api_name       VARCHAR2(100) := 'Populate_VS_Val_Tl_Interface';
3001       l_trans_id       Dbms_Sql.number_table;
3002 
3003   BEGIN
3004 
3005       write_debug(G_PKG_Name,l_api_name,' Start of API. Count of passed in table p_valueset_val_tl_tbl :  '||p_valueset_val_tl_tbl.Count);
3006       --Dbms_Output.put_line(G_PKG_NAME||'.'||l_api_name||' Start of API. Count of passed in table p_valueset_val_tl_tbl :  '||p_valueset_val_tl_tbl.Count);
3007 
3008 
3009 
3010 
3011 
3012       FOR i IN p_valueset_val_tl_tbl.FIRST..p_valueset_val_tl_tbl.LAST
3013       LOOP
3014 
3015           l_trans_id(i) := p_valueset_val_tl_tbl(i).transaction_id;
3016           write_debug(G_PKG_Name,l_api_name,' 000 table p_valueset_val_tl_tbl :  '||p_valueset_val_tl_tbl(i).flex_value||' Status '||p_valueset_val_tl_tbl(i).process_status);
3017 
3018       END LOOP;
3019 
3020 
3021 
3022       FORALL i IN p_valueset_val_tl_tbl.first..p_valueset_val_tl_tbl.last
3023         UPDATE Ego_Flex_Value_Tl_Intf
3024         SET ROW = p_valueset_val_tl_tbl(i)
3025         WHERE transaction_id = l_trans_id(i);
3026 
3027 
3028 
3029 
3030 
3031       /*FORALL i IN p_valueset_val_tl_tbl.first..p_valueset_val_tl_tbl.last
3032         UPDATE Ego_Flex_Value_Tl_Intf
3033         SET value_set_id              =  p_valueset_val_tl_tbl(i).value_set_id,
3034             value_set_name            =  p_valueset_val_tl_tbl(i).value_set_name,
3035             flex_value                =  p_valueset_val_tl_tbl(i).flex_value,
3036             flex_value_id             =  p_valueset_val_tl_tbl(i).flex_value_id,
3037             version_seq_id            =  p_valueset_val_tl_tbl(i).version_seq_id,
3038 
3039             "LANGUAGE"                =  p_valueset_val_tl_tbl(i).LANGUAGE,
3040             description               =  p_valueset_val_tl_tbl(i).description,
3041             source_lang               =  p_valueset_val_tl_tbl(i).source_lang,
3042             flex_value_meaning        =  p_valueset_val_tl_tbl(i).flex_value_meaning,
3043 
3044             transaction_type          =  p_valueset_val_tl_tbl(i).transaction_type,
3045             --transaction_id            =  p_valueset_val_tl_tbl(i).transaction_id,
3046 
3047             process_status            =  p_valueset_val_tl_tbl(i).process_status,
3048             set_process_id            =  p_valueset_val_tl_tbl(i).set_process_id,
3049 
3050             request_id                =  p_valueset_val_tl_tbl(i).request_id,
3051             program_application_id    =  p_valueset_val_tl_tbl(i).request_id,
3052             program_id                =  p_valueset_val_tl_tbl(i).program_application_id,
3053             program_update_date       =  p_valueset_val_tl_tbl(i).program_update_date,
3054 
3055             last_update_date          =  p_valueset_val_tl_tbl(i).last_update_date,
3056             last_updated_by           =  p_valueset_val_tl_tbl(i).last_updated_by,
3057             creation_date             =  p_valueset_val_tl_tbl(i).creation_date,
3058             created_by                =  p_valueset_val_tl_tbl(i).created_by,
3059             last_update_login         =  p_valueset_val_tl_tbl(i).last_update_login
3060 
3061         WHERE process_status  = G_PROCESS_RECORD
3062           AND transaction_id  = p_valueset_val_tl_tbl(i).transaction_id;*/
3063 
3064 
3065       write_debug(G_PKG_Name,l_api_name,' End of API. ');
3066       --Dbms_Output.put_line(G_PKG_NAME||'.'||l_api_name||' End of API. ');
3067 
3068   EXCEPTION
3069       WHEN OTHERS THEN
3070 
3071           write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
3072           --Dbms_Output.put_line(G_PKG_NAME||'.'||l_api_name||' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
3073           x_return_status := G_RET_STS_UNEXP_ERROR;
3074           x_return_msg := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
3075           RETURN;
3076 
3077   END Populate_VS_Val_Tl_Interface;
3078 
3079 
3080 
3081 
3082 
3083 
3084   -------------------------------------------------------------------------------------
3085   -- Procedure to initialize interface tables.
3086   -------------------------------------------------------------------------------------
3087   PROCEDURE Initialize_VS_Interface (
3088             p_api_version      IN         NUMBER,
3089             p_set_process_id   IN         NUMBER,
3090             x_return_status    OUT NOCOPY VARCHAR2,
3091             x_msg_count        OUT NOCOPY NUMBER,
3092             x_return_msg       OUT NOCOPY VARCHAR2)
3093   IS
3094 
3095 
3096       l_api_name                VARCHAR2(100) := 'Initialize_VS_Interface';
3097 
3098       TYPE Value_name_Tbl IS TABLE OF EGO_FLEX_VALUE_SET_INTF.value_set_name%TYPE  INDEX BY BINARY_INTEGER;
3099       l_name_tab                VALUE_NAME_TBL;   --:= value_name_tbl();
3100       l_err_message_name        VARCHAR2(240);
3101       l_err_message_text        VARCHAR2(2000);
3102       l_return_status           VARCHAR2(1);
3103       l_return_msg              VARCHAR2(1000);
3104 
3105 
3106 
3107       --Get value set name from interface table.
3108       CURSOR cur_valueset
3109       IS
3110       SELECT value_set_name
3111       FROM Ego_Flex_Value_Set_Intf
3112       WHERE (p_set_process_id IS NULL
3113               OR set_process_id = p_set_process_id
3114             )
3115         AND process_status=G_PROCESS_RECORD
3116         AND transaction_type = G_CREATE;
3117 
3118 
3119         --Get value set name from interface table for those which has version as negative .
3120       CURSOR cur_version_valueset
3121       IS
3122       SELECT value_set_name
3123       FROM Ego_Flex_Value_Set_Intf
3124       WHERE (p_set_process_id IS NULL
3125               OR set_process_id = p_set_process_id
3126             )
3127         AND process_status=G_PROCESS_RECORD
3128         AND Nvl(version_seq_id,0)<0;
3129 
3130 
3131         --Get child value set name .
3132       CURSOR cur_child_valueset
3133       IS
3134       SELECT value_set_name
3135       FROM Ego_Flex_Value_Set_Intf
3136       WHERE (p_set_process_id IS NULL
3137               OR set_process_id = p_set_process_id
3138             )
3139         AND process_status=G_PROCESS_RECORD
3140         AND parent_value_set_name IS NOT NULL;
3141 
3142 
3143   BEGIN
3144 
3145 
3146       write_debug(G_PKG_Name,l_api_name,' Start of API  ');
3147 
3148 
3149 
3150       -- Update value for transaction_id in value set interface table.
3151       UPDATE Ego_Flex_Value_Set_Intf
3152       SET  transaction_id   = MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL,
3153           transaction_type = Upper(transaction_type),
3154           last_updated_by  = G_USER_ID,
3155           last_update_date =sysdate,
3156           last_update_login=G_LOGIN_ID,
3157           created_by       = G_USER_ID,
3158           creation_date    = SYSDATE,
3159           request_id       = g_request_id,
3160           program_application_id = g_prog_appl_id,
3161           program_id       = g_program_id,
3162           program_update_date = SYSDATE
3163       WHERE (p_set_process_id IS NULL
3164               OR set_process_id = p_set_process_id
3165             )
3166         AND transaction_id IS NULL
3167         AND process_status=G_PROCESS_RECORD;
3168 
3169 
3170     -- Update value for transaction_id and transaction_type in value interface table.
3171       UPDATE Ego_Flex_Value_Intf
3172       SET  transaction_id   = MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL,
3173           transaction_type = Upper(transaction_type),
3174           last_updated_by  = G_USER_ID,
3175           last_update_date =sysdate,
3176           last_update_login=G_LOGIN_ID,
3177           created_by       = G_USER_ID,
3178           creation_date    = SYSDATE,
3179           request_id       = g_request_id,
3180           program_application_id = g_prog_appl_id,
3181           program_id       = g_program_id,
3182           program_update_date = SYSDATE
3183 
3184       WHERE (p_set_process_id IS NULL
3185               OR set_process_id = p_set_process_id
3186             )
3187         AND transaction_id IS NULL
3188         --AND Upper(transaction_type) IN (G_CREATE, G_UPDATE, G_Delete,G_SYNC)
3189         AND process_status=G_PROCESS_RECORD;
3190 
3191 
3192       -- Update value for transaction_id in translatable value interface table.
3193       UPDATE Ego_Flex_Value_Tl_Intf
3194       SET  transaction_id   = MTL_SYSTEM_ITEMS_INTERFACE_S.NEXTVAL ,
3195           transaction_type = Upper(transaction_type),
3196           last_updated_by  = G_USER_ID,
3197           last_update_date = SYSDATE,
3198           last_update_login= G_LOGIN_ID ,
3199           created_by       = G_USER_ID,
3200           creation_date    = SYSDATE,
3201           request_id       = g_request_id,
3202           program_application_id = g_prog_appl_id,
3203           program_id       = g_program_id,
3204           program_update_date = SYSDATE
3205 
3206       WHERE (p_set_process_id IS NULL
3207               OR set_process_id = p_set_process_id
3208             )
3209         AND transaction_id IS NULL
3210         --AND Upper(transaction_type) IN (G_CREATE, G_UPDATE, G_Delete,G_SYNC)
3211         AND process_status=G_PROCESS_RECORD;
3212 
3213 
3214 
3215       write_debug(G_PKG_Name,l_api_name,' Call to Resolve_Transaction_Type API. ');
3216 
3217       -- Call procedure to resolve transaction type.
3218       --Resolve_Transaction_Type(p_set_process_id,l_return_status,l_return_msg);
3219 
3220 
3221       --YJ
3222       -- initialize Application_id
3223       G_Application_Id  :=  Get_Application_Id();
3224       -- Initialize party name
3225 
3226       ego_metadata_bulkload_pvt.Get_Party_Name (  p_party_id    =>  G_party_id,
3227                                                   x_party_name  =>  G_Party_Name);
3228 
3229 
3230 
3231       -- Check if Telco profile is enabled for version VS.
3232       write_debug(G_PKG_Name,l_api_name,' Call to Validate_Transaction_Type. ');
3233       -- Bug 9802900
3234       Validate_Telco_profile(p_set_process_id,l_return_status,l_return_msg);
3235 
3236 
3237 
3238       IF (Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS ) THEN
3239 
3240           l_return_status                     := G_RET_STS_SUCCESS;
3241 
3242       ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
3243 
3244 
3245           write_debug(G_PKG_Name,l_api_name,' Error in validating Telco Profile. ');
3246           x_return_status             := l_return_status;
3247 
3248       ELSE    -- case of unexpected error
3249 
3250           x_return_status := G_RET_STS_UNEXP_ERROR;
3251           x_return_msg    := l_return_msg;
3252           RETURN;
3253 
3254       END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
3255 
3256 
3257 
3258 
3259 
3260 
3261       write_debug(G_PKG_Name,l_api_name,' Call to Validate_Transaction_Type. ');
3262       -- Call procedure to resolve transaction type.
3263       Validate_Transaction_Type(p_set_process_id,l_return_status,l_return_msg);
3264 
3265 
3266 
3267         -- Validation for version seq id
3268       /*OPEN cur_version_valueset;
3269       LOOP
3270         FETCH cur_version_valueset BULK COLLECT INTO l_name_tab limit 2000;
3271         FORALL i IN 1..l_name_tab.Count
3272           UPDATE Ego_Flex_Value_Set_Intf                -- Do bulk update
3273           SET process_status= 3
3274           WHERE value_set_name=l_name_tab(i);
3275 
3276         EXIT WHEN cur_version_valueset%NOTFOUND;
3277 
3278       END LOOP;
3279       CLOSE cur_version_valueset;
3280 
3281 
3282 
3283         -- Validation for child value set validation type
3284       OPEN cur_child_valueset;
3285       LOOP
3286         FETCH cur_child_valueset BULK COLLECT INTO l_name_tab limit 2000;
3287         FORALL i IN 1..l_name_tab.Count
3288           UPDATE Ego_Flex_Value_Set_Intf                -- Do bulk update
3289           SET process_status= 3
3290           WHERE value_set_name=l_name_tab(i)
3291             AND validation_type NOT IN (G_TABLE_VALIDATION_CODE);
3292 
3293         EXIT WHEN cur_child_valueset%NOTFOUND;
3294 
3295       END LOOP;
3296       CLOSE cur_child_valueset;   */
3297 
3298       -- Think of any validation for child value set where parent value set should be in 'I','X'
3299 
3300     write_debug(G_PKG_Name,l_api_name,' End of API  ');
3301 
3302   EXCEPTION
3303       WHEN OTHERS THEN
3304           write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
3305           x_return_status := G_RET_STS_UNEXP_ERROR;
3306           x_return_msg    := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
3307           RETURN;
3308 
3309 
3310   END Initialize_VS_Interface;  --End of bulk validation API
3311 
3312 
3313 
3314 
3315 
3316   -- YJ
3317   -- Bug 9802900
3318   PROCEDURE Validate_Telco_profile (p_set_process_id   IN         NUMBER,
3319                                     x_return_status    OUT NOCOPY VARCHAR2,
3320                                     x_return_msg       OUT NOCOPY VARCHAR2)
3321 
3322   IS
3323 
3324 
3325         l_api_name                VARCHAR2(100) := 'Validate_Telco_profile';
3326         l_err_message_name        VARCHAR2(240);
3327         l_err_message_text        VARCHAR2(2000);
3328         l_return_status           VARCHAR2(1);
3329         l_return_msg              VARCHAR2(1000);
3330 
3331 
3332   BEGIN
3333 
3334         write_debug(G_PKG_Name,l_api_name,' Start of API  ');
3335         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API  ');
3336 
3337 
3338         G_P4TP_PROFILE_ENABLED := CASE  FND_PROFILE.VALUE('EGO_ENABLE_P4T')
3339                                         WHEN 'Y' THEN TRUE
3340                                         ELSE FALSE
3341                                   END;
3342 
3343 
3344 
3345 
3346         IF NOT G_P4TP_PROFILE_ENABLED THEN
3347 
3348               l_err_message_name := 'EGO_P4T_PROFILE_DISABLED_ERROR';
3349 
3350               FND_MESSAGE.SET_NAME(G_APPL_NAME,l_err_message_name );
3351               FND_MESSAGE.SET_TOKEN('ENTITY_NAME' , G_ENTITY_VS_VER);
3352 
3353               l_err_message_text := FND_MESSAGE.GET;
3354 
3355 
3356 
3357 
3358               INSERT
3359               INTO
3360                 MTL_INTERFACE_ERRORS
3361                 (
3362                   TRANSACTION_ID,
3363                   UNIQUE_ID,
3364                   ORGANIZATION_ID,
3365                   COLUMN_NAME,
3366                   TABLE_NAME,
3367                   MESSAGE_NAME,
3368                   ERROR_MESSAGE,
3369                   bo_identifier,
3370                   ENTITY_IDENTIFIER,
3371                   LAST_UPDATE_DATE,
3372                   LAST_UPDATED_BY,
3373                   CREATION_DATE,
3374                   CREATED_BY,
3375                   LAST_UPDATE_LOGIN,
3376                   REQUEST_ID,
3377                   PROGRAM_APPLICATION_ID,
3378                   PROGRAM_ID,
3379                   PROGRAM_UPDATE_DATE
3380                 )
3381               SELECT
3382                 evsi.transaction_id,
3383                 MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
3384                 NULL,
3385                 NULL,
3386                 G_ENTITY_VS_HEADER_TAB,
3387                 l_err_message_name,
3388                 l_err_message_text,
3389                 G_BO_IDENTIFIER_VS,
3390                 G_ENTITY_VS_VER,
3391                 NVL(LAST_UPDATE_DATE, SYSDATE),
3392                 NVL(LAST_UPDATED_BY, G_USER_ID),
3393                 NVL(CREATION_DATE,SYSDATE),
3394                 NVL(CREATED_BY, G_USER_ID),
3395                 NVL(LAST_UPDATE_LOGIN, G_LOGIN_ID),
3396                 G_REQUEST_ID,
3397                 NVL(PROGRAM_APPLICATION_ID, G_PROG_APPL_ID),
3398                 NVL(PROGRAM_ID, G_PROGRAM_ID),
3399                 NVL(PROGRAM_UPDATE_DATE, sysdate)
3400               FROM Ego_Flex_Value_Set_Intf evsi
3401               WHERE (p_set_process_id IS NULL
3402                       OR set_process_id = p_set_process_id
3403                     )
3404                 AND process_status=G_PROCESS_RECORD
3405                 AND version_seq_id IS NOT NULL;
3406 
3407 
3408 
3409               -- Error out version related records
3410               UPDATE Ego_Flex_Value_Set_Intf
3411               SET process_status=G_ERROR_RECORD
3412               WHERE (p_set_process_id IS NULL
3413                       OR set_process_id = p_set_process_id
3414                     )
3415                 AND version_seq_id IS NOT NULL;
3416 
3417 
3418 
3419 
3420 
3421               INSERT
3422               INTO
3423                 MTL_INTERFACE_ERRORS
3424                 (
3425                   TRANSACTION_ID,
3426                   UNIQUE_ID,
3427                   ORGANIZATION_ID,
3428                   COLUMN_NAME,
3429                   TABLE_NAME,
3430                   MESSAGE_NAME,
3431                   ERROR_MESSAGE,
3432                   bo_identifier,
3433                   ENTITY_IDENTIFIER,
3434                   LAST_UPDATE_DATE,
3435                   LAST_UPDATED_BY,
3436                   CREATION_DATE,
3437                   CREATED_BY,
3438                   LAST_UPDATE_LOGIN,
3439                   REQUEST_ID,
3440                   PROGRAM_APPLICATION_ID,
3441                   PROGRAM_ID,
3442                   PROGRAM_UPDATE_DATE
3443                 )
3444               SELECT
3445                 evsvi.transaction_id,
3446                 MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
3447                 NULL,
3448                 NULL,
3449                 G_ENTITY_VAL_HEADER_TAB,
3450                 l_err_message_name,
3451                 l_err_message_text,
3452                 G_BO_IDENTIFIER_VS,
3453                 G_ENTITY_VS_VER,
3454                 NVL(LAST_UPDATE_DATE, SYSDATE),
3455                 NVL(LAST_UPDATED_BY, G_USER_ID),
3456                 NVL(CREATION_DATE,SYSDATE),
3457                 NVL(CREATED_BY, G_USER_ID),
3458                 NVL(LAST_UPDATE_LOGIN, G_LOGIN_ID),
3459                 G_REQUEST_ID,
3460                 NVL(PROGRAM_APPLICATION_ID, G_PROG_APPL_ID),
3461                 NVL(PROGRAM_ID, G_PROGRAM_ID),
3462                 NVL(PROGRAM_UPDATE_DATE, sysdate)
3463               FROM Ego_Flex_Value_Intf evsvi
3464               WHERE (p_set_process_id IS NULL
3465                       OR set_process_id = p_set_process_id
3466                     )
3467                 AND process_status=G_PROCESS_RECORD
3468                 AND version_seq_id IS NOT NULL;
3469 
3470 
3471               -- Error out version related records
3472               UPDATE Ego_Flex_Value_Intf
3473               SET process_status=G_ERROR_RECORD
3474               WHERE (p_set_process_id IS NULL
3475                       OR set_process_id = p_set_process_id
3476                     )
3477                 AND version_seq_id IS NOT NULL;
3478 
3479 
3480 
3481 
3482 
3483               INSERT
3484               INTO
3485                 MTL_INTERFACE_ERRORS
3486                 (
3487                   TRANSACTION_ID,
3488                   UNIQUE_ID,
3489                   ORGANIZATION_ID,
3490                   COLUMN_NAME,
3491                   TABLE_NAME,
3492                   MESSAGE_NAME,
3493                   ERROR_MESSAGE,
3494                   bo_identifier,
3495                   ENTITY_IDENTIFIER,
3496                   LAST_UPDATE_DATE,
3497                   LAST_UPDATED_BY,
3498                   CREATION_DATE,
3499                   CREATED_BY,
3500                   LAST_UPDATE_LOGIN,
3501                   REQUEST_ID,
3502                   PROGRAM_APPLICATION_ID,
3503                   PROGRAM_ID,
3504                   PROGRAM_UPDATE_DATE
3505                 )
3506               SELECT
3507                 evstvi.transaction_id,
3508                 MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
3509                 NULL,
3510                 NULL,
3511                 G_ENTITY_VAL_TL_HEADER_TAB,
3512                 l_err_message_name,
3513                 l_err_message_text,
3514                 G_BO_IDENTIFIER_VS,
3515                 G_ENTITY_VS_VER,
3516                 NVL(LAST_UPDATE_DATE, SYSDATE),
3517                 NVL(LAST_UPDATED_BY, G_USER_ID),
3518                 NVL(CREATION_DATE,SYSDATE),
3519                 NVL(CREATED_BY, G_USER_ID),
3520                 NVL(LAST_UPDATE_LOGIN, G_LOGIN_ID),
3521                 G_REQUEST_ID,
3522                 NVL(PROGRAM_APPLICATION_ID, G_PROG_APPL_ID),
3523                 NVL(PROGRAM_ID, G_PROGRAM_ID),
3524                 NVL(PROGRAM_UPDATE_DATE, sysdate)
3525               FROM Ego_Flex_Value_Tl_Intf evstvi
3526               WHERE (p_set_process_id IS NULL
3527                       OR set_process_id = p_set_process_id
3528                     )
3529                 AND process_status=G_PROCESS_RECORD
3530                 AND version_seq_id IS NOT NULL;
3531 
3532 
3533 
3534               -- Error out version related records
3535               UPDATE Ego_Flex_Value_Tl_Intf
3536               SET process_status=G_ERROR_RECORD
3537               WHERE (p_set_process_id IS NULL
3541 
3538                       OR set_process_id = p_set_process_id
3539                     )
3540                 AND version_seq_id IS NOT NULL;
3542         END IF; --IF NOT G_P4TP_PROFILE_ENABLED THEN
3543 
3544 
3545         write_debug(G_PKG_Name,l_api_name,' End of API  ');
3546         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API  ');
3547 
3548   EXCEPTION
3549         WHEN OTHERS THEN
3550 
3551             write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error :  '||SQLERRM);
3552             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' In Exception of API. Error :  '||SQLERRM);
3553             x_return_status := G_RET_STS_UNEXP_ERROR;
3554             x_return_msg := G_PKG_Name||'.'||l_api_name||'  - '||SQLERRM;
3555 
3556             RETURN;
3557 
3558 
3559   END Validate_Telco_profile;
3560 
3561 
3562   -------------------------------------------------------------------------------------
3563   -- Procedure to validate value sets.
3564   -------------------------------------------------------------------------------------
3565   PROCEDURE Validate_value_Set (
3566                                 p_value_set_name      IN    VARCHAR2,
3567                                 p_validation_code     IN    VARCHAR2,
3568                                 p_longlist_flag       IN    VARCHAR2,
3569                                 p_format_code         IN    VARCHAR2,
3570                                 p_maximum_size        IN    NUMBER,
3571                                 p_maximum_value       IN    VARCHAR2,
3572                                 p_minimum_value       IN    VARCHAR2,
3573                                 p_version_seq_id      IN    NUMBER,
3574                                 p_transaction_id      IN    NUMBER,
3575                                 p_transaction_type    IN    VARCHAR2,
3576                                 x_return_status      OUT NOCOPY VARCHAR2,
3577                                 x_return_msg         OUT NOCOPY VARCHAR2)
3578 
3579   IS
3580 
3581         l_api_name       VARCHAR2(100)    := 'Validate_value_Set';
3582 
3583         l_transaction_type  VARCHAR2(30)  :=  p_transaction_type;
3584         l_validation_code   VARCHAR2(1)   :=  p_validation_code;
3585         l_longlist_flag     VARCHAR2(1)   :=  p_longlist_flag;
3586         l_format_code       VARCHAR2(1)   :=  p_format_code;
3587         l_version_seq_id    NUMBER        :=  p_version_seq_id;
3588         l_value_set_name    VARCHAR2(500) :=  p_value_set_name;
3589         l_maximum_value     VARCHAR2(150) :=  p_maximum_value;
3590         l_minimum_value     VARCHAR2(150) :=  p_minimum_value;
3591         l_maximum_size      NUMBER        :=  p_maximum_size;
3592 
3593 
3594 
3595         /* Local variable to be used in error handling mechanism*/
3596         l_entity_code       VARCHAR2(40) :=  G_ENTITY_VS;
3597         l_table_name        VARCHAR2(240):=  G_ENTITY_VS_HEADER_TAB;
3598 
3599         l_token_table            ERROR_HANDLER.Token_Tbl_Type;
3600         l_application_id         NUMBER :=  G_Application_Id;
3601         l_error_message_name     VARCHAR2(500);
3602         --l_error_row_identifier   NUMBER;
3603         l_transaction_id           NUMBER :=p_transaction_id;
3604         l_process_status         NUMBER:=NULL;
3605 
3606   BEGIN
3607 
3608         write_debug(G_PKG_Name,l_api_name,' Start of API. ');
3609         ----Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API. ');
3610 
3611 
3612         -- Check for Validation Code
3613         IF  l_validation_code NOT IN (G_TRANS_IND_VALIDATION_CODE,G_INDEPENDENT_VALIDATION_CODE,G_NONE_VALIDATION_CODE,G_TABLE_VALIDATION_CODE)  THEN
3614 
3615             write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS name)=('
3616                                         ||l_value_set_name||')'||' Pass correct validation code for value set. ');
3617 
3618 
3619 
3620             l_error_message_name          := 'EGO_VSET_VALIDATION_ERROR';
3621             l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
3622             l_token_table(1).TOKEN_VALUE  := l_value_set_name;
3623             x_return_status               := G_RET_STS_ERROR;
3624 
3625 
3626             ERROR_HANDLER.Add_Error_Message(
3627                p_message_name                  => l_error_message_name
3628               ,p_application_id                => G_App_Short_Name
3629               ,p_token_tbl                     => l_token_table
3630               ,p_message_type                  => G_RET_STS_ERROR
3631               ,p_row_identifier                => l_transaction_id
3632               ,p_entity_code                   => l_entity_code
3633               ,p_table_name                    => l_table_name
3634             );
3635 
3636             l_token_table.DELETE;
3637         END IF;
3638 
3639         -- Check for Longlist Flag
3640         IF l_longlist_flag NOT IN (G_LOV_LONGLIST_FLAG,G_POPLIST_LONGLIST_FLAG)  THEN
3641 
3642             write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS name)=('
3643                                         ||l_value_set_name||')'||' Pass correct longlist flag for value set. ');
3644 
3645             l_error_message_name          := 'EGO_VSET_LONGLIST_ERROR';
3646             l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
3647             l_token_table(1).TOKEN_VALUE  := l_value_set_name;
3648             x_return_status               := G_RET_STS_ERROR;
3649 
3650             ERROR_HANDLER.Add_Error_Message(
3651                p_message_name                  => l_error_message_name
3652               ,p_application_id                => G_App_Short_Name
3653               ,p_token_tbl                     => l_token_table
3654               ,p_message_type                  => G_RET_STS_ERROR
3655               ,p_row_identifier                => l_transaction_id
3656               ,p_entity_code                   => l_entity_code
3657               ,p_table_name                    => l_table_name
3658             );
3659 
3660             l_token_table.DELETE;
3661 
3662         END IF;
3663 
3664         -- Check for Date Type
3665         IF l_format_code NOT IN (G_CHAR_DATA_TYPE,G_NUMBER_DATA_TYPE,G_DATE_DATA_TYPE, G_DATE_TIME_DATA_TYPE)  THEN
3666 
3667             write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS name)=('
3668                                         ||l_value_set_name||')'||' Pass correct data type for value set. ');
3669 
3670             l_error_message_name          := 'EGO_VSET_DATA_TYPE_ERROR';
3671             l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
3672             l_token_table(1).TOKEN_VALUE  := l_value_set_name;
3673             x_return_status               := G_RET_STS_ERROR;
3674 
3675             ERROR_HANDLER.Add_Error_Message(
3676               p_message_name                  => l_error_message_name
3677               ,p_application_id                => G_App_Short_Name
3678               ,p_token_tbl                     => l_token_table
3679               ,p_message_type                  => G_RET_STS_ERROR
3680               ,p_row_identifier                => l_transaction_id
3681               ,p_entity_code                   => l_entity_code
3682               ,p_table_name                    => l_table_name
3683             );
3684 
3685             l_token_table.DELETE;
3686 
3687         END IF;
3688 
3689 
3690 
3691         -- Check for version validation for negative version
3692         IF  (l_version_seq_id IS NOT NULL AND l_version_seq_id <0 )THEN
3693 
3694             write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS name)=('
3695                                         ||l_value_set_name||')'||' A version seq id can not be a negative number. ');
3696 
3697 
3698 
3699             l_error_message_name          := 'EGO_VS_VERSION_NUMBER_ERROR';
3700             l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
3701             l_token_table(1).TOKEN_VALUE  := l_value_set_name;
3702             x_return_status               := G_RET_STS_ERROR;
3703 
3704             ERROR_HANDLER.Add_Error_Message(
3705               p_message_name                  => l_error_message_name
3706               ,p_application_id                => G_App_Short_Name
3707               ,p_token_tbl                     => l_token_table
3708               ,p_message_type                  => G_RET_STS_ERROR
3709               ,p_row_identifier                => l_transaction_id
3710               ,p_entity_code                   => l_entity_code
3711               ,p_table_name                    => l_table_name
3712             );
3713 
3714             l_token_table.DELETE;
3715 
3716         END IF; --IF  l_validation_code = G_TABLE_VALIDATION_CODE THEN
3717 
3718 
3719 
3720 
3721 
3722         -- Check fo table type
3723         IF  l_validation_code = G_TABLE_VALIDATION_CODE AND l_version_seq_id IS NOT NULL THEN
3724 
3725           write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS name)=('
3726                                         ||l_value_set_name||')'||' A table type of value set can not be a versioned value set. ');
3727 
3728 
3729 
3730             l_error_message_name          := 'EGO_TABLE_VS_VERSION_ERROR';
3731             l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
3732             l_token_table(1).TOKEN_VALUE  := l_value_set_name;
3733             x_return_status               := G_RET_STS_ERROR;
3734 
3735             ERROR_HANDLER.Add_Error_Message(
3736               p_message_name                  => l_error_message_name
3737               ,p_application_id                => G_App_Short_Name
3738               ,p_token_tbl                     => l_token_table
3739               ,p_message_type                  => G_RET_STS_ERROR
3740               ,p_row_identifier                => l_transaction_id
3741               ,p_entity_code                   => l_entity_code
3742               ,p_table_name                    => l_table_name
3743             );
3744 
3745             l_token_table.DELETE;
3746 
3747         END IF; --IF  l_validation_code = G_TABLE_VALIDATION_CODE THEN
3748 
3749 
3750 
3751 
3752         -- Bug 9702845
3753         IF  (l_format_code IN (  G_NUMBER_DATA_TYPE,G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE )
3754                             AND l_validation_code= G_NONE_VALIDATION_CODE
3755                         ) THEN
3756 
3757 
3758                 IF l_maximum_value < l_minimum_value  THEN
3759 
3760 
3761                     write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS name)=('
3762                                                 ||l_value_set_name||')'||' Maximum value should always be greater than minimum value. ');
3763 
3764 
3765 
3766                     l_error_message_name          := 'EGO_VAL_MUST_LT_MAXVALUE';
3767                     x_return_status               := G_RET_STS_ERROR;
3768 
3769                     l_token_table(1).TOKEN_NAME   := 'MAXVALUE';
3770                     l_token_table(1).TOKEN_VALUE  := l_maximum_value;
3771 
3772 
3773                     ERROR_HANDLER.Add_Error_Message(
3774                       p_message_name                  => l_error_message_name
3775                       ,p_application_id                => G_App_Short_Name
3776                       ,p_token_tbl                     => l_token_table
3777                       ,p_message_type                  => G_RET_STS_ERROR
3778                       ,p_row_identifier                => l_transaction_id
3779                       ,p_entity_code                   => l_entity_code
3780                       ,p_table_name                    => l_table_name);
3781 
3782 
3783                     l_token_table.DELETE;
3784 
3785 
3786                 END IF;
3787 
3788         END IF;-- END IF  (l_format_code IN (  G_NUMBER_DATA_TYPE,G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE )
3789 
3790 
3791 
3792 
3793         IF  l_format_code IN (  G_NUMBER_DATA_TYPE,G_CHAR_DATA_TYPE )  THEN --G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE )
3794 
3795                 IF l_maximum_size IS NULL THEN
3796 
3797 
3798                     write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS name)=('
3799                                                 ||l_value_set_name||')'||' Maximum size is required. ');
3800 
3801 
3802 
3803                     l_error_message_name          := 'EGO_VS_MAXSIZE_REQ';
3804                     x_return_status               := G_RET_STS_ERROR;
3805 
3806 
3807                     ERROR_HANDLER.Add_Error_Message(
3808                       p_message_name                  => l_error_message_name
3809                       ,p_application_id                => G_App_Short_Name
3810                       ,p_token_tbl                     => l_token_table
3811                       ,p_message_type                  => G_RET_STS_ERROR
3812                       ,p_row_identifier                => l_transaction_id
3813                       ,p_entity_code                   => l_entity_code
3814                       ,p_table_name                    => l_table_name);
3815 
3816 
3817 
3818                 END IF;
3819 
3820         END IF;-- END IF  (l_format_code IN (  G_NUMBER_DATA_TYPE,G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE )
3821 
3822 
3823 
3824         IF  l_format_code =G_DATE_DATA_TYPE THEN
3825 
3826                 l_maximum_size := 11;
3827 
3828         END IF;-- END IF
3829 
3830         IF  l_format_code =G_DATE_TIME_DATA_TYPE THEN
3831 
3832                 l_maximum_size := 20;
3833 
3834         END IF;-- END IF
3835 
3836 
3837 
3838 
3839 
3840       --END IF;-- END  IF l_transaction_type = G_CREATE THEN
3841 
3842       write_debug(G_PKG_Name,l_api_name,' End of API. ');
3843       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API. ');
3844 
3845   EXCEPTION
3846 
3847       WHEN OTHERS THEN
3848           write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
3849           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
3850 
3851           x_return_status := G_RET_STS_UNEXP_ERROR;
3852           x_return_msg    := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
3853           RETURN;
3854 
3855 
3856   END Validate_Value_Set;
3857 
3858 
3859 
3860 
3861 
3862 
3863   ---------------------------------------------------------------------------------
3864   -- Procedure to be used to import value set while called using concurrent program.
3865   ---------------------------------------------------------------------------------
3866   PROCEDURE Import_Value_Set_Intf (p_set_process_id   IN          NUMBER,
3867                                   x_return_status    OUT NOCOPY  VARCHAR2,
3868                                   x_return_msg       OUT NOCOPY  VARCHAR2)
3869   IS
3870 
3871 
3872         l_api_name                VARCHAR2(100) := 'Import_Value_Set_Intf';
3873 
3874 
3875         l_valueset_tab            Ego_Metadata_Pub.Value_Set_Tbl;--:= Value_Set_Tbl();
3876         l_valueset_val_tab        Ego_Metadata_Pub.Value_Set_Value_Tbl;--:= Value_Set_Tbl();
3877         l_valueset_val_tl_tbl     Ego_Metadata_Pub.Value_Set_Value_Tl_Tbl;
3878         l_return_status           VARCHAR2(10);
3879         l_msg_count               NUMBER;
3880         l_return_msg              VARCHAR2(1000);
3881 
3882         l_out_version_seq_id      NUMBER;
3883 
3884         l_err_message_name        VARCHAR2(50);
3885         l_err_message_text        VARCHAR2(500);
3886 
3887         -- Variables for record type
3888         l_vs_val_rec              Ego_Metadata_Pub.Value_Set_Value_Tbl;
3889         l_valueset_rec            Ego_Metadata_Pub.Value_Set_Tbl;
3890 
3891         l_install_lang              VARCHAR2(10);
3892         l_nls_language            VARCHAR2(100);
3893         l_dynamic_sql                 VARCHAR2(1000);
3894 
3895         l_lang_exist              VARCHAR2(100):=NULL ;
3896         l_version_vs_val_exist    BOOLEAN      :=FALSE;
3897 
3898 
3899 
3900         --=========================================
3901         -- Cursor for Non Version VS and Values
3902         --=========================================
3903 
3904         -- Cursor to get non versioned parent value Set
3905         CURSOR Cur_Non_Vers_VS
3906         IS
3907         SELECT *
3908         FROM Ego_Flex_Value_Set_Intf
3909         WHERE (p_set_process_id IS NULL
3910                 OR set_process_id = p_set_process_id
3911               )
3912           AND version_seq_id IS NULL
3913           AND process_status=G_PROCESS_RECORD
3914           AND parent_value_set_name is NULL
3915           ORDER BY value_set_name;
3916 
3917 
3918 
3919 
3920 
3921 
3922         -- Get values.
3923         CURSOR Cur_Non_Vers_Values
3924         IS
3925         SELECT *
3926         FROM Ego_Flex_Value_Intf evsvi
3927         WHERE (p_set_process_id IS NULL
3928                 OR evsvi.set_process_id = p_set_process_id
3929               )
3930           AND evsvi.process_status=G_PROCESS_RECORD
3931           AND evsvi.version_seq_id IS NULL
3932 
3933           AND EXISTS
3934             ( SELECT 1
3935               FROM Ego_Flex_Value_Set_Intf evsi
3936               WHERE
3937                 (   (p_set_process_id IS NULL
3938                       OR evsi.set_process_id = p_set_process_id
3939                     )
3940                 AND (evsi.value_set_name= evsvi.value_set_name
3941                       OR evsi.value_set_id= evsvi.value_set_id
3942                     )
3943                 AND  evsi.process_status = G_SUCCESS_RECORD
3944                 AND  evsi.version_seq_id IS NULL
3945                 AND  evsi.parent_value_set_name IS NULL
3946                 )
3947 
3948               UNION
3949 
3950                 SELECT 1
3951                 FROM  Fnd_Flex_Value_Sets ffvs
3952                 WHERE (ffvs.flex_value_set_name= evsvi.value_set_name
3953                         OR ffvs.flex_value_set_id= evsvi.value_set_id
3954                       )
3955                   AND NOT EXISTS
3956                       ( SELECT 1
3957                         FROM Ego_Flex_valueSet_Version_b efvsv
3958                         WHERE ffvs.flex_value_set_id= efvsv.flex_value_set_id
3959                       )
3960                   AND NOT EXISTS
3961                       ( SELECT 1
3962                         FROM Ego_value_Set_Ext evse
3963                         WHERE ffvs.flex_value_set_id = evse.value_set_id
3964                       )
3965 
3966                   AND  ffvs.parent_flex_value_set_id IS NULL
3967             )
3968 
3969         ORDER BY value_set_name, value_set_id ;
3970 
3971 
3972 
3973 
3974         -- For translatable values
3975         CURSOR Cur_Non_Vers_Trans_Values  ( cp_value_set_name VARCHAR2,
3976                                             cp_value_set_id   NUMBER,
3977                                             cp_flex_value     VARCHAR2,
3978                                             cp_flex_value_id  NUMBER,
3979                                             cp_language_code  VARCHAR2 )
3980 
3981         IS
3982         SELECT *
3983         FROM Ego_Flex_Value_tl_Intf evstvi
3984         WHERE
3985             (
3986               ( p_set_process_id IS NULL
3987                 OR evstvi.set_process_id = p_set_process_id
3988               )
3989               AND ( evstvi.flex_value = cp_flex_value
3990                     OR
3991                     evstvi.flex_value_id = cp_flex_value_id
3992                   )
3993               AND
3994                   ( evstvi.value_set_name = cp_value_set_name
3995                     OR
3996                     evstvi.value_set_id = cp_value_set_id
3997                   )
3998 
3999 
4000               AND EXISTS
4001                 ( SELECT 1
4002                   FROM Ego_Flex_Value_Intf      evsvi,
4003                         Ego_Flex_Value_Set_Intf  evsi
4004                   WHERE
4005                     (   (p_set_process_id IS NULL
4006                           OR evsvi.set_process_id = p_set_process_id
4007                         )
4008                     AND
4009                         (p_set_process_id IS NULL
4010                           OR evsi.set_process_id = p_set_process_id
4011                         )
4012                     AND (
4013                           ( evsi.value_set_name= evsvi.value_set_name
4014                             AND evsvi.value_set_name= evstvi.value_set_name
4015                           )
4016                           OR
4017                           ( evsi.value_set_id= evsvi.value_set_id
4018                             AND evsvi.value_set_id= evstvi.value_set_id
4019                           )
4020                         )
4021 
4022                     AND (evsvi.flex_value= evstvi.flex_value
4023                           OR evsvi.flex_value_id = evstvi.flex_value_id
4024                         )
4025                     AND  evsi.process_status = G_SUCCESS_RECORD
4026                     AND  evsvi.process_status = G_PROCESS_RECORD
4027                     AND  evsi.parent_value_set_name IS NULL
4028                     AND  evsi.version_seq_id IS NULL
4029                     AND  evsvi.version_seq_id IS NULL
4030                     )
4031                   UNION
4032 
4033                   SELECT 1
4034                   FROM Ego_Flex_Value_Intf      evsvi,
4035                         Fnd_Flex_Value_Sets     ffvs
4036                   WHERE
4037                     (   (p_set_process_id IS NULL
4038                           OR evsvi.set_process_id = null
4039                         )
4040                     AND (
4041                           ( ffvs.flex_value_set_name= evsvi.value_set_name
4042                             AND evsvi.value_set_name= evstvi.value_set_name
4043                           )
4044                           OR
4045                           ( ffvs.flex_value_set_id= evsvi.value_set_id
4046                             AND evsvi.value_set_id= evstvi.value_set_id
4047                           )
4048                         )
4049 
4050                     AND (evsvi.flex_value= evstvi.flex_value
4051                           OR evsvi.flex_value_id = evstvi.flex_value_id
4052                         )
4053                     AND  evsvi.process_status = G_PROCESS_RECORD
4054                     AND  ffvs.parent_flex_value_set_id IS NULL
4055                     AND  NOT EXISTS
4056                           ( SELECT 1
4057                             FROM Ego_Flex_valueSet_Version_b efvsv
4058                             WHERE ffvs.flex_value_set_id= efvsv.flex_value_set_id
4059                           )
4060                     AND NOT EXISTS
4061                           ( SELECT 1
4062                             FROM Ego_value_Set_Ext evse
4063                             WHERE ffvs.flex_value_set_id = evse.value_set_id
4064                           )
4065                     AND  evsvi.version_seq_id IS NULL
4066                     )
4067 
4068 
4069                 )
4070 
4071               AND evstvi.version_seq_id IS NULL
4072               AND evstvi.process_status=G_PROCESS_RECORD
4073               AND "LANGUAGE" = cp_language_code
4074             )
4075         --GROUP BY LANGUAGE
4076         ORDER BY VALUE_set_name       ;
4077 
4078 
4079 
4080 
4081         -- Cursor to get orphan value record
4082         CURSOR Cur_Orphan_val
4083         IS
4084         SELECT *
4085           FROM Ego_Flex_Value_Intf evsvi
4086           WHERE (p_set_process_id IS NULL
4087                   OR evsvi.set_process_id = p_set_process_id
4088                 )
4089             AND evsvi.process_status=G_PROCESS_RECORD
4090             AND evsvi.version_seq_id IS NULL
4091           ORDER BY value_set_name, value_set_id;
4092 
4093 
4094 
4095 
4096 
4097         -- Cursor to get orphan translatable values
4098         CURSOR Cur_Orphan_Trans_Values  (cp_language_code  VARCHAR2 )
4099         IS
4100         SELECT *
4101         FROM Ego_Flex_Value_tl_Intf evstvi
4102         WHERE
4103             (
4104               ( p_set_process_id IS NULL
4105                 OR evstvi.set_process_id = p_set_process_id
4106               )
4107               AND evstvi.version_seq_id IS NULL
4108               AND evstvi.process_status=G_PROCESS_RECORD
4109               AND "LANGUAGE" = cp_language_code
4110             )
4111         ORDER BY VALUE_set_name;
4112 
4113 
4114 
4115 
4116 
4117 
4118 
4119         -- Get all available languages.
4120         CURSOR Cur_NLS_Lang
4121         IS
4122         SELECT language_code, nls_language
4123         FROM FND_LANGUAGES
4124         WHERE installed_flag IN ('I','B');
4125 
4126 
4127 
4128 
4129 
4130         CURSOR Cur_Trans_Lang ( cp_value_id       NUMBER ,
4131                                 cp_version_seq_id NUMBER,
4132                                 cp_lang_code      VARCHAR2)
4133         IS
4134         ( SELECT 1 AS lang_code
4135             FROM EGO_FLEX_VALUE_VERSION_TL
4139         );
4136             WHERE flex_value_id = cp_value_id
4137               AND version_seq_id  = cp_version_seq_id
4138               AND "LANGUAGE" = cp_lang_code
4140 
4141 
4142 
4143 
4144 
4145 
4146         --=================================
4147         -- Cursor for Versioned VS and values
4148         --================================
4149 
4150 
4151         -- Cursor to get versioned value Set
4152         CURSOR Cur_Vers_VS
4153         IS
4154         SELECT *
4155         FROM Ego_Flex_Value_Set_Intf
4156         WHERE (p_set_process_id IS NULL
4157                 OR set_process_id = p_set_process_id
4158               )
4159           AND version_seq_id IS NOT NULL
4160           AND process_status=G_PROCESS_RECORD
4161           ORDER BY value_set_name, version_seq_id;
4162 
4163 
4164 
4165         -- Get versioned values
4166         CURSOR Cur_Vers_Values (cp_value_set_name   VARCHAR2,
4167                                 cp_value_set_id     NUMBER,
4168                                 cp_version_seq_id   NUMBER)
4169         IS
4170         SELECT *
4171         FROM Ego_Flex_Value_Intf evsvi
4172         WHERE (p_set_process_id IS NULL
4173                 OR evsvi.set_process_id = p_set_process_id
4174               )
4175           AND evsvi.process_status=G_PROCESS_RECORD
4176           AND evsvi.version_seq_id IS NOT NULL
4177           AND ( evsvi.value_set_name = cp_value_set_name
4178                 OR
4179                 evsvi.value_set_id = cp_value_set_id
4180               )
4181           AND evsvi.version_seq_id = cp_version_seq_id
4182           AND EXISTS
4183             ( SELECT 1
4184               FROM Ego_Flex_Value_Set_Intf evsi
4185               WHERE
4186                 (   (p_set_process_id IS NULL
4187                       OR evsi.set_process_id = p_set_process_id
4188                     )
4189                 AND (evsi.value_set_name= evsvi.value_set_name
4190                       OR evsi.value_set_id= evsvi.value_set_id
4191                     )
4192                 AND  evsi.process_status = G_PROCESS_RECORD -- YTJ -- Cross verify if status is going to be this one.
4193                 AND  evsi.version_seq_id = evsvi.version_seq_id -- IS NULL
4194                 )
4195             )
4196         ORDER BY value_set_name, value_set_id,version_seq_id ;
4197 
4198 
4199 
4200 
4201 
4202         -- For translatable values
4203         CURSOR Cur_Vers_Trans_Values      ( cp_value_set_name   VARCHAR2,
4204                                             cp_value_set_id     NUMBER,
4205                                             cp_version_seq_id   NUMBER,
4206                                             cp_flex_value       VARCHAR2,
4207                                             cp_flex_value_id    NUMBER )
4208         IS
4209         SELECT *
4210         FROM Ego_Flex_Value_tl_Intf evstvi
4211         WHERE
4212             (
4213               ( p_set_process_id IS NULL
4214                 OR evstvi.set_process_id = p_set_process_id
4215               )
4216               AND evstvi.version_seq_id = cp_version_seq_id
4217               AND evstvi.process_status=G_PROCESS_RECORD
4218               AND ( evstvi.value_set_name = cp_value_set_name
4219                     OR
4220                     evstvi.value_set_id = cp_value_set_id
4221                   )
4222               AND ( evstvi.flex_value = cp_flex_value
4223                     OR
4224                     evstvi.flex_value_id = cp_flex_value_id
4225                   )
4226               AND EXISTS
4227                 ( SELECT 1
4228                   FROM Ego_Flex_Value_Intf      evsvi,
4229                         Ego_Flex_Value_Set_Intf  evsi
4230                   WHERE
4231                     (   (p_set_process_id IS NULL
4232                           OR evsvi.set_process_id = p_set_process_id
4233                         )
4234                     AND
4235                         (p_set_process_id IS NULL
4236                           OR evsi.set_process_id = p_set_process_id
4237                         )
4238                     AND (
4239                           ( evsi.value_set_name= evsvi.value_set_name
4240                             AND evsvi.value_set_name= evstvi.value_set_name
4241                           )
4242                           OR
4243                           ( evsi.value_set_id= evsvi.value_set_id
4244                             AND evsvi.value_set_id= evstvi.value_set_id
4245                           )
4246                         )
4247 
4248                     AND (evsvi.flex_value= evstvi.flex_value
4249                           OR evsvi.flex_value_id = evstvi.flex_value_id
4250                         )
4251                     AND ( evsi.version_seq_id = evsvi.version_seq_id
4252                           AND  evsvi.version_seq_id =evstvi.version_seq_id
4253                         )
4254                     AND  evsi.process_status = G_PROCESS_RECORD -- YTJ -- Cross verify if status is going to be this one
4255                     AND  evsvi.process_status = G_PROCESS_RECORD
4256 
4257                     )
4258                 )
4259 
4260 
4261             )
4262             ORDER BY flex_value, flex_value_id,version_seq_id;
4263 
4264 
4265 
4266 
4267 
4268         --=================================
4269         -- Cursor for Child VS and values
4270         --================================
4271 
4272         -- Cursor to get Child value Set
4273         CURSOR Cur_Child_VS
4274         IS
4275         SELECT *
4276         FROM Ego_Flex_Value_Set_Intf
4277         WHERE (p_set_process_id IS NULL
4278                 OR set_process_id = p_set_process_id
4279               )
4280           AND process_status=G_PROCESS_RECORD
4281           AND parent_value_set_name IS NOT NULL
4282           AND version_seq_id IS NULL
4283           ORDER BY value_set_name, value_set_id;
4284 
4285 
4286 
4287 
4288 
4289 
4290         CURSOR Cur_Child_Values
4291         IS
4292         SELECT *
4293         FROM Ego_Flex_Value_Intf evsvi
4294         WHERE (p_set_process_id IS NULL
4295                 OR evsvi.set_process_id = p_set_process_id
4296               )
4297           AND evsvi.process_status=G_PROCESS_RECORD
4298           AND evsvi.version_seq_id IS NULL
4299           AND EXISTS
4300 
4301             ( SELECT 1
4302               FROM Ego_Flex_Value_Set_Intf evsi
4303               WHERE
4304                 (   (p_set_process_id IS NULL
4305                       OR evsi.set_process_id = p_set_process_id
4306                     )
4307                 AND (evsi.value_set_name= evsvi.value_set_name
4308                       OR evsi.value_set_id= evsvi.value_set_id
4309                     )
4310                 AND  evsi.process_status = G_PROCESS_RECORD
4311                 AND  evsi.version_seq_id IS NULL
4312                 AND  evsi.parent_value_set_name IS NOT NULL
4313                 )
4314 
4315               UNION
4316               SELECT 1
4317               FROM Fnd_Flex_Value_Sets ffvs
4318               WHERE
4319                 (   ( ffvs.flex_value_set_name= evsvi.value_set_name
4320                       OR ffvs.flex_value_set_id= evsvi.value_set_id
4321                     )
4322                   AND NOT EXISTS
4323                     ( SELECT 1
4324                       FROM Ego_Flex_valueSet_Version_b efvsv
4325                       WHERE ffvs.flex_value_set_id= efvsv.flex_value_set_id
4326                     )
4327 
4328                   AND  EXISTS
4329                     ( SELECT 1
4330                       FROM Ego_value_Set_Ext evse
4331                       WHERE ffvs.flex_value_set_id = evse.value_set_id
4332                     )
4333                 )
4334 
4335 
4336 
4337 
4338             )
4339         ORDER BY evsvi.value_set_name, evsvi.value_set_id ;
4340 
4341 
4342 
4343 
4344 
4345   BEGIN
4346 
4347 
4348         write_debug(G_PKG_Name,l_api_name,' Start of API. ');
4349         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API. ');
4350 
4351 
4352         G_FLOW_TYPE :=G_EGO_MD_INTF;
4353         --G_Application_Id  :=  Get_Application_Id();
4354 
4355 
4356         write_debug(G_PKG_Name,l_api_name,' Call to Initialize_VS_Interface API.');
4357         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Call to Initialize_VS_Interface API.');
4358 
4359         --2.1.1-- Call Bulk Validation API
4360         Initialize_VS_Interface (1,p_set_process_id,l_return_status,l_msg_count,l_return_msg);
4361 
4362 
4363         -- check the return status
4364         IF (l_return_status =G_RET_STS_UNEXP_ERROR )
4365         THEN
4366 
4367           x_return_status :=  G_RET_STS_UNEXP_ERROR;
4368           x_return_msg    :=  l_return_msg;
4369           RETURN;
4370 
4371 
4372         END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
4373 
4374 
4375 
4376 
4377 
4378         --==================================================
4379         -- Part1: - Process Non Versioned Parent value Set
4380         --==================================================
4381 
4382         --Construct PL/SQL table for non child value sets  and Call to process non child value set API
4383         write_debug(G_PKG_Name,l_api_name,' Start processing Non Ver VS ');
4384         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start processing Non Ver VS ');
4385 
4386 
4387 
4388         --FOR i IN Cur_Non_Vers_VS
4389         OPEN Cur_Non_Vers_VS;
4390         LOOP
4391 
4392             FETCH Cur_Non_Vers_VS BULK COLLECT INTO l_valueset_tab limit 2000;
4393 
4394             write_debug(G_PKG_Name,l_api_name,' Count of record in value set table '||l_valueset_tab.Count);
4395             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Count of record in value set table '||l_valueset_tab.Count);
4396 
4397             -- Call Process VS API.
4398             IF l_valueset_tab.Count>0 THEN
4399 
4400                 Process_Value_Set (1,l_valueset_tab,p_set_process_id,FALSE,l_return_status,l_msg_count,l_return_msg);
4401 
4402                 -- check the return status
4403                 IF (l_return_status =G_RET_STS_UNEXP_ERROR )
4404                 THEN
4405 
4406                   x_return_status :=  G_RET_STS_UNEXP_ERROR;
4407                   x_return_msg    :=  l_return_msg;
4408                   RETURN;
4409 
4410                 END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
4411 
4412 
4413                 Populate_VS_Interface ( l_valueset_tab, l_return_status,l_return_msg);
4414 
4415                 -- Issue a commit after each iteration
4416                 COMMIT;
4417 
4418             END IF; -- END IF l_valueset_tab.Count>0
4419 
4420           EXIT WHEN l_valueset_tab.COUNT < 2000;
4421 
4422 
4423         END LOOP;
4424         CLOSE Cur_Non_Vers_VS;
4425 
4426 
4427         write_debug(G_PKG_Name,l_api_name,' Completed processing non version value sets. Count of record in table l_valueset_tab. '||l_valueset_tab.count);
4428         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Completed processing non version value sets. Count of record in table l_valueset_tab. '||l_valueset_tab.count);
4429 
4430 
4431 
4432 
4433         -- Write Code to process
4434         l_err_message_name       :=  'EGO_VALUE_SET_CREATION_FAILED';
4435         fnd_message.set_name('EGO','EGO_VALUE_SET_CREATION_FAILED');
4436         l_err_message_text       := fnd_message.get;
4437 
4438 
4439         -- Insert record in  error table for those record whose value set creation failed.
4440         --
4441         INSERT
4442         INTO
4443           MTL_INTERFACE_ERRORS
4444           (
4445             TRANSACTION_ID,
4446             UNIQUE_ID,
4447             ORGANIZATION_ID,
4448             COLUMN_NAME,
4449             TABLE_NAME,
4450             BO_Identifier,
4451             Entity_Identifier,
4452             MESSAGE_NAME,
4453             ERROR_MESSAGE,
4454             LAST_UPDATE_DATE,
4455             LAST_UPDATED_BY,
4456             CREATION_DATE,
4457             CREATED_BY,
4458             LAST_UPDATE_LOGIN,
4459             REQUEST_ID,
4460             PROGRAM_APPLICATION_ID,
4461             PROGRAM_ID,
4462             PROGRAM_UPDATE_DATE
4463           )
4464         SELECT
4465           evsvi.transaction_id,
4466           MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
4467           NULL,
4468           NULL,
4469           G_ENTITY_VAL_HEADER_TAB,
4470           G_BO_IDENTIFIER_VS,
4471           G_ENTITY_VS_VAL,
4472           l_err_message_name,
4473           l_err_message_text,
4474           NVL(LAST_UPDATE_DATE, SYSDATE),
4475           NVL(LAST_UPDATED_BY, G_USER_ID),
4476           NVL(CREATION_DATE,SYSDATE),
4477           NVL(CREATED_BY, G_USER_ID),
4478           NVL(LAST_UPDATE_LOGIN, G_LOGIN_ID),
4479           G_REQUEST_ID,
4480           NVL(PROGRAM_APPLICATION_ID, G_PROG_APPL_ID),
4481           NVL(PROGRAM_ID, G_PROGRAM_ID),
4482           NVL(PROGRAM_UPDATE_DATE, sysdate)
4483         FROM Ego_Flex_Value_Intf evsvi
4484         WHERE
4485             (
4486               ( p_set_process_id IS NULL
4487                 OR evsvi.set_process_id = p_set_process_id
4488               )
4489             AND EXISTS
4490 
4491               ( SELECT 1
4492                 FROM Ego_Flex_Value_Set_Intf evsi
4493                 WHERE
4494                   (   (p_set_process_id IS NULL
4495                         OR evsi.set_process_id = p_set_process_id
4496                       )
4497                   AND (evsi.value_set_name= evsvi.value_set_name
4498                         OR evsi.value_set_id= evsvi.value_set_id
4499                       )
4500                   AND  evsi.process_status = G_ERROR_RECORD
4501                   AND  evsi.version_seq_id IS NULL
4502                   AND  evsi.parent_value_set_name IS NULL
4503                   )
4504               )
4505             AND NOT EXISTS
4506                 (
4507                   SELECT 1
4508                   FROM  Fnd_Flex_Value_Sets ffvs
4509                   WHERE (ffvs.flex_value_set_name= evsvi.value_set_name
4510                           OR ffvs.flex_value_set_id= evsvi.value_set_id
4511                         )
4512                     AND NOT EXISTS
4513                         ( SELECT 1
4514                           FROM Ego_Flex_valueSet_Version_b efvsv
4515                           WHERE ffvs.flex_value_set_id= efvsv.flex_value_set_id
4516                         )
4517                     AND NOT EXISTS
4518                         ( SELECT 1
4519                           FROM Ego_Value_Set_Ext evse
4520                           WHERE ffvs.flex_value_set_id= evse.value_set_id
4521                         )
4522 
4523                     AND  ffvs.parent_flex_value_set_id IS NULL
4524                 )
4525 
4526               AND evsvi.version_seq_id IS NULL
4527               AND evsvi.process_status=G_PROCESS_RECORD
4528             );
4529 
4530 
4531 
4532 
4533         --  Before processing value table, Update process flag in value intf table with status 3 for those record which has failed to process
4534         UPDATE ego_flex_value_intf evsvi
4535         SET evsvi.process_status=G_ERROR_RECORD,
4536             evsvi.LAST_UPDATED_BY= G_User_Id,
4537             evsvi.LAST_UPDATE_DATE = SYSDATE,
4538             evsvi.LAST_UPDATE_LOGIN = G_LOGIN_ID
4539 
4540         WHERE
4541             (
4542               ( p_set_process_id IS NULL
4543                 OR evsvi.set_process_id = p_set_process_id
4544               )
4545 
4546             AND EXISTS
4547 
4548               ( SELECT 1
4549                 FROM Ego_Flex_Value_Set_Intf evsi
4550                 WHERE
4551                   (   (p_set_process_id IS NULL
4552                         OR evsi.set_process_id = p_set_process_id
4553                       )
4554                   AND (evsi.value_set_name= evsvi.value_set_name
4555                         OR evsi.value_set_id= evsvi.value_set_id
4556                       )
4557                   AND  evsi.process_status = G_ERROR_RECORD
4558                   AND  evsi.version_seq_id IS NULL
4559                   AND  evsi.parent_value_set_name IS NULL
4560                   )
4561               )
4562             AND NOT EXISTS
4563                 (
4564                   SELECT 1
4565                   FROM  Fnd_Flex_Value_Sets ffvs
4566                   WHERE (ffvs.flex_value_set_name= evsvi.value_set_name
4567                           OR ffvs.flex_value_set_id= evsvi.value_set_id
4568                         )
4569                     AND NOT EXISTS
4570                         ( SELECT 1
4571                           FROM Ego_Flex_valueSet_Version_b efvsv
4572                           WHERE ffvs.flex_value_set_id= efvsv.flex_value_set_id
4573                         )
4574                     AND NOT EXISTS
4575                         ( SELECT 1
4576                           FROM Ego_Value_Set_Ext evse
4577                           WHERE ffvs.flex_value_set_id= evse.value_set_id
4578                         )
4579 
4580                     AND  ffvs.parent_flex_value_set_id IS NULL
4581                 )
4582 
4583               AND evsvi.version_seq_id IS NULL
4584               AND evsvi.process_status=G_PROCESS_RECORD
4585             );
4586 
4587 
4588 
4589         --To Do
4590         -- Check if whold logic of production table also need to be written
4591         -- Insert record in  error table for those record whose value set creation failed.
4592         --
4593         INSERT
4594         INTO
4595           MTL_INTERFACE_ERRORS
4596           (
4597             TRANSACTION_ID,
4598             UNIQUE_ID,
4599             ORGANIZATION_ID,
4600             COLUMN_NAME,
4601             TABLE_NAME,
4602             BO_Identifier,
4603             Entity_Identifier,
4604             MESSAGE_NAME,
4605             ERROR_MESSAGE,
4606             LAST_UPDATE_DATE,
4607             LAST_UPDATED_BY,
4608             CREATION_DATE,
4609             CREATED_BY,
4610             LAST_UPDATE_LOGIN,
4611             REQUEST_ID,
4612             PROGRAM_APPLICATION_ID,
4613             PROGRAM_ID,
4614             PROGRAM_UPDATE_DATE
4615           )
4616         SELECT
4617           evstvi.transaction_id,
4618           MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
4619           NULL,
4620           NULL,
4621           G_ENTITY_VAL_TL_HEADER_TAB,
4622           G_BO_IDENTIFIER_VS,
4623           G_ENTITY_VS_VAL,
4624           l_err_message_name,
4625           l_err_message_text,
4626           NVL(LAST_UPDATE_DATE, SYSDATE),
4627           NVL(LAST_UPDATED_BY, G_USER_ID),
4628           NVL(CREATION_DATE,SYSDATE),
4629           NVL(CREATED_BY, G_USER_ID),
4630           NVL(LAST_UPDATE_LOGIN, G_LOGIN_ID),
4631           G_REQUEST_ID,
4632           NVL(PROGRAM_APPLICATION_ID, G_PROG_APPL_ID),
4633           NVL(PROGRAM_ID, G_PROGRAM_ID),
4634           NVL(PROGRAM_UPDATE_DATE, sysdate)
4635         FROM Ego_Flex_Value_Tl_Intf evstvi
4636         WHERE
4637             (
4638               ( p_set_process_id IS NULL
4639                 OR evstvi.set_process_id = p_set_process_id
4640               )
4641               AND EXISTS
4642                 ( SELECT 1
4643                   FROM Ego_Flex_Value_Intf evsvi
4644                   WHERE
4645                     (   (p_set_process_id IS NULL
4646                           OR evsvi.set_process_id = p_set_process_id
4647                         )
4648                     AND (evsvi.value_set_name= evstvi.value_set_name
4649                           OR evsvi.value_set_id= evstvi.value_set_id
4650                         )
4651                     AND (evsvi.flex_value= evstvi.flex_value
4652                           OR evsvi.flex_value_id = evstvi.flex_value_id
4653                         )
4654                     AND  evsvi.process_status = G_ERROR_RECORD
4655                     AND  evsvi.version_seq_id IS NULL
4656                     )
4657                 )
4658 
4659               AND evstvi.version_seq_id IS NULL
4660               AND evstvi.process_status=G_PROCESS_RECORD
4661             );
4662 
4663 
4664 
4665 
4666 
4667         --  Before processing value table, Update process flag in value intf table with status 3 for those record which has failed to process
4668         UPDATE Ego_Flex_Value_Tl_Intf evstvi
4669         SET evstvi.process_status=G_ERROR_RECORD,
4670             evstvi.LAST_UPDATED_BY= G_User_Id,
4671             evstvi.LAST_UPDATE_DATE = SYSDATE,
4672             evstvi.LAST_UPDATE_LOGIN = G_LOGIN_ID
4673         WHERE
4674             (
4675               ( p_set_process_id IS NULL
4676                 OR evstvi.set_process_id = p_set_process_id
4677               )
4678               AND EXISTS
4679                 ( SELECT 1
4680                   FROM Ego_Flex_Value_Intf evsvi
4681                   WHERE
4682                     (   (p_set_process_id IS NULL
4683                           OR evsvi.set_process_id = p_set_process_id
4684                         )
4685                     AND (evsvi.value_set_name= evstvi.value_set_name
4686                           OR evsvi.value_set_id= evstvi.value_set_id
4687                         )
4688                     AND (evsvi.flex_value= evstvi.flex_value
4689                           OR evsvi.flex_value_id = evstvi.flex_value_id
4690                         )
4691                     AND  evsvi.process_status = G_ERROR_RECORD
4692                     AND  evsvi.version_seq_id IS NULL
4693                     )
4694                 )
4695 
4696               AND evstvi.version_seq_id IS NULL
4697               AND evstvi.process_status=G_PROCESS_RECORD
4698             );
4699 
4700 
4701 
4702 
4703         -- To get default language code
4704         SELECT UserEnv('Lang') INTO G_User_Lang FROM dual;
4705 
4706 
4707 
4708         -- Get default NLS Language
4709         SELECT nls_language INTO G_NLS_LANGUAGE
4710         FROM FND_LANGUAGES
4711         WHERE language_code =G_User_Lang
4712           AND installed_flag IN ('I','B');
4713 
4714 
4715 
4716 
4717         -- Process TL Data based on each languge
4718         FOR i IN Cur_NLS_Lang
4719         LOOP
4720 
4721             l_install_lang  :=  i.language_code;
4722             l_nls_language  :=  i.nls_language;
4723 
4724 
4725             l_dynamic_sql   := 'ALTER SESSION SET NLS_LANGUAGE = '||l_nls_language;
4726 
4727             write_debug(G_PKG_Name,l_api_name,' Prepared dynamic sql to set NLS language. SQL statement is  : '||l_dynamic_sql );
4728             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Prepared dynamic sql to set NLS language. SQL statement is  : '||l_dynamic_sql );
4729 
4730             EXECUTE IMMEDIATE l_dynamic_sql;
4731 
4732 
4733 
4734 
4735 
4736             -- Non versioned and non child values.
4737             OPEN Cur_Non_Vers_Values;
4738             LOOP
4739                 FETCH Cur_Non_Vers_Values BULK COLLECT INTO l_valueset_val_tab limit 2000;
4740 
4741                 write_debug(G_PKG_Name,l_api_name,' Created pl-sql table for non version values. Count of record in table l_valueset_val_tab. : '||l_valueset_val_tab.count);
4742                 --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Created pl-sql table for non version values. Count of record in table l_valueset_val_tab. : '||l_valueset_val_tab.count);
4743 
4744 
4745                 IF l_valueset_val_tab.Count>0 THEN
4746 
4747                     FOR j IN l_valueset_val_tab.first..l_valueset_val_tab.last LOOP
4748 
4749                         write_debug(G_PKG_Name,l_api_name,' Values to be imported are value '||l_valueset_val_tab(j).flex_value);
4750                         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Values to be imported is value '||l_valueset_val_tab(j).flex_value);
4751 
4752                         OPEN Cur_Non_Vers_Trans_Values(l_valueset_val_tab(j).value_set_name,l_valueset_val_tab(j).value_set_id,l_valueset_val_tab(j).flex_value, l_valueset_val_tab(j).flex_value_id,l_install_lang);
4753                         LOOP
4754 
4755                             l_vs_val_rec(1) :=l_valueset_val_tab(j);
4756 
4757 
4758                             FETCH Cur_Non_Vers_Trans_Values
4759                             BULK COLLECT INTO l_valueset_val_tl_tbl limit 50;
4760 
4761                             write_debug(G_PKG_Name,l_api_name,' Before call to Process_Value_Set_Value, Count of record for translatable values are : '||l_valueset_val_tl_tbl.COUNT);
4762 
4763 
4764                             IF (l_valueset_val_tl_tbl.Count >0 ) THEN
4765 
4766                                 Process_Value_Set_Value (1,l_vs_val_rec ,l_valueset_val_tl_tbl,p_set_process_id,FALSE,l_return_status,l_msg_count,l_return_msg);
4767 
4768                                 -- Populate Values
4769                                 Populate_VS_Val_Interface (l_vs_val_rec, l_return_status,l_return_msg);
4770 
4771                                 -- Populate Values
4772                                 Populate_VS_Val_Tl_Interface (l_valueset_val_tl_tbl, l_return_status,l_return_msg);
4773 
4774                             END IF;
4775 
4776                         EXIT
4777                           WHEN l_valueset_val_tl_tbl.COUNT < 50;
4778                         END LOOP;
4779                         CLOSE Cur_Non_Vers_Trans_Values;
4780 
4781                     END LOOP; -- END FOR j IN  l_valueset_val_tab.first..l_valueset_val_tab.last
4782 
4783                 END IF; -- IF l_valueset_val_tab.Count>0 THEN
4784 
4785                 -- Issue a commit after each iteration
4786                 COMMIT;
4787 
4788 
4789             EXIT
4790               WHEN l_valueset_val_tab.COUNT < 2000;
4791             END LOOP; -- END FOR i IN Cur_Non_Vers_Values
4792             CLOSE Cur_Non_Vers_Values;
4793 
4794             write_debug(G_PKG_Name,l_api_name,' Completed processing of values for language : ' ||l_nls_language);
4795 
4796         END LOOP; -- END FOR i IN Cur_NLS_Lang
4797 
4798 
4799         l_dynamic_sql   := NULL;
4800 
4801         l_dynamic_sql   := 'ALTER SESSION SET NLS_LANGUAGE = '||G_NLS_LANGUAGE;
4802 
4803         write_debug(G_PKG_Name,l_api_name,' Prepared dynamic sql to set NLS language to base language  '||l_dynamic_sql );
4804 
4805         EXECUTE IMMEDIATE l_dynamic_sql;
4806 
4807 
4808 
4809 
4810 
4811 
4812 
4813 
4814 
4815 
4816         --==================================================
4817         -- Part2: - Process Versioned Parent value Set
4818         --==================================================
4819 
4820         -- Non versioned and non child values.
4821         write_debug(G_PKG_Name,l_api_name,' Before processing version value set ');
4822         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  Before processing version value set ');
4823 
4824 
4825 
4826         OPEN Cur_Vers_VS;
4827         LOOP
4828 
4829               FETCH Cur_Vers_VS BULK COLLECT INTO l_valueset_tab limit 2000;
4830 
4831               write_debug(G_PKG_Name,l_api_name,' Fetched Version VS records. Count of record is :  '||l_valueset_tab.Count );
4832               --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Fetched Version VS records. Count of record is :  '||l_valueset_tab.Count );
4833 
4834 
4835 
4836               -- Process record if exist.
4837               IF  l_valueset_tab.Count>0 THEN
4838 
4839                   /*-- Call Process VS API.  This will create all Value Set and corresponding draft version.
4840                   Process_Value_Set (1,l_valueset_tab,p_set_process_id,FALSE,l_return_status,l_msg_count,l_return_msg);*/
4841 
4842                   FOR j IN l_valueset_tab.first..l_valueset_tab.last
4843                   LOOP
4844 
4845                     -- Create Savepoint for each versioned record processing.
4846                     SAVEPOINT CREATE_VERSION_VALUE_SET;
4847 
4848 
4849                     l_valueset_rec(1) :=  l_valueset_tab(j);
4850 
4851                     -- Call Process VS API.  This will create all Value Set and corresponding draft version.
4852                     Process_Value_Set (1,l_valueset_rec,p_set_process_id,FALSE,l_return_status,l_msg_count,l_return_msg);
4853 
4854                     l_valueset_tab(j) := l_valueset_rec(1);
4855 
4856 
4857 
4858                     write_debug(G_PKG_Name,l_api_name,' Created savepoint CREATE_VERSION_VALUE_SET  ');
4859                     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Created savepoint CREATE_VERSION_VALUE_SET  ');
4860 
4861                     IF l_valueset_tab(j).process_status <> G_ERROR_RECORD THEN
4862 
4863                       -- Call API to release a value set version.
4864                       Release_Value_Set_Version( l_valueset_tab(j).value_set_id,
4865                                                 l_valueset_tab(j).version_description,
4866                                                 l_valueset_tab(j).start_active_date,
4867                                                 l_valueset_tab(j).end_active_date,
4868                                                 l_valueset_tab(j).version_seq_id,
4869                                                 l_valueset_tab(j).transaction_id,
4870                                                 G_OUT_VERSION_SEQ_ID,
4871                                                 l_return_status,
4872                                                 l_return_msg );
4873 
4874 
4875                       write_debug(G_PKG_Name,l_api_name,' Call to  Release_Value_Set_Version is done. Return Status is '||l_return_status);
4876                       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Call to  Release_Value_Set_Version is done. Return Status is '||l_return_status);
4877 
4881                           l_valueset_tab(j).process_status    := G_PROCESS_RECORD;
4878 
4879                       IF (Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS ) THEN
4880 
4882                           x_return_status                     := G_RET_STS_SUCCESS;
4883                           l_return_status                     := G_RET_STS_SUCCESS;
4884                           -- YTJ -- Confirm if it need to be G_SUCCESS_RECORD
4885 
4886                       ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
4887 
4888 
4889                           write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_valueset_tab(j).transaction_id||'-(VS Id)=('
4890                                                     ||l_valueset_tab(j).value_set_id||')'||' Release of value set failed. ');
4891 
4892 
4893 
4894                           x_return_status                     := l_return_status;
4895                           l_valueset_tab(j).process_status    := G_ERROR_RECORD;
4896 
4897                               G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
4898                           G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS_VER;
4899                           G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
4900                           G_TOKEN_TBL(2).Token_Value  :=  l_valueset_tab(j).transaction_type;
4901                           G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
4902                           G_TOKEN_TBL(3).Token_Value  :=  'EGO_VS_BULKLOAD_PVT';
4903                           G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
4904                           G_TOKEN_TBL(4).Token_Value  :=  'Release_Value_Set_Version';
4905 
4906 
4907                           ERROR_HANDLER.Add_Error_Message (
4908                             p_message_name                   => 'EGO_ENTITY_API_FAILED'
4909                             ,p_application_id                => G_App_Short_Name
4910                             ,p_token_tbl                     => G_TOKEN_TBL
4911                             ,p_message_type                  => G_RET_STS_ERROR
4912                             ,p_row_identifier                => l_valueset_tab(j).transaction_id
4913                             ,p_entity_code                   => G_ENTITY_VS_VER
4914                             ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
4915 
4916                           G_TOKEN_TBL.DELETE;
4917 
4918 
4919                       ELSE    -- case of unexpected error
4920 
4921                           x_return_status := G_RET_STS_UNEXP_ERROR;
4922                           x_return_msg    := l_return_msg;
4923                           RETURN;
4924 
4925                       END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
4926 
4927 
4928                       -- If creation of version failed then do not process value entity further.
4929                       IF l_return_status = G_RET_STS_SUCCESS THEN
4930 
4931                           -- This API will return version_seq_id as output parameter.
4932 
4933                           OPEN Cur_Vers_Values(l_valueset_tab(j).value_set_name,l_valueset_tab(j).value_set_id,l_valueset_tab(j).version_seq_id);
4934                           LOOP
4935 
4936 
4937                             FETCH Cur_Vers_Values --(l_valueset_tab(j).value_set_name,l_valueset_tab(j).value_set_id,l_valueset_tab(j).version_seq_id)
4938                             BULK COLLECT INTO l_valueset_val_tab limit 2000;
4939 
4940                             --Dbms_Output.put_line(' Getting values for a version : Count is : '||l_valueset_val_tab.Count);
4941 
4942 
4943                             IF l_valueset_val_tab.Count>0 THEN
4944 
4945                               FOR l IN l_valueset_val_tab.first..l_valueset_val_tab.last LOOP
4946 
4947 
4948 
4949                                 OPEN Cur_Vers_Trans_Values ( l_valueset_val_tab(l).value_set_name,l_valueset_val_tab(l).value_set_id,
4950                                                             l_valueset_val_tab(l).version_seq_id,l_valueset_val_tab(l).flex_value,l_valueset_val_tab(l).flex_value_id );
4951                                 LOOP
4952 
4953                                     FETCH Cur_Vers_Trans_Values BULK COLLECT INTO l_valueset_val_tl_tbl limit 50;
4954 
4955                                     l_vs_val_rec(1) :=l_valueset_val_tab(l);
4956 
4957                                     --Bug 9710195
4958                                     --If atleast one value exist per value set, then set flag
4959                                     l_version_vs_val_exist := TRUE;
4960 
4961                                     Process_Value_Set_Value (1,l_vs_val_rec,l_valueset_val_tl_tbl,p_set_process_id,FALSE,l_return_status,l_msg_count,l_return_msg);
4962 
4963 
4964                                     IF l_return_status  = G_RET_STS_ERROR THEN
4965                                         x_return_status :=l_return_status;
4966                                     END IF;
4967 
4968 
4969                                     --Dbms_Output.put_line(' Processing is done. x_return_status = '||x_return_status);
4970 
4971                                     -- Populate Values
4972                                     Populate_VS_Val_Interface (l_vs_val_rec,l_return_status,l_return_msg);
4973 
4974 
4975                                     -- Populate Values
4976                                     Populate_VS_Val_Tl_Interface (l_valueset_val_tl_tbl,l_return_status,l_return_msg);
4977 
4978 
4979                                   EXIT
4980                                       WHEN l_valueset_val_tl_tbl.COUNT < 50;
4981 
4982                                 END LOOP; -- END FOR m IN  Cur_Vers_Trans_Values ( l_valueset_val_tab(l).value_set_name,
4983                                 CLOSE Cur_Vers_Trans_Values;
4984 
4985 
4986 
4987 
4988                                 -- Write a code to insert record for all those translatable values which has not inserted or passed by user
4989                                 FOR p IN Cur_NLS_Lang
4990                                 LOOP
4991 
4992                                     l_lang_exist  :=  NULL;
4993 
4994                                     OPEN Cur_Trans_Lang (l_vs_val_rec(1).flex_value_id,G_OUT_VERSION_SEQ_ID,p.LANGUAGE_code );
4995                                     LOOP
4996                                       -- Initializing l_lang_exist.
4997 
4998 
4999                                         FETCH Cur_Trans_Lang INTO l_lang_exist;
5000 
5001 
5002                                         -- If lang rec does not exist then insert record for the same.
5003                                         IF  l_lang_exist IS NULL THEN
5004 
5005 
5006                                             INSERT INTO EGO_FLEX_VALUE_VERSION_TL
5007                                                 ( FLEX_VALUE_ID,VERSION_SEQ_ID,LAST_UPDATE_DATE,LAST_UPDATED_BY,CREATION_DATE,CREATED_BY,
5008                                                   LAST_UPDATE_LOGIN,DESCRIPTION,FLEX_VALUE_MEANING,LANGUAGE,SOURCE_LANG)
5009 
5010                                             SELECT FLEX_VALUE_ID,VERSION_SEQ_ID,LAST_UPDATE_DATE,LAST_UPDATED_BY,CREATION_DATE,CREATED_BY,
5011                                                   LAST_UPDATE_LOGIN,DESCRIPTION,FLEX_VALUE_MEANING,p.LANGUAGE_code,SOURCE_LANG
5012                                             FROM EGO_FLEX_VALUE_VERSION_TL
5013                                             WHERE flex_value_id = l_vs_val_rec(1).flex_value_id
5014                                               AND version_seq_id  = G_OUT_VERSION_SEQ_ID
5015                                               AND "LANGUAGE" = UserEnv('lang');
5016 
5017 
5018                                         END IF;
5019 
5020 
5021                                     EXIT
5022                                       WHEN Cur_Trans_Lang%NOTFOUND;
5023 
5024                                     END LOOP;
5025                                     CLOSE Cur_Trans_Lang;
5026 
5027                                 END LOOP; -- END FOR p IN Cur_NLS_Lang
5028 
5029 
5030                                 -- Rollback to savepoint for any exception
5031                                 /*IF l_return_status  = G_RET_STS_ERROR  THEN
5032                                   ROLLBACK TO CREATE_VERSION_VALUE_SET;
5033                                 END IF; */
5034 
5035 
5036 
5037                                 l_vs_val_rec.DELETE;
5038 
5039                                 --Dbms_Output.put_line(' Procesing next version value : ');
5040 
5041                               END LOOP;-- END FOR l IN l_valueset_val_tab.first..l_valueset_val_tab.last LOOP
5042 
5043                             END IF; -- END IF l_valueset_val_tab.count>0 then
5044 
5045 
5046 
5047 
5048                           EXIT
5049                             WHEN l_valueset_val_tab.COUNT < 2000;
5050                           END LOOP; -- END FOR k IN Cur_Vers_Values
5051                           CLOSE Cur_Vers_Values; --(l_valueset_tab(j).value_set_name,l_valueset_tab(j).value_set_id,l_valueset_tab(j).version_seq_id);
5052 
5053 
5054 
5055                           --Bug 9710195
5056                           --Atlease one value does not exist.
5057                           IF NOT l_version_vs_val_exist THEN
5058 
5059                               l_return_status                     := G_RET_STS_ERROR;
5060                               x_return_status                     := l_return_status;
5061                               l_valueset_tab(j).process_status    := G_ERROR_RECORD;
5062 
5063 
5064                               ERROR_HANDLER.Add_Error_Message (
5065                                 p_message_name                   => 'EGO_VERS_VS_VAL_REQ'
5066                                 ,p_application_id                => G_App_Short_Name
5067                                 ,p_token_tbl                     => G_TOKEN_TBL
5068                                 ,p_message_type                  => G_RET_STS_ERROR
5069                                 ,p_row_identifier                => l_valueset_tab(j).transaction_id
5070                                 ,p_entity_code                   => G_ENTITY_VS_VER
5071                                 ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
5072 
5073 
5074                           END IF;
5075 
5076 
5077 
5081 
5078                           --Dbms_Output.put_line(' Before call to Sync_VS_With_Draft : l_return_status= '||l_return_status||' x_return_status = '||x_return_status);
5079 
5080 
5082                           -- If processing is done successfully then sync draft version
5083                           IF Nvl(l_return_status,G_RET_STS_SUCCESS) = G_RET_STS_SUCCESS  AND x_return_status<>G_RET_STS_ERROR THEN
5084 
5085                             -- Bug 9804379
5086                             -- If version created successfully then sync up draft version with latest release version
5087                             Sync_VS_With_Draft (  p_value_set_id    =>  l_valueset_tab(j).value_set_id,
5088                                                   p_version_number  =>  G_OUT_VERSION_SEQ_ID,
5089                                                   x_return_status   =>  l_return_status,
5090                                                   x_return_msg      =>  l_return_msg);
5091 
5092 
5093                             --Dbms_Output.put_line(' After call to Sync_VS_With_Draft : l_return_status= '||l_return_status);
5094                           END IF;
5095 
5096 
5097                           IF (Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS ) THEN
5098 
5099                               x_return_status                     := G_RET_STS_SUCCESS;
5100                               l_return_status                     := G_RET_STS_SUCCESS;
5101 
5102                           ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
5103 
5104 
5105                               write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_valueset_tab(j).transaction_id||'-(VS Id)=('
5106                                                         ||l_valueset_tab(j).value_set_id||')'||' Sync of draft version with latest release version failed. ');
5107 
5108 
5109 
5110                               x_return_status                     := l_return_status;
5111                               l_valueset_tab(j).process_status    := G_ERROR_RECORD;
5112 
5113                                   G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
5114                               G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS_VER;
5115                               G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
5116                               G_TOKEN_TBL(2).Token_Value  :=  l_valueset_tab(j).transaction_type;
5117                               G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
5118                               G_TOKEN_TBL(3).Token_Value  :=  'EGO_VS_BULKLOAD_PVT';
5119                               G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
5120                               G_TOKEN_TBL(4).Token_Value  :=  'Sync_VS_With_Draft';
5121 
5122 
5123                               ERROR_HANDLER.Add_Error_Message (
5124                                 p_message_name                   => 'EGO_ENTITY_API_FAILED'
5125                                 ,p_application_id                => G_App_Short_Name
5126                                 ,p_token_tbl                     => G_TOKEN_TBL
5127                                 ,p_message_type                  => G_RET_STS_ERROR
5128                                 ,p_row_identifier                => l_valueset_tab(j).transaction_id
5129                                 ,p_entity_code                   => G_ENTITY_VS_VER
5130                                 ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
5131 
5132                               G_TOKEN_TBL.DELETE;
5133 
5134 
5135                           ELSE    -- case of unexpected error
5136 
5137                               x_return_status := G_RET_STS_UNEXP_ERROR;
5138                               x_return_msg    := l_return_msg;
5139                               RETURN;
5140 
5141                           END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
5142                           --YJ
5143 
5144 
5145 
5146 
5147 
5148                       END IF; -- END IF l_return_status = G_RET_STS_SUCCESS THEN
5149 
5150 
5151 
5152                       --Dbms_Output.put_line(' Processed values for a version : Return status = '||x_return_status);
5153 
5154 
5155 
5156                       -- Rollback to savepoint for any exception
5157                       IF x_return_status  = G_RET_STS_ERROR  THEN
5158 
5159                           ROLLBACK TO CREATE_VERSION_VALUE_SET;
5160 
5161                           l_valueset_tab(j).process_status :=G_ERROR_RECORD;
5162 
5163 
5164                           write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_valueset_tab(j).transaction_id||'-(VS Id)=('
5165                                                     ||l_valueset_tab(j).value_set_id||')'||' Release of value set failed. ');
5166 
5167 
5168                           ERROR_HANDLER.Add_Error_Message (
5169                             p_message_name                   => 'EGO_VS_RELEASE_FAILED'
5170                             ,p_application_id                => G_App_Short_Name
5171                             ,p_token_tbl                     => G_TOKEN_TBL
5172                             ,p_message_type                  => G_RET_STS_ERROR
5173                             ,p_row_identifier                => l_valueset_tab(j).transaction_id
5174                             ,p_entity_code                   => G_ENTITY_VS_VER
5175                             ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
5176 
5177 
5178 
5179 
5180 
5181                           --Dbms_Output.put_line(' Release API failed. Setting Val and _TL table to error record ');
5182                           OPEN Cur_Vers_Values(l_valueset_tab(j).value_set_name,l_valueset_tab(j).value_set_id,l_valueset_tab(j).version_seq_id);
5183                           LOOP
5184 
5185 
5186                             FETCH Cur_Vers_Values --(l_valueset_tab(j).value_set_name,l_valueset_tab(j).value_set_id,l_valueset_tab(j).version_seq_id)
5187                             BULK COLLECT INTO l_valueset_val_tab limit 2000;
5188 
5189 
5190 
5191                             IF l_valueset_val_tab.Count>0 THEN
5192 
5193                                 FOR Val_Cur IN l_valueset_val_tab.first..l_valueset_val_tab.last
5194                                 LOOP
5195 
5196 
5197                                     -- Set process status for version value
5198                                     l_valueset_val_tab(Val_Cur).process_status    := l_valueset_tab(j).process_status;
5199                                     l_valueset_val_tab(Val_Cur).transaction_type  := l_valueset_tab(j).transaction_type;
5200 
5201 
5202                                     write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_valueset_tab(j).transaction_id||'-(VS Id)=('
5203                                                               ||l_valueset_val_tab(Val_Cur).transaction_id||')'||' Release of value set failed. ');
5204 
5205 
5206                                     ERROR_HANDLER.Add_Error_Message (
5207                                       p_message_name                   => 'EGO_VS_RELEASE_FAILED'
5208                                       ,p_application_id                => G_App_Short_Name
5209                                       ,p_token_tbl                     => G_TOKEN_TBL
5210                                       ,p_message_type                  => G_RET_STS_ERROR
5211                                       ,p_row_identifier                => l_valueset_val_tab(Val_Cur).transaction_id
5212                                       ,p_entity_code                   => G_ENTITY_VS_VER
5213                                       ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB );
5214 
5215 
5216 
5217 
5218 
5219                                     OPEN Cur_Vers_Trans_Values ( l_valueset_val_tab(Val_Cur).value_set_name,l_valueset_val_tab(Val_Cur).value_set_id,
5220                                                                 l_valueset_val_tab(Val_Cur).version_seq_id,l_valueset_val_tab(Val_Cur).flex_value,l_valueset_val_tab(Val_Cur).flex_value_id );
5221                                     LOOP
5222 
5223 
5224                                         FETCH Cur_Vers_Trans_Values BULK COLLECT INTO l_valueset_val_tl_tbl limit 50;
5225 
5226 
5227                                         FOR Tl_Val IN l_valueset_val_tl_tbl.first..l_valueset_val_tl_tbl.last LOOP
5228 
5229                                             l_valueset_val_tl_tbl(Tl_Val).process_status      := l_valueset_tab(j).process_status;
5230                                             l_valueset_val_tl_tbl(Tl_Val).transaction_type   := l_valueset_tab(j).transaction_type;
5231 
5232 
5233 
5234                                             write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_valueset_tab(j).transaction_id||'-(VS Id)=('
5235                                                                       ||l_valueset_val_tl_tbl(Tl_Val).transaction_id||')'||' Release of value set failed. ');
5236 
5237                                             ERROR_HANDLER.Add_Error_Message (
5238                                               p_message_name                   => 'EGO_VS_RELEASE_FAILED'
5239                                               ,p_application_id                => G_App_Short_Name
5240                                               ,p_token_tbl                     => G_TOKEN_TBL
5241                                               ,p_message_type                  => G_RET_STS_ERROR
5242                                               ,p_row_identifier                => l_valueset_val_tl_tbl(Tl_Val).transaction_id
5243                                               ,p_entity_code                   => G_ENTITY_VS_VER
5244                                               ,p_table_name                    => G_ENTITY_VAL_TL_HEADER_TAB );
5245 
5246                                         END LOOP;
5247 
5248                                         l_vs_val_rec(1) :=l_valueset_val_tab(Val_Cur);
5249 
5250 
5251                                         Populate_VS_Val_Interface (l_vs_val_rec,l_return_status,l_return_msg);
5252 
5253 
5254                                         -- Populate Values
5255                                         Populate_VS_Val_Tl_Interface (l_valueset_val_tl_tbl,l_return_status,l_return_msg);
5256 
5257                                         -- Release Values.
5258 
5259 
5260                                     EXIT
5261                                         WHEN l_valueset_val_tl_tbl.COUNT < 50;
5262 
5263                                     END LOOP; -- END FOR m IN  Cur_Vers_Trans_Values ( l_valueset_val_tab(l).value_set_name,
5264                                     CLOSE Cur_Vers_Trans_Values;
5265 
5266                                     l_vs_val_rec.DELETE;
5267 
5268 
5272 
5269                                 END LOOP;-- END FOR l IN l_valueset_val_tab.first..l_valueset_val_tab.last LOOP
5270 
5271                             END IF; -- END IF l_valueset_val_tab.count>0 then
5273 
5274 
5275 
5276                           EXIT
5277                             WHEN l_valueset_val_tab.COUNT < 2000;
5278                           END LOOP; -- END FOR k IN Cur_Vers_Values
5279                           CLOSE Cur_Vers_Values; --(l_valueset_tab(j).value_set_name,l_valueset_tab(j).value_set_id,l_valueset_tab(j).version_seq_id);
5280 
5281                       END IF; -- END IF x_return_status  = G_RET_STS_ERROR  THEN
5282 
5283 
5284 
5285                       IF (Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS AND x_return_status<>G_RET_STS_ERROR ) THEN
5286 
5287                         l_valueset_tab(j).process_status    := G_SUCCESS_RECORD;
5288 
5289 
5290                       END IF;
5291 
5292 
5293 
5294                     END IF; -- l_valueset_tab(j).process_status <> G_ERROR_RECORD THEN
5295 
5296                     l_valueset_rec(1) :=  l_valueset_tab(j);
5297 
5298                     Populate_VS_Interface ( l_valueset_rec, l_return_status,l_return_msg);
5299 
5300                     l_valueset_rec.DELETE;
5301                     l_version_vs_val_exist := FALSE; --Bug 9710195
5302 
5303 
5304                   END LOOP; -- END FOR j IN l_valueset_tab.first..l_valueset_tab.last LOOP
5305 
5306                   --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  Processed VS '||l_valueset_tab.COUNT );
5307 
5308                   -- Issue a commit after each iteration
5309                   COMMIT;
5310 
5311               END IF; --END IF  l_valueset_tab.Count>0 THEN
5312 
5313 
5314 
5315         EXIT WHEN l_valueset_tab.COUNT < 2000;
5316         END LOOP; -- END LOOP
5317 
5318         CLOSE Cur_Vers_VS;
5319 
5320 
5321 
5322         IF x_return_status = G_RET_STS_ERROR THEN
5323             l_return_status :=G_RET_STS_ERROR;
5324         END IF;
5325 
5326 
5327         write_debug(G_PKG_Name,l_api_name,' Versioned value set is created. Return Status is '||l_return_status);
5328         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Versioned value set is created. Return Status is '||l_return_status);
5329 
5330 
5331 
5332 
5333 
5334 
5335 
5336 
5337 
5338         --==================================================
5339         -- Part3: - Process Child value Set
5340         --==================================================
5341 
5342         write_debug(G_PKG_Name,l_api_name,' Before processing Child VS ' );
5343         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Before processing Child VS ' );
5344 
5345         OPEN Cur_Child_VS;
5346         LOOP
5347 
5348             FETCH Cur_Child_VS BULK COLLECT INTO l_valueset_tab;-- limit 2000;
5349 
5350             write_debug(G_PKG_Name,l_api_name,' Count of record in table for child VS = '||l_valueset_tab.Count  );
5351             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Count of record in table for child VS = '||l_valueset_tab.Count);
5352 
5353         EXIT WHEN Cur_Child_VS%NOTFOUND;
5354 
5355         END LOOP;  -- END FOR i IN Cur_Child_VS
5356         CLOSE Cur_Child_VS;
5357 
5358 
5359 
5360 
5361         --FOR k IN Cur_Child_Values
5362         OPEN Cur_Child_Values;
5363         LOOP
5364 
5365             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' fetching record from child values ');
5366 
5367             FETCH Cur_Child_Values BULK COLLECT INTO l_valueset_val_tab;
5368 
5369             write_debug(G_PKG_Name,l_api_name,' Count of record in table for child VS Values  = '||l_valueset_val_tab.Count  );
5370             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Count of record in table for child VS Values = '||l_valueset_val_tab.Count );
5371 
5372         EXIT WHEN Cur_Child_Values%NOTFOUND;
5373 
5374         END LOOP; -- END LOOP
5375 
5376         CLOSE Cur_Child_Values;
5377 
5378 
5379 
5380 
5381 
5382         IF l_valueset_tab.Count>0 THEN
5383 
5384           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Call to Process_Child_Value_Set  API ');
5385           Process_Child_Value_Set (1,l_valueset_tab,l_valueset_val_tab,p_set_process_id,FALSE,l_return_status,l_msg_count,l_return_msg);
5386 
5387           -- check the return status
5388           IF (Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS ) THEN
5389 
5390               l_return_status:= G_RET_STS_SUCCESS;
5391 
5392 
5393           ELSIF  ( l_return_status =  G_RET_STS_UNEXP_ERROR ) THEN -- case of unexpected error
5394               x_return_status := G_RET_STS_UNEXP_ERROR;
5395               x_return_msg    := l_return_msg;
5396               RETURN;
5397 
5398           ELSE
5399 
5400             x_return_status:= G_RET_STS_ERROR;
5401 
5402           END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
5403 
5404 
5405 
5406 
5407           --2.1.8-- Convert back pl/sql table to interface table data
5408           Populate_VS_Interface ( l_valueset_tab, l_return_status,l_return_msg);
5409 
5410 
5411           -- check the return status
5412           IF (Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS ) THEN
5413 
5414               l_return_status:= G_RET_STS_SUCCESS;
5415 
5416           ELSIF  ( l_return_status =  G_RET_STS_UNEXP_ERROR ) THEN -- case of unexpected error
5417               x_return_status := G_RET_STS_UNEXP_ERROR;
5418               x_return_msg    := l_return_msg;
5419               RETURN;
5423             x_return_status:= G_RET_STS_ERROR;
5420 
5421           ELSE
5422 
5424 
5425           END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
5426 
5427 
5428 
5429 
5430 
5431           -- Populate Values
5432           Populate_VS_Val_Interface (l_valueset_val_tab, l_return_status,l_return_msg);
5433 
5434 
5435           -- check the return status
5436           IF (Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS ) THEN
5437 
5438               l_return_status:= G_RET_STS_SUCCESS;
5439 
5440           ELSIF  ( l_return_status =  G_RET_STS_UNEXP_ERROR ) THEN -- case of unexpected error
5441               x_return_status := G_RET_STS_UNEXP_ERROR;
5442               x_return_msg    := l_return_msg;
5443               RETURN;
5444 
5445           ELSE
5446 
5447               x_return_status:= G_RET_STS_ERROR;
5448 
5449           END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
5450 
5451           -- call delete API if flag is true
5452           /*IF (delete_flag = TRUE ) THEN
5453 
5454             Delete_Processed_Value_Sets(p_set_process_id,x_return_status,x_return_msg);
5455           END IF;  */
5456 
5457           -- Issue a commit after each iteration
5458           COMMIT;
5459 
5460           write_debug(G_PKG_Name,l_api_name,' Processing for child VS is done. Return status = '||l_return_status );
5461           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  Processing for child VS is done. Return status = '||l_return_status);
5462 
5463 
5464         END IF; -- END IF l_valueset_tab.Count>0 THEN
5465 
5466 
5467 
5468 
5469 
5470 
5471         --==================================================
5472         -- Part4: - Process orphan values or translatable values.
5473         --==================================================
5474         -- Processing of orphan
5475         OPEN Cur_Orphan_val;
5476         LOOP
5477 
5478             FETCH Cur_Orphan_val BULK COLLECT INTO l_valueset_val_tab limit 2000;
5479 
5480             IF l_valueset_val_tab.Count>0 THEN
5481 
5482                 --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Calling Process_Isolate_Value API ');
5483 
5484                 Process_Isolate_Value (1,l_valueset_val_tab,l_valueset_val_tl_tbl,p_set_process_id,FALSE,l_return_status,l_msg_count,l_return_msg);
5485 
5486                 --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Processing is done. ');
5487 
5488                 -- Populate Values
5489                 Populate_VS_Val_Interface (l_valueset_val_tab,l_return_status,l_return_msg);
5490 
5491 
5492 
5493             END IF; -- END IF l_valueset_val_tab.Count>0 THEN
5494 
5495         EXIT WHEN Cur_Orphan_val%NOTFOUND;
5496 
5497         END LOOP; -- END FOR CurValue IN Cur_Orphan_val
5498 
5499         CLOSE Cur_Orphan_val;
5500 
5501 
5502 
5503 
5504 
5505         -- Process TL Data based on each languge
5506         FOR i IN Cur_NLS_Lang
5507         LOOP
5508           l_install_lang  :=  i.language_code;
5509           l_nls_language  :=  i.nls_language;
5510 
5511 
5512           l_dynamic_sql   := 'ALTER SESSION SET NLS_LANGUAGE = '||l_nls_language;
5513 
5514           write_debug(G_PKG_Name,l_api_name,' Prepared dynamic sql to set NLS language. SQL statement is  : '||l_dynamic_sql );
5515           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Prepared dynamic sql to set NLS language. SQL statement is  : '||l_dynamic_sql );
5516 
5517           EXECUTE IMMEDIATE l_dynamic_sql;
5518 
5519 
5520 
5521 
5522           --1.3 Process orphan _TL interface records
5523           OPEN Cur_Orphan_Trans_Values (l_install_lang);
5524           LOOP
5525 
5526             FETCH Cur_Orphan_Trans_Values  BULK COLLECT INTO l_valueset_val_tl_tbl limit 2000;
5527 
5528               IF l_valueset_val_tl_tbl.Count>0 THEN
5529 
5530                 Process_Isolate_Value (1,l_valueset_val_tab,l_valueset_val_tl_tbl,p_set_process_id,FALSE,l_return_status,l_msg_count,l_return_msg);
5531 
5532                 ----Dbms_Output.put_line(' Process_Isolated_Value for TL:  Processing is done. l_return_status = '||l_return_status);
5533 
5534                 -- Populate Values
5535                 Populate_VS_Val_Tl_Interface (l_valueset_val_tl_tbl,l_return_status,l_return_msg);
5536 
5537               END IF; -- END IF l_valueset_val_tl_tab.Count>0 THEN
5538 
5539 
5540             EXIT WHEN Cur_Orphan_Trans_Values%NOTFOUND;
5541 
5542           END LOOP;
5543           CLOSE Cur_Orphan_Trans_Values;
5544 
5545           write_debug(G_PKG_Name,l_api_name,' Completed processing of values for language : ' ||l_nls_language);
5546 
5547 
5548         END LOOP; -- END FOR i IN Cur_NLS_Lang
5549 
5550         COMMIT;
5551 
5552         l_dynamic_sql   := NULL;
5553 
5554         l_dynamic_sql   := 'ALTER SESSION SET NLS_LANGUAGE = '||G_NLS_LANGUAGE;
5555 
5556         write_debug(G_PKG_Name,l_api_name,' Prepared dynamic sql to set NLS language to base language  '||l_dynamic_sql );
5557 
5558         EXECUTE IMMEDIATE l_dynamic_sql;
5559 
5560 
5561 
5562 
5563 
5564 
5565 
5566 
5567         IF l_return_status IS NULL
5568         THEN
5569           l_return_status    := G_RET_STS_SUCCESS;
5570         END IF;
5571 
5572         IF  Nvl(x_return_status,G_RET_STS_SUCCESS)  <> G_RET_STS_ERROR AND  l_return_status  = G_RET_STS_SUCCESS THEN
5573 
5574           x_return_status :=  l_return_status;
5575 
5576         END IF; -- END IF  x_return_status <> G_RET_STS_ERROR AND  l_return_status  = G_RET_STS_SUCCESS;
5577 
5578 
5582   EXCEPTION
5579         write_debug(G_PKG_Name,l_api_name,' End of API ' );
5580         ----Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API ' );
5581 
5583       WHEN OTHERS THEN
5584 
5585           write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
5586           ----Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
5587 
5588           x_return_status := G_RET_STS_UNEXP_ERROR;
5589           x_return_msg := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
5590           RETURN;
5591 
5592   END Import_Value_Set_Intf;
5593 
5594 
5595 
5596 
5597 
5598 
5599 --------------------------------------------------------------------------------
5600 -- Procedure to process value set
5601 --------------------------------------------------------------------------------
5602 PROCEDURE Process_Value_Set (
5603                           p_api_version      IN            NUMBER,
5604                           p_value_set_tbl    IN OUT NOCOPY Ego_Metadata_Pub.Value_Set_Tbl,
5605                           p_set_process_id   IN            NUMBER,
5606                           p_commit           IN            BOOLEAN DEFAULT FALSE,
5607                           x_return_status    OUT NOCOPY    VARCHAR2,
5608                           x_msg_count        OUT NOCOPY    NUMBER,
5609                           x_return_msg         OUT NOCOPY    VARCHAR2)
5610 
5611 IS
5612 
5613       l_api_name               VARCHAR2(30) :='Process_Value_Set';
5614       --if we change required parameters, version goes from n.x to (n+1).x, if we change optional parameters, version goes from x.n to x.(n+1)
5615       l_api_version            NUMBER := 1.0;
5616       l_owner                  NUMBER := G_USER_ID;
5617 
5618       l_value_set_name         FND_FLEX_VALUE_SETS.FLEX_VALUE_SET_NAME%TYPE; -- VARCHAR2(60);
5619       l_value_set_id           FND_FLEX_VALUE_SETS.FLEX_VALUE_SET_ID%TYPE;
5620       l_description            FND_FLEX_VALUE_SETS.description%TYPE;
5621       l_version_description    VARCHAR2(2000);
5622 
5623       l_longlist_flag          VARCHAR2(1);
5624       l_format_code            VARCHAR2(1);
5625       l_validation_code        VARCHAR2(1);
5626 
5627       l_parent_value_set_name  FND_FLEX_VALUE_SETS.FLEX_VALUE_SET_NAME%TYPE; -- VARCHAR2(60);
5628       l_version_seq_id         NUMBER(10,0);
5629       l_start_active_date      DATE;
5630       l_end_active_date        DATE;
5631 
5632       l_maximum_size           FND_FLEX_VALUE_SETS.MAXIMUM_SIZE%TYPE; --NUMBER;
5633       l_maximum_value          FND_FLEX_VALUE_SETS.MAXIMUM_VALUE%TYPE;
5634       l_minimum_value          FND_FLEX_VALUE_SETS.MINIMUM_VALUE%TYPE;
5635 
5636       l_transaction_type       VARCHAR2(20);
5637       l_process_status         NUMBER;
5638       l_request_id             NUMBER;
5639       l_program_application_id NUMBER(15,0);
5640       l_program_id             NUMBER(15,0);
5641       l_program_update_date    DATE;
5642       l_set_process_id         NUMBER;
5643 
5644       l_last_update_date       DATE;
5645       l_last_updated_by        NUMBER(15);
5646       l_creation_date          DATE;
5647       l_created_by             NUMBER(15);
5648       l_last_update_login      NUMBER(15);
5649 
5650 
5651       l_value_column_name        fnd_flex_validation_tables.value_column_name%TYPE;
5652       l_value_column_type        fnd_flex_validation_tables.value_column_type%TYPE;
5653       l_value_column_size        fnd_flex_validation_tables.value_column_size%TYPE;
5654       l_id_column_name           fnd_flex_validation_tables.id_column_name%TYPE;
5655       l_id_column_size           fnd_flex_validation_tables.id_column_size%TYPE;
5656       l_id_column_type           fnd_flex_validation_tables.id_column_type%TYPE;
5657       l_meaning_column_name      fnd_flex_validation_tables.meaning_column_name%TYPE;
5658       l_meaning_column_size      fnd_flex_validation_tables.meaning_column_size%TYPE;
5659       l_meaning_column_type      fnd_flex_validation_tables.meaning_column_type%TYPE;
5660       l_table_application_id     fnd_flex_validation_tables.table_application_id%TYPE;
5661       l_application_table_name   fnd_flex_validation_tables.application_table_name%TYPE;
5662       l_additional_where_clause  VARCHAR2(2000);
5663 
5664       l_return_status          VARCHAR2(1);
5665       l_versioned_vs           VARCHAR2(10):= 'False'; -- Parameter to get value if vs is versioned.
5666 
5667       -- target system parameter
5668       --l_target_max_ver         NUMBER; --Max version_seq_id at target system
5669       l_current_version        NUMBER; -- Current effective version at target system
5670       l_future_version         NUMBER;
5671 
5672       l_api_mode               NUMBER         :=  G_FLOW_TYPE;
5673       l_entity_code            VARCHAR2(40)   :=  G_ENTITY_VS;
5674       l_table_name             VARCHAR2(240)  :=  G_ENTITY_VS_HEADER_TAB;
5675       l_application_id         NUMBER         := G_Application_Id;
5676 
5677       l_token_table            ERROR_HANDLER.Token_Tbl_Type;
5678 
5679       l_error_message_name     VARCHAR2(500);
5680       l_error_row_identifier   NUMBER;
5681       l_transaction_id         NUMBER;
5682       l_return_msg             VARCHAR2(1000);
5683       l_table_exist            NUMBER := NULL;
5684 
5685 
5686       CURSOR Cur_table ( cp_value_set_id NUMBER )
5687       IS
5688       SELECT 1 AS table_exist
5689       FROM fnd_flex_validation_tables
5690       WHERE FLEX_VALUE_SET_ID= cp_value_set_id;
5691 
5692 
5693 
5694       -- Cursor to get value_set_id for a passed in value set name
5695       CURSOR  cur_value_set_id(cp_value_set_name  VARCHAR2) IS
5696         SELECT flex_value_set_id
5697         FROM fnd_flex_value_sets
5701 
5698         WHERE flex_value_set_name = cp_value_set_name;
5699 
5700 
5702       -- Cursor to check current effective version in target system
5703       CURSOR cur_current_version(cp_value_set_id NUMBER ) IS
5704         SELECT version_seq_id,start_active_date, end_active_date
5705         FROM ego_flex_valueset_version_b
5706         WHERE flex_value_set_id = cp_value_set_id
5707           AND start_active_date <= G_SYSDATE
5708           AND Nvl(end_active_date,G_SYSDATE)>= G_SYSDATE ;
5709 
5710 
5711       -- Cursor to get max version seq id for a value set in target system.
5712       CURSOR cur_max_ver(cp_value_set_id  NUMBER)  IS
5713       SELECT Max(Nvl(version_seq_id,0))   max_version
5714       FROM ego_flex_valueset_version_b
5715       WHERE flex_value_set_id = cp_value_set_id;
5716 
5717 
5718       -- Cursor to get future version which has max end active date but lesser then passed in start active date
5719       CURSOR cur_max_future_ver(cp_value_set_id       NUMBER,
5720                                 cp_start_active_date  DATE ) IS
5721       SELECT version_seq_id, start_active_date, end_active_date
5722       FROM ego_flex_valueset_version_b
5723       WHERE flex_value_set_id = cp_value_set_id
5724         AND ( start_active_date = (
5725                                     SELECT Max(start_active_date )
5726                                     FROM  EGO_FLEX_VALUESET_VERSION_B
5727                                     WHERE   FLEX_VALUE_SET_ID =  cp_value_set_id
5728                                       AND Nvl(end_active_date,G_SYSDATE) <= cp_start_active_date
5729                                   )
5730             );
5731 
5732 
5733 BEGIN
5734 
5735     write_debug(G_PKG_Name,l_api_name,' Start of API. ' );
5736     ----Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API. ' );
5737 
5738 
5739     -- Error handler initialization
5740     ERROR_HANDLER.Set_Bo_Identifier(G_BO_IDENTIFIER_VS);
5741 
5742     -- Get application id
5743     SELECT application_id
5744       INTO l_application_id
5745     FROM fnd_application
5746     WHERE application_short_name ='EGO';
5747 
5748 
5749     -- Get the owner from the session info
5750     l_owner := g_user_id;
5751 
5752     -- Get detail for each record of value set
5753     FOR i IN p_value_set_tbl.first..p_value_set_tbl.last
5754     LOOP
5755         --Assigning value per record
5756         l_value_set_name          :=  p_value_set_tbl(i).value_set_name;
5757         l_value_set_id            :=  p_value_set_tbl(i).value_set_id;
5758         l_description             :=  p_value_set_tbl(i).description;
5759                                       /*CASE p_value_set_tbl(i).description
5760                                           WHEN G_NULL_CHAR THEN NULL
5761                                           ELSE p_value_set_tbl(i).description
5762                                       END;*/
5763         l_version_description     :=  p_value_set_tbl(i).version_description;
5764         l_format_code             :=  p_value_set_tbl(i).format_type;
5765         l_longlist_flag           :=  p_value_set_tbl(i).longlist_flag;
5766         l_validation_code         :=  p_value_set_tbl(i).validation_type;
5767         l_parent_value_set_name   :=  p_value_set_tbl(i).parent_value_set_name;
5768                                       /*CASE p_value_set_tbl(i).parent_value_set_name
5769                                           WHEN G_NULL_CHAR THEN NULL
5770                                           ELSE p_value_set_tbl(i).parent_value_set_name;*/
5771         l_version_seq_id          :=  p_value_set_tbl(i).version_seq_id;
5772         l_start_active_date       :=  p_value_set_tbl(i).start_active_date;
5773         l_end_active_date         :=  p_value_set_tbl(i).end_active_date;
5774         l_maximum_size            :=  p_value_set_tbl(i).maximum_size;
5775         l_minimum_value           :=  p_value_set_tbl(i).minimum_value;
5776         l_maximum_value           :=  p_value_set_tbl(i).maximum_value;
5777 
5778         l_transaction_type        :=  p_value_set_tbl(i).transaction_type;
5779         l_transaction_id          :=  p_value_set_tbl(i).transaction_id;
5780         -- Conc prog who columns
5781         l_process_status          :=  p_value_set_tbl(i).process_status;
5782         l_set_process_id          :=  p_value_set_tbl(i).set_process_id;
5783 
5784         l_request_id              :=  p_value_set_tbl(i).request_id;
5785         l_program_update_date     :=  p_value_set_tbl(i).program_update_date;
5786         l_program_application_id  :=  p_value_set_tbl(i).program_application_id;
5787         l_program_id              :=  p_value_set_tbl(i).program_id;
5788 
5789         l_last_update_date        :=  p_value_set_tbl(i).last_update_date;
5790         l_last_updated_by         :=  p_value_set_tbl(i).last_updated_by;
5791         l_creation_date           :=  p_value_set_tbl(i).creation_date;
5792         l_created_by              :=  p_value_set_tbl(i).created_by;
5793         l_last_update_login       :=  p_value_set_tbl(i).last_update_login;
5794 
5795 
5796         l_value_column_name       :=  p_value_set_tbl(i).value_column_name;
5797         l_value_column_type       :=  p_value_set_tbl(i).value_column_type;
5798         l_value_column_size       :=  p_value_set_tbl(i).value_column_size;
5799         l_id_column_name          :=  p_value_set_tbl(i).id_column_name;
5800         l_id_column_size          :=  p_value_set_tbl(i).id_column_size;
5801         l_id_column_type          :=  p_value_set_tbl(i).id_column_type;
5802         l_meaning_column_name     :=  p_value_set_tbl(i).meaning_column_name;
5803         l_meaning_column_size     :=  p_value_set_tbl(i).meaning_column_size;
5804         l_meaning_column_type     :=  p_value_set_tbl(i).meaning_column_type;
5805         l_table_application_id    :=  p_value_set_tbl(i).table_application_id;
5806         l_application_table_name  :=  p_value_set_tbl(i).application_table_name;
5807         l_additional_where_clause :=  p_value_set_tbl(i).additional_where_clause;
5808 
5809         l_error_row_identifier    := l_transaction_id;
5810 
5811 
5812         write_debug(G_PKG_Name,l_api_name,' : In loop to process each value set. Value Set name is : = '||l_value_set_name ||' value_set_id = '||l_value_set_id);
5813         ----Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' : In loop to process each value set. Value Set name is : = '||l_value_set_name ||' value_set_id = '||l_value_set_id);
5814 
5815         IF (l_value_set_id IS NULL AND  l_value_set_name IS NULL )
5816         THEN
5817 
5818             l_error_message_name          := 'EGO_VALUE_SET_REQUIRED_FIELD'; -- Seed message?  Please provide either value id or name
5819             l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
5820             l_token_table(1).TOKEN_VALUE  := l_value_set_name;
5821 
5822             l_token_table(1).TOKEN_NAME   := 'VALUE_SET_ID';
5823             l_token_table(1).TOKEN_VALUE  := l_value_set_id;
5824 
5825 
5826             ERROR_HANDLER.Add_Error_Message(
5827               p_message_name                  => l_error_message_name
5828               ,p_application_id                => G_App_Short_Name
5829               ,p_token_tbl                     => l_token_table
5830               ,p_message_type                  => G_RET_STS_ERROR
5831               ,p_row_identifier                => l_transaction_id
5832               ,p_entity_code                   => l_entity_code
5833               ,p_table_name                    => l_table_name
5834             );
5835 
5836             l_token_table.DELETE;
5837 
5838             -- Set process_status to 3
5839             l_process_status    := g_error_record;
5840             l_return_status     := G_RET_STS_ERROR;
5841             l_last_updated_by   := g_user_id;
5842             l_last_update_date  := SYSDATE;
5843             l_last_update_login := g_login_id;
5844 
5845         END IF; -- END IF (l_value_set_id IS NULL AND  l_value_set_name IS NULL )
5846 
5847 
5848         IF l_value_set_id IS NOT NULL THEN
5849           -- Get Value Set Name
5850           Convert_Id_To_Name (l_value_set_id ,G_Value_Set,NULL,l_value_set_name);
5851 
5852           --
5853           IF l_value_set_id IS NULL THEN
5854 
5855             l_error_message_name          := 'EGO_VSET_INVALID_ID';
5856 
5857             -- Set process_status to 3
5858             l_process_status    := g_error_record;
5859             l_return_status     := G_RET_STS_ERROR;
5860             l_last_updated_by   := g_user_id;
5861             l_last_update_date  := SYSDATE;
5862             l_last_update_login := g_login_id;
5863 
5864 
5865 
5866             ERROR_HANDLER.Add_Error_Message(
5867               p_message_name                   => l_error_message_name
5868               ,p_application_id                => G_App_Short_Name
5869               ,p_token_tbl                     => l_token_table
5870               ,p_message_type                  => G_RET_STS_ERROR
5871               ,p_row_identifier                => l_transaction_id
5872               ,p_entity_code                   => l_entity_code
5873               ,p_table_name                    => l_table_name
5874             );
5875 
5876           END IF; -- END IF l_value_set_id IS NULL THEN
5877 
5878 
5879 
5880         END IF;-- END IF l_value_set_id IS NOT NULL THEN
5881 
5882 
5883 
5884         IF ( l_value_set_name IS NOT NULL AND l_value_set_id IS NULL ) THEN
5885           -- Get value Set Id
5886           Convert_Name_To_Id (l_value_set_name,G_Value_Set,NULL,l_value_set_id);
5887         END IF; -- END IF ( l_value_set_name IS NOT NULL AND l_value_set_id IS NULL ) THEN
5888 
5889         --Dbms_Output.put_line(' After conversion : l_value_set_id = '||l_value_set_id||' Name= '||l_value_set_name);
5890 
5891         /*-- Get value set id if value set name is passed
5892         IF l_value_set_id IS NULL AND  l_value_set_name IS NOT NULL THEN
5893           FOR j IN cur_value_set_id(l_value_set_name)
5894           LOOP
5895             l_value_set_id:= j.flex_value_set_id;
5896           END LOOP;
5897         END IF;--END IF l_value_set_id IS NULL AND  l_value_set_name IS NOT NULL THEN
5898         */
5899 
5900         IF l_transaction_type  =G_CREATE AND l_value_set_id IS NOT NULL AND l_version_seq_id IS NULL THEN
5901             --Dbms_Output.put_line(' Creation error FEM_ADMIN_VSNAME_EXISTS_ERR ');
5902 
5903             l_error_message_name          := 'FEM_ADMIN_VSNAME_EXISTS_ERR';
5904 
5905 
5906             ERROR_HANDLER.Add_Error_Message(
5907               p_message_name                   => l_error_message_name
5911               ,p_row_identifier                => l_transaction_id
5908               ,p_application_id                => G_App_Short_Name
5909               ,p_token_tbl                     => l_token_table
5910               ,p_message_type                  => G_RET_STS_ERROR
5912               ,p_entity_code                   => l_entity_code
5913               ,p_table_name                    => l_table_name
5914             );
5915 
5916 
5917             -- Set process_status to 3
5918             l_process_status    := g_error_record;
5919             l_return_status     := G_RET_STS_ERROR;
5920             l_last_updated_by   := g_user_id;
5921             l_last_update_date  := SYSDATE;
5922             l_last_update_login := g_login_id;
5923 
5924 
5925 
5926         END IF ; -- END IF l_transaction_type  :=G_CREATE AND l_value_set_id IS NOT NULL THEN
5927 
5928 
5929 
5930 
5931 
5932         IF l_transaction_type  =G_UPDATE AND l_value_set_id IS NULL THEN
5933 
5934             l_error_message_name          := 'EGO_TRANS_TYPE_INVALID';
5935             l_token_table(1).TOKEN_NAME   := 'Entity';
5936             l_token_table(1).TOKEN_VALUE  := G_ENTITY_VS;
5937 
5938             -- Set process_status to 3
5939             l_process_status    := g_error_record;
5940             l_return_status     := G_RET_STS_ERROR;
5941             l_last_updated_by   := g_user_id;
5942             l_last_update_date  := SYSDATE;
5943             l_last_update_login := g_login_id;
5944 
5945 
5946             ERROR_HANDLER.Add_Error_Message(
5947               p_message_name                   => l_error_message_name
5948               ,p_application_id                => G_App_Short_Name
5949               ,p_token_tbl                     => l_token_table
5950               ,p_message_type                  => G_RET_STS_ERROR
5951               ,p_row_identifier                => l_transaction_id
5952               ,p_entity_code                   => l_entity_code
5953               ,p_table_name                    => l_table_name
5954             );
5955 
5956 
5957             l_token_table.DELETE;
5958 
5959 
5960         END IF ; -- END IF l_transaction_type  :=G_CREATE AND l_value_set_id IS NOT NULL THEN
5961 
5962 
5963 
5964 
5965 
5966 
5967 
5968         --Check for transaction type and update it correctly
5969         IF l_transaction_type  =G_SYNC THEN
5970 
5971           -- If value set name already exist then transactiono type is Create else it is Update
5972           IF l_value_set_id IS NULL
5973           THEN
5974             l_transaction_type  :=G_CREATE;
5975           ELSE
5976             l_transaction_type  :=G_UPDATE;
5977           END IF;
5978 
5979         END IF; -- END IF l_transaction_type  =G_SYNC THEN
5980        write_debug(G_PKG_Name,l_api_name,'  : Transaction type resolved : '||l_transaction_type);
5981        --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  : Transaction type resolved : '||l_transaction_type);
5982 
5983 
5984 
5985 
5986 
5987         IF l_transaction_type=G_UPDATE THEN
5988 
5989             --Get value of require field if they are null
5990             Get_Key_VS_Columns   (p_value_set_id        => l_value_set_id,
5991                                   p_transaction_id      => l_transaction_id,
5992                                   x_maximum_size        => l_maximum_size,
5993                                   x_maximum_value       => l_maximum_value,
5994                                   x_minimum_value       => l_minimum_value,
5995                                   x_description         => l_description,
5996                                   x_longlist_flag       => l_longlist_flag,
5997                                   x_format_code         => l_format_code,
5998                                   x_validation_code     => l_validation_code,
5999                                   x_return_status       => l_return_status,
6000                                   x_return_msg          => l_return_msg
6001                                 );
6002 
6003 
6004 
6005             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' After Getting Key Values x_validation_code = '||l_validation_code );
6006 
6007             -- check the return status
6008             IF (Nvl(l_return_status,G_RET_STS_SUCCESS)  =G_RET_STS_SUCCESS ) THEN
6009 
6010               l_process_status:= G_PROCESS_RECORD;
6011 
6012             ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
6013 
6014               x_return_status := l_return_status;
6015               l_process_status:= G_ERROR_RECORD;
6016 
6017               G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
6018               G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS;
6019               G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
6020               G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
6021               G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
6022               G_TOKEN_TBL(3).Token_Value  :=  'EGO_VS_BULKLOAD_PVT';
6023               G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
6024               G_TOKEN_TBL(4).Token_Value  :=  'Get_Key_VS_Columns';
6025 
6026 
6027               ERROR_HANDLER.Add_Error_Message(
6028                 p_message_name                   => 'EGO_ENTITY_API_FAILED'
6029                 ,p_application_id                => G_App_Short_Name
6030                 ,p_token_tbl                     => G_TOKEN_TBL
6031                 ,p_message_type                  => G_RET_STS_ERROR
6032                 ,p_row_identifier                => l_transaction_id
6033                 ,p_entity_code                   => G_ENTITY_VS
6034                 ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
6035 
6036             ELSE
6037 
6038               write_debug(G_PKG_Name,l_api_name,' : Unexpected exceptioon ' );
6039               x_return_status :=  G_RET_STS_UNEXP_ERROR;
6040               x_return_msg    :=  l_return_msg;
6041               RETURN;
6042 
6043             END IF;  -- END IF (l_return_status =G_RET_STS_SUCCESS ) THEN
6044 
6045 
6046         END IF;-- END IF l_transaction_type=G_UPDATE THEN
6047 
6048         -- Bug 9702845
6049         Validate_value_Set (l_value_set_name,
6050                             l_validation_code,
6051                             l_longlist_flag,
6052                             l_format_code,
6053                             l_maximum_size,
6054                             l_maximum_value,
6055                             l_minimum_value,
6056                             l_version_seq_id,
6057                             l_transaction_id,
6058                             l_transaction_type,
6059                             l_return_status,
6060                             l_return_msg);
6061 
6062 
6063         IF l_format_code IN (G_DATE_DATA_TYPE , G_DATE_TIME_DATA_TYPE) THEN
6064 
6065 
6066             IF  l_format_code =G_DATE_DATA_TYPE THEN
6067 
6068                     l_maximum_size := 11;
6069 
6070             ELSE
6071 
6072                     l_maximum_size := 20;
6073 
6074             END IF;-- END IF
6075 
6076         END IF;
6077 
6078 
6079 
6080 
6081         -- check the return status
6082         IF (l_return_status =G_RET_STS_UNEXP_ERROR )
6083         THEN
6084 
6085           write_debug(G_PKG_Name,l_api_name,' Unexpected error occured in Validate_value_Set API l_return_msg ='||l_return_msg);
6086 
6087           x_return_status :=  G_RET_STS_UNEXP_ERROR;
6088           x_return_msg    :=  l_return_msg;
6089           RETURN;
6090 
6091         ELSIF (l_return_status =G_RET_STS_ERROR ) THEN
6092 
6093 
6094           write_debug(G_PKG_Name,l_api_name,' Err_Msg-TID='  ||l_transaction_id||'-(VS,VS Id)=('
6095                                                                 ||l_value_set_name||','||l_value_set_id||')'||' Validation of value set failed. ');
6096 
6097 
6098           l_process_status := G_ERROR_RECORD;
6099 
6100         END IF; -- END IF (l_return_status =G_RET_STS_UNEXP_ERROR )
6101 
6102 
6103 
6104 
6105         IF l_validation_code=G_TABLE_VALIDATION_CODE THEN
6106 
6107             IF (  l_application_table_name  IS NOT NULL     OR  l_value_column_name  IS NOT NULL
6108                   OR  l_value_column_type   IS NOT NULL     OR  l_value_column_size  IS NOT NULL
6109                   OR  l_additional_where_clause IS NOT NULL ) THEN
6110 
6111 
6112                         Validate_Table_Value_Set ( l_value_set_name,
6113                                                    l_value_set_id,
6114                                                    l_format_code,
6115                                                    l_application_table_name,
6116                                                    l_additional_where_clause,
6117                                                    l_value_column_name,
6118                                                    l_value_column_type,
6119                                                    l_value_column_size,
6120                                                    l_id_column_name,
6121                                                    l_id_column_type,
6122                                                    l_id_column_size,
6123                                                    l_meaning_column_name,
6124                                                    l_meaning_column_type,
6125                                                    l_meaning_column_size,
6126                                                    l_transaction_id,
6127                                                    l_return_status,
6128                                                    l_return_msg) ;
6129 
6130                         -- check the return status
6131                         IF (l_return_status =G_RET_STS_UNEXP_ERROR )
6132                         THEN
6133 
6134                             x_return_status :=  G_RET_STS_UNEXP_ERROR;
6135                             x_return_msg    :=  l_return_msg;
6136                             RETURN;
6137 
6138                         ELSIF (l_return_status =G_RET_STS_ERROR ) THEN
6139 
6140 
6141                             write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID='  ||l_transaction_id||'-(VS,VS Id)=('
6145                             l_process_status := G_ERROR_RECORD;
6142                                                                                   ||l_value_set_name||','||l_value_set_id||')'||' Validation of table type value set failed. ');
6143 
6144 
6146 
6147                         END IF; -- END IF (l_return_status =G_RET_STS_UNEXP_ERROR )
6148 
6149 
6150             END IF;
6151 
6152         END IF;
6153 
6154 
6155        write_debug(G_PKG_Name,l_api_name,' All validation done. Process status is  '||l_process_status);
6156        --Dbms_Output.put_line(G_PKG_Name||','||l_api_name||' All validation done. Process status is  '||l_process_status);
6157 
6158 
6159 
6160         -- Start processing value set based on transaction type.
6161         --Check for transaction type.
6162 
6163         --*******CREATE MODE ***********--
6164         IF l_process_status = G_PROCESS_RECORD THEN
6165 
6166           IF l_transaction_type=G_CREATE THEN
6167 
6168             /*  Validate_value_Set (l_value_set_name,
6169                                   l_validation_code,
6170                                   l_longlist_flag,
6171                                   l_format_code,
6172                                   l_version_seq_id,
6173                                   l_transaction_id,
6174                                   l_transaction_type,
6175                                   l_return_status,
6176                                   l_return_msg);
6177 
6178             -- check the return status
6179             IF (l_return_status =G_RET_STS_UNEXP_ERROR )
6180             THEN
6181 
6182               x_return_status :=  G_RET_STS_UNEXP_ERROR;
6183               x_return_msg    :=  l_return_msg;
6184               RETURN;
6185 
6186             ELSIF (l_return_status =G_RET_STS_ERROR ) THEN
6187 
6188               l_process_status := G_ERROR_RECORD;
6189 
6190             END IF; -- END IF (l_return_status =G_RET_STS_UNEXP_ERROR )
6191             */
6192 
6193             -- If value set is of type table then create value set and corresponding values.
6194             -- No concept of version will be there for it.
6195             IF l_validation_code=G_TABLE_VALIDATION_CODE THEN
6196               --Write code to create VS and values for table type.
6197               IF l_process_status = G_PROCESS_RECORD  THEN
6198 
6199                 EGO_EXT_FWK_PUB.Create_Value_Set
6200                   (
6201                     p_api_version                   => 1.0
6202                     ,p_value_set_name                => l_value_set_name
6203                     ,p_description                   => l_description
6204                     ,p_format_code                   => l_format_code
6205                     ,p_maximum_size                  => l_maximum_size
6206                     ,p_maximum_value                 => l_maximum_value
6207                     ,p_minimum_value                 => l_minimum_value
6208                     ,p_long_list_flag                => l_longlist_flag
6209                     ,p_validation_code               => G_TABLE_VALIDATION_CODE
6210                     ,p_owner                         => l_owner
6211                     ,p_init_msg_list                 => fnd_api.g_FALSE
6212                     ,p_commit                        => fnd_api.g_FALSE
6213                     ,x_value_set_id                  => l_value_set_id
6214                     ,x_return_status                 => l_return_status
6215                     ,x_msg_count                     => x_msg_count
6216                     ,x_msg_data                      => l_return_msg
6217                   );
6218 
6219               END IF; -- IF l_process_status = G_PROCESS_RECORD  THEN
6220 
6221 
6222               -- check the return status
6223               IF (Nvl(l_return_status,G_RET_STS_SUCCESS)  =G_RET_STS_SUCCESS ) THEN
6224 
6225                 l_process_status:= G_PROCESS_RECORD;
6226 
6227               ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
6228 
6229                 l_return_status := l_return_status;
6230                 l_process_status:= G_ERROR_RECORD;
6231 
6232 
6233                     G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
6234                 G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS;
6235                 G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
6236                 G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
6237                 G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
6238                 G_TOKEN_TBL(3).Token_Value  :=  'EGO_EXT_FWK_PUB';
6239                 G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
6240                 G_TOKEN_TBL(4).Token_Value  :=  'Create_Value_Set';
6241 
6242 
6243 
6244                 ERROR_HANDLER.Add_Error_Message(
6245                   p_message_name                   => 'EGO_ENTITY_API_FAILED'
6246                   ,p_application_id                => G_App_Short_Name
6247                   ,p_token_tbl                     => G_TOKEN_TBL
6248                   ,p_message_type                  => G_RET_STS_ERROR
6249                   ,p_row_identifier                => l_transaction_id
6250                   ,p_entity_code                   => G_ENTITY_VS
6251                   ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
6252 
6253                 G_TOKEN_TBL.DELETE;
6254 
6255               ELSE
6256 
6257 
6258                 write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS,VS Id)=('
6259                              ||l_value_set_name||','||l_value_set_id||')'||' Creation of table type value set failed. Call to EGO_EXT_FWK_PUB.Create_Value_Set threw unexpected error ');
6260 
6261 
6262                 x_return_status :=  G_RET_STS_UNEXP_ERROR;
6263                 x_return_msg:= l_return_msg;
6264                 RETURN;
6265 
6266               END IF;  -- END IF (l_return_status =G_RET_STS_SUCCESS ) THEN
6267 
6268               -- If table information is provided then it is compulsory to have value in (value_column_name,value_column_type,value_column_size)
6269 
6270               IF ( l_application_table_name  IS NOT NULL  AND l_value_column_name IS NOT NULL
6271                    AND l_value_column_type   IS NOT NULL  AND l_value_column_size  IS NOT NULL ) THEN
6272 
6273                 IF l_process_status = G_PROCESS_RECORD  THEN
6274 
6275                   EGO_EXT_FWK_PUB.Insert_Value_Set_Table_Inf
6276                     (
6277                       p_api_version                   => 1.0
6278                       ,p_value_set_id                  => l_value_set_id
6279                       ,p_table_application_id          => l_table_application_id
6280                       ,p_table_name                    => l_application_table_name
6281                       ,p_value_column_name             => l_value_column_name
6282                       ,p_value_column_type             => l_value_column_type
6283                       ,p_value_column_size             => l_value_column_size
6284                       ,p_meaning_column_name           => l_meaning_column_name
6285                       ,p_meaning_column_type           => l_meaning_column_type   -- Bug 9705126
6286                       ,p_meaning_column_size           => l_meaning_column_size
6287                       ,p_id_column_name                => l_id_column_name
6288                       ,p_id_column_type                => l_id_column_type
6289                       ,p_id_column_size                => l_id_column_size
6290                       ,p_where_order_by                => l_additional_where_clause
6291                       ,p_additional_columns            => ''
6292                       ,p_owner                         => l_owner --G_CURRENT_USER_ID
6293                       ,p_init_msg_list                 => fnd_api.g_FALSE
6294                       ,p_commit                        => fnd_api.g_FALSE
6295                       ,x_return_status                 => l_return_status
6296                       ,x_msg_count                     => x_msg_count
6297                       ,x_msg_data                      => l_return_msg
6298                     );
6299 
6300                 END IF; -- END IF l_process_status = G_PROCESS_RECORD  THEN
6301                 -- check the return status
6302                 IF (Nvl(l_return_status, G_RET_STS_SUCCESS )  =G_RET_STS_SUCCESS ) THEN
6303 
6304                   l_process_status:= G_PROCESS_RECORD;
6305 
6306                 ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
6307 
6308                   l_return_status := l_return_status;
6309                   l_process_status:= G_ERROR_RECORD;
6310 
6311 
6312                       G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
6313                   G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS_TABLE;
6314                   G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
6315                   G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
6316                   G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
6317                   G_TOKEN_TBL(3).Token_Value  :=  'EGO_EXT_FWK_PUB';
6318                   G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
6319                   G_TOKEN_TBL(4).Token_Value  :=  'Insert_Value_Set_Table_Inf';
6320 
6321 
6322                   ERROR_HANDLER.Add_Error_Message(
6323                     p_message_name                   => 'EGO_ENTITY_API_FAILED'
6324                     ,p_application_id                => G_App_Short_Name
6325                     ,p_token_tbl                     => G_TOKEN_TBL
6326                     ,p_message_type                  => G_RET_STS_ERROR
6330 
6327                     ,p_row_identifier                => l_transaction_id
6328                     ,p_entity_code                   => G_ENTITY_VS_TABLE
6329                     ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB );
6331 
6332                   G_TOKEN_TBL.DELETE;
6333 
6334                 ELSE
6335 
6336                   x_return_status :=  G_RET_STS_UNEXP_ERROR;
6337                   x_return_msg:= l_return_msg;
6338                   RETURN;
6339 
6340                 END IF;  -- END IF (l_return_status =G_RET_STS_SUCCESS ) THEN
6341 
6342 
6343 
6344               END IF;  --END IF l_value_column_name IS NOT NULL THEN
6345 
6346               write_debug(G_PKG_Name,l_api_name,' Process_Value_Set : TABLE TYPE VS set created  x_return_status : = '||x_return_status);
6347               --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Process_Value_Set : TABLE TYPE VS set created  x_return_status : = '||x_return_status);
6348 
6349             ELSE  -- Case of 'Independent','Translatable Independent' and 'None'
6350 
6351 
6352               -- Check for standalone API
6353               IF l_version_seq_id IS NOT NULL  AND  l_validation_code=G_NONE_VALIDATION_CODE
6354               THEN
6355 
6356                   l_return_status               :=  G_RET_STS_UNEXP_ERROR;
6357                   l_error_message_name          := 'EGO_NONE_VS_VERSION_ERROR';
6358                   l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
6359                   l_token_table(1).TOKEN_VALUE  := l_value_set_name;
6360 
6361                   ERROR_HANDLER.Add_Error_Message(
6362                     p_message_name                  => l_error_message_name
6363                     ,p_application_id                => G_App_Short_Name
6364                     ,p_token_tbl                     => l_token_table
6365                     ,p_message_type                  => G_RET_STS_ERROR
6366                     ,p_row_identifier                => l_transaction_id
6367                     ,p_entity_code                   => l_entity_code
6368                     ,p_table_name                    => l_table_name
6369                   );
6370 
6371                   l_token_table.DELETE;
6372 
6373               END IF;-- END IF l_version_seq_id IS NOT NULL  AND  l_validation_code=G_NONE_VALIDATION_CODE THEN
6374 
6375               -- Create value Set for none type of VS.
6376               IF ( l_version_seq_id IS NULL
6377                     AND  l_validation_code IN (G_NONE_VALIDATION_CODE,G_INDEPENDENT_VALIDATION_CODE,G_TRANS_IND_VALIDATION_CODE) ) THEN
6378                  --for bug 9830718
6379                  IF (l_validation_code IN (G_INDEPENDENT_VALIDATION_CODE,G_TRANS_IND_VALIDATION_CODE) ) THEN
6380                    l_maximum_value := '';
6381                    l_minimum_value := '';
6382                  write_debug(G_PKG_Name,l_api_name,'If Validate_type is Independent or Trans_IND Set Max & Min to void');
6383                  END IF;--END bug 9830718
6384 
6385                 IF l_process_status = G_PROCESS_RECORD  THEN
6386                     write_debug(G_PKG_Name,l_api_name,' Process_Value_Set : Calling  EGO_EXT_FWK_PUB.Create_Value_Set API for I X and N type of vali code ');
6387 
6388                   EGO_EXT_FWK_PUB.Create_Value_Set
6389                     (
6390                       p_api_version                    => l_api_version
6391                       ,p_value_set_name                => l_value_set_name
6392                       ,p_description                   => l_description
6393                       ,p_format_code                   => l_format_code
6394                       ,p_maximum_size                  => l_maximum_size
6395                       ,p_maximum_value                 => l_maximum_value
6396                       ,p_minimum_value                 => l_minimum_value
6397                       ,p_long_list_flag                => l_longlist_flag
6398                       ,p_validation_code               => l_validation_code
6399                       ,p_owner                         => l_owner --G_CURRENT_USER_ID
6400                       ,p_init_msg_list                 => fnd_api.g_FALSE
6401                       ,p_commit                        => fnd_api.g_FALSE
6402                       ,x_return_status                 => l_return_status
6403                       ,x_value_set_id                  => l_value_set_id
6404                       ,x_msg_count                     => x_msg_count
6405                       ,x_msg_data                      => l_return_msg
6406                     );
6407 
6408                 END IF; -- END IF l_process_status = G_PROCESS_RECORD  THEN
6409 
6410               -- check the return status
6411               IF (Nvl(l_return_status,G_RET_STS_SUCCESS)  =G_RET_STS_SUCCESS ) THEN
6412 
6413                 l_process_status:= G_PROCESS_RECORD;
6414 
6415               ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
6416 
6417 
6418                 l_process_status:= G_ERROR_RECORD;
6419 
6420 
6421                     G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
6422                 G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS;
6423                 G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
6424                 G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
6425                 G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
6426                 G_TOKEN_TBL(3).Token_Value  :=  'EGO_EXT_FWK_PUB';
6427                 G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
6428                 G_TOKEN_TBL(4).Token_Value  :=  'Create_Value_Set';
6429 
6430 
6431                 ERROR_HANDLER.Add_Error_Message(
6432                   p_message_name                   => 'EGO_ENTITY_API_FAILED'
6433                   ,p_application_id                => G_App_Short_Name
6434                   ,p_token_tbl                     => G_TOKEN_TBL
6435                   ,p_message_type                  => G_RET_STS_ERROR
6439 
6436                   ,p_row_identifier                => l_transaction_id
6437                   ,p_entity_code                   => G_ENTITY_VS
6438                   ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
6440               ELSE
6441 
6442                 x_return_status :=  G_RET_STS_UNEXP_ERROR;
6443                 x_return_msg    := l_return_msg;
6444                 RETURN;
6445 
6446               END IF;  -- END IF (l_return_status =G_RET_STS_SUCCESS ) THEN
6447 
6448 
6449 
6450 
6451               END IF;
6452 
6453 
6454               -- Call this API only once for versioned value set
6455               IF l_version_seq_id IS NOT NULL  AND  l_validation_code IN (G_INDEPENDENT_VALIDATION_CODE,G_TRANS_IND_VALIDATION_CODE) THEN
6456 
6457                 -- Check if value set has already been created
6458                 FOR m IN Cur_value_set_id(l_value_set_name)
6459                 LOOP
6460                   l_value_set_id  := m.flex_value_set_id;
6461                 END LOOP;
6462 
6463                 IF l_value_set_id IS NULL  THEN
6464                   -- If VS has not been created then create VS
6465                   write_debug(G_PKG_Name,l_api_name,' Calling EGO_EXT_FWK_PUB.Create_Value_Set to create Value Set ');
6466 
6467                   IF l_process_status = G_PROCESS_RECORD  THEN
6468 
6469                     EGO_EXT_FWK_PUB.Create_Value_Set
6470                       (
6471                         p_api_version                    => l_api_version
6472                         ,p_value_set_name                => l_value_set_name
6473                         ,p_description                   => l_description
6474                         ,p_format_code                   => l_format_code
6475                         ,p_maximum_size                  => l_maximum_size
6476                         ,p_maximum_value                 => l_maximum_value
6477                         ,p_minimum_value                 => l_minimum_value
6478                         ,p_long_list_flag                => l_longlist_flag
6479                         ,p_validation_code               => l_validation_code
6480                         ,p_owner                         => l_owner --G_CURRENT_USER_ID
6481                         ,p_init_msg_list                 => fnd_api.g_FALSE
6482                         ,p_commit                        => fnd_api.g_FALSE
6483                         ,x_return_status                 => l_return_status
6484                         ,x_value_set_id                  => l_value_set_id
6485                         ,x_msg_count                     => x_msg_count
6486                         ,x_msg_data                      => l_return_msg
6487                       );
6488 
6489                   END IF; -- END  IF l_process_status = G_PROCESS_RECORD  THEN
6490 
6491                   -- check the return status
6492                   IF (Nvl(l_return_status,G_RET_STS_SUCCESS)  =G_RET_STS_SUCCESS ) THEN
6493 
6494                     l_process_status:= G_PROCESS_RECORD;
6495 
6496                   ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
6497 
6498                     l_return_status := l_return_status;
6499                     l_process_status:= G_ERROR_RECORD;
6500 
6501 
6502                         G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
6503                     G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS;
6504                     G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
6505                     G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
6506                     G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
6507                     G_TOKEN_TBL(3).Token_Value  :=  'EGO_EXT_FWK_PUB';
6508                     G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
6509                     G_TOKEN_TBL(4).Token_Value  :=  'Create_Value_Set';
6510 
6511 
6512                     ERROR_HANDLER.Add_Error_Message(
6513                       p_message_name                   => 'EGO_ENTITY_API_FAILED'
6514                       ,p_application_id                => G_App_Short_Name
6515                       ,p_token_tbl                     => G_TOKEN_TBL
6516                       ,p_message_type                  => G_RET_STS_ERROR
6517                       ,p_row_identifier                => l_transaction_id
6518                       ,p_entity_code                   => G_ENTITY_VS
6519                       ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
6520 
6521                   ELSE
6522 
6523                     x_return_status :=  G_RET_STS_UNEXP_ERROR;
6524                     x_return_msg:= l_return_msg;
6525                     RETURN;
6526 
6527                   END IF;  -- END IF (l_return_status =G_RET_STS_SUCCESS ) THEN
6528 
6529 
6530 
6531 
6532                   write_debug(G_PKG_Name,l_api_name,' API EGO_EXT_FWK_PUB.Create_Value_Set return status x_return_status = '
6533                                 ||x_return_status||'  l_value_set_id= '||l_value_set_id );
6534 
6535 
6536                 END IF; --IF NOT exist THEN
6537               END IF; -- END IF l_version_seq_id IS NOT NULL  AND  l_validation_code IN (G_INDEPENDENT_VALIDATION_CODE,G_TRANS_IND_VALIDATION_CODE) THEN
6538 
6539 
6540             END IF ; --END IF l_validation_code='F' THEN
6541 
6542 
6543 
6544 
6545 
6546 
6547 
6548 
6549 
6550           ELSIF l_transaction_type=G_UPDATE THEN
6551 
6552 
6553             -- Always call update API irrespective of validation code.
6554             write_debug(G_PKG_Name,l_api_name,' Call to Process_Value_Set in UPDATE MODE ' );
6555             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Call to Process_Value_Set in UPDATE MODE x_validation_code = '||l_validation_code );
6556 
6557             write_debug(G_PKG_Name,l_api_name,' Getting Key Values  : IN Update mode ' );
6561             /*Get_Key_VS_Columns   (p_value_set_id        => l_value_set_id,
6558             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  Getting Key Values  : IN Update mode ' );
6559 
6560             --Get value of require field if they are null
6562                                   x_maximum_size        => l_maximum_size,
6563                                   x_maximum_value       => l_maximum_value,
6564                                   x_minimum_value       => l_minimum_value,
6565                                   x_description         => l_description,
6566                                   x_longlist_flag       => l_longlist_flag,
6567                                   x_format_code         => l_format_code,
6568                                   x_validation_code     => l_validation_code,
6569                                   x_return_status       => l_return_status,
6570                                   x_return_msg          => l_return_msg
6571                                 );
6572 
6573 
6574 
6575             --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' After Getting Key Values x_validation_code = '||l_validation_code );
6576 
6577             -- check the return status
6578             IF (Nvl(l_return_status,G_RET_STS_SUCCESS)  =G_RET_STS_SUCCESS ) THEN
6579 
6580               l_process_status:= G_PROCESS_RECORD;
6581 
6582             ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
6583 
6584               x_return_status := l_return_status;
6585               l_process_status:= G_ERROR_RECORD;
6586 
6587 
6588                   G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
6589               G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS;
6590               G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
6591               G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
6592               G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
6593               G_TOKEN_TBL(3).Token_Value  :=  'EGO_VS_BULKLOAD_PVT';
6594               G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
6595               G_TOKEN_TBL(4).Token_Value  :=  'Get_Key_VS_Columns';
6596 
6597 
6598               ERROR_HANDLER.Add_Error_Message(
6599                 p_message_name                   => 'EGO_ENTITY_API_FAILED'
6600                 ,p_application_id                => G_App_Short_Name
6601                 ,p_token_tbl                     => G_TOKEN_TBL
6602                 ,p_message_type                  => G_RET_STS_ERROR
6603                 ,p_row_identifier                => l_transaction_id
6604                 ,p_entity_code                   => G_ENTITY_VS
6605                 ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
6606 
6607             ELSE
6608               write_debug(G_PKG_Name,l_api_name,' : Unexpected exceptioon ' );
6609               x_return_status :=  G_RET_STS_UNEXP_ERROR;
6610               x_return_msg    :=  l_return_msg;
6611               RETURN;
6612 
6613             END IF;  -- END IF (l_return_status =G_RET_STS_SUCCESS ) THEN
6614 
6615 
6616 
6617 
6618             Validate_value_Set (l_value_set_name,
6619                                 l_validation_code,
6620                                 l_longlist_flag,
6621                                 l_format_code,
6622                                 l_version_seq_id,
6623                                 l_transaction_id,
6624                                 l_transaction_type,
6625                                 l_return_status,
6626                                 l_return_msg);
6627 
6628 
6629 
6630             -- check the return status
6631             IF (l_return_status =G_RET_STS_UNEXP_ERROR )
6632             THEN
6633 
6634               x_return_status :=  G_RET_STS_UNEXP_ERROR;
6635               x_return_msg    :=  l_return_msg;
6636               RETURN;
6637 
6638             ELSIF (l_return_status =G_RET_STS_ERROR ) THEN
6639 
6640               l_process_status := G_ERROR_RECORD;
6641 
6642             END IF; -- END IF (l_return_status =G_RET_STS_UNEXP_ERROR )
6643 
6644             */
6645 
6646             IF l_process_status = G_PROCESS_RECORD  THEN
6647               -- Call update API to update value set.
6648               write_debug(G_PKG_Name,l_api_name,' Calling EGO_EXT_FWK_PUB.Update_Value_Set API ');
6649               --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Calling EGO_EXT_FWK_PUB.Update_Value_Set API '||l_validation_code);
6650 
6651               --IF l_validation_code <> G_TABLE_VALIDATION_CODE THEN
6652 
6653                 EGO_EXT_FWK_PUB.Update_Value_Set
6654                   (
6655                       p_api_version                  => l_api_version
6656                     ,p_value_set_id                  => l_value_set_id
6657                     ,p_description                   => CASE l_description
6658                                                           WHEN G_NULL_CHAR THEN NULL
6659                                                           ELSE l_description
6660                                                         END --l_description
6661 
6662                     ,p_format_code                   => l_format_code
6663                     ,p_maximum_size                  => l_maximum_size
6664                     ,p_maximum_value                 => CASE l_maximum_value
6665                                                           WHEN G_NULL_NUM THEN NULL
6666                                                           ELSE l_maximum_value
6667                                                         END
6668                     ,p_minimum_value                 => CASE l_minimum_value
6669                                                           WHEN G_NULL_NUM THEN NULL
6670                                                           ELSE l_minimum_value
6674                     ,p_owner                         => l_owner      --G_CURRENT_USER_ID
6671                                                         END
6672                     ,p_long_list_flag                => l_longlist_flag
6673                     ,p_validation_code               => l_validation_code
6675                     ,p_init_msg_list                 => fnd_api.g_FALSE
6676                     ,p_commit                        => fnd_api.g_FALSE
6677                     ,x_return_status                 => l_return_status
6678                     ,x_msg_count                     => x_msg_count
6679                     ,x_msg_data                      => l_return_msg
6680                     ,x_versioned_vs                  => l_versioned_vs
6681                   );
6682 
6683 
6684 
6685                 -- check the return status
6686                 IF (l_return_status =G_RET_STS_SUCCESS ) THEN
6687 
6688                   l_process_status:= G_PROCESS_RECORD;
6689 
6690                 ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
6691 
6692                   l_return_status := l_return_status;
6693                   l_process_status:= G_ERROR_RECORD;
6694 
6695 
6696                       G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
6697                   G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS;
6698                   G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
6699                   G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
6700                   G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
6701                   G_TOKEN_TBL(3).Token_Value  :=  'EGO_EXT_FWK_PUB';
6702                   G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
6703                   G_TOKEN_TBL(4).Token_Value  :=  'Update_Value_Set';
6704 
6705 
6706                   ERROR_HANDLER.Add_Error_Message(
6707                     p_message_name                   => 'EGO_ENTITY_API_FAILED'
6708                     ,p_application_id                => G_App_Short_Name
6709                     ,p_token_tbl                     => G_TOKEN_TBL
6710                     ,p_message_type                  => G_RET_STS_ERROR
6711                     ,p_row_identifier                => l_transaction_id
6712                     ,p_entity_code                   => G_ENTITY_VS
6713                     ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
6714 
6715                 ELSE
6716 
6717                   x_return_status :=  G_RET_STS_UNEXP_ERROR;
6718                   x_return_msg:= l_return_msg;
6719                   RETURN;
6720 
6721                 END IF;  -- END IF (l_return_status =G_RET_STS_SUCCESS ) THEN
6722 
6723               --END IF;-- END IF l_validation_code <> G_TABLE_VALIDATION_CODE THEN
6724 
6725             END IF; -- END IF l_process_status = G_PROCESS_RECORD  THEN
6726 
6727 
6728 
6729 
6730 
6731               write_debug(G_PKG_Name,l_api_name,' Call to EGO_EXT_FWK_PUB.Update_Value_Set done x_return_status := '||x_return_status );
6732               --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Call to EGO_EXT_FWK_PUB.Update_Value_Set done x_return_status := '||x_return_status );
6733 
6734               -- Call API based on validation code
6735 
6736               IF l_validation_code=G_TABLE_VALIDATION_CODE THEN
6737 
6738                 FOR Table_Val IN Cur_table (l_value_set_id)
6739                 LOOP
6740                   l_table_exist := Table_Val.table_exist;
6741                 END LOOP;
6742 
6743 
6744                 -- Here we have to update table informtion if same has been passed.
6745 
6746                 IF (  l_application_table_name IS NOT NULL AND l_value_column_name IS NOT NULL AND
6747                       l_value_column_type IS NOT NULL AND l_value_column_size  IS NOT NULL ) THEN
6748 
6749                   IF l_process_status = G_PROCESS_RECORD  THEN
6750 
6751                     --Dbms_Output.put_line(' Updating tabletype VS l_table_application_id ='||l_table_application_id||'l_application_table_name = '||l_application_table_name);
6752 
6753                     IF l_table_exist IS NOT NULL THEN
6754 
6755                       -- Call API to update table information
6756                       EGO_EXT_FWK_PUB.Update_Value_Set_Table_Inf
6757                             (
6758                               p_api_version                   => 1.0
6759                               ,p_value_set_id                  => l_value_set_id
6760                               ,p_table_application_id          => CASE l_table_application_id
6761                                                                     WHEN G_NULL_NUM THEN NULL
6762                                                                     ELSE l_table_application_id
6763                                                                   END--l_table_application_id
6764                               ,p_table_name                    => l_application_table_name
6765                               ,p_value_column_name             => l_value_column_name
6766                               ,p_value_column_type             => l_value_column_type
6767                               ,p_value_column_size             => l_value_column_size
6768                               ,p_meaning_column_name           => l_meaning_column_name
6769                               ,p_meaning_column_type           => l_meaning_column_type   -- Bug 9705126
6770                               ,p_meaning_column_size           => l_meaning_column_size
6771                               ,p_id_column_name                => l_id_column_name
6772                               ,p_id_column_type                => l_id_column_type
6773                               ,p_id_column_size                => l_id_column_size
6774                               ,p_where_order_by                => l_additional_where_clause
6775                               ,p_additional_columns            => ''
6776                               ,p_owner                         => l_owner --G_CURRENT_USER_ID
6777                               ,p_init_msg_list                 => fnd_api.g_FALSE
6778                               ,p_commit                        => fnd_api.g_FALSE
6779                               ,x_return_status                 => l_return_status
6780                               ,x_msg_count                     => x_msg_count
6781                               ,x_msg_data                      => l_return_msg
6782                             );
6783 
6784 
6785 
6786                       -- check the return status
6787                       IF (l_return_status =G_RET_STS_SUCCESS ) THEN --G_RET_STS_UNEXP_ERROR) THEN
6788 
6789                         l_process_status:= G_PROCESS_RECORD;
6790 
6791 
6792                       ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
6793 
6794                         l_return_status := l_return_status;
6795                         l_process_status:= G_ERROR_RECORD;
6796 
6797 
6798 
6799 
6800                             G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
6801                         G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS_TABLE;
6802                         G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
6803                         G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
6804                         G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
6805                         G_TOKEN_TBL(3).Token_Value  :=  'EGO_EXT_FWK_PUB' ;
6806                         G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
6807                         G_TOKEN_TBL(4).Token_Value  :=  'Update_Value_Set_Table_Inf';
6808 
6809 
6810                         ERROR_HANDLER.Add_Error_Message(
6811                           p_message_name                   => 'EGO_ENTITY_API_FAILED'
6812                           ,p_application_id                => G_App_Short_Name
6813                           ,p_token_tbl                     => G_TOKEN_TBL
6814                           ,p_message_type                  => G_RET_STS_ERROR
6815                           ,p_row_identifier                => l_transaction_id
6816                           ,p_entity_code                   => G_ENTITY_VS_TABLE
6817                           ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB );
6818 
6819 
6820                       ELSE
6821 
6822                         x_return_status :=  G_RET_STS_UNEXP_ERROR;
6823                         x_return_msg:= l_return_msg;
6824                         RETURN;
6825 
6826                       END IF;  -- END  IF (l_return_status =G_RET_STS_SUCCESS ) THEN
6827 
6828 
6829 
6830                     ELSE
6831 
6832                       -- CREATE data for table type VS
6833                       EGO_EXT_FWK_PUB.Insert_Value_Set_Table_Inf
6834                         (
6835                           p_api_version                   => 1.0
6836                           ,p_value_set_id                  => l_value_set_id
6837                           ,p_table_application_id          => l_table_application_id
6838                           ,p_table_name                    => l_application_table_name
6839                           ,p_value_column_name             => l_value_column_name
6840                           ,p_value_column_type             => l_value_column_type
6841                           ,p_value_column_size             => l_value_column_size
6842                           ,p_meaning_column_name           => l_meaning_column_name   --bug 9705126
6843                           ,p_meaning_column_type           => l_meaning_column_type
6844                           ,p_meaning_column_size           => l_meaning_column_size
6845                           ,p_id_column_name                => l_id_column_name
6846                           ,p_id_column_type                => l_id_column_type
6847                           ,p_id_column_size                => l_id_column_size
6848                           ,p_where_order_by                => l_additional_where_clause
6849                           ,p_additional_columns            => ''
6850                           ,p_owner                         => l_owner --G_CURRENT_USER_ID
6851                           ,p_init_msg_list                 => fnd_api.g_FALSE
6852                           ,p_commit                        => fnd_api.g_FALSE
6853                           ,x_return_status                 => l_return_status
6854                           ,x_msg_count                     => x_msg_count
6855                           ,x_msg_data                      => l_return_msg
6856                         );
6857 
6858 
6859                       -- check the return status
6860                       IF (Nvl(l_return_status, G_RET_STS_SUCCESS )  =G_RET_STS_SUCCESS ) THEN
6861 
6862                         l_process_status:= G_PROCESS_RECORD;
6863 
6864                       ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
6865 
6866                         l_return_status := l_return_status;
6867                         l_process_status:= G_ERROR_RECORD;
6868 
6869 
6870                             G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
6871                         G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS_TABLE;
6872                         G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
6873                         G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
6874                         G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
6875                         G_TOKEN_TBL(3).Token_Value  :=  'EGO_EXT_FWK_PUB';
6876                         G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
6877                         G_TOKEN_TBL(4).Token_Value  :=  'Insert_Value_Set_Table_Inf';
6878 
6879 
6880                         ERROR_HANDLER.Add_Error_Message(
6881                           p_message_name                   => 'EGO_ENTITY_API_FAILED'
6882                           ,p_application_id                => G_App_Short_Name
6883                           ,p_token_tbl                     => G_TOKEN_TBL
6884                           ,p_message_type                  => G_RET_STS_ERROR
6885                           ,p_row_identifier                => l_transaction_id
6886                           ,p_entity_code                   => G_ENTITY_VS_TABLE
6887                           ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB );
6888 
6889 
6890                         G_TOKEN_TBL.DELETE;
6891 
6892                       ELSE
6893 
6894                         x_return_status :=  G_RET_STS_UNEXP_ERROR;
6895                         x_return_msg:= l_return_msg;
6896                         RETURN;
6897 
6898                       END IF;  -- END IF (l_return_status =G_RET_STS_SUCCESS ) THEN
6899 
6900 
6901                     END IF; -- END IF l_table_exist IS NOT NULL THEN
6902 
6903                   END IF; -- IF l_process_status = G_PROCESS_RECORD  THEN
6904 
6905                   --Dbms_Output.put_line('After Updating tabletype VS l_return_status = '||l_return_status);
6906 
6907 
6908 
6909                 END IF; -- END IF (  l_application_table_name IS NOT NULL AND l_value_column_name IS NOT NULL AND
6910 
6911               END IF; -- END IF l_validation_code=G_TABLE_VALIDATION_CODE  THEN
6912 
6913             --END IF;-- IF l_process_status = G_PROCESS_RECORD  THEN
6914 
6915           END IF; -- END IF l_transaction_type=G_CREATE THEN
6916 
6917 
6918         END IF; -- END IF l_process_status=G_PROCESS_RECORD
6919 
6920         write_debug(G_PKG_Name,l_api_name,' Value Set  processing is done. Assign variable to pl/sqltable back. ');
6921 
6922         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  End processing value Set : revert back variables to table');
6923         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  l_value_set_id = '||l_value_set_id||' l_value_set_name = '||l_value_set_name ||' process atstus = '||l_process_status);
6924 
6925         -- Set process status to success only for non version VS.
6926         -- For version VS set status to success during call to release API.
6927         IF l_version_seq_id IS NULL THEN
6928           IF Nvl(l_return_status,G_RET_STS_SUCCESS)  = G_RET_STS_SUCCESS THEN
6929 
6930             IF l_process_status=G_PROCESS_RECORD THEN
6931               l_process_status :=  G_SUCCESS_RECORD;
6932             END IF;
6933 
6934           ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
6935 
6936             l_return_status    := G_RET_STS_ERROR;
6937             l_process_status   := G_ERROR_RECORD;
6938 
6939           END IF;
6940 
6941         END IF; -- END IF l_version_seq_id IS NULL THEN
6942 
6943 
6944 
6945 
6946         -- Assign Back all values to table.
6947         ---*************************--------
6948         p_value_set_tbl(i).value_set_name                     :=    l_value_set_name;
6949         p_value_set_tbl(i).value_set_id                 :=  l_value_set_id;
6950         p_value_set_tbl(i).description                        :=    l_description;
6951         p_value_set_tbl(i).version_description          :=  l_version_description;
6952         p_value_set_tbl(i).format_type                        :=    l_format_code;
6953         p_value_set_tbl(i).longlist_flag                      :=    l_longlist_flag;
6954         p_value_set_tbl(i).validation_type                  :=  l_validation_code;
6955 
6959         p_value_set_tbl(i).end_active_date                  :=  l_end_active_date;
6956         p_value_set_tbl(i).parent_value_set_name          :=    l_parent_value_set_name;
6957         --p_value_set_tbl(i).version_seq_id                   :=    l_version_seq_id;
6958         p_value_set_tbl(i).start_active_date                :=  l_start_active_date;
6960         p_value_set_tbl(i).maximum_size                 :=  l_maximum_size;
6961         p_value_set_tbl(i).minimum_value                      :=    l_maximum_value;
6962         p_value_set_tbl(i).maximum_value                      :=    l_minimum_value;
6963 
6964         p_value_set_tbl(i).value_column_name                :=  l_value_column_name;
6965         p_value_set_tbl(i).value_column_type                :=  l_value_column_type;
6966         p_value_set_tbl(i).value_column_size                :=  l_value_column_size;
6967         p_value_set_tbl(i).id_column_name                     :=    l_id_column_name;
6968         p_value_set_tbl(i).id_column_size                     :=    l_id_column_size;
6969         p_value_set_tbl(i).id_column_type                     :=    l_id_column_type;
6970         p_value_set_tbl(i).meaning_column_name            :=    l_meaning_column_name;
6971         p_value_set_tbl(i).meaning_column_size            :=    l_meaning_column_size;
6972         p_value_set_tbl(i).meaning_column_type            :=    l_meaning_column_type;
6973 
6974         p_value_set_tbl(i).table_application_id           :=    l_table_application_id;
6975         p_value_set_tbl(i).application_table_name         :=    l_application_table_name;
6976         p_value_set_tbl(i).additional_where_clause      :=  l_additional_where_clause;
6977 
6978         -- transactions related columns
6979         p_value_set_tbl(i).transaction_type                 :=  l_transaction_type;
6980         --p_value_set_tbl(i).transaction_id               :=    l_transaction_id;
6981 
6982         -- process related columns
6983         write_debug(G_PKG_Name,l_api_name,' Status : l_process_status '||l_process_status);
6984 
6985         p_value_set_tbl(i).process_status                     :=    l_process_status;
6986         p_value_set_tbl(i).set_process_id                 :=    l_set_process_id;
6987 
6988         -- who columns for concurrent program
6989         p_value_set_tbl(i).request_id                     :=    l_request_id;
6990         p_value_set_tbl(i).program_application_id       :=  l_program_application_id;
6991         p_value_set_tbl(i).program_id                   :=  l_program_id;
6992         p_value_set_tbl(i).program_update_date          :=  l_program_update_date;
6993 
6994         -- who columns
6995         p_value_set_tbl(i).last_update_date               :=    l_last_update_date;
6996         p_value_set_tbl(i).last_updated_by                :=    l_last_updated_by;
6997         p_value_set_tbl(i).creation_date                  :=    l_creation_date;
6998         p_value_set_tbl(i).created_by                     :=    l_created_by;
6999         p_value_set_tbl(i).last_update_login                :=  l_last_update_login;
7000         --------********************-------------
7001 
7002 
7003 
7004 
7005 
7006 
7007 
7008         -- Re-Initializing values
7009         l_value_set_name          :=  NULL;
7010         l_value_set_id            :=  NULL;
7011         l_description             :=  NULL;
7012         l_format_code             :=  NULL;
7013         l_longlist_flag           :=  NULL;
7014         l_validation_code         :=  NULL;
7015         l_parent_value_set_name   :=  NULL;
7016         l_version_seq_id          :=  NULL;
7017         l_start_active_date       :=  NULL;
7018         l_end_active_date         :=  NULL;
7019         l_maximum_size            :=  NULL;
7020         l_minimum_value           :=  NULL;
7021         l_maximum_value           :=  NULL;
7022         l_transaction_type        :=  NULL;
7023         l_process_status          :=  NULL;
7024         l_request_id              :=  NULL;
7025         l_set_process_id          :=  NULL;
7026         l_last_update_date        :=  NULL;
7027         l_last_updated_by         :=  NULL;
7028         l_creation_date           :=  NULL;
7029         l_created_by              :=  NULL;
7030         l_last_update_login       :=  NULL;
7031 
7032 
7033         l_value_column_name       :=  NULL;
7034         l_value_column_type       :=  NULL;
7035         l_value_column_size       :=  NULL;
7036         l_id_column_name          :=  NULL;
7037         l_id_column_size          :=  NULL;
7038         l_id_column_type          :=  NULL;
7039         l_meaning_column_name     :=  NULL;
7040         l_meaning_column_size     :=  NULL;
7041         l_meaning_column_type     :=  NULL;
7042         l_table_application_id    :=  NULL;
7043         l_application_table_name  :=  NULL;
7044         l_additional_where_clause :=  NULL;
7045 
7046         l_transaction_id          :=  NULL;
7047         l_version_description     :=  NULL;
7048         l_request_id              :=  NULL;
7049         l_program_application_id  :=  NULL;
7050         l_program_id              :=  NULL;
7051         l_program_update_date     :=  NULL;
7052         l_table_exist             :=  NULL;
7053 
7054     END LOOP;  -- END FOR i IN p_value_set_tbl.first..p_value_set_tbl.last
7055 
7056 
7057 
7058 
7059     -- Set return status
7060     IF Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS AND  x_return_status <>G_RET_STS_ERROR THEN
7061 
7062       x_return_status :=  G_RET_STS_SUCCESS;
7063       l_return_status    := G_RET_STS_SUCCESS;
7064 
7065     END IF;
7066 
7067 
7068     IF l_return_status =G_RET_STS_ERROR THEN
7069 
7070       x_return_status :=  G_RET_STS_ERROR;
7071 
7072     END IF;
7073 
7074 
7078     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of  Process_Value_Set API x_return_status ='||x_return_status );
7075 
7076 
7077     write_debug(G_PKG_Name,l_api_name,' End of  Process_Value_Set API' );
7079 
7080 
7081 
7082 
7083     IF p_commit THEN
7084       write_debug(G_PKG_Name,l_api_name,' Issue a commit ');
7085       --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Issue a commit ');
7086 
7087       COMMIT;
7088     END IF;
7089 
7090 
7091 EXCEPTION
7092   WHEN OTHERS THEN
7093     write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
7094     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
7095 
7096     x_return_status := G_RET_STS_UNEXP_ERROR;
7097     x_return_msg    := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
7098     RETURN;
7099 
7100 
7101 END Process_Value_Set;
7102 
7103 
7104 
7105 -- Procedure to process value set
7106 PROCEDURE Process_Value_Set_Value (
7107            p_api_version            IN              NUMBER,
7108            p_value_set_val_tbl      IN  OUT NOCOPY  Ego_Metadata_Pub.Value_Set_Value_Tbl,
7109            p_value_set_val_tl_tbl   IN  OUT NOCOPY  Ego_Metadata_Pub.Value_Set_Value_Tl_Tbl,
7110            p_set_process_id         IN              NUMBER,
7111            p_commit                 IN              BOOLEAN DEFAULT FALSE,
7112            x_return_status          OUT NOCOPY      VARCHAR2,
7113            x_msg_count              OUT NOCOPY      NUMBER,
7114            x_return_msg             OUT NOCOPY      VARCHAR2)
7115 
7116 IS
7117 
7118 
7119     l_api_name                VARCHAR2(30):='Process_Value_Set_Value';
7120     l_api_version             NUMBER := 1.0;
7121     l_owner                   NUMBER := G_User_Id;
7122 --    l_owner_name            VARCHAR2(40):='ANONYMOUS';
7123 
7124     l_value_set_name          FND_FLEX_VALUE_SETS.FLEX_VALUE_SET_NAME%TYPE; -- VARCHAR2(60);
7125     l_value_set_id            FND_FLEX_VALUES.FLEX_VALUE_SET_ID%TYPE;
7126 
7127     l_flex_value              fnd_flex_values.flex_value%TYPE;
7128     l_flex_value_id           fnd_flex_values.flex_value_id%TYPE;
7129     l_version_seq_id          NUMBER;
7130     --l_sequence                 NUMBER;
7131     l_start_active_date       DATE;
7132     l_end_active_date         DATE;
7133     l_vers_start_date         DATE;
7134     l_vers_end_date           DATE;
7135     l_enabled_flag            VARCHAR2(10);
7136 
7137     l_transaction_type        VARCHAR2(10);
7138     l_process_status          NUMBER;
7139     l_set_process_id          NUMBER;
7140 
7141     l_request_id              NUMBER;
7142     l_program_update_date     DATE;
7143     l_program_application_id  NUMBER;
7144     l_program_id              NUMBER;
7145 
7146 
7147     l_last_update_date        DATE;
7148     l_last_updated_by         NUMBER(15);
7149     l_creation_date           DATE;
7150     l_created_by              NUMBER(15);
7151     l_last_update_login       NUMBER(15);
7152 
7153     l_current_lang_exist      BOOLEAN:= FALSE;
7154 
7155     l_val_version_seq_id      NUMBER;
7156     l_language                  VARCHAR2(10);
7157     l_description             VARCHAR2(500);
7158     l_source_lang                 VARCHAR2(10);
7159     l_flex_value_meaning      VARCHAR2(500);
7160     l_transaction_id            NUMBER;
7161     l_disp_sequence           NUMBER;
7162     l_init_msg_list           VARCHAR2(100);
7163     --l_commit
7164     l_value_exist             NUMBER;
7165     l_target_vers_id          NUMBER;
7166     l_is_versioned            VARCHAR2(20):=NULL;
7167     l_api_mode                NUMBER   :=  G_FLOW_TYPE;
7168     l_validation_code         VARCHAR2(10);
7169     l_format_code             VARCHAR2(10);
7170     l_token_table             ERROR_HANDLER.Token_Tbl_Type;
7171     l_application_id          NUMBER;
7172 
7173     l_return_status           VARCHAR2(1) := NULL;
7174 
7175     -- Local variable for Error handling
7176     l_error_message_name      VARCHAR2(240);
7177     l_entity_code             VARCHAR2(30) :=  G_ENTITY_VS_VAL;
7178     l_table_name              VARCHAR2(240):=  G_ENTITY_VAL_HEADER_TAB;
7179 
7180     l_val_ver_exist               NUMBER;
7181     l_trans_val_ver_exist     NUMBER;
7182     l_seq_exist               NUMBER  :=  NULL;
7183     l_valid_type              NUMBER  :=  NULL;
7184     l_return_msg                VARCHAR2(1000);
7185     --l_description            FND_FLEX_VALUE_SETS.description%TYPE;
7186 
7187     l_vs_maximum_size         NUMBER  :=  NULL;
7188     l_val_int_name_size       NUMBER  :=  NULL;
7189     l_val_disp_name_size      NUMBER  :=  NULL;
7190 
7191     l_date_val_old_int_name   VARCHAR2(1000) :=   NULL;
7192     l_mask_format             VARCHAR2(100) :=    NULL;
7193 
7194 
7195     -- Cursor to get value_set_id for a passed in value set name
7196     CURSOR  cur_value_set_id(cp_value_set_name  VARCHAR2) IS
7197       SELECT flex_value_set_id
7198       FROM fnd_flex_value_sets
7199       WHERE flex_value_set_name = cp_value_set_name;
7200 
7201     -- Cursor to find out if value already exist in system.
7202     CURSOR cur_value( cp_flex_value_set_id  NUMBER,
7203                       cp_flex_value         VARCHAR2) IS
7204       SELECT flex_value_id
7205       FROM fnd_flex_values
7206       WHERE flex_value_set_id= cp_flex_value_set_id
7207         AND flex_value= cp_flex_value;
7208 
7209 
7210     -- Cursor to find out if value already exist in system.
7211     CURSOR cur_value_name(  cp_flex_value_set_id  NUMBER,
7212                             cp_flex_value_id      NUMBER )
7213     IS
7214       SELECT flex_value
7215       FROM fnd_flex_values
7216       WHERE flex_value_set_id= cp_flex_value_set_id
7217         AND flex_value_id = cp_flex_value_id;
7218 
7219 
7220     CURSOR Cur_Validation (cp_value_set_id    IN    NUMBER )
7221     IS
7222       SELECT  validation_type, format_type ,maximum_size
7223       FROM  fnd_flex_value_sets
7224       WHERE flex_Value_set_id = cp_value_set_id;
7225 
7226     -- Cursor to get value_set_name for a passed in value set id
7227     CURSOR  cur_value_set_name(cp_value_set_id  NUMBER)
7228     IS
7229       SELECT flex_value_set_name
7230       FROM fnd_flex_value_sets
7231       WHERE flex_value_set_id = cp_value_set_id;
7232 
7233 
7234 
7235 
7239     IS
7236     CURSOR Cur_Value_Ver_Exist(cp_value_set_id    NUMBER,
7237                               cp_value_id        NUMBER,
7238                               cp_version_seq_id  NUMBER )
7240     SELECT 1  AS exist
7241     FROM  EGO_FLEX_VALUE_VERSION_B
7242     WHERE flex_value_set_id = cp_value_set_id
7243       AND flex_value_id = cp_value_id
7244       AND version_seq_id  = cp_version_seq_id;
7245 
7246 
7247 
7248     CURSOR Cur_Trans_Value_Ver_Exist( --cp_value_set_id    NUMBER,
7249                                       cp_value_id        NUMBER,
7250                                       cp_version_seq_id  NUMBER,
7251                                       cp_lang_code       VARCHAR2 )
7252     IS
7253     SELECT 1  AS exist
7254     FROM  EGO_FLEX_VALUE_VERSION_TL
7255     WHERE --value_set_id = cp_value_set_id AND
7256           flex_value_id = cp_value_id
7257       AND version_seq_id  = cp_version_seq_id
7258       AND "LANGUAGE" = cp_lang_code;
7259 
7260 
7261   -- Cursor to get display sequence.
7262   CURSOR c_get_disp_sequence (cp_flex_value_id  IN  NUMBER)
7263   IS
7264   SELECT disp_sequence
7265   FROM ego_vs_values_disp_order
7266   WHERE value_set_value_id = cp_flex_value_id;
7267 
7268 
7269   -- Cursor to validate sequnce.
7270   CURSOR Cur_Seq_Validation ( cp_value_set_id  NUMBER,
7271                               cp_value_id      NUMBER,
7272                               cp_disp_sequence NUMBER)
7273   IS
7274   SELECT 1 AS Seq_exist
7275   FROM  Ego_VS_Values_Disp_Order
7276   WHERE disp_sequence = cp_disp_sequence
7277     AND value_set_id = cp_value_set_id
7278     AND ( value_set_value_id <> cp_value_id
7279           OR cp_value_id IS NULL );
7280 
7281 
7282   -- Cursor to validate sequnce.
7283   CURSOR Cur_Vers_Seq_Validation (  cp_value_set_id   NUMBER,
7284                                     cp_value_id       NUMBER,
7285                                     cp_disp_sequence  NUMBER,
7286                                     cp_version_seq_id NUMBER)
7287   IS
7288   SELECT 1 AS Seq_exist
7289   FROM  EGO_FLEX_VALUE_VERSION_B
7290   WHERE flex_value_set_id    = cp_value_set_id
7291     AND version_seq_id  = cp_version_seq_id
7292     AND SEQUENCE   = cp_disp_sequence;
7293 
7294 
7295 
7296 BEGIN
7297 
7298     write_debug(G_PKG_Name,l_api_name,' Start of API. ' );
7299     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API. ' );
7300 
7301     --Reset all global variables
7302     --FND_MSG_PUB.Initialize;
7303 
7304     -- Get Application Id
7305     --G_Application_Id  := Get_Application_Id();
7306 
7307     -- Bug 9701510
7308     -- Call API to get current value of mask.
7309     FND_PROFILE.GET('ICX_DATE_FORMAT_MASK',l_mask_format);
7310 
7311 
7312     ERROR_HANDLER.Set_Bo_Identifier(G_BO_IDENTIFIER_VS);
7313 
7314     FOR i IN p_value_set_val_tbl.first..p_value_set_val_tbl.last
7315     LOOP
7316         --Assigning value per record
7317         l_value_set_name        :=  p_value_set_val_tbl(i).value_set_name;
7318 
7319         l_value_set_id          :=  p_value_set_val_tbl(i).value_set_id;
7320         l_flex_value            :=  p_value_set_val_tbl(i).flex_value;
7321         l_date_val_old_int_name :=  p_value_set_val_tbl(i).flex_value; -- Use only for date/datetime type of VS
7322         l_flex_value_id         :=  p_value_set_val_tbl(i).flex_value_id;
7323         l_version_seq_id        :=  p_value_set_val_tbl(i).version_seq_id;
7324         l_disp_sequence         :=  p_value_set_val_tbl(i).disp_sequence;
7325         l_start_active_date     :=  p_value_set_val_tbl(i).start_active_date;
7326         l_end_active_date       :=  p_value_set_val_tbl(i).end_active_date;
7327         l_enabled_flag          :=  p_value_set_val_tbl(i).enabled_flag;
7328 
7329         l_transaction_type      :=  p_value_set_val_tbl(i).transaction_type;
7330         l_transaction_id        :=  p_value_set_val_tbl(i).transaction_id;
7331 
7332 
7333         l_process_status        :=  p_value_set_val_tbl(i).process_status;
7334         l_set_process_id        :=  p_value_set_val_tbl(i).set_process_id;
7335 
7336 
7337         l_request_id              :=  p_value_set_val_tbl(i).request_id;
7338         l_program_update_date     :=  p_value_set_val_tbl(i).program_update_date;
7339         l_program_application_id  :=  p_value_set_val_tbl(i).program_application_id;
7340         l_program_id              :=  p_value_set_val_tbl(i).program_id;
7341 
7342 
7343 
7344         l_last_update_date      :=  p_value_set_val_tbl(i).last_update_date;
7345         l_last_updated_by       :=  p_value_set_val_tbl(i).last_updated_by;
7346         l_creation_date         :=  p_value_set_val_tbl(i).creation_date;
7347         l_created_by            :=  p_value_set_val_tbl(i).created_by;
7348         l_last_update_login     :=  p_value_set_val_tbl(i).last_update_login;
7349 
7350 
7351         write_debug(G_PKG_Name,l_api_name,'  Start of Loop to get values : value  = '||l_flex_value||' and Value Id = '||l_flex_value_id);
7352 
7353 
7354 
7355         IF l_value_set_id IS NOT NULL THEN
7356 
7357             -- Get Value Set Name
7358             Convert_Id_To_Name (l_value_set_id ,G_Value_Set,NULL,l_value_set_name);
7359 
7360 
7361             --
7362             IF l_value_set_id IS NULL THEN
7363 
7364                 l_error_message_name          := 'EGO_VSET_INVALID_ID';
7365                 -- Set process_status to 3
7366                 l_process_status    := g_error_record;
7367                 l_return_status     := G_RET_STS_ERROR;
7368                 l_last_updated_by   := g_user_id;
7369                 l_last_update_date  := SYSDATE;
7370                 l_last_update_login := g_login_id;
7371 
7372 
7373 
7374                 ERROR_HANDLER.Add_Error_Message(
7375                   p_message_name                   => l_error_message_name
7376                   ,p_application_id                => G_App_Short_Name
7377                   ,p_token_tbl                     => l_token_table
7378                   ,p_message_type                  => G_RET_STS_ERROR
7379                   ,p_row_identifier                => l_transaction_id
7380                   ,p_entity_code                   => l_entity_code
7381                   ,p_table_name                    => l_table_name);
7382 
7383             END IF; -- END IF l_value_set_id IS NULL THEN
7384 
7385 
7386 
7387         END IF;-- END IF l_value_set_id IS NOT NULL THEN
7388 
7389 
7390 
7391         IF ( l_value_set_name IS NOT NULL AND l_value_set_id IS NULL ) THEN
7392           -- Get value Set Id
7393           Convert_Name_To_Id (l_value_set_name,G_Value_Set,NULL,l_value_set_id);
7394         END IF; -- END IF ( l_value_set_name IS NOT NULL AND l_value_set_id IS NULL ) THEN
7395 
7396         --Dbms_Output.put_line(' After conversion of VS '||' VS NAme = '||l_value_set_name||' VS Id = '||l_value_set_id);
7397 
7398 
7399 
7400           -- Check if required value has been passed.
7401         IF (l_value_set_name IS NULL AND l_value_set_id IS NULL )  THEN
7402 
7403               l_process_status              := G_ERROR_RECORD;
7404               l_return_status               := G_RET_STS_ERROR;
7405 
7406 
7407               l_error_message_name          := 'EGO_VALUE_SET_REQUIRED_FIELD';
7408               l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
7409               l_token_table(1).TOKEN_VALUE  := l_value_set_name;
7410 
7411               l_token_table(2).TOKEN_NAME   := 'VALUE_SET_ID';
7412               l_token_table(2).TOKEN_VALUE  := l_value_set_name;
7413 
7414 
7415               ERROR_HANDLER.Add_Error_Message(
7416                 p_message_name                   => l_error_message_name
7417                 ,p_application_id                => G_App_Short_Name
7418                 ,p_token_tbl                     => l_token_table
7419                 ,p_message_type                  => G_RET_STS_ERROR
7420                 ,p_row_identifier                => l_transaction_id
7421                 ,p_entity_code                   => l_entity_code
7422                 ,p_table_name                    => l_table_name
7423               );
7424 
7425         END IF;-- END IF (l_value_set_name IS NULL AND l_value_set_id IS NULL )  THEN
7426 
7427 
7428 
7429         -- Bug 9701510
7430         -- Get validation code and format code for VS.
7431         FOR j IN Cur_Validation(l_value_set_id)
7432         LOOP
7433           l_validation_code :=  j.validation_type;
7434           l_format_code     :=  j.format_type;
7435           l_vs_maximum_size :=  j.maximum_size;
7436         END LOOP;
7437 
7438         --Dbms_Output.put_line(' VALIDATION CODE POST PROCESING: l_validation_code = '||l_validation_code ||' l_value_set_id = '||l_value_set_id);
7439         --YJ
7440 
7441 
7442 
7443         IF l_flex_value_id IS NOT NULL THEN
7444             -- Get value name
7445 
7446 
7447 
7448             Convert_Id_To_Name (l_flex_value_id,G_Value,l_value_set_id,l_flex_value);
7449 
7450             --
7451             IF l_flex_value_id IS NULL THEN
7452 
7453               l_error_message_name          := 'EGO_VSET_VAL_INVALID_ID';
7454               -- Set process_status to 3
7455               l_process_status    := g_error_record;
7456               l_return_status     := G_RET_STS_ERROR;
7457               l_last_updated_by   := g_user_id;
7458               l_last_update_date  := SYSDATE;
7459               l_last_update_login := g_login_id;
7460 
7461 
7462 
7463               ERROR_HANDLER.Add_Error_Message(
7464                 p_message_name                   => l_error_message_name
7465                 ,p_application_id                => G_App_Short_Name
7466                 ,p_token_tbl                     => l_token_table
7467                 ,p_message_type                  => G_RET_STS_ERROR
7468                 ,p_row_identifier                => l_transaction_id
7469                 ,p_entity_code                   => l_entity_code
7470                 ,p_table_name                    => l_table_name
7471               );
7472 
7473             END IF; -- END IF l_value_set_id IS NULL THEN
7474 
7475 
7476         END IF;-- END IF l_flex_value_id IS NOT NULL THEN
7477 
7478 
7479 
7480 
7481         -- get Value_id from a given value.
7482         IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
7483 
7484             -- For Date and DateTime VS, Convert value to DB Date format.
7485             -- Bug 9701510
7486             IF l_format_code IN (G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE) THEN
7487 
7488                 Validate_User_Preferred_Date (l_flex_value,
7489                                               l_format_code,
7490                                               l_transaction_id,
7491                                               l_return_status,
7492                                               l_return_msg);
7493 
7494 
7495 
7496                 -- check the return status
7497                 IF (l_return_status =G_RET_STS_UNEXP_ERROR )
7498                 THEN
7499 
7500                   write_debug(G_PKG_Name,l_api_name,' Unexpected error occured in Validate_User_Preferred_Date API l_return_msg ='||l_return_msg);
7501 
7502                   x_return_status :=  G_RET_STS_UNEXP_ERROR;
7503                   x_return_msg    :=  l_return_msg;
7504                   RETURN;
7505 
7506                 ELSIF (l_return_status =G_RET_STS_ERROR ) THEN
7507 
7508 
7509                   write_debug(G_PKG_Name,l_api_name,' Err_Msg-TID='  ||l_transaction_id||'-(VS,VS Id, Value)=('
7510                                                                         ||l_value_set_name||','||l_value_set_id||','||l_flex_value||')'||' Validation of value failed. ');
7511 
7512 
7513                   l_process_status := G_ERROR_RECORD;
7514 
7515 
7516                 END IF; -- END IF (l_return_status =G_RET_STS_UNEXP_ERROR )
7517 
7518 
7519 
7520                 Convert_Value_To_DbDate (l_flex_value);
7521 
7522 
7523             END IF;
7524             -- Bug 9701510
7525 
7526             Convert_Name_To_Id (l_flex_value,G_Value,l_value_set_id,l_flex_value_id);
7527 
7528         END IF; -- END IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
7529 
7530 
7531 
7532 
7533 
7534         -- Check if required value has been passed.
7535         IF (l_flex_value IS NULL AND l_flex_value_id IS NULL )  THEN
7536 
7537               l_process_status              := G_ERROR_RECORD;
7538               l_return_status               := G_RET_STS_ERROR;
7539 
7540               l_error_message_name          := 'EGO_VALUE_REQUIRED_FIELD';
7541               l_token_table(1).TOKEN_NAME   := 'FLEX_VALUE';
7542               l_token_table(1).TOKEN_VALUE  := l_flex_value;
7543 
7544               l_token_table(2).TOKEN_NAME   := 'FLEX_VALUE_ID';
7545               l_token_table(2).TOKEN_VALUE  := l_flex_value_id;
7546 
7547 
7548               ERROR_HANDLER.Add_Error_Message(
7549                 p_message_name                  => l_error_message_name
7550                 ,p_application_id                => G_App_Short_Name
7551                 ,p_token_tbl                     => l_token_table
7552                 ,p_message_type                  => G_RET_STS_ERROR
7553                 ,p_row_identifier                => l_transaction_id
7554                 ,p_entity_code                   => l_entity_code
7555                 ,p_table_name                    => l_table_name
7556               );
7557 
7558               RETURN;
7559 
7560         END IF;-- END IF (l_value_set_name IS NULL AND l_value_set_id IS NULL )  THEN
7561 
7562         --END IF;-- END IF l_api_mode = EGO_GLOBALS.G_EGO_MD_API
7563 
7564 
7565 
7566         --Check for transaction type and update it correctly
7567         IF l_transaction_type  =G_SYNC THEN
7568 
7569           IF l_flex_value_id IS NOT NULL THEN
7570             l_transaction_type  :=G_UPDATE;
7571           ELSE
7572             l_transaction_type  :=G_CREATE;
7573           END IF;
7574 
7575         END IF; -- END IF l_transaction_type  =G_SYNC THEN
7576 
7577 
7578 
7579         IF l_version_seq_id IS NULL THEN
7580             -- Code to verify if disp_sequence is not duplicate.
7581             FOR j IN Cur_Seq_Validation (l_value_set_id, l_flex_value_id,l_disp_sequence)
7582             LOOP
7583                 l_seq_exist := j.Seq_exist;
7584             END LOOP;
7585 
7586 
7587             IF l_seq_exist IS NOT NULL THEN
7588 
7589                 --Dbms_Output.put_line(' Duplicate sequence error ');
7590 
7591                 l_process_status              := G_ERROR_RECORD;
7592                 l_return_status               := G_RET_STS_ERROR;
7593                 l_last_updated_by             := g_user_id;
7594                 l_last_update_date            := SYSDATE;
7595                 l_last_update_login           := g_login_id;
7596 
7597                 l_error_message_name          := 'EGO_EF_VAL_SEQ_ERR';
7598 
7599                 ERROR_HANDLER.Add_Error_Message(
7600                   p_message_name                  => l_error_message_name
7601                   ,p_application_id                => G_App_Short_Name
7602                   ,p_token_tbl                     => l_token_table
7603                   ,p_message_type                  => G_RET_STS_ERROR
7604                   ,p_row_identifier                => l_transaction_id
7605                   ,p_entity_code                   => l_entity_code
7606                 ,p_table_name                    => l_table_name );
7607 
7608             END IF; -- END IF l_seq_exist IS NOT NULL THEN
7609 
7610 
7611         ELSE   -- Check sequence validation for a specific version for version VS
7612 
7613 
7614             -- Code to verify if disp_sequence is not duplicate.
7615             FOR j IN Cur_Vers_Seq_Validation (l_value_set_id, l_flex_value_id,l_disp_sequence,G_OUT_VERSION_SEQ_ID)
7616             LOOP
7617                 l_seq_exist := j.Seq_exist;
7618             END LOOP;
7619 
7620 
7621             IF l_seq_exist IS NOT NULL THEN
7622 
7623                 --Dbms_Output.put_line(' Duplicate sequence error ');
7624 
7625                 l_process_status              := G_ERROR_RECORD;
7626                 l_return_status               := G_RET_STS_ERROR;
7627                 l_last_updated_by             := g_user_id;
7628                 l_last_update_date            := SYSDATE;
7629                 l_last_update_login           := g_login_id;
7630 
7631                 l_error_message_name          := 'EGO_EF_VAL_SEQ_ERR';
7632 
7633                 ERROR_HANDLER.Add_Error_Message(
7634                   p_message_name                  => l_error_message_name
7635                   ,p_application_id                => G_App_Short_Name
7636                   ,p_token_tbl                     => l_token_table
7637                   ,p_message_type                  => G_RET_STS_ERROR
7638                   ,p_row_identifier                => l_transaction_id
7639                   ,p_entity_code                   => l_entity_code
7640                   ,p_table_name                    => l_table_name );
7641 
7642             END IF; -- END IF l_seq_exist IS NOT NULL THEN
7643 
7644 
7645 
7646 
7647 
7648             -- Check for version validation for negative version
7649             IF  (l_version_seq_id <0 )THEN
7650 
7651                 write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS name)=('
7652                                             ||l_value_set_name||')'||' A version seq id can not be a negative number. ');
7653 
7654 
7655 
7656                 l_error_message_name          := 'EGO_VS_VERSION_NUMBER_ERROR';
7657                 l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
7658                 l_token_table(1).TOKEN_VALUE  := l_value_set_name;
7659                 x_return_status               := G_RET_STS_ERROR;
7660 
7661                 ERROR_HANDLER.Add_Error_Message(
7662                   p_message_name                  => l_error_message_name
7663                   ,p_application_id                => G_App_Short_Name
7664                   ,p_token_tbl                     => l_token_table
7665                   ,p_message_type                  => G_RET_STS_ERROR
7666                   ,p_row_identifier                => l_transaction_id
7667                   ,p_entity_code                   => l_entity_code
7668                   ,p_table_name                    => l_table_name
7669                 );
7670 
7671                 l_token_table.DELETE;
7672 
7673             END IF; --IF  l_validation_code = G_TABLE_VALIDATION_CODE THEN
7674         END IF;
7675 
7676 
7677 
7678         IF l_validation_code IN (G_NONE_VALIDATION_CODE,G_TABLE_VALIDATION_CODE) THEN
7679 
7680               --Dbms_Output.put_line(' ERROR : VALUES for G_NONE_VALIDATION_CODE ');
7681               l_process_status              := G_ERROR_RECORD;
7682               l_return_status               := G_RET_STS_ERROR;
7683               l_last_updated_by             := g_user_id;
7684               l_last_update_date            := SYSDATE;
7685               l_last_update_login           := g_login_id;
7686 
7687 
7688 
7689               l_error_message_name          := 'EGO_VALUE_VALIDATION_ERROR';
7690               l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
7691               l_token_table(1).TOKEN_VALUE  := l_value_set_name;
7692 
7693               ERROR_HANDLER.Add_Error_Message(
7694                 p_message_name                  => l_error_message_name
7695                 ,p_application_id                => G_App_Short_Name
7696                 ,p_token_tbl                     => l_token_table
7697                 ,p_message_type                  => G_RET_STS_ERROR
7698                 ,p_row_identifier                => l_transaction_id
7699                 ,p_entity_code                   => l_entity_code
7700                 ,p_table_name                    => l_table_name );
7701 
7702               l_token_table.DELETE;
7703 
7704         END IF; -- END IF l_validation_code IN (G_NONE_VALIDATION_CODE,G_TABLE_VALIDATION_CODE) THEN
7705 
7706 
7707         -- Bug 9702841
7708         -- Validate maximum size validation for VS
7709         IF l_flex_value IS NOT NULL THEN
7710             IF l_format_code IN (G_NUMBER_DATA_TYPE,G_CHAR_DATA_TYPE) THEN
7711 
7712                     l_val_int_name_size   := Length(l_flex_value);
7713                     -- Log error
7714                     IF  l_val_int_name_size > l_vs_maximum_size THEN
7715 
7716                           l_error_message_name          := 'EGO_VS_MAXSIZE_VALUE_VAL';
7717 
7718                           -- Set process_status to 3
7719                           l_process_status    := g_error_record;
7720                           l_return_status     := G_RET_STS_ERROR;
7721                           l_last_updated_by   := g_user_id;
7722                           l_last_update_date  := SYSDATE;
7723                           l_last_update_login := g_login_id;
7724 
7725 
7726                           ERROR_HANDLER.Add_Error_Message(
7727                             p_message_name                   => l_error_message_name
7728                             ,p_application_id                => G_App_Short_Name
7729                             ,p_token_tbl                     => l_token_table
7730                             ,p_message_type                  => G_RET_STS_ERROR
7731                             ,p_row_identifier                => l_transaction_id
7732                             ,p_entity_code                   => l_entity_code
7733                             ,p_table_name                    => l_table_name
7734                           );
7735 
7736 
7737                     END IF;
7738 
7739             END IF;
7740 
7741         END IF;
7742 
7743         ---
7744         --- bug 12651548
7745         ---
7746         -- for current effective version , sysdate may be old , end date may be null or future
7747         -- in Case fo SYNC perspective , sysdate will be in the past, this was throwing
7748         --- error while calling the release version API
7749         ---
7750         IF l_start_active_date < G_SYSDATE
7751             AND
7752            (  l_end_active_date IS NULL
7753                OR
7754 
7755               ( l_end_active_date IS NOT NULL
7756                   AND
7757                 l_end_active_date >= G_SYSDATE
7758               )
7759            ) THEN
7760 
7761           l_start_active_date := G_SYSDATE;
7762         END IF;
7763 
7764         --bug 9702828
7765         -- Check if user passes end date lesser than sysdate
7766         IF l_end_active_date IS NOT NULL AND  l_end_active_date<> G_NULL_DATE THEN
7767 
7768             IF l_end_active_date < G_SYSDATE THEN
7769 
7770                 l_error_message_name          := 'EGO_ENDDATE_LT_CURRDATE';
7771 
7772                 -- Set process_status to 3
7773                 l_process_status    := g_error_record;
7774                 l_return_status     := G_RET_STS_ERROR;
7775                 l_last_updated_by   := g_user_id;
7776                 l_last_update_date  := SYSDATE;
7777                 l_last_update_login := g_login_id;
7778 
7779 
7780                 ERROR_HANDLER.Add_Error_Message(
7781                   p_message_name                   => l_error_message_name
7782                   ,p_application_id                => G_App_Short_Name
7783                   ,p_token_tbl                     => l_token_table
7784                   ,p_message_type                  => G_RET_STS_ERROR
7785                   ,p_row_identifier                => l_transaction_id
7786                   ,p_entity_code                   => l_entity_code
7787                   ,p_table_name                    => l_table_name);
7788 
7789             END IF;
7790 
7791         END IF;
7792 
7793 
7794 
7795 
7796 
7797         IF l_transaction_type  =G_UPDATE AND l_flex_value_id IS NULL THEN
7798 
7799               l_error_message_name          := 'EGO_TRANS_TYPE_INVALID';
7800               l_token_table(1).TOKEN_NAME   := 'Entity';
7801               l_token_table(1).TOKEN_VALUE  := G_ENTITY_VS_VAL;
7802 
7803               -- Set process_status to 3
7804               l_process_status    := g_error_record;
7805               l_return_status     := G_RET_STS_ERROR;
7806               l_last_updated_by   := g_user_id;
7807               l_last_update_date  := SYSDATE;
7808               l_last_update_login := g_login_id;
7809 
7810 
7811               ERROR_HANDLER.Add_Error_Message(
7812                 p_message_name                   => l_error_message_name
7813                 ,p_application_id                => G_App_Short_Name
7814                 ,p_token_tbl                     => l_token_table
7815                 ,p_message_type                  => G_RET_STS_ERROR
7816                 ,p_row_identifier                => l_transaction_id
7817                 ,p_entity_code                   => l_entity_code
7818                 ,p_table_name                    => l_table_name
7819               );
7820 
7821 
7822               l_token_table.DELETE;
7823 
7824 
7825         END IF ; -- END IF l_transaction_type  :=G_CREATE AND l_value_set_id IS NOT NULL THEN
7826 
7827 
7828 
7829         --Dbms_Output.put_line(' JUST BEFORE CREATE MODE l_value_set_id = '||l_value_set_id);
7830         IF l_transaction_type  =G_CREATE THEN
7831 
7832             IF l_flex_value_id IS NOT NULL AND l_version_seq_id IS NULL THEN
7833                 --Dbms_Output.put_line(' Creation error EGO_EF_VAL_INT_NAME_EXIST ');
7834 
7835                 l_error_message_name          := 'EGO_EF_VAL_INT_NAME_EXIST';
7836                 -- Set process_status to 3
7837                 l_process_status              := G_ERROR_RECORD;
7838                 l_return_status               := G_RET_STS_ERROR;
7839                 l_last_updated_by             := g_user_id;
7840                 l_last_update_date            := SYSDATE;
7841                 l_last_update_login           := g_login_id;
7842 
7843 
7844 
7845                 ERROR_HANDLER.Add_Error_Message(
7846                   p_message_name                   => l_error_message_name
7847                   ,p_application_id                => G_App_Short_Name
7848                   ,p_token_tbl                     => l_token_table
7849                   ,p_message_type                  => G_RET_STS_ERROR
7850                   ,p_row_identifier                => l_transaction_id
7851                   ,p_entity_code                   => l_entity_code
7852                   ,p_table_name                    => l_table_name
7853                 );
7854 
7855 
7856 
7857             END IF ; -- END IF l_transaction_type  :=G_CREATE AND l_value_set_id IS NOT NULL THEN
7858 
7859 
7860             IF l_format_code =G_NUMBER_DATA_TYPE THEN
7861 
7862                 l_valid_type   := Is_Valid_Number (l_flex_value);
7863 
7864                 IF  l_valid_type = 1 THEN
7865 
7866                     --Log error
7867                     l_process_status              := G_ERROR_RECORD;
7868                     l_return_status               := G_RET_STS_ERROR;
7869                     l_last_updated_by             := g_user_id;
7870                     l_last_update_date            := SYSDATE;
7871                     l_last_update_login           := g_login_id;
7872 
7873                     l_error_message_name          := 'EGO_EF_NUM_INT_NAME_ERR';
7874 
7875                     l_token_table(1).TOKEN_NAME   := 'FORMAT_MEANING';
7876                     l_token_table(1).TOKEN_VALUE  := G_NUMBER_FORMAT;
7877 
7878                     ERROR_HANDLER.Add_Error_Message(
7879                       p_message_name                   => l_error_message_name
7880                       ,p_application_id                => G_App_Short_Name
7881                       ,p_token_tbl                     => l_token_table
7882                       ,p_message_type                  => G_RET_STS_ERROR
7883                       ,p_row_identifier                => l_transaction_id
7884                       ,p_entity_code                   => l_entity_code
7885                       ,p_table_name                    => l_table_name);
7886 
7887                     l_token_table.DELETE;
7888 
7889                 END IF;-- END F  l_valid_num = 1 THEN
7890 
7891                 l_valid_type :=NULL;
7892 
7893             ELSIF l_format_code IN (G_DATE_DATA_TYPE ,G_DATE_TIME_DATA_TYPE ) THEN
7894 
7895 
7896 
7897                 l_valid_type  := Is_Valid_Date (l_flex_value);
7898 
7899                 IF  l_valid_type = 1 THEN
7900 
7901                   IF  l_format_code =  G_DATE_DATA_TYPE THEN
7902 
7903                     l_error_message_name          := 'EGO_EF_DATE_INT_NAME_ERR';
7904 
7905                     l_token_table(1).TOKEN_NAME   := 'FORMAT_MEANING';
7906                     l_token_table(1).TOKEN_VALUE  := G_DATE_FORMAT;
7907 
7908                     l_token_table(2).TOKEN_NAME   := 'DATE_EXAMPLE';
7909                     l_token_table(2).TOKEN_VALUE  := To_Char(SYSDATE,'YYYY-MM-DD') ;
7910 
7911 
7912                   ELSIF l_format_code =  G_DATE_TIME_DATA_TYPE THEN
7913 
7914                     l_error_message_name          := 'EGO_EF_DATE_TIME_INT_NAME_ERR';
7915 
7916                     l_token_table(1).TOKEN_NAME   := 'FORMAT_MEANING';
7917                     l_token_table(1).TOKEN_VALUE  := G_DATETIME_FORMAT;
7918                     l_token_table(2).TOKEN_NAME   := 'DATE_EXAMPLE';
7919                     l_token_table(2).TOKEN_VALUE  := To_Char(SYSDATE,'YYYY-MM-DD') ;
7920 
7921 
7922 
7923                   END IF ; -- END IF  l_format_code =  G_DATE_DATA_TYPE THEN
7924 
7925                   --Log error
7926                   l_process_status              := G_ERROR_RECORD;
7927                   l_return_status               := G_RET_STS_ERROR;
7928                   l_last_updated_by             := g_user_id;
7929                   l_last_update_date            := SYSDATE;
7930                   l_last_update_login           := g_login_id;
7931 
7932 
7933                   ERROR_HANDLER.Add_Error_Message(
7934                     p_message_name                   => l_error_message_name
7935                     ,p_application_id                => G_App_Short_Name
7936                     ,p_token_tbl                     => l_token_table
7937                     ,p_message_type                  => G_RET_STS_ERROR
7938                     ,p_row_identifier                => l_transaction_id
7942                   l_token_table.DELETE;
7939                     ,p_entity_code                   => l_entity_code
7940                     ,p_table_name                    => l_table_name);
7941 
7943 
7944 
7945                 END IF;-- END F  l_valid_num = 1 THEN
7946 
7947                 l_valid_type :=NULL;
7948 
7949           END IF;-- END IF l_format_code =G_NUMBER_DATA_TYPE THEN
7950 
7951 
7952         END IF; -- END IF l_transaction_type  =G_CREATE THEN
7953 
7954 
7955 
7956         -- Assign correct return status to x_return_status
7957         IF Nvl(l_return_status,G_RET_STS_SUCCESS) <> G_RET_STS_SUCCESS THEN
7958 
7959            --Dbms_Output.put_line(' IN ERROR MODE FOR VALUE ');
7960            x_return_status :=  G_RET_STS_ERROR;
7961 
7962         END IF;-- END IF l_return_status <> G_RET_STS_SUCCESS THEN
7963 
7964 
7965 
7966 
7967         write_debug(G_PKG_Name,l_api_name,' Creating SAVEPOINT VALUE_VERSION_CREATE. ' );
7968 
7969         SAVEPOINT VALUE_VERSION_CREATE;
7970 
7971         G_VAL_TRANS_TYPE  :=  l_transaction_type;
7972 
7973 
7974 
7975       IF p_value_set_val_tl_tbl.count > 0 THEN
7976         FOR j IN p_value_set_val_tl_tbl.first..p_value_set_val_tl_tbl.last
7977         LOOP
7978 
7979           write_debug(G_PKG_Name,l_api_name,'TL value, lang '||p_value_set_val_tl_tbl(j).flex_value||','||p_value_set_val_tl_tbl(j).language);
7980           write_debug(G_PKG_Name,l_api_name,'fetching _TL Records, Transaction type is : '||l_transaction_type);
7981           write_debug(G_PKG_Name,l_api_name, 'l_process_status=>'||l_process_status);
7982 
7983 
7984           -- Bug 9701510
7985           -- For Date and DateTime VS, Convert value to DB Date format.
7986           IF  l_format_code IN (G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE)
7987               AND p_value_set_val_tl_tbl(j).flex_value IS NOT NULL THEN
7988 
7989               Convert_Value_To_DbDate (p_value_set_val_tl_tbl(j).flex_value);
7990 
7991           END IF;
7992           -- Bug 9701510
7993 
7994 
7995           IF ( p_value_set_val_tl_tbl(j).flex_value=l_flex_value
7996                 OR p_value_set_val_tl_tbl(j).flex_value_id=l_flex_value_id ) THEN
7997             -- Check if this is a versioned value set, If so then please process values for a corresponding vesion.
7998 
7999               IF l_version_seq_id IS NOT NULL THEN
8000 
8001                   IF p_value_set_val_tl_tbl(j).version_seq_id=l_version_seq_id THEN
8002 
8003 
8004                       -- get Value_id from a given value. Cross verify if flex_value is created
8005                       IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
8006 
8007                         Convert_Name_To_Id (l_flex_value,G_Value,l_value_set_id,l_flex_value_id);
8008 
8009                       END IF; -- END IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
8010 
8011 
8012 
8013                       --Check for transaction type and update it correctly
8014                       IF p_value_set_val_tl_tbl(j).transaction_type  =G_SYNC THEN
8015 
8016                           IF l_flex_value_id IS NOT NULL THEN
8017 
8018                               l_transaction_type                          :=G_UPDATE;
8019                               p_value_set_val_tl_tbl(j).transaction_type  :=G_UPDATE;
8020 
8021                           ELSE
8022 
8023                               l_transaction_type                          :=G_CREATE;
8024                               p_value_set_val_tl_tbl(j).transaction_type  :=G_CREATE;
8025 
8026                           END IF;
8027 
8028                       END IF; -- END IF l_transaction_type  =G_SYNC THEN
8029 
8030                        write_debug(G_PKG_Name,l_api_name,'TL value, lang '||p_value_set_val_tl_tbl(j).flex_value||','||p_value_set_val_tl_tbl(j).language);
8031                        write_debug(G_PKG_Name,l_api_name,'fetching _TL Records, Transaction type is : '||l_transaction_type);
8032 
8033                       IF p_value_set_val_tl_tbl(j).transaction_type = l_transaction_type THEN
8034 
8035 
8036                           l_description             :=  p_value_set_val_tl_tbl(j).description;
8037                           l_source_lang             :=  p_value_set_val_tl_tbl(j).source_lang;
8038                           l_flex_value_meaning      :=  p_value_set_val_tl_tbl(j).flex_value_meaning;
8039                           l_language                :=  p_value_set_val_tl_tbl(j).LANGUAGE;
8040                           l_source_lang             :=  p_value_set_val_tl_tbl(j).Source_lang;
8041 
8042 
8043                           -- Bug 9702841
8044                           -- Validate maximum size validation for VS
8045                           IF l_flex_value_meaning IS NOT NULL THEN
8046                               IF l_format_code IN (G_NUMBER_DATA_TYPE,G_CHAR_DATA_TYPE) THEN
8047 
8048                                       l_val_disp_name_size   := Length(l_flex_value_meaning);
8049                                       -- Log error
8050                                       IF  l_val_disp_name_size > l_vs_maximum_size THEN
8051 
8052                                             l_error_message_name          := 'EGO_VS_MAXSIZE_VALUE_VAL';
8053 
8054                                             -- Set process_status to 3
8055                                             l_process_status    := g_error_record;
8056                                             l_return_status     := G_RET_STS_ERROR;
8057                                             l_last_updated_by   := g_user_id;
8058                                             l_last_update_date  := SYSDATE;
8059                                             l_last_update_login := g_login_id;
8060 
8061 
8065                                               ,p_token_tbl                     => l_token_table
8062                                             ERROR_HANDLER.Add_Error_Message(
8063                                               p_message_name                   => l_error_message_name
8064                                               ,p_application_id                => G_App_Short_Name
8066                                               ,p_message_type                  => G_RET_STS_ERROR
8067                                               ,p_row_identifier                => l_transaction_id
8068                                               ,p_entity_code                   => l_entity_code
8069                                               ,p_table_name                    => l_table_name
8070                                             );
8071 
8072 
8073                                       END IF;
8074 
8075                               END IF;
8076 
8077 
8078                           END IF;
8079 
8080                           IF l_language = UserEnv('Lang')  THEN
8081                               l_current_lang_exist := TRUE;
8082                               write_debug(G_PKG_Name,l_api_name,'l_current_lang=>'||l_language);
8083 
8084                           END IF;
8085                       END IF;
8086                 END IF;-- End IF p_value_set_val_tl_tbl(j).version_seq_id=l_version_seq_id THEN
8087 
8088               ELSE  -- ELSE FOR "IF l_version_seq_id IS NOT NULL THEN"
8089 
8090                   -- get Value_id from a given value. Cross verify if flex_value is created
8091                   IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
8092 
8093                     Convert_Name_To_Id (l_flex_value,G_Value,l_value_set_id,l_flex_value_id);
8094 
8095                   END IF; -- END IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
8096 
8097 
8098                   IF p_value_set_val_tl_tbl(j).transaction_type =  G_SYNC THEN
8099                     IF l_flex_value_id IS NOT NULL THEN
8100 
8101                       p_value_set_val_tl_tbl(j).transaction_type := G_UPDATE;
8102 
8103                     ELSE
8104 
8105                       p_value_set_val_tl_tbl(j).transaction_type := G_CREATE;
8106 
8107                     END IF;
8108 
8109                   END IF; -- END IF p_value_set_val_tl_tbl.transaction_type =  G_SYNC THEN
8110 
8111 
8112 
8113                   IF p_value_set_val_tl_tbl(j).transaction_type = l_transaction_type THEN
8114 
8115                       --l_val_version_seq_id        :=  version_seq_id,
8116                       l_description             :=  p_value_set_val_tl_tbl(j).description;
8117                       l_source_lang               :=    p_value_set_val_tl_tbl(j).source_lang;
8118                       l_flex_value_meaning      :=  p_value_set_val_tl_tbl(j).flex_value_meaning;
8119                       l_language                :=  p_value_set_val_tl_tbl(j).LANGUAGE;
8120                       l_source_lang             :=  p_value_set_val_tl_tbl(j).Source_lang;
8121 
8122 
8123 
8124                       -- Bug 9702841
8125                       -- Validate maximum size validation for VS
8126                       IF l_flex_value_meaning IS NOT NULL THEN
8127                           IF l_format_code IN (G_NUMBER_DATA_TYPE,G_CHAR_DATA_TYPE) THEN
8128 
8129                                   l_val_disp_name_size   := Length(l_flex_value_meaning);
8130                                   -- Log error
8131                                   IF  l_val_disp_name_size > l_vs_maximum_size THEN
8132 
8133                                         l_error_message_name          := 'EGO_VS_MAXSIZE_VALUE_VAL';
8134 
8135                                         -- Set process_status to 3
8136                                         l_process_status    := g_error_record;
8137                                         l_return_status     := G_RET_STS_ERROR;
8138                                         l_last_updated_by   := g_user_id;
8139                                         l_last_update_date  := SYSDATE;
8140                                         l_last_update_login := g_login_id;
8141 
8142 
8143                                         ERROR_HANDLER.Add_Error_Message(
8144                                           p_message_name                   => l_error_message_name
8145                                           ,p_application_id                => G_App_Short_Name
8146                                           ,p_token_tbl                     => l_token_table
8147                                           ,p_message_type                  => G_RET_STS_ERROR
8148                                           ,p_row_identifier                => l_transaction_id
8149                                           ,p_entity_code                   => l_entity_code
8150                                           ,p_table_name                    => l_table_name
8151                                         );
8152 
8153 
8154                                   END IF;
8155                           END IF;
8156                      END IF;
8157                   END IF;
8158               END IF; -- END IF l_version_seq_id IS NOT NULL THEN
8159           END IF;-- End IF p_value_set_val_tl_tbl(j).flex_value=l_flex_value THEN
8160 
8161 
8162           -- Get some key values, if transaction type is update.
8163           IF l_transaction_type=G_UPDATE THEN
8164 
8165               IF l_process_status = G_PROCESS_RECORD  THEN
8166 
8167                 Get_Key_Value_Columns
8168                     ( p_value_set_id      => l_value_set_id,
8169                       p_value_id          => l_flex_value_id,
8170                       x_display_name      => l_flex_value_meaning,
8174                       x_description       => l_description,
8171                       x_disp_sequence     => l_disp_sequence,
8172                       x_start_date_active => l_start_active_date,
8173                       x_end_date_active   => l_end_active_date,
8175                       x_enabled_flag      => l_enabled_flag,
8176                       x_return_status     => l_return_status,
8177                       x_return_msg        => l_return_msg);
8178 
8179 
8180 
8181 
8182                 write_debug(G_PKG_Name,l_api_name,' After call to Get_Key_Value_Columns 8267 ' || l_disp_sequence);
8183                 --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  After call to Get_Key_Value_Columns ');
8184 
8185 
8186 
8187                 -- check the return status
8188                 IF (Nvl(l_return_status,G_RET_STS_SUCCESS)  =G_RET_STS_SUCCESS ) THEN
8189 
8190                   l_process_status:= G_PROCESS_RECORD;
8191 
8192                 ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
8193 
8194                   x_return_status := l_return_status;
8195                   l_process_status:= G_ERROR_RECORD;
8196 
8197 
8198                       G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
8199                   G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS;
8200                   G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
8201                   G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
8202                   G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
8203                   G_TOKEN_TBL(3).Token_Value  :=  'EGO_VS_BULKLOAD_PVT';
8204                   G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
8205                   G_TOKEN_TBL(4).Token_Value  :=  'Get_Key_Value_Columns';
8206 
8207 
8208                   ERROR_HANDLER.Add_Error_Message(
8209                     p_message_name                   => 'EGO_ENTITY_API_FAILED'
8210                     ,p_application_id                => G_App_Short_Name
8211                     ,p_token_tbl                     => G_TOKEN_TBL
8212                     ,p_message_type                  => G_RET_STS_ERROR
8213                     ,p_row_identifier                => l_transaction_id
8214                     ,p_entity_code                   => G_ENTITY_VS
8215                     ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
8216 
8217                 ELSE
8218                   write_debug(G_PKG_Name,l_api_name,' : Unexpected exception ' );
8219                   x_return_status :=  G_RET_STS_UNEXP_ERROR;
8220                   x_return_msg    :=  l_return_msg;
8221                   RETURN;
8222 
8223                 END IF;  -- END IF (l_return_status =G_RET_STS_SUCCESS ) THEN
8224 
8225 
8226               END IF;
8227 
8228 
8229 
8230 
8231                 -- Already checked at the start of API
8232               IF l_flex_value_meaning IS NULL OR  l_disp_sequence IS NULL OR l_enabled_flag IS NULL THEN
8233 
8234                   l_error_message_name          := 'EGO_VAL_KEY_REQ_ERR';
8235 
8236                   -- Set process_status to 3
8237                   l_process_status              := G_ERROR_RECORD;
8238                   l_return_status               := G_RET_STS_ERROR;
8239                   l_last_updated_by             := g_user_id;
8240                   l_last_update_date            := SYSDATE;
8241                   l_last_update_login           := g_login_id;
8242 
8243 
8244                   ERROR_HANDLER.Add_Error_Message(
8245                     p_message_name                   => l_error_message_name
8246                     ,p_application_id                => G_App_Short_Name
8247                     ,p_token_tbl                     => l_token_table
8248                     ,p_message_type                  => G_RET_STS_ERROR
8249                     ,p_row_identifier                => l_transaction_id
8250                     ,p_entity_code                   => l_entity_code
8251                     ,p_table_name                    => l_table_name);
8252 
8253 
8254               END IF; -- END IF l_flex_value_meaning IS NULL OR  l_disp_sequence IS NULL THEN
8255 
8256 
8257           END IF;
8258 
8259 
8260 
8261           --bug 9702828
8262           -- Check if user passes end date lesser than sysdate
8263           IF l_end_active_date IS NOT NULL AND  l_end_active_date<> G_NULL_DATE THEN
8264               IF l_start_active_date IS NOT NULL AND  l_start_active_date<> G_NULL_DATE THEN
8265                   IF l_start_active_date >l_end_active_date THEN
8266 
8267                       l_error_message_name          := 'EGO_START_DATE_GT_END_DATE';
8268 
8269                       -- Set process_status to 3
8270                       l_process_status    := g_error_record;
8271                       l_return_status     := G_RET_STS_ERROR;
8272                       l_last_updated_by   := g_user_id;
8273                       l_last_update_date  := SYSDATE;
8274                       l_last_update_login := g_login_id;
8275 
8276 
8277                       ERROR_HANDLER.Add_Error_Message(
8278                         p_message_name                   => l_error_message_name
8279                         ,p_application_id                => G_App_Short_Name
8280                         ,p_token_tbl                     => l_token_table
8281                         ,p_message_type                  => G_RET_STS_ERROR
8282                         ,p_row_identifier                => l_transaction_id
8283                         ,p_entity_code                   => l_entity_code
8284                         ,p_table_name                    => l_table_name);
8285                   END IF;
8286               END IF;
8287           END IF;
8288 
8289 
8290 
8291 
8292           --Based on transaction type do processing of values.
8293           IF l_transaction_type=G_CREATE THEN
8294              write_debug(G_PKG_Name,l_api_name,' CREATE TRANSACTION');
8295 
8296               -- Check for ValueSetType/Validation type is done as bulk check..
8297               -- Create a value set to keep sync with existing framework
8298 
8299               IF l_flex_value_meaning IS NULL OR  l_disp_sequence IS NULL THEN
8300 
8301                   l_error_message_name          := 'EGO_VAL_KEY_REQ_ERR';
8302 
8303                   --Dbms_Output.put_line( '  l_flex_value_meaning IS NULL OR  l_disp_sequence IS NULL THEN ');
8304 
8305                   ERROR_HANDLER.Add_Error_Message(
8306                     p_message_name                   => l_error_message_name
8307                     ,p_application_id                => G_App_Short_Name
8308                     ,p_token_tbl                     => l_token_table
8309                     ,p_message_type                  => G_RET_STS_ERROR
8310                     ,p_row_identifier                => l_transaction_id
8311                     ,p_entity_code                   => l_entity_code
8312                     ,p_table_name                    => l_table_name
8313                   );
8314 
8315 
8316                   -- Set process_status to 3
8317                 l_process_status              := G_ERROR_RECORD;
8318                 l_return_status               := G_RET_STS_ERROR;
8319                 l_last_updated_by             := g_user_id;
8320                 l_last_update_date            := SYSDATE;
8321                 l_last_update_login           := g_login_id;
8322 
8323 
8324               END IF; -- END IF l_flex_value_meaning IS NULL OR  l_disp_sequence IS NULL THEN
8325 
8326 
8327               -- Check if value has already been created.
8328               IF l_flex_value_id IS NULL THEN
8329                 IF ( p_value_set_val_tl_tbl(j).flex_value=l_flex_value ) THEN
8330 
8331                   -- Create value only is it has not been created.
8332                   IF l_process_status = G_PROCESS_RECORD  THEN
8333                     write_debug(G_PKG_Name,l_api_name,' TL value, lang  CREATE=>'||l_flex_value||','||p_value_set_val_tl_tbl(j).language);
8334 
8335                     EGO_EXT_FWK_PUB.Create_Value_Set_Val
8336                       (
8337                         p_api_version                    => p_api_version
8338                         ,p_value_set_name                => l_value_set_name
8339                         ,p_internal_name                 => l_flex_value
8340                         ,p_display_name                  => l_flex_value_meaning
8341                         ,p_description                   => l_description
8342                         ,p_sequence                      => l_disp_sequence
8343                         ,p_start_date                    => l_start_active_date
8344                         ,p_end_date                      => l_end_active_date
8345                         ,p_enabled                       => l_enabled_flag
8346                         ,p_owner                         => l_owner
8347                         ,p_init_msg_list                 => l_init_msg_list
8348                         ,p_commit                        => FND_API.G_FALSE
8349                         ,x_return_status                 => l_return_status
8350                         ,x_msg_count                     => x_msg_count
8351                         ,x_msg_data                      => l_return_msg
8352                       );
8353 
8354                     write_debug(G_PKG_Name,l_api_name, 'return sts=>'||l_return_status);
8355 
8356 
8357                     -- check the return status
8358                     IF (Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS ) THEN
8359 
8360                       l_process_status  := G_PROCESS_RECORD;
8361                       l_return_status   :=  G_RET_STS_SUCCESS;
8362                       write_debug(G_PKG_Name,l_api_name, 'l_return_status=>'||l_return_status);
8363 
8364                     ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
8365 
8366                       l_return_status             :=  G_RET_STS_ERROR;
8367                       l_process_status            :=  G_ERROR_RECORD;
8368 
8369                           G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
8370                       G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS_VAL;
8371                       G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
8372                       G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
8373                       G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
8374                       G_TOKEN_TBL(3).Token_Value  :=  'EGO_EXT_FWK_PUB';
8375                       G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
8376                       G_TOKEN_TBL(4).Token_Value  :=  'Create_Value_Set_Val';
8377 
8378 
8379                       ERROR_HANDLER.Add_Error_Message(
8380                         p_message_name                   => 'EGO_ENTITY_API_FAILED'
8381                         ,p_application_id                => G_App_Short_Name
8382                         ,p_token_tbl                     => G_TOKEN_TBL
8383                         ,p_message_type                  => G_RET_STS_ERROR
8384                         ,p_row_identifier                => l_transaction_id
8385                         ,p_entity_code                   => G_ENTITY_VS_VAL
8386                         ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB );
8387 
8388                     ELSE
8389 
8390                       x_return_status :=  G_RET_STS_UNEXP_ERROR;
8391                       x_return_msg    :=  l_return_msg;
8392                       RETURN;
8393 
8394                     END IF;  -- END IF (l_return_status =G_RET_STS_SUCCESS ) THEN
8395 
8396                   END IF; -- END IF l_process_status = G_PROCESS_RECORD  THEN
8397 
8398                 END IF; -- END IF ( ( p_value_set_val_tl_tbl(j).flex_value=l_flex_value
8399               END IF; -- END IF l_flex_value_id IS NULL THEN
8400 
8401 
8402 
8403               -- get Value_id from a given value as value should have been created by now.
8404               IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
8405 
8406                 FOR l IN cur_value(l_value_set_id, l_flex_value)
8407                 LOOP
8408                   l_flex_value_id := l.flex_value_id;
8409                 END LOOP;
8410 
8411               END IF; -- END IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
8412 
8413 
8414               ----******* Create Version Values************------------
8415               ---
8416               --- For the value created above, create the versioned values
8417               --- if it is a versioned VS
8418               ---
8419               IF ( p_value_set_val_tl_tbl(j).flex_value=l_flex_value
8420                        OR p_value_set_val_tl_tbl(j).flex_value_id=l_flex_value_id )THEN
8421 
8422 
8423                 IF l_version_seq_id IS NOT NULL THEN
8424 
8425                   IF p_value_set_val_tl_tbl(j).process_status = G_PROCESS_RECORD AND l_process_status =G_PROCESS_RECORD THEN
8426 
8427                       write_debug(G_PKG_Name,l_api_name, 'Inside if 1');
8428 
8429                       -- Check if value already exist
8430                       FOR i IN Cur_Value_Ver_Exist(l_value_set_id,l_flex_value_id,G_OUT_VERSION_SEQ_ID)
8431                       LOOP
8432                         l_val_ver_exist := i.exist;
8433                         write_debug(G_PKG_Name,l_api_name, 'Inside loop 1');
8434                       END LOOP; -- END FOR i IN Cur_Value_Ver_Exist
8435 
8436                       -- Check if translatable value exist
8437                       FOR i IN Cur_Trans_Value_Ver_Exist(--l_value_set_id,
8438                                                           l_flex_value_id,G_OUT_VERSION_SEQ_ID,l_language)
8439                       LOOP
8440 
8441                           l_trans_val_ver_exist := i.exist;
8442                           write_debug(G_PKG_Name,l_api_name, 'Inside loop 2');
8443 
8444                       END LOOP; -- END FOR i IN Cur_Value_Ver_Exist
8445 
8446                       IF l_val_ver_exist IS NULL THEN
8447 
8448                           INSERT INTO EGO_FLEX_VALUE_VERSION_B
8449                                   (FLEX_VALUE_SET_ID,FLEX_VALUE_ID,VERSION_SEQ_ID,SEQUENCE
8450                                   ,CREATED_BY,CREATION_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE,LAST_UPDATE_LOGIN)
8451                           VALUES  (l_VALUE_SET_ID,l_FLEX_VALUE_ID,G_OUT_VERSION_SEQ_ID, l_disp_sequence,
8452                                   G_Party_Id,SYSDATE,G_Party_Id ,SYSDATE,G_Login_Id);
8453                         write_debug(G_PKG_Name,l_api_name, ' Inserted reord in EGO_FLEX_VALUE_VERSION_B table '||p_value_set_val_tl_tbl(j).flex_value);
8454 
8455                       END IF;
8456 
8457 
8458                       IF l_trans_val_ver_exist IS NULL THEN
8459 
8460                           INSERT INTO EGO_FLEX_VALUE_VERSION_TL
8461                                   ( FLEX_VALUE_ID,VERSION_SEQ_ID,LAST_UPDATE_DATE,LAST_UPDATED_BY,
8462                                       CREATION_DATE,CREATED_BY,LAST_UPDATE_LOGIN,DESCRIPTION,FLEX_VALUE_MEANING,LANGUAGE,SOURCE_LANG)
8463                           VALUES  ( l_FLEX_VALUE_ID,G_OUT_VERSION_SEQ_ID,SYSDATE,G_Party_Id, SYSDATE,G_Party_Id,G_Login_Id,
8464                                     l_description, l_flex_value_meaning,l_language,l_source_lang) ;
8465 
8466 
8470 
8467                         write_debug(G_PKG_Name,l_api_name, ' Inserted reord in EGO_FLEX_VALUE_VERSION_TL table '||p_value_set_val_tl_tbl(j).flex_value
8468                                                            ||','||l_language);
8469                       END IF;
8471                       --- commented bug 12759471
8472                       -- l_process_status:= G_SUCCESS_RECORD;
8473 
8474 
8475                   END IF; -- END IF p_value_set_val_tl_tbl(j).process_status = G_PROCESS_RECORD THEN
8476 
8477 
8478                 ELSE
8479 
8480                   NULL;
8481                   --- commented bug 12759471
8482                   /*
8483                   IF l_return_status = G_RET_STS_SUCCESS THEN
8484 
8485                     l_process_status:= G_SUCCESS_RECORD;
8486                     write_debug(G_PKG_Name,l_api_name, 'setting l_process_status to success');
8487 
8488                   END IF;
8489                   */
8490 
8491 
8492                 END IF; -- END IF l_version_seq_id IS NOT NULL THEN
8493 
8494 
8495               END IF; -- END IF ( p_value_set_val_tl_tbl(j).flex_value=l_flex_value
8496 
8497               --Dbms_Output.put_line(' TL Date : '||p_value_set_val_tl_tbl(j).flex_value||' Id = '||p_value_set_val_tl_tbl(j).flex_value_id );
8498 
8499               -- Write code for version related information.
8500 
8501 
8502           ELSIF l_transaction_type=G_UPDATE THEN
8503 
8504                 write_debug(G_PKG_Name,l_api_name,' UPDATE MODE : calling EGO_EXT_FWK_PUB.Update_Value_Set_Val API ');
8505                 write_debug(G_PKG_Name,l_api_name,' UPDATE MODE : calling EGO_EXT_FWK_PUB.Update_Value_Set_Val API value=>'||l_flex_value);
8506 
8507               IF l_process_status = G_PROCESS_RECORD  THEN
8508                 EGO_EXT_FWK_PUB.Update_Value_Set_Val
8509                   (
8510                     p_api_version                   => p_api_version
8511                     ,p_value_set_name                => l_value_set_name
8512                     ,p_internal_name                 => l_flex_value
8513                     ,p_display_name                  => l_flex_value_meaning
8514                     ,p_description                   => CASE l_description
8515                                                           WHEN G_NULL_CHAR THEN NULL
8516                                                           ELSE l_description
8517                                                         END --l_description
8518                     ,p_sequence                      => l_disp_sequence
8519                     ,p_start_date                    => CASE l_start_active_date
8520                                                           WHEN G_NULL_DATE THEN NULL
8521                                                           ELSE l_start_active_date
8522                                                         END
8523                     ,p_end_date                      => CASE l_end_active_date
8524                                                           WHEN G_NULL_DATE THEN NULL
8525                                                           ELSE l_end_active_date
8526                                                         END
8527                     ,p_enabled                       => l_enabled_flag
8528                     ,p_owner                         => l_owner
8529                     ,p_init_msg_list                 => l_init_msg_list
8530                     ,p_commit                        => FND_API.G_FALSE
8531                     ,x_return_status                 => l_return_status
8532                     ,x_msg_count                     => x_msg_count
8533                     ,x_msg_data                      => l_return_msg
8534                     ,x_is_versioned                  => l_is_versioned
8535                     ,x_valueSetId                    => l_value_set_id);
8536 
8537 
8538 
8539                 -- check the return status
8540                 IF (Nvl(l_return_status,G_RET_STS_SUCCESS) = G_RET_STS_SUCCESS )
8541                 THEN
8542 
8543                   l_process_status:= G_PROCESS_RECORD;
8544                   l_return_status :=  G_RET_STS_SUCCESS;
8545 
8546                 ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
8547 
8548                   l_return_status := G_RET_STS_ERROR;
8549                   l_process_status:= G_ERROR_RECORD;
8550                   /*p_value_set_val_tl_tbl(j).process_status :=G_ERROR_RECORD;
8551                   p_value_set_val_tl_tbl(j).value_set_id    :=l_value_set_id;
8552                   p_value_set_val_tl_tbl(j).value_set_name  :=l_value_set_name;
8553                   p_value_set_val_tl_tbl(j).flex_value_id   :=l_flex_value_id;
8554                   p_value_set_val_tl_tbl(j).flex_value      :=l_flex_value;
8555                   p_value_set_val_tl_tbl(j).transaction_type:=l_transaction_type;*/
8556 
8557 
8558                       G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
8559                   G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS_VAL;
8560                   G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
8561                   G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
8562                   G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
8563                   G_TOKEN_TBL(3).Token_Value  :=  'EGO_EXT_FWK_PUB';
8564                   G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
8565                   G_TOKEN_TBL(4).Token_Value  :=  'Update_Value_Set_Val';
8566 
8567 
8568                   ERROR_HANDLER.Add_Error_Message(
8569                     p_message_name                   => 'EGO_ENTITY_API_FAILED'
8570                     ,p_application_id                => G_App_Short_Name
8571                     ,p_token_tbl                     => G_TOKEN_TBL
8572                     ,p_message_type                  => G_RET_STS_ERROR
8573                     ,p_row_identifier                => l_transaction_id
8574                     ,p_entity_code                   => G_ENTITY_VS_VAL
8575                     ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB );
8576 
8577 
8578                 ELSE
8579                   --Dbms_Output.put_line(' unexpected error in  EGO_EXT_FWK_PUB.Update_Value_Set_Val '||l_return_msg||SQLERRM);
8580                   write_debug(G_PKG_Name,l_api_name,' : Unexpected exception ' );
8581                   x_return_status :=  G_RET_STS_UNEXP_ERROR;
8582                   x_return_msg    :=  l_return_msg;
8583                   RETURN;
8584 
8585                 END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
8586               END IF; -- END IF l_process_status = G_PROCESS_RECORD  THEN
8587 
8588 
8589               IF l_process_status = G_PROCESS_RECORD  THEN
8590 
8591                 IF (p_value_set_val_tl_tbl(j).flex_value=l_flex_value
8592                         OR p_value_set_val_tl_tbl(j).flex_value_id=l_flex_value_id ) THEN
8593 
8594                   IF l_version_seq_id IS NOT NULL THEN
8595 
8596                     -- Write a code to verify that no record exist with given flex_value and version_seq_id
8597 
8598                     IF p_value_set_val_tl_tbl(j).process_status = G_PROCESS_RECORD AND l_process_status =G_PROCESS_RECORD THEN
8599 
8600                       -- Check if value already exist
8601                       FOR i IN Cur_Value_Ver_Exist(l_value_set_id,l_flex_value_id,G_OUT_VERSION_SEQ_ID)
8602                       LOOP
8603                         l_val_ver_exist := i.exist;
8604                       END LOOP; -- END FOR i IN Cur_Value_Ver_Exist
8605 
8606                       -- Check if translatable value exist
8607                       FOR i IN Cur_Trans_Value_Ver_Exist(--l_value_set_id,
8608                                                           l_flex_value_id,G_OUT_VERSION_SEQ_ID,l_language)
8609                       LOOP
8610 
8611                           l_trans_val_ver_exist := i.exist;
8612 
8613                       END LOOP; -- END FOR i IN Cur_Value_Ver_Exist
8614 
8615 
8616                       IF l_val_ver_exist IS NULL THEN
8617 
8618                           write_debug(G_PKG_Name,l_api_name,' Value record not exist. Insert record ');
8619 
8620                           INSERT INTO EGO_FLEX_VALUE_VERSION_B
8621                                   (FLEX_VALUE_SET_ID,FLEX_VALUE_ID,VERSION_SEQ_ID,SEQUENCE
8622                                   ,CREATED_BY,CREATION_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE,LAST_UPDATE_LOGIN)
8623                           VALUES  (l_VALUE_SET_ID,l_FLEX_VALUE_ID,G_OUT_VERSION_SEQ_ID, l_disp_sequence,
8624                                   G_Party_Id,SYSDATE,G_Party_Id ,SYSDATE,G_Login_Id);
8625 
8626 
8627 
8628                       END IF; -- END IF l_val_ver_exist IS NULL THEN
8629 
8630 
8631 
8632                       IF l_trans_val_ver_exist IS NULL THEN
8633 
8634                           write_debug(G_PKG_Name,l_api_name,' Trans record not exist. Insert record '||l_language);
8635 
8636                           -- Write a code to verify that no record exist with given flex_value and version_seq_id
8637                           INSERT INTO EGO_FLEX_VALUE_VERSION_TL
8638                                   ( FLEX_VALUE_ID,VERSION_SEQ_ID,LAST_UPDATE_DATE,LAST_UPDATED_BY,
8639                                       CREATION_DATE,CREATED_BY,LAST_UPDATE_LOGIN,DESCRIPTION,FLEX_VALUE_MEANING,LANGUAGE,SOURCE_LANG)
8640                           VALUES  ( l_FLEX_VALUE_ID,G_OUT_VERSION_SEQ_ID,SYSDATE,G_Party_Id, SYSDATE,G_Party_Id,G_Login_Id,
8641                                   l_description, l_flex_value_meaning,l_language,l_source_lang) ;
8642 
8643                       END IF; -- END IF l_trans_val_ver_exist IS NULL THEN
8644 
8645 
8646                       -- Set return status to success at the end.
8647                       --- vijoshi commented bug 12759471
8648                       --l_process_status:= G_SUCCESS_RECORD;
8649 
8650                     END IF;-- END IF p_value_set_val_tl_tbl(j).process_status = G_PROCESS_RECORD THEN
8651 
8652 
8653                   ELSE
8654 
8655                     --- commented bug 12759471
8656                     NULL;
8657                     /*
8658                     IF l_return_status = G_RET_STS_SUCCESS THEN
8659                       l_process_status:= G_SUCCESS_RECORD;
8660                     END IF;
8661                     */
8662 
8663                   END IF; -- END IF version_seq_id IS NOT NULL THEN
8664                 END IF; -- END IF p_value_set_val_tl_tbl(j).flex_value=l_flex_value THEN
8665               END IF; -- END IF l_process_status = G_PROCESS_RECORD  THEN
8666           END IF; -- END IF l_transaction_type=G_CREATE THEN
8667 
8668 
8669 
8670 
8671 
8672           write_debug(G_PKG_Name,l_api_name,' COMPLETION OF PROCESSING p_value_set_val_tbl(i).flex_value = '||p_value_set_val_tbl(i).flex_value||' process_status = '||L_process_status);
8673           write_debug(G_PKG_Name,l_api_name,' l_value_set_id = '||l_value_set_id);
8674           IF p_value_set_val_tl_tbl(j).process_status = G_PROCESS_RECORD THEN
8675 
8676               -- Bug 9701510
8677               IF ( p_value_set_val_tl_tbl(j).flex_value= l_flex_value --p_value_set_val_tbl(i).flex_value
8678                     OR p_value_set_val_tl_tbl(j).flex_value_id= l_flex_value_id ) THEN --p_value_set_val_tbl(i).flex_value_id ) THEN
8679 
8680                   IF p_value_set_val_tl_tbl(j).transaction_type =l_transaction_type THEN
8681 
8682                       IF l_version_seq_id IS NULL THEN
8683 
8684                           write_debug(G_PKG_Name,l_api_name,' TL Table data for non version Value ='||p_value_set_val_tl_tbl(j).flex_value||'process status = '||l_process_status);
8685 
8686                           -- bug 12912008
8687                           --- End of processing for non versioned TL records, status is being set to success
8688                           --- above bug was happenning because , these records remained in 1 and were being
8689                           --- processed in the process isolate values , causing the current language record to be processed
8690                           --- again and fail
8691                           ---
8692                           --- Versioned VS TL records are being set below after this processing
8693                           ---
8694                           p_value_set_val_tl_tbl(j).process_status := G_SUCCESS_RECORD;
8695                           --p_value_set_val_tl_tbl(j).process_status := l_process_status;
8696                           p_value_set_val_tl_tbl(j).value_set_id    :=l_value_set_id;
8697                           p_value_set_val_tl_tbl(j).value_set_name  :=l_value_set_name;
8698                           p_value_set_val_tl_tbl(j).flex_value_id   :=l_flex_value_id;
8699                           p_value_set_val_tl_tbl(j).flex_value      :=l_date_val_old_int_name;
8700 
8701                           IF l_format_code IN (G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE) THEN
8702 
8703                               p_value_set_val_tl_tbl(j).flex_value         :=l_date_val_old_int_name;
8704 
8705 
8706                           END IF;
8707 
8708 
8709 
8710 
8711                       END IF; -- END IF l_version_seq_id IS NOT NULL THEN
8712 
8713                   END IF; -- END IF p_value_set_val_tl_tbl(j).transaction_type =l_transaction_type THEN
8714 
8715               END IF;-- End IF p_value_set_val_tl_tbl(j).flex_value=l_flex_value THEN
8716 
8717           END IF ;-- END IF p_value_set_val_tl_tbl(j).process_status = G_PROCESS_RECORD THEN
8718 
8719 
8720 
8721 
8722 
8723           -- Re- Initializing Values.
8724           l_language                :=  NULL;
8725           l_source_lang             :=  NULL;
8726           l_flex_value_meaning      :=  NULL;
8727           l_description             :=  NULL;
8728 
8729 
8730         END LOOP; -- END FOR j IN p_value_set_val_tl_tbl.first..p_value_set_val_tl_tbl.last
8731         END IF;
8732 
8733         --- bug 12759471 added
8734         --- set its value only when all the tl processing is completed above.
8735         ---
8736         write_debug(G_PKG_Name,l_api_name, ' Before setting l_process_status to success');
8737         IF l_process_status = G_PROCESS_RECORD THEN
8738           write_debug(G_PKG_Name,l_api_name, ' Set l_process_status to success');
8739           l_process_status := G_SUCCESS_RECORD;
8740         END IF;
8741 
8742 
8743 
8744         IF l_version_seq_id IS NOT NULL THEN
8745 
8746                 IF NOT l_current_lang_exist THEN
8747 
8748                     write_debug(G_PKG_Name,l_api_name,' ROLLBACK TO VALUE_VERSION_CREATE. ' );
8749                     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' ROLLBACK TO VALUE_VERSION_CREATE. ' );
8750                     ROLLBACK TO VALUE_VERSION_CREATE;
8751 
8752 
8753 
8754                     --Log error
8755                     l_process_status              := G_ERROR_RECORD;
8756                     l_return_status               := G_RET_STS_ERROR;
8757                     l_last_updated_by             := g_user_id;
8758                     l_last_update_date            := SYSDATE;
8759                     l_last_update_login           := g_login_id;
8760 
8761                     l_error_message_name          := 'EGO_BASE_LANG_REC_REQ';
8762 
8763 
8764                     ERROR_HANDLER.Add_Error_Message(
8765                       p_message_name                   => l_error_message_name
8766                       ,p_application_id                => G_App_Short_Name
8767                       ,p_token_tbl                     => l_token_table
8768                       ,p_message_type                  => G_RET_STS_ERROR
8769                       ,p_row_identifier                => l_transaction_id
8770                       ,p_entity_code                   => l_entity_code
8771                       ,p_table_name                    => l_table_name);
8772 
8773 
8774 
8775 
8776 
8777                      --Dbms_Output.put_line(' VS Name : '||l_value_set_name||' Id '||l_value_set_id||' flex = '||l_flex_value||' val Id =' ||l_flex_value_id);
8778 
8779 
8780                     FOR Tl_Rec IN p_value_set_val_tl_tbl.first..p_value_set_val_tl_tbl.last
8781                     LOOP
8782                           write_debug(G_PKG_Name,l_api_name, '  p_value_set_val_tl_tbl(Tl_Rec).flex_value,language =' ||p_value_set_val_tl_tbl(Tl_Rec).flex_value||','||p_value_set_val_tl_tbl(Tl_Rec).language);
8783                           write_debug(G_PKG_Name,l_api_name, ' Process status = '||p_value_set_val_tl_tbl(Tl_Rec).process_status );
8784 
8785                           IF p_value_set_val_tl_tbl(Tl_Rec).process_status = G_PROCESS_RECORD THEN
8786                                                                              -- Bug 9701510
8787                               IF ( p_value_set_val_tl_tbl(Tl_Rec).flex_value= l_flex_value
8788                                     OR p_value_set_val_tl_tbl(Tl_Rec).flex_value_id= l_flex_value_id ) THEN
8789 
8790 
8791                                   -- Check if this is a versioned value set, If so then please process values for a corresponding vesion.
8792                                   IF l_version_seq_id IS NOT NULL THEN
8793 
8794                                       IF p_value_set_val_tl_tbl(Tl_Rec).version_seq_id=l_version_seq_id THEN
8795 
8796                                           p_value_set_val_tl_tbl(Tl_Rec).process_status := G_ERROR_RECORD;
8797                                           p_value_set_val_tl_tbl(Tl_Rec).value_set_id    :=l_value_set_id;
8798                                           p_value_set_val_tl_tbl(Tl_Rec).value_set_name  :=l_value_set_name;
8799                                           p_value_set_val_tl_tbl(Tl_Rec).flex_value_id   :=l_flex_value_id;
8800                                           p_value_set_val_tl_tbl(Tl_Rec).flex_value      :=l_date_val_old_int_name;
8801                                           write_debug(G_PKG_Name,l_api_name, ' 222 TL Table data for version Value ='||p_value_set_val_tl_tbl(Tl_Rec).flex_value||'process status = '||p_value_set_val_tl_tbl(Tl_Rec).process_status);
8802 
8803                                           IF l_format_code IN (G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE) THEN
8804 
8805                                               p_value_set_val_tl_tbl(Tl_Rec).flex_value         :=l_date_val_old_int_name;
8806 
8807 
8808                                           END IF;
8809 
8810                                           l_return_status               := G_RET_STS_ERROR;
8811                                           l_error_message_name          := 'EGO_BASE_LANG_REC_REQ';
8812 
8813                                           ERROR_HANDLER.Add_Error_Message(
8814                                              p_message_name                   => l_error_message_name
8815                                             ,p_application_id                => G_App_Short_Name
8816                                             ,p_token_tbl                     => l_token_table
8817                                             ,p_message_type                  => G_RET_STS_ERROR
8818                                             ,p_row_identifier                => p_value_set_val_tl_tbl(Tl_Rec).transaction_id
8819                                             ,p_entity_code                   => G_ENTITY_VS_VER
8820                                             ,p_table_name                    => G_ENTITY_VAL_TL_HEADER_TAB);
8821 
8822 
8823 
8824                                       END IF;-- End IF p_value_set_val_tl_tbl(j).version_seq_id=l_version_seq_id THEN
8825                                   END IF; -- END IF l_version_seq_id IS NOT NULL THEN
8826                               END IF;-- End IF p_value_set_val_tl_tbl(j).flex_value=l_flex_value THEN
8827                           END IF ;-- END IF p_value_set_val_tl_tbl(j).process_status = G_PROCESS_RECORD THEN
8828 
8829                     END LOOP;
8830 
8831 
8832 
8833                 ELSE --  IF NOT l_current_lang_exist THEN
8834 
8835                     FOR Tl_Rec IN p_value_set_val_tl_tbl.first..p_value_set_val_tl_tbl.last
8836                     LOOP
8837 
8838 
8839                         write_debug(G_PKG_Name,l_api_name, ' IN TL Loop : COMPLETION OF PROCESSING p_value_set_val_tl_tbl(Tl_Rec).flex_value,lang,process_sts = '
8840                                                                                                                   ||p_value_set_val_tl_tbl(Tl_Rec).flex_value
8841                                                                                                                   ||','
8842                                                                                                                   ||p_value_set_val_tl_tbl(Tl_Rec).language
8843                                                                                                                   ||','
8844                                                                                                                   ||p_value_set_val_tl_tbl(Tl_Rec).process_status);
8845                         write_debug(G_PKG_Name,l_api_name, ' l_value_set_id = '|| l_value_set_id);
8846 
8847                         IF p_value_set_val_tl_tbl(Tl_Rec).process_status = G_PROCESS_RECORD THEN
8848                                                                             -- Bug 9701510
8849                             IF ( p_value_set_val_tl_tbl(Tl_Rec).flex_value= l_flex_value
8850                                   OR p_value_set_val_tl_tbl(Tl_Rec).flex_value_id= l_flex_value_id ) THEN
8851 
8852                                     -- Check if this is a versioned value set, If so then please process values for a corresponding vesion.
8853                                     IF l_version_seq_id IS NOT NULL THEN
8854 
8855                                         IF p_value_set_val_tl_tbl(Tl_Rec).version_seq_id=l_version_seq_id THEN
8856 
8857                                             p_value_set_val_tl_tbl(Tl_Rec).process_status := l_process_status;
8858                                             p_value_set_val_tl_tbl(Tl_Rec).value_set_id    :=l_value_set_id;
8859                                             p_value_set_val_tl_tbl(Tl_Rec).value_set_name  :=l_value_set_name;
8860                                             p_value_set_val_tl_tbl(Tl_Rec).flex_value_id   :=l_flex_value_id;
8861                                             p_value_set_val_tl_tbl(Tl_Rec).flex_value      :=l_flex_value;
8862 
8863 
8864                                             IF l_format_code IN (G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE) THEN
8865 
8866                                                 p_value_set_val_tl_tbl(Tl_Rec).flex_value         :=l_date_val_old_int_name;
8867 
8868                                             END IF;
8869 
8870 
8871                                         END IF;-- End IF p_value_set_val_tl_tbl(j).version_seq_id=l_version_seq_id THEN
8872 
8873                                     END IF; -- END IF l_version_seq_id IS NOT NULL THEN
8874                             END IF;-- End IF p_value_set_val_tl_tbl(j).flex_value=l_flex_value THEN
8875                         END IF ;-- END IF p_value_set_val_tl_tbl(j).process_status = G_PROCESS_RECORD THEN
8876                     END LOOP;
8877                 END IF; -- END IF NOT l_current_lang_exist THEN
8878         END IF; -- IF l_version_seq_id IS NOT NULL THEN
8879 
8880 
8881 
8882         -- Updating value back in pl/sql table.
8883         p_value_set_val_tbl(i).value_set_name                 :=    l_value_set_name;
8884         p_value_set_val_tbl(i).value_set_id             :=  l_value_set_id;
8885 
8886         p_value_set_val_tbl(i).flex_value               :=  l_flex_value;
8887 
8888         IF l_format_code IN (G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE) THEN
8889 
8890             p_value_set_val_tbl(i).flex_value   :=l_date_val_old_int_name;
8891 
8892         END IF;
8893 
8894 
8895 
8896 
8897 
8898         p_value_set_val_tbl(i).flex_value_id            :=  l_flex_value_id;
8899         p_value_set_val_tbl(i).disp_sequence            :=  l_disp_sequence;
8900 
8901         --p_value_set_val_tbl(i).version_seq_id               :=    l_version_seq_id;
8902 
8903         p_value_set_val_tbl(i).start_active_date            :=  l_start_active_date;
8904         p_value_set_val_tbl(i).end_active_date            :=    l_end_active_date;
8905         p_value_set_val_tbl(i).enabled_flag             :=  l_enabled_flag;
8906 
8907         -- transactions related columns
8908         p_value_set_val_tbl(i).transaction_type             :=  G_VAL_TRANS_TYPE;
8909         --p_value_set_val_tbl(i).transaction_id           :=    l_transaction_id;
8910 
8911         -- process related columns
8912         p_value_set_val_tbl(i).process_status                 :=    l_process_status;
8913         p_value_set_val_tbl(i).set_process_id             :=    l_set_process_id;
8914 
8915         -- who columns for concurrent program
8916         p_value_set_val_tbl(i).request_id                 :=    l_request_id;
8917         p_value_set_val_tbl(i).program_application_id   :=  l_program_application_id;
8918         p_value_set_val_tbl(i).program_id               :=  l_program_id;
8919         p_value_set_val_tbl(i).program_update_date      :=  l_program_update_date;
8920 
8921         -- who columns
8922         p_value_set_val_tbl(i).last_update_date           :=    l_last_update_date;
8923         p_value_set_val_tbl(i).last_updated_by            :=    l_last_updated_by;
8924         p_value_set_val_tbl(i).creation_date              :=    l_creation_date;
8925         p_value_set_val_tbl(i).created_by                 :=    l_created_by;
8926         p_value_set_val_tbl(i).last_update_login            :=  l_last_update_login;
8927 
8928 
8929 
8930 
8931         -- Re- Initializing Values.
8932         l_value_set_name          :=  NULL;
8933         l_value_set_id            :=  NULL;
8934         l_flex_value                :=  NULL;
8935         l_date_val_old_int_name   :=  NULL;
8936         l_flex_value_id           :=  NULL;
8937 
8938         l_disp_sequence           :=  NULL;
8939         l_enabled_flag                :=  NULL;
8940         l_version_seq_id          :=  NULL;
8944         l_transaction_type        :=  NULL;
8941         l_start_active_date       :=  NULL;
8942         l_end_active_date         :=  NULL;
8943 
8945         l_transaction_id          :=  NULL;
8946 
8947         l_request_id              :=  NULL;
8948         l_program_application_id  :=  NULL;
8949         l_program_id              :=  NULL;
8950         l_program_update_date     :=  NULL;
8951 
8952         l_process_status          :=  NULL;
8953         l_set_process_id          :=  NULL;
8954 
8955         l_last_update_date        :=  NULL;
8956         l_last_updated_by         :=  NULL;
8957         l_creation_date           :=  NULL;
8958         l_created_by              :=  NULL;
8959         l_last_update_login       :=  NULL;
8960 
8961         l_seq_exist               :=  NULL;
8962         G_VAL_TRANS_TYPE          :=  NULL;
8963         l_current_lang_exist      :=  FALSE;
8964 
8965     END LOOP; --END FOR i IN p_value_set_val_tbl.first..p_value_set_val_tbl.last
8966 
8967 
8968 
8969     -- Set return status
8970     IF Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS AND  x_return_status <>G_RET_STS_ERROR THEN
8971 
8972       x_return_status :=  G_RET_STS_SUCCESS;
8973       l_return_status    := G_RET_STS_SUCCESS;
8974 
8975     END IF;
8976 
8977 
8978     IF l_return_status =G_RET_STS_ERROR THEN
8979 
8980       x_return_status :=  G_RET_STS_ERROR;
8981 
8982     END IF;
8983 
8984 
8985 
8986     IF p_commit THEN
8987       write_debug(G_PKG_Name,l_api_name,' Issue a commit ' );
8988       COMMIT;
8989     END IF;
8990 
8991 
8992     write_debug(G_PKG_Name,l_api_name,' End of API ego_vs_bulkload_pvt.Process_Value_Set_Value ' );
8993     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API ego_vs_bulkload_pvt.Process_Value_Set_Value ' );
8994 
8995 
8996 EXCEPTION
8997   WHEN OTHERS THEN
8998     write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
8999     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
9000 
9001 
9002     x_return_status := G_RET_STS_UNEXP_ERROR;
9003     x_return_msg    := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
9004     RETURN;
9005 
9006 END Process_Value_Set_Value;
9007 
9008 
9009 -- Procedure to process value set
9010 PROCEDURE Process_Isolate_Value (
9011            p_api_version            IN              NUMBER,
9012            p_value_set_val_tbl      IN  OUT NOCOPY  Ego_Metadata_Pub.Value_Set_Value_Tbl,
9013            p_value_set_val_tl_tbl   IN  OUT NOCOPY  Ego_Metadata_Pub.Value_Set_Value_Tl_Tbl,
9014            p_set_process_id         IN              NUMBER,
9015            p_commit                 IN              BOOLEAN DEFAULT FALSE,
9016            x_return_status          OUT NOCOPY      VARCHAR2,
9017            x_msg_count              OUT NOCOPY      NUMBER,
9018            x_return_msg             OUT NOCOPY      VARCHAR2)
9019 
9020 IS
9021 
9022 
9023     l_api_name                VARCHAR2(30):='Process_Isolate_Value';
9024     l_api_version             NUMBER  := 1.0;
9025     l_owner                   NUMBER  := G_User_Id;
9026 --    l_owner_name            VARCHAR2(40):='ANONYMOUS';
9027 
9028     l_value_set_name          FND_FLEX_VALUE_SETS.FLEX_VALUE_SET_NAME%TYPE; -- VARCHAR2(60);
9029     l_value_set_id            FND_FLEX_VALUES.FLEX_VALUE_SET_ID%TYPE;
9030 
9031     l_flex_value              fnd_flex_values.flex_value%TYPE;
9032     l_flex_value_id           fnd_flex_values.flex_value_id%TYPE;
9033     l_version_seq_id          NUMBER;
9034     --l_sequence                 NUMBER;
9035     l_start_active_date       DATE;
9036     l_end_active_date         DATE;
9037     l_vers_start_date         DATE;
9038     l_vers_end_date           DATE;
9039     l_enabled_flag            VARCHAR2(10);
9040 
9041     l_transaction_type        VARCHAR2(10);
9042     l_process_status          NUMBER;
9043     l_set_process_id          NUMBER;
9044 
9045     l_request_id              NUMBER;
9046     l_program_update_date     DATE;
9047     l_program_application_id  NUMBER;
9048     l_program_id              NUMBER;
9049 
9050 
9051     l_last_update_date        DATE;
9052     l_last_updated_by         NUMBER(15);
9053     l_creation_date           DATE;
9054     l_created_by              NUMBER(15);
9055     l_last_update_login       NUMBER(15);
9056 
9057 
9058     l_val_version_seq_id      NUMBER;
9059     l_language                  VARCHAR2(10);
9060     l_description             VARCHAR2(500);
9061     l_source_lang                 VARCHAR2(10);
9062     l_flex_value_meaning      VARCHAR2(500);
9063     l_transaction_id            NUMBER;
9064     l_disp_sequence           NUMBER;
9065     l_init_msg_list           VARCHAR2(100);
9066     --l_commit
9067     l_value_exist             NUMBER;
9068     l_target_vers_id          NUMBER;
9069     l_is_versioned            VARCHAR2(20):=NULL;
9070     l_api_mode                NUMBER   :=  G_FLOW_TYPE;
9071     l_validation_code         VARCHAR2(10);
9072     l_format_code             VARCHAR2(10);
9073     l_token_table             ERROR_HANDLER.Token_Tbl_Type;
9074     l_application_id          NUMBER;
9075 
9076     l_return_status           VARCHAR2(1) := NULL;
9077 
9078     -- Local variable for Error handling
9079     l_error_message_name      VARCHAR2(240);
9080     l_entity_code             VARCHAR2(30) :=  G_ENTITY_VS_VAL;
9081     l_table_name              VARCHAR2(240):=  G_ENTITY_VAL_HEADER_TAB;
9082 
9083     l_val_ver_exist               NUMBER;
9084     l_trans_val_ver_exist     NUMBER;
9085     l_seq_exist               NUMBER  :=  NULL;
9086 
9087     l_return_msg                VARCHAR2(1000);
9088 
9089 
9090     l_vs_maximum_size         NUMBER  :=  NULL;
9091     l_val_int_name_size       NUMBER  :=  NULL;
9092     l_val_disp_name_size      NUMBER  :=  NULL;
9093 
9094 
9095 
9096 
9097  --
9098  -- Bug 12394675. Issue #6. Datetime/Date VS values
9099  -- are erroring out with max size error. The cursor
9100  -- below had a join missing. Removed the unwanted table
9101  -- and added condition directly to the main table.
9102  -- sreharih. Tue Apr 26 15:44:49 PDT 2011
9103  --
9104   CURSOR Cur_Validation (cp_value_set_id    IN    NUMBER )
9105   IS
9106     SELECT  validation_type, format_type,maximum_size
9107     FROM  fnd_flex_value_sets fvs
9108     WHERE fvs.flex_Value_set_id = cp_value_set_id; -- bug 12394675
9109 
9110 
9111   -- Cursor to get display sequence.
9112   CURSOR c_get_disp_sequence (cp_flex_value_id  IN  NUMBER)
9113   IS
9114   SELECT disp_sequence
9115   FROM ego_vs_values_disp_order
9116   WHERE value_set_value_id = cp_flex_value_id;
9117 
9118 
9119   -- Cursor to validate sequnce.
9120   CURSOR Cur_Seq_Validation ( cp_value_set_id  NUMBER,
9121                               cp_value_id      NUMBER,
9122                               cp_disp_sequence NUMBER)
9123   IS
9124   SELECT 1 AS Seq_exist
9125   FROM  Ego_VS_Values_Disp_Order
9126   WHERE disp_sequence = cp_disp_sequence
9127     AND value_set_id = cp_value_set_id
9128     AND ( value_set_value_id <> cp_value_id
9129           OR cp_value_id IS NULL);
9130 
9131 
9132 
9133 BEGIN
9134 
9135     write_debug(G_PKG_Name,l_api_name,' Start of API. ' );
9136     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API. ' );
9137 
9138 
9139     -- Get Application Id
9140     --G_Application_Id  := Get_Application_Id();
9141 
9142     ERROR_HANDLER.Set_Bo_Identifier(G_BO_IDENTIFIER_VS);
9143 
9144 
9145     --==============================
9146     -- Process values, only values passed
9147     --==============================
9148     IF p_value_set_val_tbl.Count>0 THEN
9149 
9150 
9151       FOR i IN p_value_set_val_tbl.first..p_value_set_val_tbl.last
9152       LOOP
9153 
9154         --Assigning value per record
9155         l_value_set_name        :=  p_value_set_val_tbl(i).value_set_name;
9156 
9157         l_value_set_id          :=  p_value_set_val_tbl(i).value_set_id;
9158         l_flex_value            :=  p_value_set_val_tbl(i).flex_value;
9159         l_flex_value_id         :=  p_value_set_val_tbl(i).flex_value_id;
9160         l_version_seq_id        :=  p_value_set_val_tbl(i).version_seq_id;
9161         l_disp_sequence         :=  p_value_set_val_tbl(i).disp_sequence;
9162         l_start_active_date     :=  p_value_set_val_tbl(i).start_active_date;
9163         l_end_active_date       :=  p_value_set_val_tbl(i).end_active_date;
9164         l_enabled_flag          :=  p_value_set_val_tbl(i).enabled_flag;
9165 
9166         l_transaction_type      :=  p_value_set_val_tbl(i).transaction_type;
9167         l_transaction_id        :=  p_value_set_val_tbl(i).transaction_id;
9168 
9169 
9170         l_process_status        :=  p_value_set_val_tbl(i).process_status;
9171         l_set_process_id        :=  p_value_set_val_tbl(i).set_process_id;
9172 
9173 
9174         l_request_id              :=  p_value_set_val_tbl(i).request_id;
9175         l_program_update_date     :=  p_value_set_val_tbl(i).program_update_date;
9176         l_program_application_id  :=  p_value_set_val_tbl(i).program_application_id;
9177         l_program_id              :=  p_value_set_val_tbl(i).program_id;
9178 
9179 
9180 
9181         l_last_update_date      :=  p_value_set_val_tbl(i).last_update_date;
9182         l_last_updated_by       :=  p_value_set_val_tbl(i).last_updated_by;
9183         l_creation_date         :=  p_value_set_val_tbl(i).creation_date;
9184         l_created_by            :=  p_value_set_val_tbl(i).created_by;
9185         l_last_update_login     :=  p_value_set_val_tbl(i).last_update_login;
9186 
9187 
9188         write_debug(G_PKG_Name,l_api_name,'  Start of Loop to get values : value  = '||l_flex_value||' and Value Id = '||l_flex_value_id);
9189 
9190 
9191         IF l_value_set_id IS NOT NULL THEN
9192 
9193           Convert_Id_To_Name (l_value_set_id ,G_Value_Set,NULL,l_value_set_name);
9194 
9195           IF l_value_set_id IS NULL THEN
9196 
9197             l_error_message_name          := 'EGO_VSET_INVALID_ID';
9198             -- Set process_status to 3
9199             l_process_status    := g_error_record;
9200             l_return_status     := G_RET_STS_ERROR;
9201             l_last_updated_by   := g_user_id;
9202             l_last_update_date  := SYSDATE;
9203             l_last_update_login := g_login_id;
9204 
9205 
9206 
9207             ERROR_HANDLER.Add_Error_Message(
9208               p_message_name                   => l_error_message_name
9209               ,p_application_id                => G_App_Short_Name
9210               ,p_token_tbl                     => l_token_table
9211               ,p_message_type                  => G_RET_STS_ERROR
9212               ,p_row_identifier                => l_transaction_id
9213               ,p_entity_code                   => l_entity_code
9214               ,p_table_name                    => l_table_name
9215             );
9216 
9217           END IF; -- END IF l_value_set_id IS NULL THEN
9218 
9219 
9220 
9221         END IF;-- END IF l_value_set_id IS NOT NULL THEN
9222 
9223 
9224 
9225         IF ( l_value_set_name IS NOT NULL AND l_value_set_id IS NULL ) THEN
9226 
9227           Convert_Name_To_Id (l_value_set_name,G_Value_Set,NULL,l_value_set_id);
9228         END IF; -- END IF ( l_value_set_name IS NOT NULL AND l_value_set_id IS NULL ) THEN
9229 
9230 
9231         -- Check if validation type for value set is not NONE type.
9232         FOR j IN Cur_Validation(l_value_set_id)
9233         LOOP
9234           l_validation_code :=  j.validation_type;
9235           l_format_code     :=  j.format_type;
9236           l_vs_maximum_size :=  j.maximum_size;
9237         END LOOP;
9238 
9239 
9240 
9241 
9242 
9243         IF l_flex_value_id IS NOT NULL THEN
9244 
9245           Convert_Id_To_Name (l_flex_value_id,G_Value,l_value_set_id,l_flex_value);
9246 
9247           IF l_flex_value_id IS NULL THEN
9248 
9249             l_error_message_name          := 'EGO_VSET_VAL_INVALID_ID';
9250             -- Set process_status to 3
9251             l_process_status    := g_error_record;
9252             l_return_status     := G_RET_STS_ERROR;
9253             l_last_updated_by   := g_user_id;
9254             l_last_update_date  := SYSDATE;
9255             l_last_update_login := g_login_id;
9256 
9257 
9258 
9259             ERROR_HANDLER.Add_Error_Message(
9260               p_message_name                   => l_error_message_name
9261               ,p_application_id                => G_App_Short_Name
9262               ,p_token_tbl                     => l_token_table
9263               ,p_message_type                  => G_RET_STS_ERROR
9264               ,p_row_identifier                => l_transaction_id
9265               ,p_entity_code                   => l_entity_code
9266               ,p_table_name                    => l_table_name
9267             );
9268 
9269           END IF; -- END IF l_value_set_id IS NULL THEN
9270 
9271 
9272 
9273         END IF;-- END IF l_flex_value_id IS NOT NULL THEN
9274 
9275 
9276 
9277         IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
9278 
9279 
9280           -- Bug 9701510
9281           -- For Date and DateTime VS, Convert value to DB Date format.
9282           IF l_format_code IN (G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE) THEN
9283 
9284 
9285 
9286               Validate_User_Preferred_Date (l_flex_value,
9287                                             l_format_code,
9288                                             l_transaction_id,
9289                                             l_return_status,
9290                                             l_return_msg);
9291 
9292 
9293 
9294               -- check the return status
9295               IF (l_return_status =G_RET_STS_UNEXP_ERROR )
9296               THEN
9297 
9298                 write_debug(G_PKG_Name,l_api_name,' Unexpected error occured in Validate_User_Preferred_Date API l_return_msg ='||l_return_msg);
9299 
9300                 x_return_status :=  G_RET_STS_UNEXP_ERROR;
9301                 x_return_msg    :=  l_return_msg;
9302                 RETURN;
9303 
9304               ELSIF (l_return_status =G_RET_STS_ERROR ) THEN
9305 
9306 
9307                 write_debug(G_PKG_Name,l_api_name,' Err_Msg-TID='  ||l_transaction_id||'-(VS,VS Id, Value)=('
9308                                                                       ||l_value_set_name||','||l_value_set_id||','||l_flex_value||')'||' Validation of value failed. ');
9309 
9310 
9311                 l_process_status := G_ERROR_RECORD;
9312 
9313 
9314               END IF; -- END IF (l_return_status =G_RET_STS_UNEXP_ERROR )
9315 
9316               Convert_Value_To_DbDate (l_flex_value);
9317 
9318           END IF;
9319           -- Bug 9701510
9320 
9321 
9322           Convert_Name_To_Id (l_flex_value,G_Value,l_value_set_id,l_flex_value_id);
9323 
9324         END IF; -- END IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
9325 
9326 
9327 
9328           -- Check if required value has been passed.
9329         IF (l_value_set_name IS NULL AND l_value_set_id IS NULL )  THEN
9330 
9331             l_process_status              := G_ERROR_RECORD;
9332             l_return_status               := G_RET_STS_ERROR;
9333             l_last_updated_by             := g_user_id;
9334             l_last_update_date            := SYSDATE;
9335             l_last_update_login           := g_login_id;
9336 
9337 
9338 
9339             l_error_message_name          := 'EGO_VALUE_SET_REQUIRED_FIELD';
9340             l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
9341             l_token_table(1).TOKEN_VALUE  := l_value_set_name;
9342 
9343             l_token_table(2).TOKEN_NAME   := 'VALUE_SET_ID';
9344             l_token_table(2).TOKEN_VALUE  := l_value_set_name;
9345 
9346 
9347             ERROR_HANDLER.Add_Error_Message(
9348               p_message_name                   => l_error_message_name
9349               ,p_application_id                => G_App_Short_Name
9350               ,p_token_tbl                     => l_token_table
9351               ,p_message_type                  => G_RET_STS_ERROR
9352               ,p_row_identifier                => l_transaction_id
9353               ,p_entity_code                   => G_ENTITY_VS_VAL
9354               ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB);
9355 
9356         END IF;-- END IF (l_value_set_name IS NULL AND l_value_set_id IS NULL )  THEN
9357 
9358 
9359         -- Check if required value has been passed.
9360         IF (l_flex_value IS NULL AND l_flex_value_id IS NULL )  THEN
9361 
9362             l_process_status              := G_ERROR_RECORD;
9363             l_return_status               := G_RET_STS_ERROR;
9364             l_last_updated_by             := g_user_id;
9365             l_last_update_date            := SYSDATE;
9366             l_last_update_login           := g_login_id;
9367 
9368 
9369             l_error_message_name          := 'EGO_VALUE_REQUIRED_FIELD';
9370             l_token_table(1).TOKEN_NAME   := 'FLEX_VALUE';
9371             l_token_table(1).TOKEN_VALUE  := l_flex_value;
9372 
9373             l_token_table(2).TOKEN_NAME   := 'FLEX_VALUE_ID';
9374             l_token_table(2).TOKEN_VALUE  := l_flex_value_id;
9375 
9376 
9377             ERROR_HANDLER.Add_Error_Message(
9378               p_message_name                  => l_error_message_name
9379               ,p_application_id                => G_App_Short_Name
9380               ,p_token_tbl                     => l_token_table
9381               ,p_message_type                  => G_RET_STS_ERROR
9382               ,p_row_identifier                => l_transaction_id
9383               ,p_entity_code                   => G_ENTITY_VS_VAL
9384               ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB);
9385 
9386             l_token_table.DELETE;
9387 
9388             RETURN;
9389 
9390         END IF;-- END IF (l_value_set_name IS NULL AND l_value_set_id IS NULL )  THEN
9391 
9392 
9393 
9394 
9395 
9396         --Check for transaction type and update it correctly
9397         IF l_transaction_type  =G_SYNC THEN
9398 
9399           IF l_flex_value_id IS NOT NULL THEN
9400 
9401             l_transaction_type  :=G_UPDATE;
9402 
9403           ELSE
9404 
9405             l_transaction_type  :=G_CREATE;
9406 
9407           END IF;
9408 
9409         END IF; -- END IF l_transaction_type  =G_SYNC THEN
9410 
9411 
9412 
9413 
9414        --IF l_flex_value_id IS NOT NULL THEN
9415           -- Code to verify if disp_sequence is not duplicate.
9416           FOR j IN Cur_Seq_Validation (l_value_set_id, l_flex_value_id,l_disp_sequence)
9417           LOOP
9418 
9419             l_seq_exist := j.Seq_exist;
9420 
9421           END LOOP;
9422 
9423 
9424           IF l_seq_exist IS NOT NULL THEN
9425 
9426 
9427             l_process_status              := G_ERROR_RECORD;
9428             l_return_status               := G_RET_STS_ERROR;
9429             l_last_updated_by             := g_user_id;
9430             l_last_update_date            := SYSDATE;
9431             l_last_update_login           := g_login_id;
9432 
9433             l_error_message_name          := 'EGO_EF_VAL_SEQ_ERR';
9434 
9435             ERROR_HANDLER.Add_Error_Message(
9436               p_message_name                  => l_error_message_name
9437               ,p_application_id                => G_App_Short_Name
9438               ,p_token_tbl                     => l_token_table
9439               ,p_message_type                  => G_RET_STS_ERROR
9440               ,p_row_identifier                => l_transaction_id
9441               ,p_entity_code                   => G_ENTITY_VS_VAL
9442               ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB );
9443 
9444 
9445           END IF; -- END IF l_validation_code IN (G_NONE_VALIDATION_CODE,G_TABLE_VALIDATION_CODE) THEN
9446 
9447         --END IF ; -- END IF l_flex_value_id IS NOT NULL THEN
9448 
9449 
9450 
9451         IF l_transaction_type  =G_CREATE AND l_flex_value_id IS NOT NULL AND l_version_seq_id IS NULL THEN
9452 
9453 
9454             -- Set process_status to 3
9455           l_process_status              := G_ERROR_RECORD;
9456           l_return_status               := G_RET_STS_ERROR;
9457           l_last_updated_by             := g_user_id;
9458           l_last_update_date            := SYSDATE;
9459           l_last_update_login           := g_login_id;
9460 
9461 
9462           l_error_message_name          := 'EGO_EF_VAL_INT_NAME_EXIST';
9463 
9464           ERROR_HANDLER.Add_Error_Message(
9465             p_message_name                   => l_error_message_name
9466             ,p_application_id                => G_App_Short_Name
9467             ,p_token_tbl                     => l_token_table
9468             ,p_message_type                  => G_RET_STS_ERROR
9469             ,p_row_identifier                => l_transaction_id
9470             ,p_entity_code                   => G_ENTITY_VS_VAL
9471             ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB);
9472 
9473 
9474         END IF ; -- END IF l_transaction_type  :=G_CREATE AND l_value_set_id IS NOT NULL THEN
9475 
9476 
9477         -- Bug 9701510
9478         /*-- Check if validation type for value set is not NONE type.
9479         FOR j IN Cur_Validation(l_value_set_id)
9480         LOOP
9481           l_validation_code :=  j.validation_type;
9482           l_format_code     :=  j.format_type;
9483           l_vs_maximum_size :=  j.maximum_size;
9484         END LOOP;*/
9485         -- Bug 9701510
9486 
9487         IF l_validation_code IN (G_NONE_VALIDATION_CODE,G_TABLE_VALIDATION_CODE) THEN
9488 
9489           l_process_status              := G_ERROR_RECORD;
9490           l_return_status               := G_RET_STS_ERROR;
9491           l_last_updated_by             := g_user_id;
9492           l_last_update_date            := SYSDATE;
9493           l_last_update_login           := g_login_id;
9494 
9495 
9496 
9497           l_error_message_name          := 'EGO_VALUE_VALIDATION_ERROR';
9498           l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
9499           l_token_table(1).TOKEN_VALUE  := l_value_set_name;
9500 
9501           ERROR_HANDLER.Add_Error_Message(
9502              p_message_name                  => l_error_message_name
9503             ,p_application_id                => G_App_Short_Name
9504             ,p_token_tbl                     => l_token_table
9505             ,p_message_type                  => G_RET_STS_ERROR
9506             ,p_row_identifier                => l_transaction_id
9507             ,p_entity_code                   => G_ENTITY_VS_VAL
9508             ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB );
9509 
9510         END IF; -- END IF l_validation_code IN (G_NONE_VALIDATION_CODE,G_TABLE_VALIDATION_CODE) THEN
9511 
9512 
9513 
9514 
9515 
9516         -- Bug 9702841
9517         -- Validate maximum size validation for VS
9518         IF  l_flex_value IS NOT NULL THEN
9519             IF l_format_code IN (G_NUMBER_DATA_TYPE,G_CHAR_DATA_TYPE) THEN
9520 
9521                     l_val_int_name_size   := Length(l_flex_value);
9522                     -- Log error
9523                     IF  l_val_int_name_size > l_vs_maximum_size THEN
9524 
9525                           l_error_message_name          := 'EGO_VS_MAXSIZE_VALUE_VAL';
9526 
9527                           -- Set process_status to 3
9528                           l_process_status    := g_error_record;
9529                           l_return_status     := G_RET_STS_ERROR;
9530                           l_last_updated_by   := g_user_id;
9531                           l_last_update_date  := SYSDATE;
9532                           l_last_update_login := g_login_id;
9533 
9534 
9535                           ERROR_HANDLER.Add_Error_Message(
9536                             p_message_name                   => l_error_message_name
9537                             ,p_application_id                => G_App_Short_Name
9538                             ,p_token_tbl                     => l_token_table
9539                             ,p_message_type                  => G_RET_STS_ERROR
9540                             ,p_row_identifier                => l_transaction_id
9541                             ,p_entity_code                   => l_entity_code
9542                             ,p_table_name                    => l_table_name
9543                           );
9544 
9545 
9546                     END IF;
9547 
9548             END IF;
9549 
9550         END IF;
9551 
9552 
9553 
9554 
9555         --bug 9702828
9556         -- Check if user passes end date lesser than sysdate
9557         IF l_end_active_date IS NOT NULL AND  l_end_active_date<> G_NULL_DATE THEN
9558 
9559             IF l_end_active_date < SYSDATE THEN
9560 
9561                 l_error_message_name          := 'EGO_ENDDATE_LT_CURRDATE';
9562 
9563                 -- Set process_status to 3
9564                 l_process_status    := g_error_record;
9565                 l_return_status     := G_RET_STS_ERROR;
9566                 l_last_updated_by   := g_user_id;
9567                 l_last_update_date  := SYSDATE;
9568                 l_last_update_login := g_login_id;
9569 
9570 
9571                 ERROR_HANDLER.Add_Error_Message(
9572                   p_message_name                   => l_error_message_name
9573                   ,p_application_id                => G_App_Short_Name
9574                   ,p_token_tbl                     => l_token_table
9575                   ,p_message_type                  => G_RET_STS_ERROR
9576                   ,p_row_identifier                => l_transaction_id
9577                   ,p_entity_code                   => l_entity_code
9578                   ,p_table_name                    => l_table_name);
9579 
9580             END IF;
9581 
9582         END IF;
9583 
9584 
9585 
9586 
9587 
9588 
9589         -- Error out record if transaction type is not UPDATE.
9590         -- Only update mode is supported for isolated records in interface tables.
9591         IF l_transaction_type <> G_UPDATE  THEN
9592 
9593             l_process_status              := G_ERROR_RECORD;
9594             l_return_status               := G_RET_STS_ERROR;
9595             l_last_updated_by             := g_user_id;
9596             l_last_update_date            := SYSDATE;
9600 
9597             l_last_update_login           := g_login_id;
9598 
9599 
9601             l_error_message_name          := 'EGO_VAL_TRANS_DISP_ERR';
9602 
9603             ERROR_HANDLER.Add_Error_Message(
9604               p_message_name                  => l_error_message_name
9605               ,p_application_id                => G_App_Short_Name
9606               ,p_token_tbl                     => l_token_table
9607               ,p_message_type                  => G_RET_STS_ERROR
9608               ,p_row_identifier                => l_transaction_id
9609               ,p_entity_code                   => G_ENTITY_VS_VAL
9610               ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB );
9611 
9612 
9613         END IF; -- END IF l_transaction_type <> G_UPDATE
9614 
9615 
9616 
9617 
9618         IF l_transaction_type =G_UPDATE THEN
9619 
9620           --Find value of desc and s
9621 
9622           Get_Key_Value_Columns
9623               ( p_value_set_id      => l_value_set_id,
9624                 p_value_id          => l_flex_value_id,
9625                 x_display_name      => l_flex_value_meaning,
9626                 x_disp_sequence     => l_disp_sequence,
9627                 x_start_date_active => l_start_active_date,
9628                 x_end_date_active   => l_end_active_date,
9629                 x_description       => l_description,
9630                 x_enabled_flag      => l_enabled_flag,
9631                 x_return_status     => l_return_status,
9632                 x_return_msg        => l_return_msg);
9633 
9634          write_debug(G_Pkg_name,l_api_name,'After get_key_value_columns 9925 ' || l_disp_sequence);
9635 
9636           IF l_flex_value_meaning IS NULL OR  l_disp_sequence IS NULL OR l_enabled_flag IS NULL THEN
9637 
9638               l_error_message_name          := 'EGO_VAL_KEY_REQ_ERR';
9639 
9640               ERROR_HANDLER.Add_Error_Message(
9641                 p_message_name                   => l_error_message_name
9642                 ,p_application_id                => G_App_Short_Name
9643                 ,p_token_tbl                     => l_token_table
9644                 ,p_message_type                  => G_RET_STS_ERROR
9645                 ,p_row_identifier                => l_transaction_id
9646                 ,p_entity_code                   => l_entity_code
9647                 ,p_table_name                    => l_table_name
9648               );
9649 
9650 
9651               -- Set process_status to 3
9652             l_process_status              := G_ERROR_RECORD;
9653             l_return_status               := G_RET_STS_ERROR;
9654             l_last_updated_by             := g_user_id;
9655             l_last_update_date            := SYSDATE;
9656             l_last_update_login           := g_login_id;
9657 
9658 
9659           END IF; -- END IF l_flex_value_meaning IS NULL OR  l_disp_sequence IS NULL THEN
9660 
9661 
9662 
9663 
9664           --bug 9702828
9665           -- Check if user passes end date lesser than sysdate
9666           IF l_end_active_date IS NOT NULL AND  l_end_active_date<> G_NULL_DATE THEN
9667 
9668 
9669               IF l_start_active_date IS NOT NULL AND  l_start_active_date<> G_NULL_DATE THEN
9670 
9671 
9672                   IF l_start_active_date >l_end_active_date THEN
9673 
9674                       l_error_message_name          := 'EGO_START_DATE_GT_END_DATE';
9675 
9676                       -- Set process_status to 3
9677                       l_process_status    := g_error_record;
9678                       l_return_status     := G_RET_STS_ERROR;
9679                       l_last_updated_by   := g_user_id;
9680                       l_last_update_date  := SYSDATE;
9681                       l_last_update_login := g_login_id;
9682 
9683 
9684                       ERROR_HANDLER.Add_Error_Message(
9685                         p_message_name                   => l_error_message_name
9686                         ,p_application_id                => G_App_Short_Name
9687                         ,p_token_tbl                     => l_token_table
9688                         ,p_message_type                  => G_RET_STS_ERROR
9689                         ,p_row_identifier                => l_transaction_id
9690                         ,p_entity_code                   => l_entity_code
9691                         ,p_table_name                    => l_table_name);
9692 
9693 
9694                   END IF;
9695 
9696               END IF;
9697 
9698           END IF;
9699 
9700 
9701 
9702 
9703           IF l_process_status = G_PROCESS_RECORD  THEN
9704 
9705 
9706             EGO_EXT_FWK_PUB.Update_Value_Set_Val
9707               (
9708                 p_api_version                   => p_api_version
9709                 ,p_value_set_name                => l_value_set_name
9710                 ,p_internal_name                 => l_flex_value
9711                 ,p_display_name                  => l_flex_value_meaning
9712                 ,p_description                   => CASE l_description
9713                                                       WHEN G_NULL_CHAR THEN NULL
9714                                                       ELSE l_description
9715                                                     END --l_description
9716                 ,p_sequence                      => l_disp_sequence
9717                 ,p_start_date                    => CASE l_start_active_date
9718                                                       WHEN G_NULL_DATE THEN NULL
9719                                                       ELSE l_start_active_date
9720                                                     END
9721                 ,p_end_date                      => CASE l_end_active_date
9722                                                       WHEN G_NULL_DATE THEN NULL
9723                                                       ELSE l_end_active_date
9724                                                     END
9725                 ,p_enabled                       => l_enabled_flag
9726                 ,p_owner                         => l_owner
9727                 ,p_init_msg_list                 => l_init_msg_list
9728                 ,p_commit                        => FND_API.G_FALSE
9729                 ,x_return_status                 => l_return_status
9730                 ,x_msg_count                     => x_msg_count
9731                 ,x_msg_data                      => x_return_msg
9732                 ,x_is_versioned                  => l_is_versioned
9733                 ,x_valueSetId                    => l_value_set_id);
9734 
9735 
9736 
9737             -- check the return status
9738             IF (Nvl(l_return_status,G_RET_STS_SUCCESS) = G_RET_STS_SUCCESS )
9739             THEN
9740 
9741               l_process_status:= G_SUCCESS_RECORD;
9742               l_return_status :=  G_RET_STS_SUCCESS;
9743 
9744             ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
9745 
9746               l_return_status := G_RET_STS_ERROR;
9747               l_process_status:= G_ERROR_RECORD;
9748 
9749 
9750                   G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
9751               G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS_VAL;
9752               G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
9753               G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
9754               G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
9755               G_TOKEN_TBL(3).Token_Value  :=  'EGO_EXT_FWK_PUB';
9756               G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
9757               G_TOKEN_TBL(4).Token_Value  :=  'Update_Value_Set_Val';
9758 
9759 
9760               ERROR_HANDLER.Add_Error_Message(
9761                 p_message_name                   => 'EGO_ENTITY_API_FAILED'
9762                 ,p_application_id                => G_App_Short_Name
9763                 ,p_token_tbl                     => G_TOKEN_TBL
9764                 ,p_message_type                  => G_RET_STS_ERROR
9765                 ,p_row_identifier                => l_transaction_id
9766                 ,p_entity_code                   => G_ENTITY_VS_VAL
9767                 ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB );
9768 
9769 
9770             ELSE
9771 
9772               x_return_status :=  G_RET_STS_UNEXP_ERROR;
9773               x_return_msg    :=  l_return_msg;
9774               RETURN;
9775 
9776             END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
9777 
9778 
9779           END IF; -- END IF l_process_status = G_PROCESS_RECORD  THEN
9780 
9781 
9782         END IF;-- END IF l_transaction_type =G_UPDATE THEN
9783 
9784 
9785 
9786         --Dbms_Output.put_line(' VS ID : '||l_value_set_id);
9787         -- Updating value back in pl/sql table.
9788         p_value_set_val_tbl(i).value_set_name                 :=    l_value_set_name;
9789         p_value_set_val_tbl(i).value_set_id             :=  l_value_set_id;
9790 
9791         p_value_set_val_tbl(i).flex_value               :=  l_flex_value;
9792         p_value_set_val_tbl(i).flex_value_id            :=  l_flex_value_id;
9793         p_value_set_val_tbl(i).disp_sequence            :=  l_disp_sequence;
9794 
9795         --p_value_set_val_tbl(i).version_seq_id               :=    l_version_seq_id;
9796 
9797         p_value_set_val_tbl(i).start_active_date            :=  l_start_active_date;
9798         p_value_set_val_tbl(i).end_active_date            :=    l_end_active_date;
9799         p_value_set_val_tbl(i).enabled_flag             :=  l_enabled_flag;
9800 
9801         -- transactions related columns
9802         p_value_set_val_tbl(i).transaction_type             :=  l_transaction_type;
9803         --p_value_set_val_tbl(i).transaction_id           :=    l_transaction_id;
9804 
9805         -- process related columns
9806         p_value_set_val_tbl(i).process_status                 :=    l_process_status;
9807         p_value_set_val_tbl(i).set_process_id             :=    l_set_process_id;
9808 
9809         -- who columns for concurrent program
9810         p_value_set_val_tbl(i).request_id                 :=    l_request_id;
9811         p_value_set_val_tbl(i).program_application_id   :=  l_program_application_id;
9812         p_value_set_val_tbl(i).program_id               :=  l_program_id;
9813         p_value_set_val_tbl(i).program_update_date      :=  l_program_update_date;
9814 
9815         -- who columns
9816         p_value_set_val_tbl(i).last_update_date           :=    l_last_update_date;
9817         p_value_set_val_tbl(i).last_updated_by            :=    l_last_updated_by;
9818         p_value_set_val_tbl(i).creation_date              :=    l_creation_date;
9819         p_value_set_val_tbl(i).created_by                 :=    l_created_by;
9820         p_value_set_val_tbl(i).last_update_login            :=  l_last_update_login;
9821 
9822 
9823 
9824 
9825         -- Re- Initializing Values.
9826         l_value_set_name          :=  NULL;
9827         l_value_set_id            :=  NULL;
9828         l_flex_value                :=  NULL;
9829         l_flex_value_id           :=  NULL;
9830 
9831         l_disp_sequence           :=  NULL;
9832         l_enabled_flag                :=  NULL;
9833         l_version_seq_id          :=  NULL;
9834         l_start_active_date       :=  NULL;
9835         l_end_active_date         :=  NULL;
9836 
9837         l_description                 :=  NULL;
9838         l_source_lang             :=  NULL;
9839         l_flex_value_meaning      :=  NULL;
9840 
9841         l_transaction_type        :=  NULL;
9842         l_transaction_id          :=  NULL;
9843 
9844         l_request_id              :=  NULL;
9845         l_program_application_id  :=  NULL;
9846         l_program_id              :=  NULL;
9847         l_program_update_date     :=  NULL;
9848 
9849         l_process_status          :=  NULL;
9850         l_set_process_id          :=  NULL;
9851 
9852         l_last_update_date        :=  NULL;
9853         l_last_updated_by         :=  NULL;
9854         l_creation_date           :=  NULL;
9855         l_created_by              :=  NULL;
9856         l_last_update_login       :=  NULL;
9857 
9858         l_seq_exist               :=  NULL;
9859 
9860 
9861 
9862 
9863       END LOOP; -- END FOR i IN p_value_set_val_tbl.first..p_value_set_val_tbl.last
9864 
9865 
9866     END IF; -- END IF p_value_set_val_tbl.Count>0 THEN
9867 
9868 
9869 
9870 
9871 
9872 
9873 
9874 
9875 
9876 
9877 
9878 
9879     --==============================
9880     -- Process translated values, If only translated values passed
9881     --==============================
9882 
9883     IF p_value_set_val_tl_tbl.Count>0 THEN
9884 
9885 
9886 
9887       FOR i IN p_value_set_val_tl_tbl.first..p_value_set_val_tl_tbl.last
9888       LOOP
9889 
9890         --Assigning value per record
9891         l_value_set_name        :=  p_value_set_val_tl_tbl(i).value_set_name;
9892         l_value_set_id          :=  p_value_set_val_tl_tbl(i).value_set_id;
9893         l_flex_value            :=  p_value_set_val_tl_tbl(i).flex_value;
9894         l_flex_value_id         :=  p_value_set_val_tl_tbl(i).flex_value_id;
9895         l_version_seq_id        :=  p_value_set_val_tl_tbl(i).version_seq_id;
9896 
9897         l_language              :=  p_value_set_val_tl_tbl(i)."LANGUAGE";
9898         l_description           :=  p_value_set_val_tl_tbl(i).description;
9899         l_source_lang           :=  p_value_set_val_tl_tbl(i).source_lang;
9900         l_flex_value_meaning    :=  p_value_set_val_tl_tbl(i).flex_value_meaning;
9901 
9902 
9903         l_transaction_type      :=  p_value_set_val_tl_tbl(i).transaction_type;
9904         l_transaction_id        :=  p_value_set_val_tl_tbl(i).transaction_id;
9905 
9906         l_process_status        :=  p_value_set_val_tl_tbl(i).process_status;
9907         l_set_process_id        :=  p_value_set_val_tl_tbl(i).set_process_id;
9908 
9909         l_request_id            :=  p_value_set_val_tl_tbl(i).request_id;
9910         l_program_update_date   :=  p_value_set_val_tl_tbl(i).program_update_date;
9911         l_program_application_id  :=  p_value_set_val_tl_tbl(i).program_application_id;
9912         l_program_id            :=  p_value_set_val_tl_tbl(i).program_id;
9913 
9914         l_last_update_date      :=  p_value_set_val_tl_tbl(i).last_update_date;
9915         l_last_updated_by       :=  p_value_set_val_tl_tbl(i).last_updated_by;
9916         l_creation_date         :=  p_value_set_val_tl_tbl(i).creation_date;
9917         l_created_by            :=  p_value_set_val_tl_tbl(i).created_by;
9918         l_last_update_login     :=  p_value_set_val_tl_tbl(i).last_update_login;
9919 
9920 
9921         IF l_value_set_id IS NOT NULL THEN
9922 
9923           Convert_Id_To_Name (l_value_set_id ,G_Value_Set,NULL,l_value_set_name);
9924 
9925           IF l_value_set_id IS NULL THEN
9926 
9927             l_error_message_name          := 'EGO_VSET_INVALID_ID';
9928             -- Set process_status to 3
9929             l_process_status    := g_error_record;
9930             l_return_status     := G_RET_STS_ERROR;
9931             l_last_updated_by   := g_user_id;
9932             l_last_update_date  := SYSDATE;
9933             l_last_update_login := g_login_id;
9934 
9935 
9936 
9937             ERROR_HANDLER.Add_Error_Message(
9938               p_message_name                   => l_error_message_name
9939               ,p_application_id                => G_App_Short_Name
9940               ,p_token_tbl                     => l_token_table
9941               ,p_message_type                  => G_RET_STS_ERROR
9942               ,p_row_identifier                => l_transaction_id
9943               ,p_entity_code                   => l_entity_code
9944               ,p_table_name                    => l_table_name
9945             );
9946 
9947           END IF; -- END IF l_value_set_id IS NULL THEN
9948 
9949 
9950 
9951 
9952         END IF;-- END IF l_value_set_id IS NOT NULL THEN
9953 
9954 
9955 
9956         IF ( l_value_set_name IS NOT NULL AND l_value_set_id IS NULL ) THEN
9957 
9958           Convert_Name_To_Id (l_value_set_name,G_Value_Set,NULL,l_value_set_id);
9959         END IF; -- END IF ( l_value_set_name IS NOT NULL AND l_value_set_id IS NULL ) THEN
9960 
9961 
9962 
9963         -- Bug 9701510
9964         -- Check if validation type for value set is not NONE type.
9965         FOR j IN Cur_Validation(l_value_set_id)
9966         LOOP
9967             l_validation_code :=  j.validation_type;
9968             l_format_code     :=  j.format_type;
9969             l_vs_maximum_size :=  j.maximum_size;
9970         END LOOP;
9971         -- Bug 9701510
9972 
9973 
9974         IF l_flex_value_id IS NOT NULL THEN
9975 
9976           Convert_Id_To_Name (l_flex_value_id,G_Value,l_value_set_id,l_flex_value);
9977 
9978           IF l_flex_value_id IS NULL THEN
9979 
9980             l_error_message_name          := 'EGO_VSET_VAL_INVALID_ID';
9981             -- Set process_status to 3
9982             l_process_status    := g_error_record;
9983             l_return_status     := G_RET_STS_ERROR;
9984             l_last_updated_by   := g_user_id;
9985             l_last_update_date  := SYSDATE;
9986             l_last_update_login := g_login_id;
9987 
9988 
9989 
9990             ERROR_HANDLER.Add_Error_Message(
9991               p_message_name                   => l_error_message_name
9992               ,p_application_id                => G_App_Short_Name
9993               ,p_token_tbl                     => l_token_table
9994               ,p_message_type                  => G_RET_STS_ERROR
9995               ,p_row_identifier                => l_transaction_id
9996               ,p_entity_code                   => l_entity_code
9997               ,p_table_name                    => l_table_name
9998             );
9999 
10000           END IF; -- END IF l_value_set_id IS NULL THEN
10001 
10002 
10003 
10004 
10005         END IF;-- END IF l_flex_value_id IS NOT NULL THEN
10006 
10007 
10008 
10009         IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
10010 
10011             -- Bug 9701510
10012             IF l_format_code IN (G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE) THEN
10013 
10014 
10015 
10016                 Validate_User_Preferred_Date (l_flex_value,
10017                                               l_format_code,
10018                                               l_transaction_id,
10019                                               l_return_status,
10020                                               l_return_msg);
10021 
10022 
10023 
10024                 -- check the return status
10025                 IF (l_return_status =G_RET_STS_UNEXP_ERROR )
10026                 THEN
10027 
10028                   write_debug(G_PKG_Name,l_api_name,' Unexpected error occured in Validate_User_Preferred_Date API l_return_msg ='||l_return_msg);
10029 
10030                   x_return_status :=  G_RET_STS_UNEXP_ERROR;
10031                   x_return_msg    :=  l_return_msg;
10032                   RETURN;
10033 
10034                 ELSIF (l_return_status =G_RET_STS_ERROR ) THEN
10035 
10036 
10037                   write_debug(G_PKG_Name,l_api_name,' Err_Msg-TID='  ||l_transaction_id||'-(VS,VS Id, Value)=('
10038                                                                         ||l_value_set_name||','||l_value_set_id||','||l_flex_value||')'||' Validation of value failed. ');
10039 
10040 
10041                   l_process_status := G_ERROR_RECORD;
10042 
10043 
10044                 END IF; -- END IF (l_return_status =G_RET_STS_UNEXP_ERROR )
10045 
10046 
10047 
10048                 Convert_Value_To_DbDate (l_flex_value);
10049 
10050             END IF;
10051             -- Bug 9701510
10052 
10053 
10054             Convert_Name_To_Id (l_flex_value,G_Value,l_value_set_id,l_flex_value_id);
10055 
10056         END IF; -- END IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
10057 
10058 
10059 
10060 
10061 
10062           -- Check if required value has been passed.
10063         IF (l_value_set_name IS NULL AND l_value_set_id IS NULL )  THEN
10064 
10065             l_process_status              := G_ERROR_RECORD;
10066             l_return_status               := G_RET_STS_ERROR;
10067             l_last_updated_by             := g_user_id;
10068             l_last_update_date            := SYSDATE;
10069             l_last_update_login           := g_login_id;
10070 
10071 
10072 
10073             l_error_message_name          := 'EGO_VALUE_SET_REQUIRED_FIELD';
10074             l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
10075             l_token_table(1).TOKEN_VALUE  := l_value_set_name;
10076 
10077             l_token_table(2).TOKEN_NAME   := 'VALUE_SET_ID';
10078             l_token_table(2).TOKEN_VALUE  := l_value_set_name;
10079 
10080 
10081             ERROR_HANDLER.Add_Error_Message(
10082               p_message_name                   => l_error_message_name
10083               ,p_application_id                => G_App_Short_Name
10084               ,p_token_tbl                     => l_token_table
10085               ,p_message_type                  => G_RET_STS_ERROR
10086               ,p_row_identifier                => l_transaction_id
10087               ,p_entity_code                   => G_ENTITY_VS_VAL
10088               ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB);
10089 
10090         END IF;-- END IF (l_value_set_name IS NULL AND l_value_set_id IS NULL )  THEN
10091 
10092 
10093         -- Check if required value has been passed.
10094         IF (l_flex_value IS NULL AND l_flex_value_id IS NULL )  THEN
10095 
10096             l_process_status              := G_ERROR_RECORD;
10097             l_return_status               := G_RET_STS_ERROR;
10098             l_last_updated_by             := g_user_id;
10099             l_last_update_date            := SYSDATE;
10100             l_last_update_login           := g_login_id;
10101 
10102 
10103             l_error_message_name          := 'EGO_VALUE_REQUIRED_FIELD';
10104             l_token_table(1).TOKEN_NAME   := 'FLEX_VALUE';
10105             l_token_table(1).TOKEN_VALUE  := l_flex_value;
10106 
10107             l_token_table(2).TOKEN_NAME   := 'FLEX_VALUE_ID';
10108             l_token_table(2).TOKEN_VALUE  := l_flex_value_id;
10109 
10110 
10111             ERROR_HANDLER.Add_Error_Message(
10112               p_message_name                  => l_error_message_name
10113               ,p_application_id                => G_App_Short_Name
10114               ,p_token_tbl                     => l_token_table
10115               ,p_message_type                  => G_RET_STS_ERROR
10116               ,p_row_identifier                => l_transaction_id
10117               ,p_entity_code                   => G_ENTITY_VS_VAL
10118               ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB);
10119 
10120             l_token_table.DELETE;
10121 
10122             RETURN;
10123 
10124         END IF;-- END IF (l_value_set_name IS NULL AND l_value_set_id IS NULL )  THEN
10125 
10126 
10127 
10128 
10129 
10130         --Check for transaction type and update it correctly
10131         IF l_transaction_type  =G_SYNC THEN
10132 
10133           IF l_flex_value_id IS NOT NULL THEN
10134 
10135             l_transaction_type  :=G_UPDATE;
10136 
10137           ELSE
10138 
10139             l_transaction_type  :=G_CREATE;
10140 
10141           END IF;
10142 
10143         END IF; -- END IF l_transaction_type  =G_SYNC THEN
10144 
10145 
10146 
10147 
10148         IF l_transaction_type  =G_CREATE AND l_flex_value_id IS NOT NULL AND l_version_seq_id IS NULL THEN
10149 
10150 
10151             -- Set process_status to 3
10152           l_process_status              := G_ERROR_RECORD;
10153           l_return_status               := G_RET_STS_ERROR;
10154           l_last_updated_by             := g_user_id;
10155           l_last_update_date            := SYSDATE;
10156           l_last_update_login           := g_login_id;
10157 
10158 
10159           l_error_message_name          := 'EGO_EF_VAL_INT_NAME_EXIST';
10160 
10161           ERROR_HANDLER.Add_Error_Message(
10162             p_message_name                   => l_error_message_name
10163             ,p_application_id                => G_App_Short_Name
10164             ,p_token_tbl                     => l_token_table
10165             ,p_message_type                  => G_RET_STS_ERROR
10166             ,p_row_identifier                => l_transaction_id
10167             ,p_entity_code                   => G_ENTITY_VS_VAL
10168             ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB);
10169 
10170 
10171         END IF ; -- END IF l_transaction_type  :=G_CREATE AND l_value_set_id IS NOT NULL THEN
10172 
10173 
10174         -- Bug 9701510
10175         /*-- Check if validation type for value set is not NONE type.
10176         FOR j IN Cur_Validation(l_value_set_id)
10177         LOOP
10178             l_validation_code :=  j.validation_type;
10179             l_format_code     :=  j.format_type;
10180             l_vs_maximum_size :=  j.maximum_size;
10181         END LOOP;*/
10182         -- Bug 9701510
10183 
10184 
10185         IF l_validation_code IN (G_NONE_VALIDATION_CODE,G_TABLE_VALIDATION_CODE) THEN
10186 
10187           l_process_status              := G_ERROR_RECORD;
10188           l_return_status               := G_RET_STS_ERROR;
10189           l_last_updated_by             := g_user_id;
10190           l_last_update_date            := SYSDATE;
10191           l_last_update_login           := g_login_id;
10192 
10193 
10194 
10195           l_error_message_name          := 'EGO_VALUE_VALIDATION_ERROR';
10196           l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
10197           l_token_table(1).TOKEN_VALUE  := l_value_set_name;
10198 
10199           ERROR_HANDLER.Add_Error_Message(
10200              p_message_name                  => l_error_message_name
10201             ,p_application_id                => G_App_Short_Name
10202             ,p_token_tbl                     => l_token_table
10203             ,p_message_type                  => G_RET_STS_ERROR
10204             ,p_row_identifier                => l_transaction_id
10205             ,p_entity_code                   => G_ENTITY_VS_VAL
10206             ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB );
10207 
10208         END IF; -- END IF l_validation_code IN (G_NONE_VALIDATION_CODE,G_TABLE_VALIDATION_CODE) THEN
10209 
10210 
10211 
10212         -- Error out record if transaction type is not UPDATE.
10213         -- Only update mode is supported for isolated records in interface tables.
10214         IF l_transaction_type <> G_UPDATE THEN
10215 
10216           l_process_status              := G_ERROR_RECORD;
10217           l_return_status               := G_RET_STS_ERROR;
10218           l_last_updated_by             := g_user_id;
10219           l_last_update_date            := SYSDATE;
10220           l_last_update_login           := g_login_id;
10221 
10222 
10223 
10224           l_error_message_name          := 'EGO_VAL_TRANS_DISP_ERR';
10225 
10226           ERROR_HANDLER.Add_Error_Message(
10227              p_message_name                  => l_error_message_name
10228             ,p_application_id                => G_App_Short_Name
10229             ,p_token_tbl                     => l_token_table
10230             ,p_message_type                  => G_RET_STS_ERROR
10231             ,p_row_identifier                => l_transaction_id
10232             ,p_entity_code                   => G_ENTITY_VS_VAL
10233             ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB );
10234 
10235 
10236         END IF; -- END IF l_transaction_type <> G_UPDATE
10237 
10238 
10239 
10240         -- Bug 9702841
10241         -- Validate maximum size validation for VS
10242         IF l_flex_value_meaning IS NOT NULL THEN
10243             IF l_format_code IN (G_NUMBER_DATA_TYPE,G_CHAR_DATA_TYPE) THEN
10244 
10245                     l_val_disp_name_size   := Length(l_flex_value_meaning);
10246                     -- Log error
10247                     IF  l_val_disp_name_size > l_vs_maximum_size THEN
10248 
10249                           l_error_message_name          := 'EGO_VS_MAXSIZE_VALUE_VAL';
10250 
10251                           -- Set process_status to 3
10252                           l_process_status    := g_error_record;
10253                           l_return_status     := G_RET_STS_ERROR;
10254                           l_last_updated_by   := g_user_id;
10255                           l_last_update_date  := SYSDATE;
10256                           l_last_update_login := g_login_id;
10257 
10258 
10259                           ERROR_HANDLER.Add_Error_Message(
10260                             p_message_name                   => l_error_message_name
10261                             ,p_application_id                => G_App_Short_Name
10262                             ,p_token_tbl                     => l_token_table
10263                             ,p_message_type                  => G_RET_STS_ERROR
10264                             ,p_row_identifier                => l_transaction_id
10265                             ,p_entity_code                   => l_entity_code
10266                             ,p_table_name                    => l_table_name
10267                           );
10268 
10269 
10270                     END IF;
10271 
10272             END IF;
10273 
10274         END IF;
10275 
10276 
10277 
10278 
10279 
10280 
10281         IF l_transaction_type =G_UPDATE THEN
10282 
10283           --Find value of desc and s
10284 
10285           Get_Key_Value_Columns
10286               ( p_value_set_id      => l_value_set_id,
10287                 p_value_id          => l_flex_value_id,
10288                 x_display_name      => l_flex_value_meaning,
10289                 x_disp_sequence     => l_disp_sequence,
10290                 x_start_date_active => l_start_active_date,
10291                 x_end_date_active   => l_end_active_date,
10292                 x_description       => l_description,
10293                 x_enabled_flag      => l_enabled_flag,
10294                 x_return_status     => l_return_status,
10295                 x_return_msg        => l_return_msg);
10296 
10297           write_debug(G_pkg_name, l_api_name, ' after get key columns 10588 ' || l_disp_sequence);
10298 
10299           IF l_flex_value_meaning IS NULL OR  l_disp_sequence IS NULL OR l_enabled_flag IS NULL THEN
10300 
10301               l_error_message_name          := 'EGO_VAL_KEY_REQ_ERR';
10302               --Dbms_Output.put_line( ' UP:   l_flex_value_meaning IS NULL OR  l_disp_sequence IS NULL THEN ');
10303 
10304               ERROR_HANDLER.Add_Error_Message(
10305                 p_message_name                   => l_error_message_name
10306                 ,p_application_id                => G_App_Short_Name
10307                 ,p_token_tbl                     => l_token_table
10308                 ,p_message_type                  => G_RET_STS_ERROR
10309                 ,p_row_identifier                => l_transaction_id
10310                 ,p_entity_code                   => l_entity_code
10311                 ,p_table_name                    => l_table_name
10312               );
10313 
10314 
10315               -- Set process_status to 3
10316             l_process_status              := G_ERROR_RECORD;
10317             l_return_status               := G_RET_STS_ERROR;
10318             l_last_updated_by             := g_user_id;
10319             l_last_update_date            := SYSDATE;
10320             l_last_update_login           := g_login_id;
10321 
10322 
10323           END IF; -- END IF l_flex_value_meaning IS NULL OR  l_disp_sequence IS NULL THEN
10324 
10325 
10326 
10327 
10328           IF l_process_status = G_PROCESS_RECORD  THEN
10329 
10330 
10331             EGO_EXT_FWK_PUB.Update_Value_Set_Val
10332               (
10333                 p_api_version                   => p_api_version
10334                 ,p_value_set_name                => l_value_set_name
10335                 ,p_internal_name                 => l_flex_value
10336                 ,p_display_name                  => l_flex_value_meaning
10337                 ,p_description                   => CASE l_description
10338                                                       WHEN G_NULL_CHAR THEN NULL
10339                                                       ELSE l_description
10340                                                     END --l_description
10341                 ,p_sequence                      => l_disp_sequence
10342                 ,p_start_date                    => CASE l_start_active_date
10343                                                       WHEN G_NULL_DATE THEN NULL
10344                                                       ELSE l_start_active_date
10345                                                     END
10346                 ,p_end_date                      => CASE l_end_active_date
10347                                                       WHEN G_NULL_DATE THEN NULL
10348                                                       ELSE l_end_active_date
10349                                                     END
10350                 ,p_enabled                       => l_enabled_flag
10351                 ,p_owner                         => l_owner
10352                 ,p_init_msg_list                 => l_init_msg_list
10353                 ,p_commit                        => FND_API.G_FALSE
10354                 ,x_return_status                 => l_return_status
10355                 ,x_msg_count                     => x_msg_count
10356                 ,x_msg_data                      => x_return_msg
10357                 ,x_is_versioned                  => l_is_versioned
10358                 ,x_valueSetId                    => l_value_set_id);
10359 
10360 
10361 
10362             -- check the return status
10363             IF (Nvl(l_return_status,G_RET_STS_SUCCESS) = G_RET_STS_SUCCESS )
10364             THEN
10365 
10366               l_process_status:= G_SUCCESS_RECORD;
10367               l_return_status :=  G_RET_STS_SUCCESS;
10368 
10369             ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
10370 
10371               l_return_status := G_RET_STS_ERROR;
10372               l_process_status:= G_ERROR_RECORD;
10373 
10374 
10375                   G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
10376               G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS_VAL;
10377               G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
10378               G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
10379               G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
10380               G_TOKEN_TBL(3).Token_Value  :=  'EGO_EXT_FWK_PUB';
10381               G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
10382               G_TOKEN_TBL(4).Token_Value  :=  'Update_Value_Set_Val';
10383 
10384 
10385               ERROR_HANDLER.Add_Error_Message(
10386                 p_message_name                   => 'EGO_ENTITY_API_FAILED'
10387                 ,p_application_id                => G_App_Short_Name
10388                 ,p_token_tbl                     => G_TOKEN_TBL
10389                 ,p_message_type                  => G_RET_STS_ERROR
10390                 ,p_row_identifier                => l_transaction_id
10391                 ,p_entity_code                   => G_ENTITY_VS_VAL
10392                 ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB );
10393 
10394 
10395             ELSE
10396 
10397               x_return_status :=  G_RET_STS_UNEXP_ERROR;
10398               x_return_msg    :=  l_return_msg;
10399               RETURN;
10400 
10401             END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
10402 
10403 
10404           END IF; -- END IF l_process_status = G_PROCESS_RECORD  THEN
10405 
10406 
10407         END IF;-- END IF l_transaction_type =G_UPDATE THEN
10408 
10409 
10410 
10411 
10412         -- Updating value back in pl/sql table.
10413         p_value_set_val_tl_tbl(i).value_set_name                  :=    l_value_set_name;
10414         p_value_set_val_tl_tbl(i).value_set_id              :=  l_value_set_id;
10415         p_value_set_val_tl_tbl(i).flex_value                  :=    l_flex_value;
10416         p_value_set_val_tl_tbl(i).flex_value_id             :=  l_flex_value_id;
10417         --p_value_set_val_tl_tbl(i).version_seq_id                :=    l_version_seq_id;
10418 
10419         p_value_set_val_tl_tbl(i)."LANGUAGE"                    :=  l_language;
10420         p_value_set_val_tl_tbl(i).description                 :=    l_description;
10421         p_value_set_val_tl_tbl(i).source_lang               :=  l_source_lang;
10422         p_value_set_val_tl_tbl(i).flex_value_meaning        :=  l_flex_value_meaning;
10423 
10424         -- transactions related columns
10425         p_value_set_val_tl_tbl(i).transaction_type              :=  l_transaction_type;
10426         --p_value_set_val_tl_tbl(i).transaction_id              :=  l_transaction_id;
10427 
10428         -- process related columns
10429         p_value_set_val_tl_tbl(i).process_status                  :=    l_process_status;
10430         p_value_set_val_tl_tbl(i).set_process_id              :=    l_set_process_id;
10431 
10432         -- who columns for concurrent program
10433         p_value_set_val_tl_tbl(i).request_id                  :=    l_request_id;
10434         p_value_set_val_tl_tbl(i).program_application_id      :=    l_program_application_id;
10435         p_value_set_val_tl_tbl(i).program_id                  :=    l_program_id;
10436         p_value_set_val_tl_tbl(i).program_update_date       :=  l_program_update_date;
10437 
10438         -- who columns
10439         p_value_set_val_tl_tbl(i).last_update_date            :=    l_last_update_date;
10440         p_value_set_val_tl_tbl(i).last_updated_by             :=    l_last_updated_by;
10441         p_value_set_val_tl_tbl(i).creation_date               :=    l_creation_date;
10442         p_value_set_val_tl_tbl(i).created_by                  :=    l_created_by;
10443         p_value_set_val_tl_tbl(i).last_update_login           :=    l_last_update_login;
10444 
10445 
10446 
10447 
10448         -- Re- Initializing Values.
10449         l_value_set_name          :=  NULL;
10450         l_value_set_id            :=  NULL;
10451         l_flex_value                :=  NULL;
10452         l_flex_value_id           :=  NULL;
10453 
10454         l_language                :=  NULL;
10455         l_description                 :=  NULL;
10456         l_version_seq_id          :=  NULL;
10457         l_source_lang             :=  NULL;
10458         l_flex_value_meaning      :=  NULL;
10459         l_start_active_date       :=  NULL;
10460         l_end_active_date         :=  NULL;
10461         l_enabled_flag            :=  NULL;
10462 
10463         l_transaction_type        :=  NULL;
10464         l_transaction_id          :=  NULL;
10465 
10466         l_request_id              :=  NULL;
10467         l_program_application_id  :=  NULL;
10468         l_program_id              :=  NULL;
10469         l_program_update_date     :=  NULL;
10470 
10471         l_process_status          :=  NULL;
10472         l_set_process_id          :=  NULL;
10473 
10474         l_last_update_date        :=  NULL;
10475         l_last_updated_by         :=  NULL;
10476         l_creation_date           :=  NULL;
10477         l_created_by              :=  NULL;
10478         l_last_update_login       :=  NULL;
10479 
10480         l_seq_exist               :=  NULL;
10481 
10482         --
10483         -- Bug 12394675. Issue#5 Display sequence was always
10484         -- getting updated with same number. Resetting
10485         -- disp sequence value so that next iteration
10486         -- picks correct value.
10487         -- sreharih. Wed Apr 27 12:05:31 PDT 2011
10488         --
10489         l_disp_sequence           :=  NULL; -- bug 12394675
10490 
10491 
10492       END LOOP; -- END FOR i IN p_value_set_val_tbl.first..p_value_set_val_tbl.last
10493 
10494 
10495 
10496     END IF; -- END IF p_value_set_val_tl_tbl.Count>0 THEN
10497 
10498 
10499 
10500 
10501 
10502 
10503     -- Set return status
10504     IF Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS AND  x_return_status <>G_RET_STS_ERROR THEN
10505 
10506       x_return_status     :=  G_RET_STS_SUCCESS;
10507       l_return_status     := G_RET_STS_SUCCESS;
10508 
10509     END IF;
10510 
10511 
10512     IF l_return_status =G_RET_STS_ERROR THEN
10513 
10514       x_return_status :=  G_RET_STS_ERROR;
10515 
10516     END IF;
10517 
10518 
10519 
10520     IF p_commit THEN
10521       write_debug(G_PKG_Name,l_api_name,' Issue a commit ' );
10522       COMMIT;
10523     END IF;
10524 
10525 
10526     write_debug(G_PKG_Name,l_api_name,' End of API  ' );
10527     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API  ' );
10528 
10529 
10530 EXCEPTION
10531   WHEN OTHERS THEN
10532 
10533     write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
10534     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
10535 
10536 
10537     x_return_status := G_RET_STS_UNEXP_ERROR;
10538     x_return_msg    := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
10539     RETURN;
10540 
10541 END Process_Isolate_Value;
10542 
10543 
10544 
10545 
10546 
10547 
10548 -- Procedure to process child value set
10549 PROCEDURE Process_Child_Value_Set (
10550            p_api_version      IN              NUMBER,
10551            p_value_set_tbl    IN  OUT NOCOPY  Ego_Metadata_Pub.Value_Set_Tbl,
10552            p_valueset_val_tab IN  OUT NOCOPY  Ego_Metadata_Pub.Value_Set_Value_Tbl,
10553            p_set_process_id   IN              NUMBER,
10554            p_commit           IN              BOOLEAN DEFAULT FALSE,
10555            x_return_status    OUT NOCOPY      VARCHAR2,
10556            x_msg_count        OUT NOCOPY      NUMBER,
10557            x_return_msg         OUT NOCOPY      VARCHAR2)
10558 
10559 IS
10560 
10561     l_api_name               VARCHAR2(30):='Process_Child_Value_Set';
10562     l_api_version            NUMBER := 1.0;
10563     l_owner                  NUMBER := G_User_Id;
10564 --    l_owner_name             VARCHAR2(40):='ANONYMOUS';
10565 
10566     l_value_set_name         FND_FLEX_VALUE_SETS.FLEX_VALUE_SET_NAME%TYPE; -- VARCHAR2(60);
10567     l_value_set_id           FND_FLEX_VALUE_SETS.FLEX_VALUE_SET_ID%TYPE;
10568     l_description            FND_FLEX_VALUE_SETS.description%TYPE;
10569 
10570     l_longlist_flag         VARCHAR2(1);
10571     l_format_code            VARCHAR2(1);
10572     l_validation_code        VARCHAR2(1);
10573 
10574     l_parent_value_set_name  FND_FLEX_VALUE_SETS.FLEX_VALUE_SET_NAME%TYPE; -- VARCHAR2(60);
10575     l_version_seq_id         NUMBER(10,0);
10576     l_start_active_date      DATE;
10577     l_end_active_date        DATE;
10578 
10579     l_maximum_size           FND_FLEX_VALUE_SETS.MAXIMUM_SIZE%TYPE; --NUMBER;
10580     l_maximum_value          FND_FLEX_VALUE_SETS.MAXIMUM_VALUE%TYPE;
10581     l_minimum_value          FND_FLEX_VALUE_SETS.MINIMUM_VALUE%TYPE;
10582 
10583     l_transaction_type       VARCHAR2(10);
10584     l_transaction_id           NUMBER;
10585 
10586     l_process_status         NUMBER;
10587     l_request_id             NUMBER;
10588     l_set_process_id         NUMBER;
10589     l_program_update_date    DATE;
10590     l_program_application_id NUMBER;
10591     l_program_id             NUMBER;
10592 
10593     l_last_update_date       DATE;
10594     l_last_updated_by        NUMBER(15);
10595     l_creation_date          DATE;
10596     l_created_by             NUMBER(15);
10597     l_last_update_login      NUMBER(15);
10598 
10599     l_versioned_vs           VARCHAR2(10):= 'False'; -- Parameter to check if vs is versioned.
10600 
10601     l_child_vs_value_ids     EGO_EXT_FWK_PUB.EGO_VALUE_SET_VALUE_IDS := NULL;
10602     --l_child_vs_value         VALUE_SET_VALUE_Name_Tbl := NULL;
10603     l_child_vs_id            NUMBER;
10604     l_parent_vs_id           NUMBER;
10605     l_valid_parent           NUMBER :=NULL;
10606     l_parent_valid_type      VARCHAR2(1) :=NULL ;
10607     idx                      NUMBER :=1;
10608     l_valid_seq              NUMBER;
10609 
10610     l_return_status          VARCHAR2(1) := NULL;
10611 
10612 
10613     /* Local variable to be used in error handling mechanism*/
10614     l_entity_code            VARCHAR2(40) :=  G_ENTITY_CHILD_VS;
10615     l_table_name             VARCHAR2(240):=  G_ENTITY_VS_HEADER_TAB;
10616 
10617     l_token_table            ERROR_HANDLER.Token_Tbl_Type;
10618     l_application_id         NUMBER :=  G_Application_Id;
10619     l_error_message_name     VARCHAR2(500);
10620     l_return_msg               VARCHAR2(1000);
10621     --l_error_row_identifier   NUMBER;
10622 
10623     --l_process_status         NUMBER:=NULL;
10624 
10625 
10626     CURSOR cur_value_id(cp_value_set_name VARCHAR2,
10627                         cp_flex_value VARCHAR2)
10628     IS
10629     SELECT flex_value_id
10630     FROM fnd_flex_value_sets vs, fnd_flex_values val
10631     WHERE vs.flex_value_set_id= val.flex_value_set_id
10632       AND vs.flex_value_set_name= cp_value_set_name
10633       AND flex_value=cp_flex_value;
10634 
10635     -- Cursor to get value_set_id for a passed in value set name
10636     CURSOR  cur_value_set_id(cp_value_set_name  VARCHAR2) IS
10637       SELECT flex_value_set_id
10638       FROM fnd_flex_value_sets
10639       WHERE flex_value_set_name = cp_value_set_name;
10640 
10641 
10642 
10643     --Cursor to verify if parent_value_set_name already exist, in case of Update API.
10644     CURSOR  cur_valid_parent( cp_value_set_id  NUMBER,
10645                               cp_parent_vs_id  NUMBER) IS
10646       SELECT 1 AS valid_parent
10647       FROM Ego_Value_Set_Ext
10648       WHERE value_set_id = cp_value_set_id
10649         AND parent_value_set_id = cp_parent_vs_id;
10650 
10651 
10652      -- Cursor to get parent vs validation code
10653     CURSOR  cur_parent_vs_validation (cp_value_set_id  NUMBER) IS
10654       SELECT validation_type
10655       FROM fnd_flex_value_sets
10656       WHERE flex_value_set_id = cp_value_set_id;
10657 
10658 
10659 
10660     -- Cursor to validate sequnce.
10661     CURSOR Cur_Valid_Sequence ( cp_value_set_id  NUMBER,
10662                                 cp_value_id      NUMBER)
10663     IS
10664     SELECT disp_sequence
10665     FROM  Ego_VS_Values_Disp_Order
10666     WHERE value_set_id = cp_value_set_id
10667       AND value_set_value_id = cp_value_id;
10668 
10669 
10670 
10671 
10672 BEGIN
10673 
10674 
10675     write_debug(G_PKG_Name,l_api_name,' Start of API.  ' );
10676     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Start of API.  ' );
10677 
10678 
10679 
10680     l_child_vs_value_ids   := EGO_EXT_FWK_PUB.EGO_VALUE_SET_VALUE_IDS();
10681     -- Get Application Id
10682     --G_Application_Id  := Get_Application_Id();
10683 
10684     ERROR_HANDLER.Set_Bo_Identifier(G_BO_IDENTIFIER_VS);
10685 
10686 
10687 
10688 
10689 
10690     FOR i IN p_value_set_tbl.first..p_value_set_tbl.last
10691     LOOP
10692 
10693         --SAVEPOINT CREATE_CHILD_VS;
10694 
10695 
10696         --Assigning value per record
10697         l_value_set_name        :=  p_value_set_tbl(i).value_set_name;
10698         l_value_set_id          :=  p_value_set_tbl(i).value_set_id;
10699         l_description           :=  p_value_set_tbl(i).description;
10700         l_format_code           :=  p_value_set_tbl(i).format_type;
10701         l_longlist_flag         :=  p_value_set_tbl(i).longlist_flag;
10702         l_validation_code       :=  p_value_set_tbl(i).validation_type;
10703         l_parent_value_set_name :=  p_value_set_tbl(i).parent_value_set_name;
10704         l_version_seq_id        :=  p_value_set_tbl(i).version_seq_id;
10705         l_start_active_date     :=  p_value_set_tbl(i).start_active_date;
10706         l_end_active_date       :=  p_value_set_tbl(i).end_active_date;
10707         l_maximum_size          :=  p_value_set_tbl(i).maximum_size;
10708         l_minimum_value         :=  p_value_set_tbl(i).minimum_value;
10709         l_maximum_value         :=  p_value_set_tbl(i).maximum_value;
10710 
10711         -- Transaction related columns
10712         l_transaction_type      :=  p_value_set_tbl(i).transaction_type;
10713         l_transaction_id        :=  p_value_set_tbl(i).transaction_id;
10714 
10715 
10716         l_process_status        :=  p_value_set_tbl(i).process_status;
10717         l_set_process_id        :=  p_value_set_tbl(i).set_process_id;
10718 
10719         -- Conc prog who columns
10720         l_request_id            :=  p_value_set_tbl(i).request_id;
10721         l_program_update_date     :=  p_value_set_tbl(i).program_update_date;
10722         l_program_application_id  :=  p_value_set_tbl(i).program_application_id;
10723         l_program_id              :=  p_value_set_tbl(i).program_id;
10724 
10725         -- Who columns
10726         l_last_update_date      :=  p_value_set_tbl(i).last_update_date;
10727         l_last_updated_by       :=  p_value_set_tbl(i).last_updated_by;
10728         l_creation_date         :=  p_value_set_tbl(i).creation_date;
10729         l_created_by            :=  p_value_set_tbl(i).created_by;
10730         l_last_update_login     :=  p_value_set_tbl(i).last_update_login;
10731 
10732 
10733         -- If value set name is passed then get value_set_id for update mode
10734         /*IF l_value_set_id IS NULL AND  l_value_set_name IS NOT NULL THEN
10735           FOR j IN cur_value_set_id(l_value_set_name)
10736           LOOP
10737             l_value_set_id:= j.flex_value_set_id;
10738           END LOOP;
10739         END IF;--END IF l_value_set_id IS NULL AND  l_value_set_name IS NOT NULL THEN
10740         */
10741 
10742 
10743 
10744 
10745 
10746         IF l_value_set_id IS NOT NULL THEN
10747 
10748             -- Get Value Set Name
10749             Convert_Id_To_Name (l_value_set_id ,G_Value_Set,NULL,l_value_set_name);
10750 
10751             --
10752             IF l_value_set_id IS NULL THEN
10753 
10754               l_error_message_name          := 'EGO_VSET_INVALID_ID';
10755 
10756               -- Set process_status to 3
10757               l_process_status    := g_error_record;
10758               l_return_status     := G_RET_STS_ERROR;
10759               l_last_updated_by   := g_user_id;
10760               l_last_update_date  := SYSDATE;
10761               l_last_update_login := g_login_id;
10762 
10763 
10764 
10765               ERROR_HANDLER.Add_Error_Message(
10766                 p_message_name                   => l_error_message_name
10767                 ,p_application_id                => G_App_Short_Name
10768                 ,p_token_tbl                     => l_token_table
10769                 ,p_message_type                  => G_RET_STS_ERROR
10770                 ,p_row_identifier                => l_transaction_id
10771                 ,p_entity_code                   => l_entity_code
10772                 ,p_table_name                    => l_table_name
10773               );
10774 
10775             END IF; -- END IF l_value_set_id IS NULL THEN
10776 
10777 
10778         END IF;-- END IF l_value_set_id IS NOT NULL THEN
10779 
10780 
10781 
10782         -- Get Id for a passed in name
10783         IF ( l_value_set_name IS NOT NULL AND l_value_set_id IS NULL ) THEN
10784           -- Get value Set Id
10785           Convert_Name_To_Id (l_value_set_name,G_Value_Set,NULL,l_value_set_id);
10786         END IF; -- END IF ( l_value_set_name IS NOT NULL AND l_value_set_id IS NULL ) THEN
10787 
10788 
10789 
10790 
10791         -- Get parent value set id
10792         IF l_parent_value_set_name IS NOT NULL THEN
10793 
10794           FOR j IN cur_value_set_id(l_parent_value_set_name)
10795           LOOP
10796             l_parent_vs_id:= j.flex_value_set_id;
10797           END LOOP;
10798 
10799 
10800           IF l_parent_vs_id IS NOT NULL THEN
10801 
10802 
10803             FOR j IN cur_parent_vs_validation(l_parent_vs_id)
10804             LOOP
10805               l_parent_valid_type := j.validation_type;
10806             END LOOP;
10807 
10808 
10809           END IF; --END IF l_parent_vs_id IS NOT NULL THEN
10810 
10811         END IF;--END IF l_parent_value_set_name IS NOT NULL THEN
10812 
10813 
10814         IF l_parent_vs_id IS NULL THEN
10815 
10816               l_process_status              := G_ERROR_RECORD;
10817               l_return_status               := G_RET_STS_ERROR;
10818               l_error_message_name          := 'EGO_CHILD_VS_INVALID_PARENT';
10819               -- Set process_status to 3
10820               l_process_status              := g_error_record;
10821               l_last_updated_by             := g_user_id;
10822               l_last_update_date            := SYSDATE;
10823               l_last_update_login           := g_login_id;
10824 
10825 
10826 
10827 
10828               ERROR_HANDLER.Add_Error_Message(
10829                 p_message_name                   => l_error_message_name
10830                 ,p_application_id                => G_App_Short_Name
10831                 ,p_token_tbl                     => l_token_table
10832                 ,p_message_type                  => G_RET_STS_ERROR
10833                 ,p_row_identifier                => l_transaction_id
10834                 ,p_entity_code                   => G_ENTITY_CHILD_VS
10835                 ,p_table_name                    => G_ENTITY_VS_HEADER_TAB
10836               );
10837 
10838 
10839 
10840 
10841         END IF; -- END IF l_parent_vs_id IS NULL THEN
10842 
10843 
10844         IF l_parent_valid_type NOT IN (G_TRANS_IND_VALIDATION_CODE,G_INDEPENDENT_VALIDATION_CODE) THEN
10845 
10846 
10847               l_process_status              := G_ERROR_RECORD;
10848               l_return_status               := G_RET_STS_ERROR;
10849               l_error_message_name          := 'EGO_VSET_PARENT_VALIDATION_ERR';
10850               -- Set process_status to 3
10851               l_process_status              := g_error_record;
10852               l_last_updated_by             := g_user_id;
10853               l_last_update_date            := SYSDATE;
10854               l_last_update_login           := g_login_id;
10855 
10856 
10857 
10858 
10859               ERROR_HANDLER.Add_Error_Message(
10860                 p_message_name                   => l_error_message_name
10861                 ,p_application_id                => G_App_Short_Name
10862                 ,p_token_tbl                     => l_token_table
10863                 ,p_message_type                  => G_RET_STS_ERROR
10864                 ,p_row_identifier                => l_transaction_id
10865                 ,p_entity_code                   => G_ENTITY_CHILD_VS
10866                 ,p_table_name                    => G_ENTITY_VS_HEADER_TAB
10867               );
10868 
10869 
10870 
10871         END IF; -- END IF l_parent_valid_type NOT IN (G_TRANS_IND_VALIDATION_CODE,G_INDEPENDENT_VALIDATION_CODE) THEN
10872 
10873 
10874 
10875 
10876 
10877 
10878 
10879 
10880 
10881 
10882 
10883         --Check for transaction type and update it correctly
10884         IF l_transaction_type  =G_SYNC THEN
10885 
10886           -- If value set name already exist then transactiono type is Create else it is Update
10887           IF l_value_set_id IS NULL
10888           THEN
10889             l_transaction_type  :=G_CREATE;
10890           ELSE
10891             l_transaction_type  :=G_UPDATE;
10892           END IF;
10893 
10894         END IF;
10895 
10896 
10897 
10898 
10899         write_debug(G_PKG_Name,l_api_name,' Verifying validation code :  '||l_validation_code||' Transaction type is = '||l_transaction_type||' value Set Name is = '||l_value_set_name );
10900 
10901         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' l_parent_vs_id = '||l_parent_vs_id) ;
10902 
10903         -- Do certain validation
10904         IF l_parent_vs_id IS NOT NULL AND l_transaction_type= G_UPDATE THEN
10905 
10906             FOR i IN cur_valid_parent (l_value_set_id, l_parent_vs_id)
10907             LOOP
10908 
10909               l_valid_parent  := i.valid_parent;
10910 
10911             END LOOP;
10912 
10913             IF l_valid_parent IS NULL THEN
10914 
10915               --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  Invalid validation code '||' l_transaction_id = '||l_transaction_id);
10916 
10917               l_process_status              := G_ERROR_RECORD;
10918               l_return_status               := G_RET_STS_ERROR;
10919               l_error_message_name          := 'EGO_CHILD_VS_INVALID_PARENT';
10920 
10921 
10922               ERROR_HANDLER.Add_Error_Message(
10923                 p_message_name                   => l_error_message_name
10924                 ,p_application_id                => G_App_Short_Name
10925                 ,p_token_tbl                     => l_token_table
10926                 ,p_message_type                  => G_RET_STS_ERROR
10927                 ,p_row_identifier                => l_transaction_id
10928                 ,p_entity_code                   => G_ENTITY_CHILD_VS
10929                 ,p_table_name                    => G_ENTITY_VS_HEADER_TAB
10930               );
10931 
10932               -- Set process_status to 3
10933               l_process_status    := g_error_record;
10934               l_last_updated_by   := g_user_id;
10935               l_last_update_date  := SYSDATE;
10936               l_last_update_login := g_login_id;
10937 
10938             END IF ; -- END IF l_valid_parent IS NULL THEN
10939 
10940         END IF;  -- END IF l_parent_vs_id IS NOT NULL AND l_transaction_type= G_UPDATE THEN
10941 
10942 
10943 
10944 
10945         -- If child VS is passed in update mode
10946         IF l_transaction_type = G_UPDATE THEN
10947 
10948             --Get value of require field if they are null
10949             Get_Key_VS_Columns   (p_value_set_id        => l_value_set_id,
10950                                   p_transaction_id      => l_transaction_id,
10951                                   x_maximum_size        => l_maximum_size,
10952                                   x_maximum_value       => l_maximum_value,
10953                                   x_minimum_value       => l_minimum_value,
10954                                   x_description         => l_description,
10955                                   x_longlist_flag       => l_longlist_flag,
10956                                   x_format_code         => l_format_code,
10957                                   x_validation_code     => l_validation_code,
10958                                   x_return_status       => l_return_status,
10959                                   x_return_msg          => l_return_msg
10960                                 );
10961 
10962 
10963 
10964             -- check the return status
10965             IF (Nvl(l_return_status,G_RET_STS_SUCCESS)  =G_RET_STS_SUCCESS ) THEN
10966 
10967                 l_process_status:= G_PROCESS_RECORD;
10968 
10969             ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
10970 
10971                 write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS,VS Id)=('
10972                                             ||l_value_set_name||','||l_value_set_id||')'||' Child Value Set : Get_Key_VS_Columns API failed. ');
10973 
10974 
10975                 x_return_status := l_return_status;
10976                 l_process_status:= G_ERROR_RECORD;
10977 
10978                 G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
10979                 G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_VS;
10980                 G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
10981                 G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
10982                 G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
10983                 G_TOKEN_TBL(3).Token_Value  :=  'EGO_VS_BULKLOAD_PVT';
10984                 G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
10985                 G_TOKEN_TBL(4).Token_Value  :=  'Get_Key_VS_Columns';
10986 
10987 
10988                 ERROR_HANDLER.Add_Error_Message(
10989                   p_message_name                   => 'EGO_ENTITY_API_FAILED'
10990                   ,p_application_id                => G_App_Short_Name
10991                   ,p_token_tbl                     => G_TOKEN_TBL
10992                   ,p_message_type                  => G_RET_STS_ERROR
10993                   ,p_row_identifier                => l_transaction_id
10994                   ,p_entity_code                   => G_ENTITY_CHILD_VS
10995                   ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
10996 
10997             ELSE
10998 
10999                 write_debug(G_PKG_Name,l_api_name,' : Unexpected exceptioon ' );
11000                 x_return_status :=  G_RET_STS_UNEXP_ERROR;
11001                 x_return_msg    :=  l_return_msg;
11002                 RETURN;
11003 
11004             END IF;  -- END IF (l_return_status =G_RET_STS_SUCCESS ) THEN
11005 
11006 
11007         END IF;
11008 
11009 
11010 
11011         Validate_Child_Value_Set (
11012                                   l_value_set_name,
11013                                   l_value_set_id,
11014                                   l_validation_code,
11015                                   l_longlist_flag,
11016                                   l_format_code,
11017                                   l_version_seq_id,
11018                                   l_transaction_id,
11019                                   l_return_status,
11020                                   l_return_msg);
11021 
11022 
11023 
11024 
11025 
11026        -- check the return status
11027         IF (l_return_status =G_RET_STS_UNEXP_ERROR )
11028         THEN
11029 
11030             x_return_status :=  G_RET_STS_UNEXP_ERROR;
11031             x_return_msg    :=  l_return_msg;
11032             RETURN;
11033 
11034         ELSIF (l_return_status =G_RET_STS_ERROR ) THEN
11035 
11036             write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID='  ||l_transaction_id||'-(VS,VS Id)=('
11037                                                                   ||l_value_set_name||','||l_value_set_id||')'||' Child Value Set validation failed. ');
11038             l_process_status := G_ERROR_RECORD;
11039 
11040         END IF; -- END IF (l_return_status =G_RET_STS_UNEXP_ERROR )
11041 
11042 
11043 
11044         -- Process successful value set only.
11045         --IF l_process_status= G_PROCESS_RECORD THEN
11046 
11047           --Check for transaction type.
11048           IF l_transaction_type=G_CREATE THEN
11049 
11050             IF p_valueset_val_tab.Count>0 THEN
11051 
11052                 write_debug(G_PKG_Name,l_api_name,' IN Create Mode Count of record is : '||p_valueset_val_tab.Count);
11053                 --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  IN Create Mode Count of record is : '||p_valueset_val_tab.Count );
11054 
11055 
11056                 -- Create a Varray containing values corresponding to a child value set
11057 
11058                 FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11059                 LOOP
11060 
11061                   IF p_valueset_val_tab(j).process_status = G_PROCESS_RECORD THEN
11062 
11063 
11064                     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Value = '||p_valueset_val_tab(j).flex_value||' Id '||p_valueset_val_tab(j).flex_value_id);
11065                     --IF p_valueset_val_tab(j).value_set_name= l_value_set_name THEN
11066 
11067                     -- Get Value,If Id is given
11068                     IF   ( p_valueset_val_tab(j).flex_value_id IS NOT NULL
11069                            AND ( p_valueset_val_tab(j).value_set_name= l_value_set_name
11070                            OR p_valueset_val_tab(j).value_set_id = l_value_set_id) ) THEN
11071 
11072 
11073                         IF l_process_status= G_ERROR_RECORD THEN
11074 
11075                             p_valueset_val_tab(j).process_status    := G_ERROR_RECORD;
11076                             p_valueset_val_tab(j).transaction_type  := l_transaction_type;
11077                             l_error_message_name          := 'EGO_CHILD_VS_CREATION_FAILED';
11078 
11079                             ERROR_HANDLER.Add_Error_Message(
11080                               p_message_name                   => l_error_message_name
11081                               ,p_application_id                => G_App_Short_Name
11082                               ,p_token_tbl                     => l_token_table
11083                               ,p_message_type                  => G_RET_STS_ERROR
11084                               ,p_row_identifier                => p_valueset_val_tab(j).transaction_id
11085                               ,p_entity_code                   => G_ENTITY_CHILD_VS
11086                               ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB
11087                             );
11088 
11089                         END IF; -- END IF l_process_status= G_ERROR_RECORD THEN
11090 
11091                         -- Get value name
11092                         Convert_Id_To_Name (p_valueset_val_tab(j).flex_value_id ,G_Value,l_parent_vs_id,p_valueset_val_tab(j).flex_value);
11093 
11094 
11095                         IF p_valueset_val_tab(j).flex_value_id IS NULL THEN
11096 
11097                           l_error_message_name          := 'EGO_VSET_VAL_INVALID_ID';
11098                           -- Set process_status to 3
11099                           l_process_status    := g_error_record;
11100                           p_valueset_val_tab(j).process_status := G_ERROR_RECORD;
11101                           l_return_status     := G_RET_STS_ERROR;
11102                           l_last_updated_by   := g_user_id;
11103                           l_last_update_date  := SYSDATE;
11104                           l_last_update_login := g_login_id;
11105 
11106 
11107 
11108                           ERROR_HANDLER.Add_Error_Message(
11109                             p_message_name                   => l_error_message_name
11110                             ,p_application_id                => G_App_Short_Name
11111                             ,p_token_tbl                     => l_token_table
11112                             ,p_message_type                  => G_RET_STS_ERROR
11113                             ,p_row_identifier                => l_transaction_id
11114                             ,p_entity_code                   => l_entity_code
11115                             ,p_table_name                    => l_table_name
11116                           );
11117 
11118                         END IF; -- END IF l_value_set_id IS NULL THEN
11119 
11120 
11121 
11122 
11123                       IF l_parent_vs_id IS NOT NULL AND p_valueset_val_tab(j).flex_value_id IS NULL THEN
11124 
11125                           FOR Cur_Seq IN Cur_Valid_Sequence (l_parent_vs_id, p_valueset_val_tab(j).flex_value_id)
11126                           LOOP
11127                               l_valid_seq := Cur_Seq.disp_sequence;
11128 
11129                           END LOOP;
11130 
11131                           IF l_valid_seq <>  p_valueset_val_tab(j).disp_sequence THEN
11132 
11133                               --Dbms_Output.put_line(' Invalid sequence error ');
11134                               l_process_status              := G_ERROR_RECORD;
11135                               l_return_status               := G_RET_STS_ERROR;
11136                               l_last_updated_by             := g_user_id;
11137                               l_last_update_date            := SYSDATE;
11138                               l_last_update_login           := g_login_id;
11139 
11140                               l_error_message_name          := 'EGO_VS_VAL_INVALID_SEQ';
11141 
11142                               ERROR_HANDLER.Add_Error_Message(
11143                                 p_message_name                  => l_error_message_name
11144                                 ,p_application_id                => G_App_Short_Name
11145                                 ,p_token_tbl                     => l_token_table
11146                                 ,p_message_type                  => G_RET_STS_ERROR
11147                                 ,p_row_identifier                => l_transaction_id
11148                                 ,p_entity_code                   => l_entity_code
11149                                 ,p_table_name                    => l_table_name );
11150 
11151 
11152 
11153                           END IF;
11154 
11155                       END IF;
11156 
11157 
11158 
11159 
11160 
11161 
11162 
11163                     END IF;-- END IF l_flex_value_id IS NOT NULL THEN
11164 
11165 
11166                     -- get Value_id from a given value.
11167                     IF (p_valueset_val_tab(j).flex_value_id IS NULL
11168                           AND p_valueset_val_tab(j).flex_value IS NOT NULL
11169                           AND ( p_valueset_val_tab(j).value_set_name= l_value_set_name
11170                                 OR p_valueset_val_tab(j).value_set_id = l_value_set_id) ) THEN
11171 
11172 
11173 
11174                         IF l_process_status= G_ERROR_RECORD THEN
11175 
11176                             p_valueset_val_tab(j).process_status    := G_ERROR_RECORD;
11177                             p_valueset_val_tab(j).transaction_type  := l_transaction_type;
11178                             l_error_message_name                    := 'EGO_CHILD_VS_CREATION_FAILED';
11179 
11180                             ERROR_HANDLER.Add_Error_Message(
11181                               p_message_name                   => l_error_message_name
11182                               ,p_application_id                => G_App_Short_Name
11183                               ,p_token_tbl                     => l_token_table
11184                               ,p_message_type                  => G_RET_STS_ERROR
11185                               ,p_row_identifier                => p_valueset_val_tab(j).transaction_id
11186                               ,p_entity_code                   => G_ENTITY_CHILD_VS
11187                               ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB
11188                             );
11189 
11190 
11191                         END IF; -- END IF l_process_status= G_ERROR_RECORD THEN
11192 
11193 
11194 
11195 
11196                         -- Bug 9701510
11197                         -- For Date and DateTime VS, Convert value to DB Date format.
11198                         IF l_format_code IN (G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE) THEN
11199 
11200 
11201 
11202                             Validate_User_Preferred_Date (p_valueset_val_tab(j).flex_value,
11203                                                           l_format_code,
11204                                                           l_transaction_id,
11205                                                           l_return_status,
11206                                                           l_return_msg);
11207 
11208 
11209                             --Dbms_Output.put_line(' Call to Validate_User_Preferred_Date is done. Return status is : '||l_return_status);
11210                             -- check the return status
11211                             IF (l_return_status =G_RET_STS_UNEXP_ERROR )
11212                             THEN
11213 
11214                               write_debug(G_PKG_Name,l_api_name,' Unexpected error occured in Validate_User_Preferred_Date API l_return_msg ='||l_return_msg);
11215 
11216                               x_return_status :=  G_RET_STS_UNEXP_ERROR;
11217                               x_return_msg    :=  l_return_msg;
11218                               RETURN;
11219 
11220                             ELSIF (l_return_status =G_RET_STS_ERROR ) THEN
11221 
11222 
11223                               write_debug(G_PKG_Name,l_api_name,' Err_Msg-TID='  ||l_transaction_id||'-(VS,VS Id, Value)=('
11224                                                                                     ||l_value_set_name||','||l_value_set_id||','||p_valueset_val_tab(j).flex_value||')'||' Validation of value failed. ');
11225 
11226 
11227                               p_valueset_val_tab(j).process_status    := G_ERROR_RECORD;
11228                               p_valueset_val_tab(j).transaction_type  := l_transaction_type;
11229 
11230 
11231                             END IF; -- END IF (l_return_status =G_RET_STS_UNEXP_ERROR )
11232 
11233 
11234 
11235                             Convert_Value_To_DbDate (p_valueset_val_tab(j).flex_value);
11236                             --Dbms_Output.put_line(' After changing val to DB Val : '||p_valueset_val_tab(j).flex_value);
11237 
11238                         END IF;
11239                         -- Bug 9701510
11240 
11241 
11242                         -- Convert name to id
11243                         Convert_Name_To_Id (p_valueset_val_tab(j).flex_value,G_Value,l_parent_vs_id,p_valueset_val_tab(j).flex_value_id);
11244 
11245 
11246                     END IF; -- END IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
11247 
11248 
11249                     IF l_process_status= G_PROCESS_RECORD THEN
11250 
11251                         IF (p_valueset_val_tab(j).flex_value_id IS NOT NULL ) THEN
11252 
11253                           --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Before building array '||p_valueset_val_tab(j).flex_value_id);
11254 
11255                           l_child_vs_value_ids.extend;
11256 
11257                           l_child_vs_value_ids(idx) := p_valueset_val_tab(j).flex_value_id;
11258 
11259                           idx :=  idx +1;
11260 
11261                           -- Set Status to success if it has been processed.
11262                           p_valueset_val_tab(j).process_status    := G_SUCCESS_RECORD;
11263                           p_valueset_val_tab(j).transaction_type  := l_transaction_type;
11264 
11265                           --Dbms_Output.put_line(' Building Values Array '||p_valueset_val_tab(j).flex_value_id);
11266 
11267                         END IF; -- END IF (p_valueset_val_tab(j).flex_value_id IS NOT NULL ) THEN
11268 
11269                     END IF; --IF l_process_status= G_PROCESS_RECORD THEN
11270 
11271 
11272 
11273                   END IF; -- END IF p_valueset_val_tab(j).process_status = G_PROCESS_RECORD THEN
11274 
11275 
11276 
11277                 END LOOP; -- END FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11278 
11279 
11280 
11281 
11282 
11283                 IF l_process_status = G_PROCESS_RECORD  THEN
11284 
11285                   -- Check if values exist correspond to a value set.
11286                   IF l_child_vs_value_ids.Count = 0 THEN
11287                     -- Log error
11288                     --Dbms_Output.put_line(' IN ERROR MODE ');
11289 
11290                     l_return_status               := G_RET_STS_ERROR;
11291                     l_process_status              := G_ERROR_RECORD;
11292                     l_error_message_name          := 'EGO_CHILD_VAL_REQUIRED';
11293                     l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
11294                     l_token_table(1).TOKEN_VALUE  := l_value_set_name;
11295 
11296 
11297                     ERROR_HANDLER.Add_Error_Message(
11298                       p_message_name                   => l_error_message_name
11299                       ,p_application_id                => G_App_Short_Name
11300                       ,p_token_tbl                     => l_token_table
11301                       ,p_message_type                  => G_RET_STS_ERROR
11302                       ,p_row_identifier                => l_transaction_id
11303                       ,p_entity_code                   => G_ENTITY_CHILD_VS
11304                       ,p_table_name                    => G_ENTITY_VS_HEADER_TAB
11305                     );
11306 
11307                   END IF; -- END IF l_child_vs_value_ids.Count = 0 THEN
11308 
11309                 END IF; --IF l_process_status = G_PROCESS_RECORD  THEN
11310 
11311 
11312 
11313 
11314 
11315 
11316 
11317                 -- Check for ValueSetType/Validation type is done as bulk check..
11318                 -- Create a value set to keep sync with existing framework
11319                 IF l_process_status = G_PROCESS_RECORD  THEN
11320 
11321                     --Dbms_Output.put_line(' Calling EGO_EXT_FWK_PUB.Create_Child_Value_Set API. Count of child values : '||l_child_vs_value_ids.Count);
11322 
11323                     EGO_EXT_FWK_PUB.Create_Child_Value_Set
11324                       (
11325                         p_api_version                   => l_api_version
11326                         ,p_value_set_name                => l_value_set_name
11327                         ,p_description                   => l_description
11328                         ,p_parent_vs_id                  => l_parent_vs_id
11329                         ,child_vs_value_ids              => l_child_vs_value_ids
11330                         ,p_owner                         => l_owner
11331                         ,p_init_msg_list                 => fnd_api.g_FALSE
11332                         ,p_commit                        => fnd_api.g_FALSE
11333                         ,x_child_vs_id                   => l_child_vs_id
11334                         ,x_return_status                 => l_return_status
11335                         ,x_msg_count                     => x_msg_count
11336                         ,x_msg_data                      => l_return_msg
11337                       );
11338 
11339                     write_debug(G_PKG_Name,l_api_name,' Creation of child VS is done. Return status is  '||l_return_status);
11340                     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Creation of child VS is done. Return status is  '||l_return_status);
11341 
11342 
11343 
11344 
11345                     -- check the return status
11346                     IF (Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS ) THEN
11347 
11348                         l_process_status:= G_SUCCESS_RECORD;
11349 
11350 
11351                         -- Get Value_Set_Id from a given value Set name.
11352                         IF (l_value_set_id  IS NULL) THEN
11353 
11354                             Convert_Name_To_Id (l_value_set_name ,G_Value_Set,NULL,l_value_set_id);
11355 
11356                         END IF; -- END IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
11357 
11358                         -- Assign value set id to successfully processed record.
11359                         FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11360                         LOOP
11361 
11362                             IF (  p_valueset_val_tab(j).process_status = G_SUCCESS_RECORD AND p_valueset_val_tab(j).value_set_id IS NULL ) THEN
11363 
11364                               p_valueset_val_tab(j).value_set_id := l_value_set_id;
11365 
11366                             END IF;-- END IF (  p_valueset_val_tab(j).process_status = G_SUCCESS_RECORD AND p_valueset_val_tab(j).value_set_id IS NULL ) THEN
11367 
11368                         END LOOP; -- END FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11369 
11370 
11371 
11372 
11373 
11374 
11375                     ELSIF (l_return_status = G_RET_STS_ERROR )
11376                     THEN
11377 
11378                         --x_return_status             := l_return_status;
11379                         l_process_status            := G_ERROR_RECORD;
11380 
11381 
11382                         -- Assign value set id to successfully processed record.
11383                         FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11384                         LOOP
11385 
11386                             IF (  p_valueset_val_tab(j).process_status = G_SUCCESS_RECORD AND p_valueset_val_tab(j).value_set_id IS NULL ) THEN
11387 
11388                               p_valueset_val_tab(j).process_status := G_ERROR_RECORD;
11389 
11390                             END IF;-- END IF (  p_valueset_val_tab(j).process_status = G_SUCCESS_RECORD AND p_valueset_val_tab(j).value_set_id IS NULL ) THEN
11391 
11392                         END LOOP; -- END FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11393 
11394 
11395 
11396 
11397 
11398 
11399                             G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
11400                         G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_CHILD_VS;
11401                         G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
11402                         G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
11403                         G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
11404                         G_TOKEN_TBL(3).Token_Value  :=  'EGO_EXT_FWK_PUB';
11405                         G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
11406                         G_TOKEN_TBL(4).Token_Value  :=  'Create_Child_Value_Set';
11407 
11408 
11409                         ERROR_HANDLER.Add_Error_Message (
11410                           p_message_name                   => 'EGO_ENTITY_API_FAILED'
11411                           ,p_application_id                => G_App_Short_Name
11412                           ,p_token_tbl                     => G_TOKEN_TBL
11413                           ,p_message_type                  => G_RET_STS_ERROR
11414                           ,p_row_identifier                => l_transaction_id
11415                           ,p_entity_code                   => G_ENTITY_CHILD_VS
11416                           ,p_table_name                    => G_ENTITY_VS_HEADER_TAB );
11417 
11418                     ELSE    -- case of unexpected error
11419 
11420 
11421                       -- Assign value set id to successfully processed record.
11425                           IF (  p_valueset_val_tab(j).process_status = G_SUCCESS_RECORD AND p_valueset_val_tab(j).value_set_id IS NULL ) THEN
11422                         FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11423                         LOOP
11424 
11426 
11427                             p_valueset_val_tab(j).process_status := G_ERROR_RECORD;
11428 
11429                           END IF;-- END IF (  p_valueset_val_tab(j).process_status = G_SUCCESS_RECORD AND p_valueset_val_tab(j).value_set_id IS NULL ) THEN
11430 
11431                         END LOOP; -- END FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11432 
11433                         x_return_status := G_RET_STS_UNEXP_ERROR;
11434                         x_return_msg    := l_return_msg;
11435                         RETURN;
11436 
11437 
11438                     END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
11439 
11440 
11441 
11442                 END IF;-- END IF l_process_status = G_PROCESS_RECORD  THEN
11443 
11444 
11445 
11446             ELSE
11447 
11448                 -- Log error
11449                 --Dbms_Output.put_line(' IN ERROR MODE ');
11450 
11451                 l_return_status               := G_RET_STS_ERROR;
11452                 l_process_status              := G_ERROR_RECORD;
11453                 l_error_message_name          := 'EGO_CHILD_VAL_REQUIRED';
11454                 l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
11455                 l_token_table(1).TOKEN_VALUE  := l_value_set_name;
11456 
11457 
11458                 ERROR_HANDLER.Add_Error_Message(
11459                   p_message_name                   => l_error_message_name
11460                   ,p_application_id                => G_App_Short_Name
11461                   ,p_token_tbl                     => l_token_table
11462                   ,p_message_type                  => G_RET_STS_ERROR
11463                   ,p_row_identifier                => l_transaction_id
11464                   ,p_entity_code                   => G_ENTITY_CHILD_VS
11465                   ,p_table_name                    => G_ENTITY_VS_HEADER_TAB
11466                 );
11467 
11468 
11469 
11470             END IF; -- END IF p_valueset_val_tab.Count>0 THEN
11471 
11472 
11473 
11474           ELSIF l_transaction_type=G_UPDATE THEN
11475               -- In case of updating child value set, we do always expect all values associated to a child value set to be passed.
11476               -- Also other value will always get deleted
11477               -- Create a collection to contain values for a child value set
11478 
11479               -- Create a Varray containing values corresponding to a child value set
11480             IF p_valueset_val_tab.Count>0 THEN
11481 
11482               write_debug(G_PKG_Name,l_api_name,' IN Update Mode Count of record is : '||p_valueset_val_tab.Count);
11483               --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  IN Update Mode Count of record is : '||p_valueset_val_tab.Count );
11484 
11485 
11486 
11487 
11488               FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11489               LOOP
11490 
11491                 --IF p_valueset_val_tab(j).value_set_name= l_value_set_name THEN
11492                 IF p_valueset_val_tab(j).process_status = G_PROCESS_RECORD THEN
11493 
11494 
11495                   -- Get Value,If Id is given
11496                   IF ( p_valueset_val_tab(j).flex_value_id IS NOT NULL
11497                         AND ( p_valueset_val_tab(j).value_set_name= l_value_set_name
11498                               OR p_valueset_val_tab(j).value_set_id = l_value_set_id) ) THEN
11499 
11500 
11501                         IF l_process_status= G_ERROR_RECORD THEN
11502 
11503 
11504                             write_debug(G_PKG_Name,l_api_name,'Err_Msg-TID=' ||l_transaction_id||'-(VS,VS Id)=('
11505                                                         ||l_value_set_name||','||l_value_set_id||')'||' Child Value Set creation failed.');
11506 
11507 
11508 
11509 
11510                             p_valueset_val_tab(j).process_status    := G_ERROR_RECORD;
11511                             p_valueset_val_tab(j).transaction_type  := l_transaction_type;
11512                             l_error_message_name                    := 'EGO_CHILD_VS_CREATION_FAILED';
11513 
11514                             ERROR_HANDLER.Add_Error_Message(
11515                               p_message_name                   => l_error_message_name
11516                               ,p_application_id                => G_App_Short_Name
11517                               ,p_token_tbl                     => l_token_table
11518                               ,p_message_type                  => G_RET_STS_ERROR
11519                               ,p_row_identifier                => p_valueset_val_tab(j).transaction_id
11520                               ,p_entity_code                   => G_ENTITY_CHILD_VS
11521                               ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB
11522                             );
11523 
11524                         END IF; -- END IF l_process_status= G_ERROR_RECORD THEN
11525 
11526 
11527 
11528                         -- Get value name
11529                         Convert_Id_To_Name (p_valueset_val_tab(j).flex_value_id ,G_Value,l_parent_vs_id,p_valueset_val_tab(j).flex_value);
11530 
11531 
11532                         IF p_valueset_val_tab(j).flex_value_id IS NULL THEN
11533 
11534                           l_error_message_name          := 'EGO_VSET_VAL_INVALID_ID';
11535                           -- Set process_status to 3
11536                           l_process_status    := g_error_record;
11537                           l_return_status     := G_RET_STS_ERROR;
11538                           l_last_updated_by   := g_user_id;
11539                           l_last_update_date  := SYSDATE;
11540                           l_last_update_login := g_login_id;
11541 
11542 
11543 
11544                           ERROR_HANDLER.Add_Error_Message(
11545                             p_message_name                   => l_error_message_name
11546                             ,p_application_id                => G_App_Short_Name
11547                             ,p_token_tbl                     => l_token_table
11548                             ,p_message_type                  => G_RET_STS_ERROR
11549                             ,p_row_identifier                => l_transaction_id
11550                             ,p_entity_code                   => l_entity_code
11551                             ,p_table_name                    => l_table_name
11552                           );
11553 
11554                         END IF; -- END IF l_value_set_id IS NULL THEN
11555 
11556 
11557 
11558                   END IF;-- END IF l_flex_value_id IS NOT NULL THEN
11559 
11560 
11561                   -- get Value_id from a given value.
11562                   IF (p_valueset_val_tab(j).flex_value_id IS NULL AND p_valueset_val_tab(j).flex_value IS NOT NULL
11563                       AND ( p_valueset_val_tab(j).value_set_name= l_value_set_name OR p_valueset_val_tab(j).value_set_id = l_value_set_id) ) THEN
11564 
11565 
11566 
11567                         IF l_process_status= G_ERROR_RECORD THEN
11568 
11569                             p_valueset_val_tab(j).process_status    := G_ERROR_RECORD;
11570                             p_valueset_val_tab(j).transaction_type  := l_transaction_type;
11571                             l_error_message_name                    := 'EGO_CHILD_VS_CREATION_FAILED';
11572 
11573                             ERROR_HANDLER.Add_Error_Message(
11574                               p_message_name                   => l_error_message_name
11575                               ,p_application_id                => G_App_Short_Name
11576                               ,p_token_tbl                     => l_token_table
11577                               ,p_message_type                  => G_RET_STS_ERROR
11578                               ,p_row_identifier                => p_valueset_val_tab(j).transaction_id
11579                               ,p_entity_code                   => G_ENTITY_CHILD_VS
11580                               ,p_table_name                    => G_ENTITY_VAL_HEADER_TAB
11581                             );
11582 
11583                         END IF; -- END IF l_process_status= G_ERROR_RECORD THEN
11584 
11585 
11586 
11587 
11588                         -- Bug 9701510
11589                         -- For Date and DateTime VS, Convert value to DB Date format.
11590                         IF l_format_code IN (G_DATE_DATA_TYPE,G_DATE_TIME_DATA_TYPE) THEN
11591 
11592                             Validate_User_Preferred_Date (p_valueset_val_tab(j).flex_value,
11593                                                           l_format_code,
11594                                                           l_transaction_id,
11595                                                           l_return_status,
11596                                                           l_return_msg);
11597 
11598 
11599                             -- check the return status
11600                             IF (l_return_status =G_RET_STS_UNEXP_ERROR )
11601                             THEN
11602 
11603                               write_debug(G_PKG_Name,l_api_name,' Unexpected error occured in Validate_User_Preferred_Date API l_return_msg ='||l_return_msg);
11604 
11605                               x_return_status :=  G_RET_STS_UNEXP_ERROR;
11606                               x_return_msg    :=  l_return_msg;
11607                               RETURN;
11608 
11609                             ELSIF (l_return_status =G_RET_STS_ERROR ) THEN
11610 
11611 
11612                               write_debug(G_PKG_Name,l_api_name,' Err_Msg-TID='  ||l_transaction_id||'-(VS,VS Id, Value)=('
11613                                                                                     ||l_value_set_name||','||l_value_set_id||','||p_valueset_val_tab(j).flex_value||')'||' Validation of value failed. ');
11614 
11615 
11616                               p_valueset_val_tab(j).process_status    := G_ERROR_RECORD;
11617                               p_valueset_val_tab(j).transaction_type  := l_transaction_type;
11618 
11619 
11620 
11621                             END IF; -- END IF (l_return_status =G_RET_STS_UNEXP_ERROR )
11622 
11623 
11624 
11625                             Convert_Value_To_DbDate (p_valueset_val_tab(j).flex_value);
11626 
11627 
11628                         END IF;
11629                         -- Bug 9701510
11630 
11631 
11632                         Convert_Name_To_Id (p_valueset_val_tab(j).flex_value,G_Value,l_parent_vs_id,p_valueset_val_tab(j).flex_value_id);
11633 
11634                   END IF; -- END IF (l_flex_value_id IS NULL AND l_flex_value IS NOT NULL ) THEN
11635 
11636 
11637 
11638                   write_debug(G_PKG_Name,l_api_name,' Creating value Ids ARRAY ');
11639                   --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Creating value Ids ARRAY ');
11640 
11641 
11642 
11643                   IF l_process_status= G_PROCESS_RECORD THEN
11644 
11645                       IF (p_valueset_val_tab(j).flex_value_id IS NOT NULL ) THEN
11646 
11647 
11648 
11649                           l_child_vs_value_ids.extend;
11650 
11651                           l_child_vs_value_ids(idx) := p_valueset_val_tab(j).flex_value_id;
11652 
11653                           idx :=  idx +1;
11654 
11655                           -- Set Status to success if it has been processed.
11656                           p_valueset_val_tab(j).process_status    := G_SUCCESS_RECORD;
11657                           p_valueset_val_tab(j).transaction_type  := l_transaction_type;
11658 
11659                           --Dbms_Output.put_line(' Building Values Array '||p_valueset_val_tab(j).flex_value_id);
11660 
11661                       END IF; -- END IF (p_valueset_val_tab(j).flex_value_id IS NOT NULL ) THEN
11662 
11663                   END IF; -- END IF l_process_status= G_PROCESS_RECORD THEN
11664 
11665 
11666 
11667                 END IF; -- END IF p_valueset_val_tab(j).process_status = G_PROCESS_RECORD THEN
11668 
11669                 write_debug(G_PKG_Name,l_api_name,' Count of value Ids is : '||l_child_vs_value_ids.Count );
11670                 --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Count of value Ids is : '||l_child_vs_value_ids.Count );
11671 
11672 
11673               END LOOP; -- END FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11674 
11675 
11676 
11677 
11678               IF l_process_status = G_PROCESS_RECORD  THEN
11679 
11680                   IF l_child_vs_value_ids.Count = 0 THEN
11681 
11682                     -- Log error
11683 
11684                     l_process_status              := G_ERROR_RECORD;
11685                     l_return_status               := G_RET_STS_ERROR;
11686                     l_error_message_name          := 'EGO_CHILD_VAL_REQUIRED';
11687                     l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
11688                     l_token_table(1).TOKEN_VALUE  := l_value_set_name;
11689 
11690                     l_token_table(2).TOKEN_NAME   := 'VALUE_SET_ID';
11691                     l_token_table(2).TOKEN_VALUE  := l_value_set_name;
11692 
11693 
11694                     ERROR_HANDLER.Add_Error_Message(
11695                       p_message_name                   => l_error_message_name
11696                       ,p_application_id                => G_App_Short_Name
11697                       ,p_token_tbl                     => l_token_table
11698                       ,p_message_type                  => G_RET_STS_ERROR
11699                       ,p_row_identifier                => l_transaction_id
11700                       ,p_entity_code                   => G_ENTITY_CHILD_VS
11701                       ,p_table_name                    => G_ENTITY_VS_HEADER_TAB
11702                     );
11703 
11704                   END IF; -- END IF l_child_vs_value_ids.Count = 0 THEN
11705 
11706               END IF; -- END IF l_process_status = G_PROCESS_RECORD  THEN
11707 
11708 
11709               write_debug(G_PKG_Name,l_api_name,' : calling  EGO_EXT_FWK_PUB.Update_Child_Value_Set API  ');
11710               --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' : calling  EGO_EXT_FWK_PUB.Update_Child_Value_Set API  ');
11711 
11712               --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' : Format Coed '||l_format_code||' Desc = '||l_description||' VS Id = '||l_value_set_id);
11713 
11714               IF l_process_status = G_PROCESS_RECORD  THEN
11715 
11716                   -- Call update API to update value set.
11717                   EGO_EXT_FWK_PUB.Update_Child_Value_Set
11718                     (
11719                       p_api_version                   => l_api_version
11720                       ,p_value_set_id                  => l_value_set_id
11721                       ,p_description                   => l_description
11722                       ,p_format_code                   => l_format_code
11723                       ,p_owner                         => G_USER_ID --l_owner
11724                       ,child_vs_value_ids              => l_child_vs_value_ids
11725                       ,p_init_msg_list                 => fnd_api.g_FALSE
11726                       ,p_commit                        => fnd_api.g_FALSE
11727                       ,x_return_status                 => l_return_status
11728 
11729                       ,x_msg_count                     => x_msg_count
11730                       ,x_msg_data                      => l_return_msg
11731                     );
11732 
11733 
11734                   --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Return status post call to EGO_EXT_FWK_PUB.Update_Child_Value_Set API  = '||l_return_status||' Msg is ; '||l_return_msg);
11735 
11736                   -- check the return status
11737                   IF (Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS ) THEN
11738 
11739                       l_process_status:= G_SUCCESS_RECORD;
11740 
11741 
11742                       -- Assign value set id to successfully processed record.
11743                       FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11744                       LOOP
11745 
11746                           IF (  p_valueset_val_tab(j).process_status = G_SUCCESS_RECORD AND p_valueset_val_tab(j).value_set_id IS NULL ) THEN
11747 
11748                             p_valueset_val_tab(j).value_set_id := l_value_set_id;
11749                             p_valueset_val_tab(j).value_set_name := l_value_set_name;
11750 
11751                           END IF;-- END IF (  p_valueset_val_tab(j).process_status = G_SUCCESS_RECORD AND p_valueset_val_tab(j).value_set_id IS NULL ) THEN
11752 
11753                       END LOOP; -- END FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11754 
11755 
11756                   ELSIF (l_return_status = G_RET_STS_ERROR ) THEN
11757 
11758                       l_process_status            := G_ERROR_RECORD;
11759 
11760                       -- Assign value set id to successfully processed record.
11761                       FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11762                       LOOP
11763 
11764                         IF (  p_valueset_val_tab(j).process_status = G_SUCCESS_RECORD AND p_valueset_val_tab(j).value_set_id = l_value_set_id ) THEN
11765 
11766                           p_valueset_val_tab(j).process_status := G_ERROR_RECORD;
11767 
11768                         END IF;-- END IF (  p_valueset_val_tab(j).process_status = G_SUCCESS_RECORD AND p_valueset_val_tab(j).value_set_id IS NULL ) THEN
11769 
11770                       END LOOP; -- END FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11771 
11772 
11773 
11774 
11775                           G_TOKEN_TBL(1).Token_Name   :=  'Entity_Name';
11776                       G_TOKEN_TBL(1).Token_Value  :=  G_ENTITY_CHILD_VS;
11777                       G_TOKEN_TBL(2).Token_Name   :=  'Transaction_Type';
11778                       G_TOKEN_TBL(2).Token_Value  :=  l_transaction_type;
11779                       G_TOKEN_TBL(3).Token_Name   :=  'Package_Name';
11780                       G_TOKEN_TBL(3).Token_Value  :=  'EGO_EXT_FWK_PUB' ;
11781                       G_TOKEN_TBL(4).Token_Name   :=  'Proc_Name';
11782                       G_TOKEN_TBL(4).Token_Value  :=  'Update_Child_Value_Set';
11783 
11784 
11785                       ERROR_HANDLER.Add_Error_Message(
11786                         p_message_name                   => 'EGO_ENTITY_API_FAILED'
11787                         ,p_application_id                => G_App_Short_Name
11788                         ,p_token_tbl                     => G_TOKEN_TBL
11789                         ,p_message_type                  => G_RET_STS_ERROR
11790                         ,p_row_identifier                => l_transaction_id
11791                         ,p_entity_code                   => G_ENTITY_CHILD_VS
11792                         ,p_table_name                    => G_ENTITY_VS_HEADER_TAB
11793                       );
11794 
11795 
11796                   ELSE  -- Case of unexpected error
11797 
11798 
11799                       -- Assign value set id to successfully processed record.
11800                       FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11801                       LOOP
11802 
11803                         IF (  p_valueset_val_tab(j).process_status = G_SUCCESS_RECORD AND p_valueset_val_tab(j).value_set_id =l_value_set_id ) THEN
11804 
11805                           p_valueset_val_tab(j).process_status := G_ERROR_RECORD;
11806 
11807                         END IF;-- END IF (  p_valueset_val_tab(j).process_status = G_SUCCESS_RECORD AND p_valueset_val_tab(j).value_set_id IS NULL ) THEN
11808 
11809                       END LOOP; -- END FOR j IN p_valueset_val_tab.first..p_valueset_val_tab.last
11810 
11811 
11812 
11813                       x_return_status :=  G_RET_STS_UNEXP_ERROR;
11814                       x_return_msg    :=  l_return_msg;
11815                       RETURN;
11816 
11817                   END IF;  -- END  IF l_return_status <> G_RET_STS_SUCCESS THEN
11818 
11819 
11820               END IF; -- END IF l_process_status = G_PROCESS_RECORD  THEN
11821 
11822 
11823               -- We do not support versioning for a child value set thus no code require for versioning
11824 
11825             ELSE  --IF p_valueset_val_tab IS NOT NULL THEN
11826 
11827               -- Log error
11828               --Dbms_Output.put_line(' IN ERROR MODE ');
11829 
11830               l_return_status               := G_RET_STS_ERROR;
11831               l_process_status              := G_ERROR_RECORD;
11832               l_error_message_name          := 'EGO_CHILD_VAL_REQUIRED';
11833               l_token_table(1).TOKEN_NAME   := 'VALUE_SET_NAME';
11834               l_token_table(1).TOKEN_VALUE  := l_value_set_name;
11835 
11836 
11837               ERROR_HANDLER.Add_Error_Message(
11838                 p_message_name                   => l_error_message_name
11839                 ,p_application_id                => G_App_Short_Name
11840                 ,p_token_tbl                     => l_token_table
11841                 ,p_message_type                  => G_RET_STS_ERROR
11842                 ,p_row_identifier                => l_transaction_id
11843                 ,p_entity_code                   => G_ENTITY_CHILD_VS
11844                 ,p_table_name                    => G_ENTITY_VS_HEADER_TAB
11845                 );
11846 
11847 
11848 
11849             END IF ;--IF p_valueset_val_tab IS NOT NULL THEN
11850 
11851 
11852           END IF; -- END IF transaction_type=G_CREATE
11853 
11854         --END IF;   -- END IF l_process_status= G_PROCESS_RECORD THEN
11855 
11856 
11857         WRITE_DEBUG(G_PKG_Name,l_api_name,' Assigning vvariables back topl/sql tables ');
11858         --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Assigning vvariables back topl/sql tables ');
11859 
11860         -- Assign Back all values to table.
11861         ---*************************--------
11862 
11863         p_value_set_tbl(i).value_set_name                     :=    l_value_set_name;
11864         p_value_set_tbl(i).value_set_id                 :=  l_value_set_id;
11865         p_value_set_tbl(i).description                        :=    l_description;
11866         p_value_set_tbl(i).format_type                        :=    l_format_code;
11867         p_value_set_tbl(i).longlist_flag                      :=    l_longlist_flag;
11868         p_value_set_tbl(i).validation_type                  :=  l_validation_code;
11869 
11870         p_value_set_tbl(i).parent_value_set_name          :=    l_parent_value_set_name;
11871         --p_value_set_tbl(i).version_seq_id                   :=    l_version_seq_id;
11872         p_value_set_tbl(i).start_active_date                :=  l_start_active_date;
11873         p_value_set_tbl(i).end_active_date                  :=  l_end_active_date;
11874         p_value_set_tbl(i).maximum_size                 :=  l_maximum_size;
11875         p_value_set_tbl(i).minimum_value                      :=    l_maximum_value;
11876         p_value_set_tbl(i).maximum_value                      :=    l_minimum_value;
11877 
11878         -- transactions related columns
11879         p_value_set_tbl(i).transaction_type                 :=  l_transaction_type;
11880         --p_value_set_tbl(i).transaction_id               :=    l_transaction_id;
11881 
11882         -- process related columns
11883         p_value_set_tbl(i).process_status                     :=    l_process_status;
11884         p_value_set_tbl(i).set_process_id                 :=    l_set_process_id;
11885 
11886         -- who columns for concurrent program
11887         p_value_set_tbl(i).request_id                     :=    l_request_id;
11888         p_value_set_tbl(i).program_application_id       :=  l_program_application_id;
11889         p_value_set_tbl(i).program_id                   :=  l_program_id;
11890         p_value_set_tbl(i).program_update_date          :=  l_program_update_date;
11891 
11892         -- who columns
11893         p_value_set_tbl(i).last_update_date               :=    l_last_update_date;
11894         p_value_set_tbl(i).last_updated_by                :=    l_last_updated_by;
11895         p_value_set_tbl(i).creation_date                  :=    l_creation_date;
11896         p_value_set_tbl(i).created_by                     :=    l_created_by;
11897         p_value_set_tbl(i).last_update_login                :=  l_last_update_login;
11898 
11899         --------********************-------------
11900 
11901 
11902         -- Re-Initializing values
11903         l_value_set_name          :=  NULL;
11904         l_value_set_id            :=  NULL;
11905         l_description             :=  NULL;
11906         l_format_code             :=  NULL;
11907         l_longlist_flag           :=  NULL;
11908         l_validation_code         :=  NULL;
11909         l_parent_value_set_name   :=  NULL;
11910         l_version_seq_id          :=  NULL;
11911         --l_version_description     :=  NULL;
11912 
11913         l_start_active_date       :=  NULL;
11914         l_end_active_date         :=  NULL;
11915         l_maximum_size            :=  NULL;
11916         l_minimum_value           :=  NULL;
11917         l_maximum_value           :=  NULL;
11918 
11919         l_transaction_type        :=  NULL;
11920         l_transaction_id          :=  NULL;
11921 
11922         l_process_status          :=  NULL;
11923         l_set_process_id          :=  NULL;
11924 
11925         l_request_id              :=  NULL;
11926         l_program_application_id  :=  NULL;
11927         l_program_id              :=  NULL;
11928         l_program_update_date     :=  NULL;
11929 
11930         l_last_update_date        :=  NULL;
11931         l_last_updated_by         :=  NULL;
11932         l_creation_date           :=  NULL;
11933         l_created_by              :=  NULL;
11934         l_last_update_login       :=  NULL;
11935 
11936         l_parent_vs_id            :=  NULL;
11937         idx                       :=  1;
11938         l_valid_parent            :=  NULL;
11939         l_parent_valid_type       :=  NULL;
11940 
11941         --Dbms_Output.put_line(' Count of values after processing Value Set. '||l_child_vs_value_ids.Count );
11942         l_child_vs_value_ids.DELETE;
11943         --Dbms_Output.put_line(' Count of values after deleting records. '||l_child_vs_value_ids.Count );
11944 
11945 
11946     END LOOP; --END FOR i IN p_value_set_tbl.first..p_value_set_tbl.last
11947 
11948 
11949     -- Set return status
11950     IF Nvl(l_return_status,G_RET_STS_SUCCESS) =G_RET_STS_SUCCESS AND  x_return_status <>G_RET_STS_ERROR THEN
11951 
11952       x_return_status :=  G_RET_STS_SUCCESS;
11953       l_return_status    := G_RET_STS_SUCCESS;
11954 
11955     END IF;
11956 
11957 
11958     IF l_return_status =G_RET_STS_ERROR THEN
11959 
11960       x_return_status :=  G_RET_STS_ERROR;
11961 
11962     END IF;
11963 
11964 
11965     write_debug(G_PKG_Name,l_api_name,' API return status is  '||l_return_status);
11966     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'  API return status is  '||l_return_status);
11967 
11968 
11969 
11970     IF p_commit THEN
11971       write_debug(G_PKG_Name,l_api_name,' Issue a commit ' );
11972       COMMIT;
11973     END IF;
11974 
11975     write_debug(G_PKG_Name,l_api_name,' End of API. ');
11976     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' End of API. ');
11977 EXCEPTION
11978   WHEN OTHERS THEN
11979     write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
11980     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
11981 
11982     x_return_status := G_RET_STS_UNEXP_ERROR;
11983     x_return_msg    := G_PKG_Name||'.'||l_api_name||'  - '||SubStr(SQLERRM,1,500);
11984     RETURN;
11985 
11986 END Process_Child_Value_Set;
11987 
11988 
11989 
11990 
11991 PROCEDURE Delete_Processed_Value_Sets(  p_set_process_id   IN          NUMBER,
11992                                         x_return_status    OUT NOCOPY  VARCHAR2,
11993                                         x_return_msg       OUT NOCOPY  VARCHAR2)
11994 
11995 IS
11996 
11997   l_api_name       VARCHAR2(100) := 'Delete_Processed_Value_Sets';
11998 
11999 BEGIN
12000 
12001   write_debug(G_PKG_Name,l_api_name,'Start of API. ');
12002   --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'Start of API. ');
12003 
12004   DELETE FROM ego_flex_value_set_intf
12005   WHERE process_status = G_SUCCESS_RECORD
12006     AND (p_set_process_id IS NULL
12007           OR set_process_id =  p_set_process_id);
12008 
12009   write_debug(G_PKG_Name,l_api_name,'Deleted data from value Set Table ');
12010   --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'Deleted data from value Set Table ');
12011 
12012   DELETE FROM ego_flex_value_intf
12013   WHERE process_status = G_SUCCESS_RECORD
12014     AND (p_set_process_id IS NULL
12015           OR set_process_id =  p_set_process_id);
12016 
12017   write_debug(G_PKG_Name,l_api_name,' Deleted data from Value Table');
12018   --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' Deleted data from Value Table');
12019 
12020   DELETE FROM ego_flex_value_tl_intf
12021   WHERE process_status = G_SUCCESS_RECORD
12022     AND (p_set_process_id IS NULL
12023           OR set_process_id =  p_set_process_id);
12024 
12025 
12026 
12027   -- Set return status finally.
12028   IF x_return_status IS NULL
12029   THEN
12030     x_return_status    := G_RET_STS_SUCCESS;
12031   END IF;
12032 
12033 
12034   write_debug(G_PKG_Name,l_api_name,'End of Delete_Processed_Value_Sets');
12035   --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||'End of Delete_Processed_Value_Sets');
12036 
12037 
12038 
12039 
12040 EXCEPTION
12041   WHEN OTHERS THEN
12042     write_debug(G_PKG_Name,l_api_name,' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
12043     --Dbms_Output.put_line(G_PKG_Name||'.'||l_api_name||' In Exception of API. Error : '||SubStr(SQLERRM,1,500) );
12044     x_return_status := G_RET_STS_UNEXP_ERROR;
12045     x_return_msg := 'ego_vs_bulkload_pvt.Delete_Processed_Value_Sets - '||SQLERRM;
12046     RETURN;
12047 END Delete_Processed_Value_Sets;
12048 
12049 
12050 END ego_vs_bulkload_pvt;