DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_RU_GEN_006

Source


1 PACKAGE BODY IGS_RU_GEN_006 AS
2 /* $Header: IGSRU12B.pls 115.4 2003/10/14 11:05:25 nsinha noship $ */
3 
4 FUNCTION Rulp_Val_Desc_Rgi(
5   p_description_number IN NUMBER ,
6   p_description_type IN VARCHAR2 ,
7   p_message_name OUT NOCOPY VARCHAR2 )
8 RETURN VARCHAR2 IS
9   ------------------------------------------------------------------
10   --Created by  : nsinha, Oracle India
11   --Date created: 12-Mar-2002
12   --
13   --Purpose: Expand description_number to IGS_RU_DESCRIPTION or group_name
14   --         if invalid set message number and return NULL
15   --
16   --Known limitations/enhancements and/or remarks:
17   --
18   --Change History:
19   --Who         When            What
20   --nsinha      12-Mar-2002     Bug# 2233951: Moved the function from Igs_ru_gen_004.
21   --
22   -------------------------------------------------------------------
23 	v_description	igs_ru_description.rule_description%TYPE;
24 BEGIN
25 	IF p_description_type = 'RUD'
26 	THEN
27 	BEGIN
28 		SELECT	rule_description
29 		INTO	v_description
30 		FROM	IGS_RU_DESCRIPTION
31 		WHERE	sequence_number = p_description_number;
32 		EXCEPTION
33 			WHEN NO_DATA_FOUND THEN
34 				p_message_name := 'IGS_GE_RULE_DESCR_NOT_EXISTS';
35 				RETURN NULL;
36 	END;
37 	ELSIF p_description_type = 'RUG'
38 	THEN
39 	BEGIN
40 		SELECT	group_name
41 		INTO	v_description
42 		FROM	IGS_RU_GROUP
43 		WHERE	sequence_number = p_description_number;
44 		EXCEPTION
45 			WHEN NO_DATA_FOUND THEN
46 				p_message_name := 'IGS_GE_RULE_GROUP_NOT_EXISTS';
47 				RETURN NULL;
48 	END;
49 	ELSE
50           /*
51 	    invalid type
52           */
53 	  p_message_name := 'IGS_GE_INVALID_VALUE';
54 	  RETURN NULL;
55 	END IF;
56 	RETURN v_description;
57 END Rulp_Val_Desc_Rgi;
58 
59 PROCEDURE Rulp_Ins_Make_Rule(
60   p_description_number IN NUMBER ,
61   p_return_type  VARCHAR2 ,
62   p_rule_description  VARCHAR2 ,
63   p_turing_function  VARCHAR2 ,
64   p_rule_text  VARCHAR2 ,
65   p_message_rule_text  VARCHAR2 ,
66   p_description_text  VARCHAR2 ,
67   p_group IN NUMBER ,
68   p_select_group IN NUMBER )
69 IS
70   ------------------------------------------------------------------
71   --Created by  : nsinha, Oracle India
72   --Date created: 12-Mar-2002
73   --
74   --Purpose: If description number exists then use the existing IGS_RU_RULE
75   --         number or message number
76   --
77   --Known limitations/enhancements and/or remarks:
78   --
79   --Change History:
80   --Who         When            What
81   --nsinha      12-Mar-2002     Bug# 2233951: Moved the function from Igs_ru_gen_004.
82   --
83   -------------------------------------------------------------------
84 FUNCTION make_rule (
85 	p_rule_number		NUMBER,
86 	p_return_type		VARCHAR2,
87 	p_rule_description	VARCHAR2,
88 	p_rule_text		VARCHAR2 )
89 RETURN NUMBER IS
90 	v_processed	VARCHAR(2000);
91 	v_unprocessed	VARCHAR(2000);
92 	v_rule_number	NUMBER;
93 	v_lov_number	NUMBER;
94 	v_count		NUMBER;
95 BEGIN
96 	v_rule_number := p_rule_number;
97 	v_processed := p_rule_text;
98 	IF IGS_RU_GEN_002.RULP_INS_PARSER(p_select_group,
99 		p_return_type,
100 		p_rule_description,
101 		v_processed,
102 		v_unprocessed,
103 		TRUE,
104 		v_rule_number,
105 		v_lov_number)
106 	THEN
107 		NULL;
108 	END IF;
109 	RETURN v_rule_number;
110 END make_rule;
111 
112 /*
113  insert/update IGS_RU_DESCRIPTION
114 */
115 FUNCTION insert_rule_description
116 RETURN NUMBER IS
117   ------------------------------------------------------------------
118   --Created by  : nsinha, Oracle India
119   --Date created: 12-Mar-2002
120   --
121   --Purpose: Calls the before_dml of igs_ru_group_item_pkg
122   --
123   --
124   --Known limitations/enhancements and/or remarks:
125   --
126   --Change History:
127   --Who         When            What
128   --nsinha      12-Mar-2002     Bug# 2233951: Modified the logic to
129   --                            SELECT the next value of the sequence number
130   --                            differently when the data is for SEED DB.
131   --
132   -- nsinha      10/9/2003      Bug#: 3193855 : Change the reference of igs_ru_set with igs_ru_description.
133   --				for CURSOR cur_max_plus_one.
134   -------------------------------------------------------------------
135 	v_rud_sequence_number	NUMBER;
136 	v_count			NUMBER DEFAULT 0;
137 	v_rowid 		VARCHAR2(25);
138 	CURSOR Cur_Desc(r_rud_sequence_number NUMBER) IS
139 		SELECT rowid,IGS_RU_DESCRIPTION.*
140 		FROM IGS_RU_DESCRIPTION
141 		WHERE sequence_number = r_rud_sequence_number;
142 
143 	CURSOR Cur_Desc_Count(cp_rud_sequence_number NUMBER) IS
144  	  SELECT	COUNT(*)
145 	  FROM	IGS_RU_DESCRIPTION
146 	  WHERE	sequence_number = cp_rud_sequence_number;
147 
148         CURSOR cur_max_plus_one IS
149           SELECT   (sequence_number + 1) sequence_number
150           FROM     igs_ru_description
151           WHERE    sequence_number =
152             (SELECT   MAX (sequence_number)
153              FROM     igs_ru_description	-- Changed By: Navin.Sinha On: 10/9/2003 Fix: Change the reference of igs_ru_set with igs_ru_description.
154              WHERE    sequence_number < 499999)
155           FOR UPDATE OF sequence_number NOWAIT;
156 BEGIN
157 	IF p_description_number IS NULL	THEN
158           --
159 	  --  New description number
160           --  If the User creating this record is DATAMERGE (id = 1) then
161           --    Get the sequence as the existing maximum value + 1
162           --  Else
163           --    Get the next value from the database sequence
164           --
165           IF (fnd_global.user_id = 1) THEN
166             OPEN  cur_max_plus_one;
167             FETCH cur_max_plus_one INTO v_rud_sequence_number;
168             CLOSE cur_max_plus_one;
169           ELSE
170             SELECT igs_ru_description_seq_num_s.nextval
171             INTO   v_rud_sequence_number
172             FROM   dual;
173           END IF;
174 	ELSE
175 		v_rud_sequence_number := p_description_number;
176 	END IF;
177 
178 	OPEN  Cur_Desc_Count(v_rud_sequence_number);
179 	FETCH Cur_Desc_Count INTO v_count;
180 	CLOSE Cur_Desc_Count;
181 
182 	IF v_count = 0
183 	THEN
184               --
185 	      -- insert IGS_RU_DESCRIPTION
186               --
187 		IGS_RU_DESCRIPTION_PKG.Insert_Row(
188 			x_rowid => v_rowid,
189 			x_sequence_number => v_rud_sequence_number,
190 			x_s_return_type => p_return_type,
191 			x_rule_description => p_rule_description,
192 			x_description => p_description_text,
193 			x_s_turin_function => NULL,
194 			x_parenthesis_ind => NULL,
195 			x_mode => 'R'
196 			);
197 	ELSE
198           --
199 	  --	 update IGS_RU_DESCRIPTION
200           --
201 		for Desc_Rec in Cur_Desc(v_rud_sequence_number) loop
202 			Desc_Rec.s_return_type := p_return_type;
203 			Desc_Rec.rule_description := p_rule_description;
204 			Desc_Rec.description := p_description_text;
205 			IGS_RU_DESCRIPTION_PKG.Update_Row(
206 				x_rowid => Desc_Rec.rowid,
207 				x_sequence_number => Desc_Rec.sequence_number,
208 				x_s_return_type => Desc_Rec.s_return_type,
209 				x_rule_description => Desc_Rec.rule_description,
210 				x_description => Desc_Rec.description,
211 				x_s_turin_function => Desc_Rec.s_turin_function,
212 				x_parenthesis_ind => Desc_Rec.parenthesis_ind,
213 				x_mode => 'R'
214 				);
215 		end loop;
216 
217 	END IF;
218 	RETURN v_rud_sequence_number;
219 END insert_rule_description;
220 
221 BEGIN DECLARE
222 	v_rowid_nr			VARCHAR2(25);
223 	v_rowid_tur			VARCHAR2(25);
224 	v_rowid_rgi			VARCHAR2(25);
225 	v_rule_number		NUMBER;
226 	v_description_number	NUMBER;
227 	v_count			NUMBER;
228 	v_rule_description	IGS_RU_DESCRIPTION.rule_description%TYPE;
229 
230 	CURSOR Cur_Desc(r_description_number NUMBER) IS
231 		SELECT rowid,IGS_RU_DESCRIPTION.*
232 		FROM IGS_RU_DESCRIPTION
233 		WHERE sequence_number = r_description_number;
234 	CURSOR Cur_Nr(r_description_number NUMBER) IS
235 		SELECT rowid,IGS_RU_NAMED_RULE.*
236 		FROM IGS_RU_NAMED_RULE
237 		WHERE rud_sequence_number = r_description_number;
238 
239 BEGIN
240 	IF p_return_type IS NOT NULL AND
241 	   p_rule_description IS NOT NULL
242 	THEN
243 		v_description_number := insert_rule_description;
244 		IF p_turing_function IS NOT NULL
245 		THEN
246 			SELECT	COUNT(*)
247 			INTO	v_count
248 			FROM	IGS_RU_TURIN_FNC
249 			WHERE	s_turin_function = p_turing_function;
250 			IF v_count = 0
251 			THEN
252                    /*
253 				 master turing function
254                    */
255 
256 				IGS_RU_TURIN_FNC_PKG.Insert_Row(
257 					x_rowid => v_rowid_tur,
258 					x_s_turin_function => p_turing_function,
259 					x_rud_sequence_number => v_description_number,
260 					x_parenthesis_ind => NULL,
261 					x_mode => 'R'
262 					);
263 			END IF;
264 
265 			for Desc_Rec in Cur_Desc(v_description_number) loop
266 				Desc_Rec.s_turin_function := p_turing_function;
267 				IGS_RU_DESCRIPTION_PKG.Update_Row(
268 					x_rowid => Desc_Rec.rowid,
269 					x_sequence_number => Desc_Rec.sequence_number,
270 					x_s_return_type => Desc_Rec.s_return_type,
271 					x_rule_description => Desc_Rec.rule_description,
272 					x_description => Desc_Rec.description,
273 					x_s_turin_function => Desc_Rec.s_turin_function,
274 					x_parenthesis_ind => Desc_Rec.parenthesis_ind,
275 					x_mode => 'R'
276 					);
277 			end loop;
278 
279 		ELSE
280 			IF p_rule_text IS NOT NULL
281 			THEN
282                             /*
283 				 NAMED IGS_RU_RULE
284                             */
285 				IF p_description_number IS NOT NULL
286 				THEN
287 				BEGIN
288                             /*
289 					 find existing IGS_RU_RULE number
290                             */
291 					SELECT	rul_sequence_number
292 					INTO	v_rule_number
293 					FROM	IGS_RU_NAMED_RULE
294 					WHERE	rud_sequence_number = p_description_number;
295 					EXCEPTION
296 						WHEN NO_DATA_FOUND THEN
297 							v_rule_number := NULL;
298 				END;
299 				END IF;
300 				v_rule_number := make_rule(v_rule_number,
301 							p_return_type,
302 							p_rule_description,
303 							p_rule_text);
304 				SELECT	COUNT(*)
305 				INTO	v_count
306 				FROM	IGS_RU_NAMED_RULE
307 				WHERE	rud_sequence_number = v_description_number;
308 				IF v_count = 0
309 				THEN
310                                   /*
311 					 add named IGS_RU_RULE
312                                   */
313 					IGS_RU_NAMED_RULE_PKG.Insert_Row(
314 						x_rowid => v_rowid_nr,
315 						x_rul_sequence_number => v_rule_number,
316 						x_rud_sequence_number => v_description_number,
317 						x_message_rule => NULL,
318 						x_rug_sequence_number => 1,
319 						x_rule_text => p_rule_text,
320 						x_mode => 'R'
321 						);
322 
323 				END IF;
324 			ELSE
325                                /*
326 				 TURING LOV or language directive
327                                */
328 				NULL;
329 			END IF;
330 		END IF;
331 		IF p_group IS NOT NULL
332 		THEN
333                         /*
334 			 check/insert into group
335                         */
336 			SELECT	COUNT(*)
337 			INTO	v_count
338 			FROM	IGS_RU_GROUP_ITEM
339 			WHERE	rug_sequence_number = p_group
340 			AND	description_number = v_description_number
341 			AND	description_type = 'RUD';
342 			IF v_count = 0
343 			THEN
344 			IGS_RU_GROUP_ITEM_PKG.Insert_Row(
345 				x_rowid => v_rowid_rgi,
346 				x_rug_sequence_number => p_group,
347 				x_description_number => v_description_number,
348 				x_description_type => 'RUD',
349 				x_mode => 'R'
350 				);
351 			END IF;
352 		END IF;
353 	ELSE
354 		NULL; /*error*/
355 	END IF;
356 	IF p_message_rule_text IS NOT NULL
357 	THEN
358           /*
359 		MESSAIGS_RU_RULE
360 		find existing message IGS_RU_RULE number
361           */
362 		SELECT	message_rule
363 		INTO	v_rule_number
364 		FROM	IGS_RU_NAMED_RULE
365 		WHERE	rud_sequence_number = p_description_number;
366           /*
367             get the IGS_RU_RULE description of the owner IGS_RU_RULE
368           */
369 		SELECT	rule_description
370 		INTO	v_rule_description
371 		FROM	IGS_RU_DESCRIPTION
372 		WHERE	sequence_number = p_description_number;
373 		v_rule_number := make_rule(v_rule_number,
374 					'STRING',
375 					v_rule_description,
376 					p_message_rule_text);
377           /*
378 		date the message number
379           */
380 		for Nr_Rec in Cur_Nr(p_description_number) loop
381 			Nr_Rec.message_rule := v_rule_number;
382 			IGS_RU_NAMED_RULE_PKG.Update_Row(
383 				x_rowid => Nr_Rec.rowid,
384 				x_rul_sequence_number => Nr_Rec.rul_sequence_number,
385 				x_rud_sequence_number => Nr_Rec.rud_sequence_number,
386 				x_message_rule => Nr_Rec.message_rule,
387 				x_rug_sequence_number => Nr_Rec.rug_sequence_number,
388 				x_rule_text => Nr_Rec.rule_text,
389 				x_mode => 'R'
390 				);
391 		end loop;
392 	END IF;
393 END;
394 END Rulp_Ins_Make_Rule;
395 
396 
397 FUNCTION Rulp_Get_Rule(
398   p_rule_number IN NUMBER )
399 RETURN VARCHAR2 IS
400 /*
401  return the textual form of the IGS_RU_RULE
402 
403  CONSTANTS
404 */
405 cst_space	CONSTANT VARCHAR2(1) := Fnd_Global.Local_Chr(31);
406 /*
407  return set string
408 */
409 FUNCTION show_set (
410 	p_set_number	IN IGS_RU_SET.sequence_number%TYPE )
411 RETURN VARCHAR2 IS
412 BEGIN DECLARE
413 	v_more		BOOLEAN;
414 	v_set		VARCHAR2(255);
415 BEGIN
416 	v_more := FALSE;
417 	v_set := '{';
418   	FOR set_members IN (
419   		SELECT	unit_cd,
420   			versions
421   		FROM	IGS_RU_SET_MEMBER
422   		WHERE	rs_sequence_number = p_set_number
423 		ORDER BY unit_cd )
424   	LOOP
425 		IF v_more
426 		THEN
427 			v_set := v_set||', ';
428 		END IF;
429 		v_set := v_set||set_members.unit_cd;
430 		IF set_members.versions IS NOT NULL
431 		THEN
432 			IF INSTR(set_members.versions,',') <> 0 OR
433 			   INSTR(set_members.versions,'-') <> 0
434 			THEN
435 				v_set := v_set||'.['||set_members.versions||']';
436 			ELSE
437 				v_set := v_set||'.'||set_members.versions;
438 			END IF;
439 		END IF;
440 		v_more := TRUE;
441 	END LOOP;
442 	v_set := v_set||'}';
443 	RETURN v_set;
444 END;
445 END show_set;
446 
447 /*
448  convert the description string into token, action
449  and remainder of description
450  return FALSE if description is NULL
451 */
452 FUNCTION breakdown_desc (
453 	p_display	IN OUT NOCOPY IGS_RU_DESCRIPTION.rule_description%TYPE,
454 	p_action	IN OUT NOCOPY IGS_RU_DESCRIPTION.s_return_type%TYPE,
455 	p_description	IN OUT NOCOPY IGS_RU_DESCRIPTION.rule_description%TYPE )
456 RETURN BOOLEAN IS
457 BEGIN DECLARE
458 	v_hash	NUMBER;
459 BEGIN
460 /*
461 	 check if more to process
462 */
463 	IF p_description IS NULL
464 	THEN
465 		RETURN FALSE;
466 	END IF;
467 	p_action := NULL;
468 	v_hash := INSTR(p_description, '#');
469 	p_display := SUBSTR(p_description,1,v_hash - 1);
470 	IF v_hash = 0
471 	THEN
472 		p_action := '';
473 		p_display := p_description;
474 	ELSE
475 		FOR return_types IN (
476 			SELECT s_return_type
477 			FROM	IGS_RU_RET_TYPE
478 			ORDER BY s_return_type DESC )
479 		LOOP
480 			IF SUBSTR(p_description,v_hash + 1,LENGTH(return_types.s_return_type))
481 				= return_types.s_return_type
482 			THEN
483 				p_action := return_types.s_return_type;
484 				exit;
485 			END IF;
486 		END LOOP;
487 
488 	END IF;
489 	p_description := SUBSTR(p_description,v_hash + 1 + LENGTH(p_action));
490 	RETURN TRUE;
491 END;
492 END breakdown_desc;
493 /*
494  Convert the stored IGS_RU_RULE into a readable form
495 */
496 FUNCTION display_rule (
497 	p_rule_number	IN IGS_RU_ITEM.rul_sequence_number%TYPE,
498 	p_rule_item	IN OUT NOCOPY IGS_RU_ITEM.item%TYPE )
499 RETURN VARCHAR2 IS
500 BEGIN DECLARE
501 	v_rule			VARCHAR2(2000);
502 	v_rule_item		IGS_RU_ITEM.item%TYPE;
503 	v_rule_description	IGS_RU_DESCRIPTION.rule_description%TYPE;
504 	v_parenthesis_ind	IGS_RU_DESCRIPTION.parenthesis_ind%TYPE;
505 	v_action		IGS_RU_DESCRIPTION.s_return_type%TYPE;
506 	v_display		IGS_RU_DESCRIPTION.rule_description%TYPE;
507 BEGIN
508 	FOR rule_items IN (
509 		SELECT	rul_sequence_number,
510 			item,
511 			turin_function,
512 			named_rule,
513 			rule_number,
514 			derived_rule,
515 			set_number,
516 			value
517 		FROM	IGS_RU_ITEM
518 		WHERE	rul_sequence_number = p_rule_number
519 		AND	item > p_rule_item
520 		ORDER BY item ASC )
521 	LOOP
522 		p_rule_item := rule_items.item;
523 		IF rule_items.turin_function IS NOT NULL
524 		THEN
525 			SELECT	rud.rule_description,
526 				rud.parenthesis_ind
527 			INTO	v_rule_description,
528 				v_parenthesis_ind
529 			FROM	IGS_RU_TURIN_FNC stf,
530 				IGS_RU_DESCRIPTION rud
531 			WHERE	stf.s_turin_function = rule_items.turin_function
532 			AND	rud.sequence_number = stf.rud_sequence_number;
533 			IF v_parenthesis_ind = 'Y'
534 			THEN
535 				v_rule := v_rule||'(';
536 			END IF;
537 			WHILE breakdown_desc(v_display,
538 					v_action,
539 					v_rule_description)
540 			LOOP
541 				v_rule := v_rule||v_display;
542 				IF LENGTH(v_action) > 0
543 				THEN
544 					v_rule := v_rule||display_rule(p_rule_number,p_rule_item);
545 				END IF;
546 			END LOOP;
547 			IF v_parenthesis_ind = 'Y'
548 			THEN
549 				v_rule := v_rule||')';
550 			END IF;
551 		ELSIF rule_items.named_rule IS NOT NULL
552 		THEN
553 			SELECT	rud.rule_description,
554 				rud.parenthesis_ind
555 			INTO	v_rule_description,
556 				v_parenthesis_ind
557 			FROM	IGS_RU_NAMED_RULE nr,
558 				IGS_RU_DESCRIPTION rud
559 			WHERE	nr.rul_sequence_number = rule_items.named_rule
560 			AND	rud.sequence_number = nr.rud_sequence_number;
561 			IF v_parenthesis_ind = 'Y'
562 			THEN
563 				v_rule := v_rule||'(';
564 			END IF;
565 			WHILE breakdown_desc(v_display,
566 					v_action,
567 					v_rule_description)
568 			LOOP
569 				v_rule := v_rule||v_display;
570 				IF LENGTH(v_action) > 0
571 				THEN
572 					v_rule := v_rule||display_rule(p_rule_number,p_rule_item);
573 				END IF;
577 				v_rule := v_rule||')';
574 			END LOOP;
575 			IF v_parenthesis_ind = 'Y'
576 			THEN
578 			END IF;
579 		ELSIF rule_items.rule_number IS NOT NULL
580 		THEN
581 			v_rule_item := 0;
582 			v_rule := v_rule||display_rule(rule_items.rule_number,v_rule_item);
583 		ELSIF rule_items.derived_rule IS NOT NULL
584 		THEN
585 			SELECT	rule_description
586 			INTO	v_rule_description
587 			FROM	IGS_RU_DESCRIPTION
588 			WHERE	sequence_number = rule_items.derived_rule;
589 			WHILE breakdown_desc(v_display,
590 					v_action,
591 					v_rule_description)
592 			LOOP
593 				v_rule := v_rule||v_display;
594 				IF LENGTH(v_action) > 0
595 				THEN
596 					v_rule := v_rule||display_rule(p_rule_number,p_rule_item);
597 				END IF;
598 			END LOOP;
599 		ELSIF rule_items.set_number IS NOT NULL
600 		THEN
601 			v_rule := v_rule||show_set(rule_items.set_number);
602 		ELSIF rule_items.value IS NOT NULL
603 		THEN
604 			v_rule := v_rule||rule_items.value;
605 		END IF;
606 		exit;
607 	END LOOP;
608 	RETURN v_rule;
609 END;
610 END display_rule;
611 /*
612  Rulp_Get_Rule
613 */
614 BEGIN
615   DECLARE
616 	v_rule_item	IGS_RU_ITEM.item%TYPE := -1;
617   BEGIN
618   /*
619     return IGS_RU_RULE, replace internal spaces for real spaces
620   */
621 	RETURN REPLACE(display_rule(p_rule_number,v_rule_item),cst_space,' ');
622   END;
623 END Rulp_Get_Rule;
624 
625 PROCEDURE Set_Token(Token Varchar2) IS
626 BEGIN
627   FND_MESSAGE.SET_TOKEN('ADM',Token);
628 END Set_Token;
629 
630 FUNCTION Jbsp_Get_Dt_Picture(
631   p_char_dt IN VARCHAR2 ,
632   p_dt_picture OUT NOCOPY VARCHAR2 )
633 RETURN BOOLEAN AS
634 BEGIN
635 DECLARE
636 	v_return_dt	DATE	:= NULL;
637 	v_char_dt	VARCHAR2(40);
638 BEGIN
639 	-- This function accepts a date string, determines what format
640 	-- should be used to convert the string to a date and returns
641 	-- the date picture and true if a valid date picture found.
642 	v_char_dt := SUBSTR(REPLACE(p_char_dt, '''', ''), 1, 40);
643 	IF v_char_dt IS NULL THEN
644 		p_dt_picture := ' ';
645 		RETURN FALSE;
646 	END IF;
647 	v_return_dt := TO_DATE(v_char_dt, 'DD/MM/YY');
648 	p_dt_picture := 'DD/MM/YY';
649 	RETURN TRUE;
650 	EXCEPTION WHEN OTHERS THEN
651 	BEGIN
652 		v_return_dt := TO_DATE(v_char_dt, 'DD/MM/YYYY');
653 		p_dt_picture := 'DD/MM/YYYY';
654 		RETURN TRUE;
655 		EXCEPTION WHEN OTHERS THEN
656 		BEGIN
657 			v_return_dt := TO_DATE(v_char_dt, 'DD-MM-YY');
658 			p_dt_picture := 'DD-MM-YY';
659 			RETURN TRUE;
660 			EXCEPTION WHEN OTHERS THEN
661 			BEGIN
662 				v_return_dt := TO_DATE(v_char_dt, 'DD-MM-YYYY');
663 				p_dt_picture := 'DD-MM-YYYY';
664 				RETURN TRUE;
665 				EXCEPTION WHEN OTHERS THEN
666 				BEGIN
667 					v_return_dt := TO_DATE(v_char_dt, 'DD-MM-YY HH24:MI:SS');
668 					p_dt_picture := 'DD-MM-YY HH24:MI:SS';
669 					RETURN TRUE;
670 					EXCEPTION WHEN OTHERS THEN
671 					BEGIN
672 						v_return_dt := TO_DATE(v_char_dt, 'DD-MM-YYYY HH24:MI:SS');
673 						p_dt_picture := 'DD-MM-YYYY HH24:MI:SS';
674 						RETURN TRUE;
675 						EXCEPTION WHEN OTHERS THEN
676 						BEGIN
677 							v_return_dt := TO_DATE(v_char_dt, 'DD/MM/YY HH24:MI:SS');
678 							p_dt_picture := 'DD/MM/YY HH24:MI:SS';
679 							RETURN TRUE;
680 							EXCEPTION WHEN OTHERS THEN
681 							BEGIN
682 								v_return_dt := TO_DATE(v_char_dt, 'DD/MM/YYYY HH24:MI:SS');
683 								p_dt_picture := 'DD/MM/YYYY HH24:MI:SS';
684 								RETURN TRUE;
685 								EXCEPTION WHEN OTHERS THEN
686 									p_dt_picture := ' ';
687 									RETURN FALSE;
688 							END;
689 						END;
690 					END;
691 				END;
692 			END;
693 		END;
694 	END;
695 END;
696 END Jbsp_Get_Dt_Picture;
697 
698 END IGS_RU_GEN_006;