[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;