DBA Data[Home] [Help]

PACKAGE BODY: APPS.PON_FORMS_JRAD_PVT

Source


1 PACKAGE BODY PON_FORMS_JRAD_PVT AS
2 -- $Header: PONFMJRB.pls 120.12 2010/09/30 10:35:11 irasoolm ship $
3 
4 -- we will switch between 2 regions, created for LOVs
5 -- 1st region will be used for LOVs with value-set validation list type set to 'Independent' or
6 -- 'Translatable Independent'
7 -- the 2nd region will be used for LOVs with value-set validation list type set to 'table'
8 
9 g_jrad_lov_path_sql	CONSTANT VARCHAR2(60) := '/oracle/apps/pon/forms/jrad/webui/ponFormsSqlBasedLovRN';
10 g_jrad_lov_path_tab	CONSTANT VARCHAR2(60) := '/oracle/apps/pon/forms/jrad/webui/ponFormsTableBasedLovRN';
11 g_jrad_lov_pkg_name     CONSTANT VARCHAR2(60) := '/oracle/apps/pon/forms/jrad/lov/webui/';
12 g_jrad_rgn_pkg_name	CONSTANT VARCHAR2(50) := '/oracle/apps/pon/forms/jrad/webui/';
13 g_jrad_ext_poplist	CONSTANT VARCHAR2(60) := '/oracle/apps/pon/forms/jrad/webui/ponExtAbsPoplistRG';
14 g_jrad_ext_page_path	CONSTANT VARCHAR2(60) := '/oracle/apps/pon/forms/jrad/webui/ponExtAbstractTableRG';
15 g_jrad_long_tip_rgn	CONSTANT VARCHAR2(60) := '/oracle/apps/pon/forms/jrad/webui/ponFormsJradLongTipRN';
16 
17 g_ext_abs_vo_name	CONSTANT VARCHAR2(50) := 'AbstractFieldsTableVO';
18 
19 g_lov_code		CONSTANT VARCHAR2(20) := 'Code';
20 g_lov_description	CONSTANT VARCHAR2(20) := 'Description';
21 g_lov_meaning		CONSTANT VARCHAR2(20) := 'Meaning';
22 g_lov_vset_name		CONSTANT VARCHAR2(20) := 'ValueSetName';
23 g_values_viewName	CONSTANT VARCHAR2(20) := 'FormFieldValuesVO';
24 g_sql_poplist_view_name	CONSTANT VARCHAR2(20) := 'SqlBasedPoplistVO';
25 g_tab_poplist_view_name	CONSTANT VARCHAR2(20) := 'TableBasedPoplistVO';
26 
27 
28 g_fnd_debug 		CONSTANT VARCHAR2(1)  := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
29 g_pkg_name 		CONSTANT VARCHAR2(30) := 'PON_FORMS_JRAD_PVT';
30 g_module_prefix 	CONSTANT VARCHAR2(50) := 'pon.plsql.' || g_pkg_name || '.';
31 
32 g_app_module		CONSTANT VARCHAR2(60) := 'oracle.apps.pon.forms.jrad.server.FormsDynamicJradAM';
33 g_controller		CONSTANT VARCHAR2(60) := 'oracle.apps.pon.forms.jrad.webui.FormsDynamicJradCO';
34 g_ext_app_module	CONSTANT VARCHAR2(60) := 'oracle.apps.pon.forms.jrad.server.FormsExtAbstractTableAM';
35 g_ext_controller	CONSTANT VARCHAR2(60) := 'oracle.apps.pon.forms.jrad.webui.FormsExtAbstractTableCO';
36 
37 g_spacer		CONSTANT VARCHAR2(3)  := '---';
38 g_under_score		CONSTANT VARCHAR2(3)  := '_';
39 
40 g_sql_pop_list_count 	INTEGER;
41 g_table_pop_list_count	INTEGER;
42 g_lov_map_count		INTEGER;
43 g_pop_list_count 	INTEGER;
44 g_total_image_count	INTEGER;
45 g_total_element_count	INTEGER;
46 g_base_language		VARCHAR2(4);
47 v_date_list_count 	INTEGER;
48 v_table_vo_count 	INTEGER;
49 
50 
51 /*======================================================================
52  FUNCTION:  ISLOVVALUESET	PRIVATE
53    PARAMETERS: NONE
54    COMMENT   : 	This function is used to escape special characters in the
55 		the prompts for various fields/sections.
56 ======================================================================*/
57 
58 FUNCTION isLovValueSet(p_field_code IN VARCHAR2) RETURN VARCHAR2 IS
59 
60 v_ret_value	VARCHAR2(1);
61 l_api_name	CONSTANT  VARCHAR2(30) := 'ISLOVVALUESET';
62 
63 BEGIN
64 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'BEGIN');
65 
66 	v_ret_value := 'N';
67 
68 	BEGIN
69 		select  decode(fnd_flex_value_sets.longlist_flag, 'X', 'N', 'Y') isLov
70 		into    v_ret_value
71 		from 	pon_fields,
72 			fnd_flex_value_sets
73 		where	pon_fields.value_set_name = fnd_flex_value_sets.flex_value_set_name
74 		and	pon_fields.value_set_name is not null
75 		and	pon_fields.field_code	  = p_field_code;
76 
77 	EXCEPTION
78 		WHEN OTHERS THEN
79 			v_ret_value := 'N';
80 	END;
81 
82 
83 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'RETURN VALUE=' || v_ret_value);
84 
85 	RETURN v_ret_value;
86 
87 END isLovValueSet;
88 
89 
90 
91 /*======================================================================
92  FUNCTION:  ESCAPESPECIALCHAR	PRIVATE
93    PARAMETERS: NONE
94    COMMENT   : 	This function is used to escape special characters in the
95 		the prompts for various fields/sections.
96 ======================================================================*/
97 
98 FUNCTION escapeSpecialChar(p_prompt IN VARCHAR2) RETURN VARCHAR2 IS
99 
100 v_ret_value	VARCHAR2(120);
101 l_api_name	CONSTANT  VARCHAR2(30) := 'ESCAPESPECIALCHAR';
102 
103 BEGIN
104 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'BEGIN');
105 
106 	v_ret_value := replace(p_prompt, '&', '&'||'amp;');
107 
108 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'RETURN VALUE=' || v_ret_value);
109 
110 	RETURN v_ret_value;
111 
112 END escapeSpecialChar;
113 
114 
115 /*======================================================================
116  FUNCTION:  GETPARENTELEMENTINDEX	PRIVATE
117    PARAMETERS: NONE
118    COMMENT   : 	This function is used to determine the index of the parent
119 		item in the tree of region items while creating the JRAD
120 		for a form.
121 ======================================================================*/
122 
123 FUNCTION getParentElementIndex (p_type 		IN VARCHAR2,
124 				p_form_id 	IN NUMBER,
125 				p_section_id	IN NUMBER,
126 				p_incl_sec_id	IN NUMBER,
127 				p_rept_sec_id	IN NUMBER,
128 				p_field_code	IN VARCHAR2) RETURN VARCHAR2 IS
129 
130 v_ret_value	VARCHAR2(120);
131 l_api_name	CONSTANT  VARCHAR2(30) := 'GETPARENTELEMENTINDEX';
132 
133 BEGIN
134 	IF	(p_type = 'FORM') THEN
135 		-- no parent
136 		null;
137 	ELSIF   (p_type = 'FORM_FIELD') THEN
138 		-- parent is form
139 		v_ret_value := 'FORM' 	|| g_spacer || p_form_id || g_spacer || 0
140 					|| g_spacer || 0 	 || g_spacer || 0
141 					|| g_spacer || to_char(null);
142 
143 	ELSIF	(p_type = 'NORMAL_SECTION') THEN
144 		-- parent is form
145 		v_ret_value := 'FORM' 	|| g_spacer || p_form_id || g_spacer || 0
146 					|| g_spacer || 0 	 || g_spacer || 0
147 					|| g_spacer|| to_char(null);
148 
149 	ELSIF	(p_type = 'SECTION_FIELD') THEN
150 		-- parent is normal_section
151 		v_ret_value := 'NORMAL_SECTION'
152 					|| g_spacer || p_form_id || g_spacer  || p_section_id
153 					|| g_spacer || 0 	 || g_spacer  || 0
154 					|| g_spacer|| to_char(null);
155 
156 	ELSIF	(p_type = 'INNER_NORMAL_SECTION') THEN
157 		-- parent is normal_section
158 		v_ret_value := 'NORMAL_SECTION'
159 					|| g_spacer || p_form_id || g_spacer || p_section_id
160 					|| g_spacer || 0 	 || g_spacer || 0
161 					|| g_spacer || to_char(null);
162 
163 	ELSIF	(p_type = 'INNER_SECTION_FIELD') THEN
164 		-- parent is inner_normal_section
165 		v_ret_value := 'INNER_NORMAL_SECTION'
166 					|| g_spacer || p_form_id     || g_spacer || p_section_id
167 					|| g_spacer || p_incl_sec_id || g_spacer || 0
168 					|| g_spacer || to_char(null);
169 
170 	ELSIF	(p_type = 'REPEAT_SECTION') THEN
171 		-- parent is form
172 		v_ret_value := 'FORM' 	|| g_spacer || p_form_id || g_spacer || 0
173 					|| g_spacer || 0 	 || g_spacer || 0
174 					|| g_spacer || to_char(null);
175 
176 	ELSIF	(p_type = 'INNER_REPEAT_SECTION') THEN
177 		-- parent is normal_section
178 		v_ret_value := 'NORMAL_SECTION'
179 					|| g_spacer || p_form_id || g_spacer || p_section_id
180 					|| g_spacer || 0 	 || g_spacer || 0
181 					|| g_spacer || to_char(null);
182 
183 	ELSIF	(p_type = 'INNER_SECTION_REPEAT_SECTION') THEN
184 		-- parent is inner_normal_section
185 		v_ret_value := 'INNER_NORMAL_SECTION'
186 					|| g_spacer || p_form_id     || g_spacer || p_section_id
187 					|| g_spacer || p_incl_sec_id || g_spacer || 0
188 					|| g_spacer || to_char(null);
189 	END IF;
190 
191 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'RETURN VALUE=' || v_ret_value);
192 
193 	RETURN v_ret_value;
194 
195 END getparentelementindex;
196 
197 
198 
199 /*======================================================================
200  FUNCTION:  GETCURRENTELEMENTINDEX	PRIVATE
201    PARAMETERS: NONE
202    COMMENT   : 	This function is used to return the index of the current
203 		region item or region in the entire tree of JRAD items
204 		while constructing the JRAD for a given form.
205 ======================================================================*/
206 
207 FUNCTION getCurrentElementIndex(p_type 		IN VARCHAR2,
208 				p_form_id 	IN NUMBER,
209 				p_section_id	IN NUMBER,
210 				p_incl_sec_id	IN NUMBER,
211 				p_rept_sec_id	IN NUMBER,
212 				p_field_code	IN VARCHAR2) RETURN VARCHAR2 IS
213 
214 v_ret_value	VARCHAR2(120);
215 l_api_name	CONSTANT  VARCHAR2(30) := 'GETCURRENTELEMENTINDEX';
216 
217 BEGIN
218 	v_ret_value := p_type || g_spacer || p_form_id 	   || g_spacer || p_section_id
219 			      || g_spacer || p_incl_sec_id || g_spacer || p_rept_sec_id
220 			      || g_spacer || to_char(null);
221 
222 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'RETURN VALUE=' || v_ret_value);
223 
224 	RETURN v_ret_value;
225 
226 END getCurrentElementIndex;
227 
228 /*======================================================================
229  FUNCTION:  GETDISPLAYTYPE	PRIVATE
230    PARAMETERS: NONE
231    COMMENT   : 	Since we have restrictions on the number of characters
232 		that we can have in a JRAD id, we will follow a certain
233 		convention to construct each JRAD element
234 
235 ======================================================================*/
236 
237 FUNCTION getDisplayType (p_type IN VARCHAR2) RETURN VARCHAR2 IS
238 
239 v_ret_value	VARCHAR2(2);
240 l_api_name	CONSTANT  VARCHAR2(30) := 'GETDISPLAYTYPE';
241 
242 BEGIN
243 
244 -- we do have the following restrictions -
245 -- we cannot have variable names starting with a number
246 -- we cannot have variables names with dashes
247 -- i.e. only alpha-numeric characters and underscores
248 -- max length for a JRAD id in PL/SQL is 60 characters
249 -- i think there's no max length for a java variable name (or atleast < 60 characters)
250 
251 	IF	(p_type = 'FORM') THEN
252 		v_ret_value := 't1';
253 	ELSIF   (p_type = 'FORM_FIELD') THEN
254 		v_ret_value := 't2';
255 	ELSIF	(p_type = 'NORMAL_SECTION') THEN
256 		v_ret_value := 't3';
257 	ELSIF	(p_type = 'SECTION_FIELD') THEN
258 		v_ret_value := 't4';
259 	ELSIF	(p_type = 'INNER_NORMAL_SECTION') THEN
260 		v_ret_value := 't5';
261 	ELSIF	(p_type = 'INNER_SECTION_FIELD') THEN
262 		v_ret_value := 't6';
263 	ELSIF	(p_type = 'REPEAT_SECTION') THEN
264 		v_ret_value := 't7';
265 	ELSIF	(p_type = 'INNER_REPEAT_SECTION') THEN
266 		v_ret_value := 't8';
267 	ELSIF	(p_type = 'INNER_SECTION_REPEAT_SECTION') THEN
268 		v_ret_value := 't9';
269 	ELSE
270 		v_ret_value := 't0';
271 	END IF;
272 
273 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'RETURN VALUE=' || v_ret_value);
274 
275 	RETURN v_ret_value;
276 
277 END getdisplaytype;
278 
279 
280 /*======================================================================
281  FUNCTION:  GETDISPLAYID	PRIVATE
282 
283    PARAMETERS: NONE
284    COMMENT   : 	This function simply returns the passed value or a null
285 		value if the passed value is a -1
286 
287 ======================================================================*/
288 
289 FUNCTION getDisplayId(p_id IN NUMBER ) RETURN VARCHAR2 IS
290 
291 v_ret_value	VARCHAR2(10);
292 l_api_name	CONSTANT  VARCHAR2(30) := 'GETDISPLAYID';
293 
294 BEGIN
295 	IF(p_id = -1) THEN
296 		v_ret_value := to_char(null);
297 	ELSE
298 		v_ret_value := to_char(p_id);
299 	END IF;
300 
301 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'RETURN VALUE=' || v_ret_value);
302 
303 	RETURN v_ret_value;
304 
305 END getDisplayId;
306 
307 
308 
309 /*======================================================================
310  FUNCTION:  GETJRADID	PRIVATE
311    PARAMETERS: NONE
312    COMMENT   : 	This function returns the actual JRAD id to be used while
313 		creating the JRAD for a form in such a way that it will
314 		always be unique in the entire hierarchy
315 
316 ======================================================================*/
317 
318 FUNCTION getJradId(p_type 		IN VARCHAR2,
319 		p_form_id 	IN NUMBER,
320 		p_section_id	IN NUMBER,
321 		p_incl_sec_id	IN NUMBER,
322 		p_rept_sec_id	IN NUMBER,
323 		p_field_code	IN VARCHAR2) RETURN VARCHAR2 IS
324 
325 -- JDR_COMPONENTS.comp_id%TYPE;
326 -- max max 60 characters
327 
328 v_ret_value	VARCHAR2(60);
329 l_api_name	CONSTANT  VARCHAR2(30) := 'GETJRADID';
330 
331 BEGIN
332 	v_ret_value := getDisplayType(p_type)
333 			      || 'FM_'  || getDisplayId(p_form_id)
334 			      || 'TS_'  || getDisplayId(p_section_id)
335 			      || 'IS_'  || getDisplayId(p_incl_sec_id)
336 			      || 'RS_'  || getDisplayId(p_rept_sec_id)
337                               || 'FD_'  || p_field_code;
338 
339 
340 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'RETURN VALUE=' || v_ret_value);
341 
342 	RETURN v_ret_value;
343 
344 END getJradId;
345 
346 
347 
348 /*======================================================================
349  PROCEDURE:  CREATE_LOV	PRIVATE
350    PARAMETERS:
351    COMMENT   : This procedure will create an LOV map for a messageLovInput
352 	       field.
353 ======================================================================*/
354 
355 PROCEDURE CREATE_LOV(
356     p_field_code          IN VARCHAR2,
357     p_vset_name		  IN VARCHAR2,
358     p_mapping_field	  IN VARCHAR2,
359     p_validation_type	  IN VARCHAR2,
360     p_jrad_field_id	  IN VARCHAR2,
361     p_input_elem IN 	  jdr_docbuilder.Element) IS
362 
363     err_num               NUMBER;
364     err_msg               VARCHAR2(100);
365     l_api_name	CONSTANT  VARCHAR2(30) := 'CREATE_LOV';
366     lovMap  		  jdr_docbuilder.ELEMENT;
367 
368 BEGIN
369 	/*
370 	  we want the lookup_type to be transferred from the generated page to the lov region
371 	  we want the meaning to be transferred from the lov region to the generated page
372 	  here's how our lovMappings shud look like
373 	*/
374 
375 	-- from Meaning resultTo _NAME
376 
377    	lovMap := jdr_docbuilder.createElement(jdr_docbuilder.JRAD_NS, 'lovMap');
378    	jdr_docbuilder.setAttribute(lovMap, 'id', 'lovMap' || g_lov_map_count);
379    	jdr_docbuilder.setAttribute(lovMap, 'lovItem', g_lov_meaning);
380 	jdr_docbuilder.setAttribute(lovMap, 'resultTo', p_jrad_field_id);
381 	jdr_docbuilder.setAttribute(lovMap, 'criteriaFrom', p_jrad_field_id);
382    	jdr_docbuilder.addChild(p_input_elem, jdr_docbuilder.JRAD_NS, 'lovMappings',lovMap);
383    	g_lov_map_count := g_lov_map_count  + 1;
384 
385    	lovMap := jdr_docbuilder.createElement(jdr_docbuilder.JRAD_NS, 'lovMap');
386    	jdr_docbuilder.setAttribute(lovMap, 'id', 'lovMap' || g_lov_map_count);
387    	jdr_docbuilder.setAttribute(lovMap, 'lovItem', g_lov_code);
388    	jdr_docbuilder.setAttribute(lovMap, 'resultTo', p_jrad_field_id || '_FORM');
389    	jdr_docbuilder.addChild(p_input_elem, jdr_docbuilder.JRAD_NS, 'lovMappings',lovMap);
390    	g_lov_map_count := g_lov_map_count  + 1;
391 
392 
393 	-- from base-page EO-based VO attribute to lovItem Code
394 	/*
395    	lovMap := jdr_docbuilder.createElement(jdr_docbuilder.JRAD_NS, 'lovMap');
396    	jdr_docbuilder.setAttribute(lovMap, 'id', 'lovMap' || g_lov_map_count);
397    	jdr_docbuilder.setAttribute(lovMap, 'lovItem', g_lov_code);
398    	jdr_docbuilder.setAttribute(lovMap, 'resultTo', p_mapping_field);
399    	jdr_docbuilder.addChild(p_input_elem, jdr_docbuilder.JRAD_NS, 'lovMappings',lovMap);
400    	g_lov_map_count := g_lov_map_count  + 1;
401 	*/
402 
403 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'END');
404 
405 EXCEPTION
406     WHEN OTHERS THEN
407 	PON_FORMS_UTIL_PVT.print_error_log(l_api_name, 'EXCEPTION');
408         err_num := SQLCODE;
409         err_msg := SUBSTR(SQLERRM, 1, 100);
410 
411 END CREATE_LOV;
412 
413 
414 /*======================================================================
415  FUNCTION:  GETBASELANGUAGE	PRIVATE
416    PARAMETERS: NONE
417    COMMENT   : 	This function will get the base language of the instance,
418 	       	We will use this base language to create the default
419 		JRAD XML, although the prompts will be set dynamically
420 		at run time.
421 ======================================================================*/
422 
423 FUNCTION getBaseLanguage RETURN VARCHAR2 IS
424 
425 v_base_language		  FND_LANGUAGES.LANGUAGE_CODE%TYPE;
426 l_api_name	CONSTANT  VARCHAR2(30) := 'GETBASELANGUAGE';
427 
428 BEGIN
429 	-- just initialize this local variable to a default value
430 
431 	V_BASE_LANGUAGE := g_base_language;
432 
433 	SELECT 	LANGUAGE_CODE
434 	INTO 	V_BASE_LANGUAGE
435 	FROM	FND_LANGUAGES
436 	WHERE	NVL(INSTALLED_FLAG, 'X') = 'B';
437 
438 	RETURN  V_BASE_LANGUAGE;
439 
440 EXCEPTION
441     WHEN OTHERS THEN
442 	PON_FORMS_UTIL_PVT.print_error_log(l_api_name, 'EXCEPTION');
443 	RETURN V_BASE_LANGUAGE;
444 
445 END getBaseLanguage;
446 
447 
448 /*======================================================================
449  FUNCTION:  CREATE_ELEMENT	PRIVATE
450    PARAMETERS:
451    COMMENT   : Generic function to create any type of element
452 ======================================================================*/
453 
454 FUNCTION CREATE_ELEMENT (
455 		  p_element_type 	IN VARCHAR2,
456 		  p_element_id 		IN VARCHAR2,
457 		  p_element_prompt 	IN VARCHAR2,
458 		  p_element_dataType 	IN VARCHAR2,
459 		  p_element_tipType 	IN VARCHAR2,
460 		  p_element_viewAttr 	IN VARCHAR2) RETURN JDR_DOCBUILDER.ELEMENT IS
461 
462 v_return_jrad_element JDR_DOCBUILDER.ELEMENT;
463 l_api_name	CONSTANT  VARCHAR2(30) := 'CREATE_ELEMENT';
464 
465 BEGIN
466 
467 	 PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'BEGIN '
468 					|| p_element_type 	|| ' ' || p_element_id   || ' '
469 					|| p_element_dataType 	|| ' ' || p_element_viewAttr);
470 
471 	 v_return_jrad_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, p_element_type);
472 	 JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'id', p_element_id);
473 	 JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'viewAttr', p_element_viewAttr);
474 
475 	if(p_element_type <> 'formValue') then
476 	 	 JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'prompt', escapespecialchar(p_element_prompt));
477 		 JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'dataType', p_element_dataType);
478 		 JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'cellNoWrapFormat', 'true');
479 	end if;
480 
481 
482 	if(p_element_type = 'messageStyledText') then
483 		JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'styleClass', 'OraDataText');
484 	else
485 		if(p_element_tipType = 'dateFormat') then
486 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'tipType', p_element_tipType);
487 		elsif (p_element_tipType = 'longMessage') then
488 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'tipType', 'longMessage');
489 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'longTipRegion', g_jrad_long_tip_rgn);
490 		end if;
491 	end if;
492 
493 	 PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'END');
494 
495 	 return v_return_jrad_element;
496 
497 END CREATE_ELEMENT;
498 
499 
500 /*======================================================================
501  FUNCTION:  CREATE_TABLE_ELEMENT	PRIVATE
502    PARAMETERS:
503    COMMENT   : 	Generic function to create a display-only element in
504 		a table
505 ======================================================================*/
506 
507 FUNCTION CREATE_TABLE_ELEMENT (
508 		  p_element_type 	IN VARCHAR2,
509 		  p_element_id 		IN VARCHAR2,
510 		  p_element_prompt 	IN VARCHAR2,
511 		  p_element_dataType 	IN VARCHAR2,
512 		  p_element_tipType 	IN VARCHAR2,
513 		  p_element_viewAttr 	IN VARCHAR2) RETURN JDR_DOCBUILDER.ELEMENT IS
514 
515 v_return_jrad_element JDR_DOCBUILDER.ELEMENT;
516 l_api_name	CONSTANT  VARCHAR2(30) := 'CREATE_TABLE_ELEMENT';
517 
518 BEGIN
519 
520 	 PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'BEGIN '
521 					|| p_element_type 	|| ' ' || p_element_id   || ' '
522 					|| p_element_dataType 	|| ' ' || p_element_viewAttr);
523 
524 	v_return_jrad_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, p_element_type);
525 	JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'id', p_element_id);
526 	JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'viewAttr', p_element_viewAttr);
527 
528 	JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'prompt', escapespecialchar(p_element_prompt));
529 	JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'dataType', p_element_dataType);
530 	JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'cellNoWrapFormat', 'true');
531 
532 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'END');
533 
534 	return v_return_jrad_element;
535 
536 END CREATE_TABLE_ELEMENT;
537 
538 
539 /*======================================================================
540  FUNCTION:  CREATE_VSET_ELEMENT		PRIVATE
541    PARAMETERS:
542    COMMENT   : 	Function to create any value-set based element in the
543 		JRAD. i.e. either a messageChoice or a messageLovInput
544 		Depending upon the vset definition, we will create the
545 		corresponding JRAD UI element.
546 ======================================================================*/
547 
548 FUNCTION create_vset_element (p_field_jrad_id 	IN VARCHAR2,
549 			      p_field_code	IN VARCHAR2,
550 			      p_field_name	IN VARCHAR2,
551 			      p_field_desc 	IN VARCHAR2,
552 			      p_mapping_field	IN VARCHAR2,
553 			      p_value_set_name	IN VARCHAR2,
554 			      p_in_table	IN VARCHAR2) RETURN JDR_DOCBUILDER.ELEMENT IS
555 
556 v_return_jrad_element 	JDR_DOCBUILDER.ELEMENT;
557 v_display_type 		VARCHAR2(1);
558 v_validation_type	VARCHAR2(1);
559 l_api_name	CONSTANT  VARCHAR2(30) := 'CREATE_VSET_ELEMENT';
560 FND_FLEX_EXCEPTION  EXCEPTION;
561 
562 BEGIN
563 
564 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'BEGIN -'
565 					|| p_field_jrad_id || ' ' || p_field_code || ' '
566 					|| p_mapping_field || ' ' || p_value_set_name);
567 
568 	BEGIN
569 
570 		SELECT  fnd_flex_value_sets.LONGLIST_FLAG, fnd_flex_value_sets.VALIDATION_TYPE
571 		INTO 	v_display_type, v_validation_type
572 		FROM	fnd_flex_value_sets
573 		WHERE 	fnd_flex_value_sets.FLEX_VALUE_SET_NAME = p_value_set_name;
574 
575 	EXCEPTION
576 		WHEN OTHERS THEN
577 			RAISE FND_FLEX_EXCEPTION;
578 	END;
579 
580 	if(v_display_type = 'X') then --{
581 
582 	-- create a poplist
583 
584 		if(p_in_table = 'Y' OR nvl(p_field_desc, 'x@Y#z') = 'x@Y#z' ) then
585 
586 			v_return_jrad_element := create_element ('messageChoice', p_field_jrad_id,
587 			                           	p_field_name, 'VARCHAR2','none',
588 						   	p_mapping_field);
589 
590 		else
591 			v_return_jrad_element := create_element ('messageChoice', p_field_jrad_id,
592 			                           	p_field_name, 'VARCHAR2','longMessage',
593 						   	p_mapping_field);
594 
595 
596 		end if;
597 
598 		if((v_validation_type = 'I') OR (v_validation_type = 'X')) then --{
599 			-- independent or translatable independent
600 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'pickListViewName',g_sql_poplist_view_name || g_sql_pop_list_count);
601 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'pickListDispAttr','Meaning');
602 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'pickListValAttr','Code');
603 			g_sql_pop_list_count := g_sql_pop_list_count + 1;
604 
605 		--}
606 
607 		elsif ((v_validation_type = 'F')) then --{
608 
609 			-- poplist based on a table-based validation set
610 			-- need to create this VO in the middle tier, and associate that VOs attributes here
611 			-- 'Code' is VALUE_COLUMN, 'Meaning' is ID_COLUMN
612 
613 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element,'pickListViewName',g_tab_poplist_view_name||g_table_pop_list_count);
614 
615 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'pickListDispAttr','ID_COLUMN');
616 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'pickListValAttr','VALUE_COLUMN');
617 			g_table_pop_list_count := g_table_pop_list_count + 1;
618 
619 		end if; -- bad type done
620 
621 		--} -- done creating a poplist
622 
623 	elsif( (v_display_type = 'Y' ) OR (v_display_type = 'N')) then --{
624 
625 		-- list of values OR long list of values
626 
627 			if(p_in_table = 'Y' OR nvl(p_field_desc, 'x@Y#z') = 'x@Y#z') then
628 
629 				-- here we should have the JRAD field Id as the VO attribute
630 				-- by default, the user will be able to search on the 'meaning' or
631 				-- user-displayed value
632 				-- the '_FORM' JRAD element will be based on p_mapping_field
633 				v_return_jrad_element := create_element ('messageLovInput', p_field_jrad_id,
634 			                                         p_field_name, 'VARCHAR2', 'none', p_field_jrad_id || '_NAME');
635 			else
636 				v_return_jrad_element := create_element ('messageLovInput', p_field_jrad_id,
637 			                                         p_field_name, 'VARCHAR2', 'longMessage', p_field_jrad_id || '_NAME');
638 			end if;
639 
640 			-- depending upon the validation_type, we will associate this lov, with a different region
641 
642 			if((v_validation_type = 'I') OR (v_validation_type = 'X')) then --{
643 				-- refer to direct sql query
644 				JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'externalListOfValues', g_jrad_lov_path_sql);
645 			--}
646 			elsif ((v_validation_type = 'F')) then --{
647 				-- create a sql query, and then create a vo
648 				JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'externalListOfValues', g_jrad_lov_path_tab);
649 			end if;
650 			--}
651 
652 			-- JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'unvalidated', 'false');
653 
654 			-- need to construct an LOV for v_form_fields_row.field_name
655 			create_lov(p_field_code, p_value_set_name, p_mapping_field,
656 				   v_validation_type, p_field_jrad_id, v_return_jrad_element);
657 			end if; --}
658 
659 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'END');
660 	return v_return_jrad_element;
661 
662 EXCEPTION
663 	WHEN FND_FLEX_EXCEPTION THEN
664 		RAISE_APPLICATION_ERROR(-20010, 'ERROR: FND FLEXFIELD VALIDATION SETS ERRROR FOR VALUE-SET ' || p_value_set_name);
665 END CREATE_VSET_ELEMENT;
666 
667 /*======================================================================
668  FUNCTION:  CREATE_VSET_ELEMENT_SYSFIELD		PRIVATE
669    PARAMETERS:
670    COMMENT   : 	Bug 10149273
671   		Function to create any value-set based element in the
672 		JRAD for system editable field. i.e. either a messageChoice or a messageLovInput
673 		Depending upon the vset definition, we will create the
674 		corresponding JRAD UI element.
675 ======================================================================*/
676 
677 FUNCTION create_vset_element_sysfield (p_field_jrad_id 	IN VARCHAR2,
678 			      p_field_code	IN VARCHAR2,
679 			      p_field_name	IN VARCHAR2,
680 			      p_field_desc 	IN VARCHAR2,
681 			      p_mapping_field	IN VARCHAR2,
682 			      p_value_set_name	IN VARCHAR2,
683 			      p_in_table	IN VARCHAR2) RETURN JDR_DOCBUILDER.ELEMENT IS
684 
685 v_return_jrad_element 	JDR_DOCBUILDER.ELEMENT;
686 v_display_type 		VARCHAR2(1);
687 v_validation_type	VARCHAR2(1);
688 l_api_name	CONSTANT  VARCHAR2(30) := 'CREATE_VSET_ELEMENT_SYSFIELD';
689 FND_FLEX_EXCEPTION  EXCEPTION;
690 
691 BEGIN
692 
693 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'BEGIN -'
694 					|| p_field_jrad_id || ' ' || p_field_code || ' '
695 					|| p_mapping_field || ' ' || p_value_set_name);
696 
697 	BEGIN
698 
699 		SELECT  fnd_flex_value_sets.LONGLIST_FLAG, fnd_flex_value_sets.VALIDATION_TYPE
700 		INTO 	v_display_type, v_validation_type
701 		FROM	fnd_flex_value_sets
702 		WHERE 	fnd_flex_value_sets.FLEX_VALUE_SET_NAME = p_value_set_name;
703 
704 	EXCEPTION
705 		WHEN OTHERS THEN
706 			RAISE FND_FLEX_EXCEPTION;
707 	END;
708 
709 	if(v_display_type = 'X') then --{
710 
711 	-- create a poplist
712 
713 		if(p_in_table = 'Y' OR nvl(p_field_desc, 'x@Y#z') = 'x@Y#z' ) then
714 
715 			v_return_jrad_element := create_element ('messageChoice', p_field_jrad_id,
716 			                           	p_field_name, 'VARCHAR2','none',
717 						   	p_field_code || '_NAME' );
718 
719 		else
720 			v_return_jrad_element := create_element ('messageChoice', p_field_jrad_id,
721 			                           	p_field_name, 'VARCHAR2','longMessage',
722 						   	p_field_code || '_NAME' );
723 
724 
725 		end if;
726 
727 		if((v_validation_type = 'I') OR (v_validation_type = 'X')) then --{
728 			-- independent or translatable independent
729 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'pickListViewName',g_sql_poplist_view_name || g_sql_pop_list_count);
730 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'pickListDispAttr','Meaning');
731 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'pickListValAttr','Code');
732 			g_sql_pop_list_count := g_sql_pop_list_count + 1;
733 
734 		--}
735 
736 		elsif ((v_validation_type = 'F')) then --{
737 
738 			-- poplist based on a table-based validation set
739 			-- need to create this VO in the middle tier, and associate that VOs attributes here
740 			-- 'Code' is VALUE_COLUMN, 'Meaning' is ID_COLUMN
741 
742 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element,'pickListViewName',g_tab_poplist_view_name||g_table_pop_list_count);
743 
744 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'pickListDispAttr','ID_COLUMN');
745 			JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'pickListValAttr','VALUE_COLUMN');
746 			g_table_pop_list_count := g_table_pop_list_count + 1;
747 
748 		end if; -- bad type done
749 
750 		--} -- done creating a poplist
751 
752 	elsif( (v_display_type = 'Y' ) OR (v_display_type = 'N')) then --{
753 
754 		-- list of values OR long list of values
755 
756 			if(p_in_table = 'Y' OR nvl(p_field_desc, 'x@Y#z') = 'x@Y#z') then
757 
758 				-- here we should have the JRAD field Id as the VO attribute
759 				-- by default, the user will be able to search on the 'meaning' or
760 				-- user-displayed value
761 				-- the '_FORM' JRAD element will be based on p_mapping_field
762 				v_return_jrad_element := create_element ('messageLovInput', p_field_jrad_id,
763 			                                         p_field_name, 'VARCHAR2', 'none', p_field_code || '_NAME');
764 			else
765 				v_return_jrad_element := create_element ('messageLovInput', p_field_jrad_id,
766 			                                         p_field_name, 'VARCHAR2', 'longMessage', p_field_code || '_NAME');
767 			end if;
768 
769 			-- depending upon the validation_type, we will associate this lov, with a different region
770 
771 			if((v_validation_type = 'I') OR (v_validation_type = 'X')) then --{
772 				-- refer to direct sql query
773 				JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'externalListOfValues', g_jrad_lov_path_sql);
774 			--}
775 			elsif ((v_validation_type = 'F')) then --{
776 				-- create a sql query, and then create a vo
777 				JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'externalListOfValues', g_jrad_lov_path_tab);
778 			end if;
779 			--}
780 
781 			-- JDR_DOCBUILDER.setAttribute (v_return_jrad_element, 'unvalidated', 'false');
782 
783 			-- need to construct an LOV for v_form_fields_row.field_name
784 			create_lov(p_field_code, p_value_set_name, p_mapping_field,
785 				   v_validation_type, p_field_jrad_id, v_return_jrad_element);
786 			end if; --}
787 
788 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'END');
789 	return v_return_jrad_element;
790 
791 EXCEPTION
792 	WHEN FND_FLEX_EXCEPTION THEN
793 		RAISE_APPLICATION_ERROR(-20010, 'ERROR: FND FLEXFIELD VALIDATION SETS ERRROR FOR VALUE-SET ' || p_value_set_name);
794 END CREATE_VSET_ELEMENT_SYSFIELD;
795 
796 
797 /*======================================================================
798  FUNCTION:  CREATE_TABLE	PRIVATE
799    PARAMETERS:
800    COMMENT   : 	This function is used to add all the columns to the table
801  		of repeating section.
802 ======================================================================*/
803 
804 FUNCTION CREATE_TABLE(
805 	section_id 		 IN NUMBER,
806 	v_section_layout_element IN JDR_DOCBUILDER.ELEMENT,
807 	p_form_ID 		 IN NUMBER,
808 	p_vocount 		 IN INTEGER,
809 	p_readonly_flag		 IN VARCHAR2,
810 	p_row_seq_num		 IN NUMBER)
811 RETURN	JDR_DOCBUILDER.ELEMENT IS
812 
813 l_api_name	CONSTANT  VARCHAR2(30) := 'CREATE_TABLE';
814 
815 CURSOR V_FORM_FIELDS_CURSOR(p_form_id NUMBER) is
816 
817 SELECT	pon_form_section_compiled.FORM_ID,
818 	pon_form_section_compiled.TYPE,
819 	pon_form_section_compiled.FIELD_CODE,
820 	pon_form_section_compiled.MAPPING_FIELD_VALUE_COLUMN,
821 	pon_form_section_compiled.REQUIRED,
822 	NVL (pon_form_section_compiled.LEVEL1_SECTION_ID, -1) LEVEL1_SECTION_ID,
823 	pon_forms_sections.FORM_CODE SECTION_CODE,
824 	pon_fields.DATATYPE ,
825 	pon_fields.VALUE_SET_NAME,
826 	pon_fields.SYSTEM_FLAG,
827 	pon_fields_tl.FIELD_NAME,
828 	pon_fields_tl.DESCRIPTION FIELD_DESCRIPTION,
829 	pon_form_section_compiled.INTERNAL_SEQUENCE_NUMBER,
830 	NVL(pon_form_section_compiled.LEVEL2_SECTION_ID, -1) LEVEL2_SECTION_ID,
831 	NVL(pon_form_section_compiled.REPEATING_SECTION_ID, -1) SECTION_ID
832 FROM	PON_FORM_SECTION_COMPILED,
833 	PON_FIELDS,
834 	PON_FIELDS_TL,
835 	PON_FORMS_SECTIONS
836 WHERE   pon_form_section_compiled.FIELD_CODE = pon_fields.FIELD_CODE(+)
837 AND     pon_form_section_compiled.FIELD_CODE = pon_fields_tl.FIELD_CODE(+)
838 AND	pon_forms_sections.FORM_ID	     = P_FORM_ID
839 AND     pon_form_section_compiled.FORM_ID    = P_FORM_ID
840 AND	pon_form_section_compiled.TYPE	     IN ('FORM_FIELD', 'REPEAT_SECTION')
841 AND	pon_fields_tl.LANGUAGE(+)	     = g_base_language
842 ORDER BY
843 	INTERNAL_SEQUENCE_NUMBER;
844 
845 v_section_field_element 	JDR_DOCBUILDER.ELEMENT;
846 v_message_layout_element	JDR_DOCBUILDER.ELEMENT;
847 v_temp_element 			JDR_DOCBUILDER.ELEMENT;
848 v_column_header_element 	JDR_DOCBUILDER.ELEMENT;
849 v_form_fields_row 		V_FORM_FIELDS_CURSOR%ROWTYPE;
850 v_section_title 		PON_FORMS_SECTIONS_TL.FORM_NAME%TYPE;
851 v_section_code			PON_FORMS_SECTIONS.FORM_CODE%TYPE;
852 v_action_parameters 		JDR_DOCBUILDER.ELEMENT;
853 v_action_parameter 		JDR_DOCBUILDER.ELEMENT;
854 v_curr_formfieldvaluesvo_name 	VARCHAR2(20);
855 v_display_type 			VARCHAR2(1);
856 v_validation_type 		VARCHAR2(1);
857 v_jrad_field_id			VARCHAR2(200);
858 v_jrad_element_id		VARCHAR2(200);
859 v_LEVEL1_SECTION_ID		NUMBER;
860 v_incl_section_id		NUMBER;
861 v_parent_row_type		PON_FORM_SECTION_COMPILED.TYPE%TYPE;
862 v_vset_element_created		VARCHAR2(1);
863 
864 BEGIN
865 
866 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'BEGIN -' || section_id);
867 
868 	v_curr_formfieldvaluesvo_name := g_values_viewName || p_vocount;
869 
870 	--
871 	v_LEVEL1_SECTION_ID  := -1;
872 	v_incl_section_id := -1;
873 	v_vset_element_created := 'N';
874 
875 	IF(section_id <> p_form_id) THEN
876 
877     	/*
878       	  This means we are creating the MDS region for the table associated with
879       	  the form
880        */
881 
882 		select  LEVEL1_SECTION_ID , LEVEL2_SECTION_ID, type
883 		into	v_LEVEL1_SECTION_ID, v_incl_section_id, v_parent_row_type
884 		from	pon_form_section_compiled
885 		where	form_id = p_form_id
886 		and	repeating_section_id = section_id
887 		and 	internal_sequence_number = p_row_seq_num;
888 
889 	END IF;
890 
891 	for v_form_fields_row in V_FORM_FIELDS_CURSOR(section_id) LOOP
892 
893 		-- repeating section within repeating section
894 
895 	    IF (v_form_fields_row.TYPE = 'REPEAT_SECTION') THEN
896 
897 		/*CASE I : REPEATING SECTION WITHIN REPEATING SECTION*/
898 
899   		v_jrad_element_id := getJradId (v_form_fields_row.type,
900                                       p_form_id,
901                                       v_LEVEL1_SECTION_ID,
902                                       v_incl_section_id,
903                                       v_form_fields_row.section_id,  -- pass the inner repeating section id
904                                       v_form_fields_row.field_code);
905 
906     	    ELSE
907 
908 		IF(section_id <> p_form_id) THEN
909 
910 		        /* CASE II : 	WE ARE GENERATING THE JRAD FOR A FORM, BUT NOW WE ARE IN THE
911 			             C	ONTEXT OF GENERATING THE TABLE FOR A REPEATING SECTION WHICH
912 					IS DIRECTLY ATTACHED TO A FORM - I.E. DISPLAYED ON THE MAIN
913 					PAGE OF THE FORM - WE PASS THE FORM-ID AS THE DRIVING KEY
914 			*/
915 
916   			v_jrad_element_id := getJradId (v_form_fields_row.type,
917                                       p_form_id,
918                                       v_LEVEL1_SECTION_ID,
919                                       v_incl_section_id,
920                                       section_id,
921                                       v_form_fields_row.field_code);
922 
923       			v_jrad_field_id := v_jrad_element_id;
924 
925 		ELSE
926 
927 		        /* CASE III : 	WE ARE GENERATING THE JRAD FOR A REPEATING SECTION - A STAND ALONE
928 					JRAD: WE ARE IN THE CONTEXT OF GENERATING THE TABLE FOR A REPEATING SECTION WHICH
929 					IS INSIDE ANOTHER REPEATING SECTION ATTACHED TO A FORM -
930 					I.E. DISPLAYED ON A SEPARATE DRILL-DOWN PAGE OF THE FORM -
931 					WE PASS THE SECTION-ID AS THE DRIVING KEY
932 			*/
933 
934   			v_jrad_element_id := getJradId (v_form_fields_row.type,
935                                       SECTION_ID,
936                                       v_LEVEL1_SECTION_ID,
937                                       v_incl_section_id,
938                                       -1,
939                                       v_form_fields_row.field_code);
940 
941       			v_jrad_field_id := v_jrad_element_id;
942 
943 
944 		END IF;
945 	END IF;
946 
947 		IF (v_form_fields_row.type='REPEAT_SECTION') then --{
948 
949 			  SELECT
950 			  	  forms_tl.form_name , forms.form_code
951 			  INTO
952 				  v_section_title, v_section_code
953 			  FROM
954 				  pon_forms_sections 	forms,
955 				  pon_forms_sections_tl forms_tl
956 			  WHERE
957 				  forms.form_id 	= forms_tl.form_id AND
958 				  forms.form_id		= v_form_fields_row.section_id AND
959 				  forms_tl.LANGUAGE	= g_base_language;
960 
961 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'Creat image for inner repeating section '
962 							|| v_form_fields_row.section_id || ' ' || v_section_title);
963 
964 		 	v_section_field_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'image');
965 			JDR_DOCBUILDER.setAttribute (v_section_field_element, 'id', v_jrad_element_id || 'IMG' || g_total_image_count);
966 			JDR_DOCBUILDER.setAttribute (v_section_field_element, 'serverUnvalidated', 'true');
967 			JDR_DOCBUILDER.setAttribute (v_section_field_element, 'warnAboutChanges', 'false');
968 
969 			if(nvl(p_readonly_flag, 'N') = 'Y') then
970 				JDR_DOCBUILDER.setAttribute (v_section_field_element, 'source', 'eyeglasses_24x24_transparent.gif');
971 			else
972 				JDR_DOCBUILDER.setAttribute (v_section_field_element, 'source', 'rework_enabled.gif');
973 			end if;
974 
975 
976 			v_action_parameters := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'fireAction');
977 			JDR_DOCBUILDER.setAttribute (v_action_parameters, 'event', 'DetailsIconClicked');
978 
979 			-- add all the parameters we want to pass to the details page
980 
981 			v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
982 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'FORM_FIELD_VALUES_ID');
983 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value',
984 						     '${oa.encrypt.' || v_curr_formfieldvaluesvo_name ||  '.FormFieldValueId}');
985 			JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
986 
987 			v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
988 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'FORM_ID');
989 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value',
990 						     '${oa.encrypt.' || v_curr_formfieldvaluesvo_name ||  '.FormId}');
991 			JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
992 
993 
994 			v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
995 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'OWNING_ENTITY_CODE');
996 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value',
997 						     '${oa.encrypt.' || v_curr_formfieldvaluesvo_name ||  '.OwningEntityCode}');
998 			JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
999 
1000 
1001 			v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1002 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'ENTITY_PK1');
1003 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value',
1004 						     '${oa.encrypt.' || v_curr_formfieldvaluesvo_name ||  '.EntityPk1}');
1005 			JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1006 
1007 			v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1008 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'SECTION_ID');
1009 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value',
1010 						     '${oa.encrypt.' || v_curr_formfieldvaluesvo_name ||  '.SectionId}');
1011 			JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1012 
1013 			v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1014 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'PARENT_FIELD_VALUES_FK');
1015 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value',
1016 						     '${oa.encrypt.' || v_curr_formfieldvaluesvo_name ||  '.ParentFieldValuesFk}');
1017 			JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1018 
1019 			v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1020 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'DETAIL_SECTION_CODE');
1021 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value', v_section_code);
1022 			JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1023 
1024 
1025 			v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1026 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'DETAIL_SECTION_ID');
1027 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value', v_form_fields_row.section_id);
1028 			JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1029 
1030 
1031 			v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1032 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'DETAIL_JRAD_PAGE_MODE');
1033 
1034 			if(nvl(p_readonly_flag, 'N') = 'Y') then
1035 				JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value', 'SECTION_READ_ONLY');
1036 			else
1037 				JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value', 'SECTION_DATA_ENTRY');
1038 			end if;
1039 
1040 			JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1041 
1042 
1043 			v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1044 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'FROM_PAGE');
1045 			JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value', 'PON_FORMS_JRAD_GENX');
1046 			JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1047 
1048 			JDR_DOCBUILDER.addChild (v_section_field_element, JDR_DOCBUILDER.UI_NS,
1049 						 'primaryClientAction', v_action_parameters);
1050 		--}
1051 
1052 		elsIF (v_form_fields_row.datatype='LONGTEXT') then --{
1053 
1054 			IF(p_readonly_flag = 'N') THEN
1055 
1056 				v_section_field_element := create_element ('messageTextInput', v_form_fields_row.field_code,
1057 			                                            v_form_fields_row.field_name, 'VARCHAR2',
1058 								   'none',v_form_fields_row.mapping_field_value_column);
1059 
1060 				JDR_DOCBUILDER.setAttribute (v_section_field_element, 'maximumLength', 2000);
1061 			ELSE
1062 				v_section_field_element := create_table_element ('messageStyledText', v_form_fields_row.field_code,
1063 			                                            v_form_fields_row.field_name, 'VARCHAR2',
1064 								   'none',v_form_fields_row.mapping_field_value_column);
1065 
1066 
1067 			END IF;
1068 		 --}
1069 	  	 ELSIF (v_form_fields_row.datatype='DATE') then --{
1070 
1071 			IF(p_readonly_flag = 'N') THEN
1072 
1073 				v_section_field_element := create_element ('messageTextInput', v_jrad_field_id,
1074 			                                            v_form_fields_row.field_name, 'DATE', 'dateFormat',
1075 								    v_form_fields_row.mapping_field_value_column);
1076 
1077 				v_date_list_count := v_date_list_count + 1;
1078 
1079 			ELSE
1080 				v_section_field_element := create_table_element ('messageStyledText', v_jrad_field_id,
1081 			                                            v_form_fields_row.field_name, 'DATE', 'dateFormat',
1082 								    v_form_fields_row.mapping_field_value_column);
1083 
1084 			END IF;
1085 		--}
1086 	  	 ELSIF (v_form_fields_row.datatype='DATETIME') then --{
1087 
1088 			IF(p_readonly_flag = 'N') THEN
1089 
1090 				v_section_field_element := create_element ('messageTextInput', v_jrad_field_id,
1091 			                                            v_form_fields_row.field_name, 'DATETIME','dateFormat',
1092 								    v_form_fields_row.mapping_field_value_column);
1093 
1094 			ELSE
1095 
1096 				v_section_field_element := create_table_element ('messageStyledText', v_jrad_field_id,
1097 			                                            v_form_fields_row.field_name, 'DATETIME','dateFormat',
1098 								    v_form_fields_row.mapping_field_value_column);
1099 
1100 
1101 			END IF;
1102 		--}
1103 	  	 ELSIF (v_form_fields_row.datatype='AMOUNT') then --{
1104 
1105 			IF(p_readonly_flag = 'N') THEN
1106 
1107 				v_section_field_element := create_element ('messageTextInput', v_jrad_field_id,
1108 			                                            v_form_fields_row.field_name, 'NUMBER', 'none',
1109 								    v_form_fields_row.mapping_field_value_column);
1110 
1111 			ELSE
1112 
1113 				v_section_field_element := create_table_element ('messageStyledText', v_jrad_field_id,
1114 			                                            v_form_fields_row.field_name, 'NUMBER', 'none',
1115 								    v_form_fields_row.mapping_field_value_column);
1116 
1117 			END IF;
1118 		--}
1119 	  	 ELSIF (v_form_fields_row.datatype='NUMBER') then --{
1120 
1121 			IF(p_readonly_flag = 'N') THEN
1122 
1123 				v_section_field_element := create_element ('messageTextInput', v_jrad_field_id,
1124 			                                            v_form_fields_row.field_name, 'NUMBER', 'none',
1125 								    v_form_fields_row.mapping_field_value_column);
1126 			ELSE
1127 				v_section_field_element := create_table_element ('messageStyledText', v_jrad_field_id,
1128 			                                            v_form_fields_row.field_name, 'NUMBER', 'none',
1129 								    v_form_fields_row.mapping_field_value_column);
1130 			END IF;
1131 
1132 		--}
1133 		 ELSIF (v_form_fields_row.datatype='TEXT' AND v_form_fields_row.value_set_name is not null) then --{
1134 
1135 			IF(p_readonly_flag = 'Y') THEN
1136 
1137 				v_section_field_element := create_table_element ('messageStyledText', v_jrad_field_id,
1138 			                                            	   v_form_fields_row.field_name, 'VARCHAR2','none',
1139 									   v_jrad_field_id || '_NAME');
1140 									   --v_form_fields_row.field_code || '_NAME');
1141 
1142 			ELSE
1143 				v_section_field_element := create_vset_element (v_jrad_field_id,
1144 									v_form_fields_row.field_code,
1145 									v_form_fields_row.field_name,
1146 									v_form_fields_row.field_description,
1147 									v_form_fields_row.mapping_field_value_column,
1148 									v_form_fields_row.value_set_name,
1149 									'Y');
1150 
1151 				v_vset_element_created := 'Y';
1152 
1153 			END IF;
1154 		--}
1155 	  	 ELSE -- TBD: Unrecognized field --{
1156 
1157 			IF(p_readonly_flag = 'N') THEN
1158 
1159 				v_section_field_element := create_element ('messageTextInput', v_jrad_field_id,
1160 			                                           v_form_fields_row.field_name, 'VARCHAR2','none',
1161 								   v_form_fields_row.mapping_field_value_column);
1162 			ELSE
1163 
1164 				v_section_field_element := create_table_element ('messageStyledText', v_jrad_field_id,
1165 			                                           v_form_fields_row.field_name, 'VARCHAR2','none',
1166 								   v_form_fields_row.mapping_field_value_column);
1167 
1168 			END IF;
1169 
1170 		--}
1171 	  	 END IF;
1172 
1173 		 IF (v_form_fields_row.required='Y') THEN
1174 		 	JDR_DOCBUILDER.setAttribute (v_section_field_element, 'required', 'yes');
1175 		 END IF;
1176 
1177 		IF (v_form_fields_row.type='REPEAT_SECTION') then
1178 
1179 			v_temp_element := JDR_DOCBUILDER.CREATEELEMENT (JDR_DOCBUILDER.OA_NS, 'column');
1180 			JDR_DOCBUILDER.setAttribute (v_temp_element, 'id', v_jrad_element_id || '_COL');
1181 			JDR_DOCBUILDER.setAttribute (v_temp_element, 'columnDataFormat', 'iconButtonFormat');
1182 
1183 		   	JDR_DOCBUILDER.addChild (v_section_layout_element, JDR_DOCBUILDER.UI_NS, 'contents', v_temp_element);
1184 
1185 			JDR_DOCBUILDER.addChild (v_temp_element, JDR_DOCBUILDER.UI_NS, 'contents', v_section_field_element);
1186 
1187 		   	v_column_header_element := JDR_DOCBUILDER.CREATEELEMENT (JDR_DOCBUILDER.OA_NS, 'sortableHeader');
1188 		   	JDR_DOCBUILDER.setAttribute (v_column_header_element, 'id', v_jrad_element_id ||  '_SCLHDR');
1189 		   	JDR_DOCBUILDER.setAttribute (v_column_header_element, 'prompt', escapespecialchar(v_section_title));
1190 		   	JDR_DOCBUILDER.addChild (v_temp_element, JDR_DOCBUILDER.UI_NS, 'columnHeader', v_column_header_element);
1191 		ELSE
1192 			v_temp_element := JDR_DOCBUILDER.CREATEELEMENT (JDR_DOCBUILDER.OA_NS, 'column');
1193 			JDR_DOCBUILDER.setAttribute (v_temp_element, 'id', v_jrad_element_id || '_COL');
1194 
1195 			-- need to set the column format for a 'NUMBER'
1196 
1197 			if ((v_form_fields_row.datatype='NUMBER') OR (v_form_fields_row.datatype='AMOUNT') ) then
1198 				JDR_DOCBUILDER.setAttribute (v_temp_element, 'columnDataFormat', 'numberFormat');
1199 			end if;
1200 
1201 		   	JDR_DOCBUILDER.addChild (v_section_layout_element, JDR_DOCBUILDER.UI_NS, 'contents', v_temp_element);
1202 
1203 		   	JDR_DOCBUILDER.addChild (v_temp_element, JDR_DOCBUILDER.UI_NS, 'contents', v_section_field_element);
1204 
1205 			---- need to create a formValue element for this LOV
1206 
1207 			if(v_vset_element_created = 'Y' and isLovValueSet(v_form_fields_row.field_code) = 'Y') then
1208 
1209 				v_vset_element_created := 'N';
1210 
1211 				v_section_field_element := create_element ('formValue', v_jrad_element_id || '_FORM',
1212 			                                           v_form_fields_row.field_name, 'VARCHAR2', 'none',
1213 								   v_form_fields_row.mapping_field_value_column);
1214 
1215 			       	JDR_DOCBUILDER.setAttribute (v_section_field_element, 'viewName', v_curr_formfieldvaluesvo_name);
1216 			       	JDR_DOCBUILDER.addChild (v_temp_element,jdr_docbuilder.UI_NS,'contents',v_section_field_element);
1217 
1218 			end if;
1219 			--
1220 
1221 		   	v_column_header_element := JDR_DOCBUILDER.CREATEELEMENT (JDR_DOCBUILDER.OA_NS, 'sortableHeader');
1222 		   	JDR_DOCBUILDER.setAttribute (v_column_header_element, 'id', v_jrad_element_id || '_SCLHDR');
1223 		   	JDR_DOCBUILDER.setAttribute (v_column_header_element, 'prompt', escapespecialchar(v_form_fields_row.field_name));
1224 
1225 		    	IF (v_form_fields_row.required='Y') THEN
1226 		       		JDR_DOCBUILDER.setAttribute (v_column_header_element, 'required', 'yes');
1227 		    	END IF;
1228 		   	JDR_DOCBUILDER.addChild (v_temp_element, JDR_DOCBUILDER.UI_NS, 'columnHeader', v_column_header_element);
1229 		END IF;
1230 
1231 	END LOOP;
1232 
1233 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'END');
1234 
1235 	return v_section_layout_element;
1236 
1237 END CREATE_TABLE;
1238 
1239 /*======================================================================
1240  PROCEDURE:  CREATE_REPEATING_SECTION	PRIVATE
1241    PARAMETERS:
1242    COMMENT   : 	This procedure is invoked when a repeating section is
1243 		made active, in order to generate the JRAD regions for
1244 		that section
1245 ======================================================================*/
1246 
1247 PROCEDURE CREATE_REPEATING_SECTION(p_section_id 	IN NUMBER,
1248   				   x_result		OUT NOCOPY  VARCHAR2,
1249   				   x_error_code    	OUT NOCOPY  VARCHAR2,
1250   				   x_error_message 	OUT NOCOPY  VARCHAR2) IS
1251 rval INTEGER;
1252 
1253 v_section_title 	PON_FORMS_SECTIONS_TL.FORM_NAME%TYPE;
1254 
1255 v_section_code		PON_FORMS_SECTIONS.FORM_CODE%TYPE;
1256 v_section_entry_path	PON_FORMS_SECTIONS.JRAD_XML_REGION_NAME%TYPE;
1257 v_section_read_path	PON_FORMS_SECTIONS.JRAD_XML_REGION_NAME_DISP%TYPE;
1258 
1259 
1260 v_section_element 		JDR_DOCBUILDER.ELEMENT;
1261 v_section_layout_element 	JDR_DOCBUILDER.ELEMENT;
1262 v_delete_field_element 		JDR_DOCBUILDER.ELEMENT;
1263 v_delete_parameter 		JDR_DOCBUILDER.ELEMENT;
1264 v_delete_parameters 		JDR_DOCBUILDER.ELEMENT;
1265 v_add_table_row_element 	JDR_DOCBUILDER.ELEMENT;
1266 v_table_footer_element 		JDR_DOCBUILDER.ELEMENT;
1267 v_section_element_rd 		JDR_DOCBUILDER.ELEMENT;
1268 v_section_layout_element_rd 	JDR_DOCBUILDER.ELEMENT;
1269 v_table_footer_element_rd 	JDR_DOCBUILDER.ELEMENT;
1270 v_temp_element 			JDR_DOCBUILDER.ELEMENT;
1271 v_column_header_element 	JDR_DOCBUILDER.ELEMENT;
1272 v_section_tip_element		JDR_DOCBUILDER.ELEMENT;
1273 v_section_desc			PON_FORMS_SECTIONS_TL.FORM_DESCRIPTION%TYPE;
1274 
1275 v_view_name 			VARCHAR2(30);
1276 
1277 mainDocBuyerEntry 		JDR_DOCBUILDER.DOCUMENT;
1278 mainDocReadOnly			JDR_DOCBUILDER.DOCUMENT;
1279 
1280 l_api_name	CONSTANT  VARCHAR2(30) := 'CREATE_REPEATING_SECTION';
1281 
1282 BEGIN
1283 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'BEGIN-');
1284 
1285 	-- initialize to error
1286 	x_result := fnd_api.g_ret_sts_error;
1287 
1288 	-- always use VO1 for independent repeating section
1289 	v_view_name := g_values_viewName || '1';
1290 
1291 	v_section_entry_path := PON_FORMS_UTIL_PVT.getDataEntryRegionName(p_section_id);
1292 	v_section_read_path  := PON_FORMS_UTIL_PVT.getReadOnlyRegionName(p_section_id);
1293 
1294 
1295 	IF (JDR_DOCBUILDER.DOCUMENTEXISTS(v_section_entry_path)=TRUE) THEN
1296 		  JDR_DOCBUILDER.DELETEDOCUMENT (v_section_entry_path);
1297     	END IF;
1298 
1299 
1300 	IF (JDR_DOCBUILDER.DOCUMENTEXISTS(v_section_read_path)=TRUE) THEN
1301 		  JDR_DOCBUILDER.DELETEDOCUMENT (v_section_read_path);
1302     	END IF;
1303 
1304 	-- reset the top level documents
1305 	mainDocBuyerEntry := NULL;
1306 	mainDocReadOnly   := NULL;
1307 
1308 
1309 	-- initialize the mainDoc
1310 	mainDocBuyerEntry := JDR_DOCBUILDER.createDocument (v_section_entry_path,'en-US');
1311 
1312 	mainDocReadOnly	  := JDR_DOCBUILDER.createDocument (v_section_read_path,'en-US');
1313 
1314 	-- initialize a few global variables
1315 	g_sql_pop_list_count 	:= 1; -- display a poplist, vo-based on direct sql query (eg. SqlPopListVO1)
1316 	g_table_pop_list_count	:= 1; -- display a poplist, vo based on a generated sql query (eg. TablePopListVO1)
1317 	g_lov_map_count		:= 1; -- display a lov, total number of LOVs displayed on page
1318 	g_pop_list_count 	:= 1;
1319 
1320 	SELECT
1321 		forms_tl.form_name, forms.form_code, forms_tl.tip_text
1322 	INTO 	v_section_title, v_section_code, v_section_desc
1323 	FROM
1324 		pon_forms_sections forms,
1325 		pon_forms_sections_tl forms_tl
1326 	WHERE
1327 		forms.form_id		= forms_tl.form_id AND
1328 		forms.form_id		= p_section_id AND
1329 		forms_tl.LANGUAGE	= g_base_language;
1330 
1331 	v_section_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'header');
1332 	JDR_DOCBUILDER.setAttribute (v_section_element, 'id', v_section_code);
1333 	JDR_DOCBUILDER.setAttribute (v_section_element, 'text', escapespecialchar(v_section_title));
1334 
1335 	-- add a small tip element if description has been entered
1336 	if(nvl(v_section_desc, 'E') <> 'E') then
1337 		v_section_tip_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'tip');
1338 		JDR_DOCBUILDER.setAttribute (v_section_tip_element, 'id',  v_section_code || '_TIP');
1339 		JDR_DOCBUILDER.setAttribute (v_section_tip_element, 'text', escapespecialchar(v_section_desc));
1340 		JDR_DOCBUILDER.addChild(v_section_element, jdr_docbuilder.UI_NS,'contents',v_section_tip_element);
1341 	end if;
1342 
1343 	v_section_layout_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'advancedTable');
1344 	JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'id', v_section_code||'_table');
1345 	JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'viewName', v_view_name);
1346 	JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'width', '100%');
1347 
1348 	v_table_footer_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'tableFooter');
1349 	JDR_DOCBUILDER.setAttribute (v_table_footer_element, 'id', v_section_code|| '_TABFTR');
1350 	JDR_DOCBUILDER.addChild (v_section_layout_element, JDR_DOCBUILDER.UI_NS, 'footer', v_table_footer_element);
1351 
1352 	v_add_table_row_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'addTableRow');
1353 	JDR_DOCBUILDER.setAttribute (v_add_table_row_element, 'id', v_section_code||'_ADDBTN');
1354 	JDR_DOCBUILDER.setAttribute (v_add_table_row_element, 'autoInsertion', 'false');
1355 	JDR_DOCBUILDER.addChild (v_table_footer_element, JDR_DOCBUILDER.UI_NS, 'contents', v_add_table_row_element);
1356 
1357 	-- add all the remaining columns to this table
1358 	v_section_layout_element := CREATE_TABLE(p_section_id, v_section_layout_element,p_section_id, 1, 'N', -1);
1359 
1360 	v_temp_element := JDR_DOCBUILDER.CREATEELEMENT (JDR_DOCBUILDER.OA_NS, 'column');
1361 	JDR_DOCBUILDER.setAttribute (v_temp_element, 'id', 'columnDelete' || v_section_code);
1362 	JDR_DOCBUILDER.setAttribute (v_temp_element, 'columnDataFormat', 'iconButtonFormat');
1363 	JDR_DOCBUILDER.addChild (v_section_layout_element, JDR_DOCBUILDER.UI_NS, 'contents', v_temp_element);
1364 
1365 	v_column_header_element := JDR_DOCBUILDER.CREATEELEMENT (JDR_DOCBUILDER.OA_NS, 'sortableHeader');
1366 	JDR_DOCBUILDER.setAttribute (v_column_header_element, 'id', 'columnHeader' || v_section_code);
1367 	JDR_DOCBUILDER.setAttribute (v_column_header_element, 'prompt', 'Delete');
1368 	JDR_DOCBUILDER.addChild (v_temp_element, JDR_DOCBUILDER.UI_NS, 'columnHeader', v_column_header_element);
1369 
1370 	-- add a delete image
1371 	v_delete_field_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS,'image');
1372 	JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'id', 'deleteImage' || v_section_code);
1373 	JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'source', 'deleteicon_enabled.gif');
1374 	JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'warnAboutChanges', 'false');
1375 	JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'serverUnvalidated', 'true');
1376 	JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'unvalidated', 'true');
1377 
1378 	JDR_DOCBUILDER.addChild (v_temp_element, JDR_DOCBUILDER.UI_NS, 'contents', v_delete_field_element);
1379 
1380 	v_delete_parameters := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'fireAction');
1381 	JDR_DOCBUILDER.setAttribute (v_delete_parameters, 'event', 'Delete');
1382 	JDR_DOCBUILDER.setAttribute (v_delete_parameters, 'unvalidated', 'true');
1383 	v_delete_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1384 	JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'key', 'Id');
1385 	JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'value', '${oa.encrypt.' || v_view_name ||'.FormFieldValueId}');
1386 	JDR_DOCBUILDER.addChild (v_delete_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_delete_parameter);
1387 	v_delete_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1388 	JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'key', 'ViewName');
1389 	JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'value', v_view_name);
1390 	JDR_DOCBUILDER.addChild (v_delete_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_delete_parameter);
1391 	JDR_DOCBUILDER.addChild (v_delete_field_element, JDR_DOCBUILDER.UI_NS, 'primaryClientAction', v_delete_parameters);
1392 
1393 
1394 	JDR_DOCBUILDER.addChild (v_section_element, jdr_docbuilder.UI_NS,'contents',v_section_layout_element);
1395 
1396 	JDR_DOCBUILDER.setTopLevelElement(mainDocBuyerEntry, v_section_element);
1397 
1398 	--------------------------------------
1399 	-----READ--ONLY--REGION---START-------
1400 	--------------------------------------
1401 
1402 	v_section_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'header');
1403 	JDR_DOCBUILDER.setAttribute (v_section_element_rd, 'id', v_section_code);
1404 	JDR_DOCBUILDER.setAttribute (v_section_element_rd, 'text', escapespecialchar(v_section_title));
1405 
1406 	v_section_layout_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'advancedTable');
1407 	JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'id', v_section_code||'table1');
1408 	JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'viewName', v_view_name);
1409 	JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'width', '100%');
1410 
1411 	v_table_footer_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'tableFooter');
1412 	JDR_DOCBUILDER.setAttribute (v_table_footer_element_rd, 'id', v_section_code|| '_TABFTR');
1413 	JDR_DOCBUILDER.addChild (v_section_layout_element_rd, JDR_DOCBUILDER.UI_NS, 'footer', v_table_footer_element_rd);
1414 
1415 	-- add all the remaining columns to this table
1416 	v_section_layout_element_rd := CREATE_TABLE(p_section_id, v_section_layout_element_rd,p_section_id, 1, 'Y', -1);
1417 	-- add the table as a child of the header section
1418 	JDR_DOCBUILDER.addChild (v_section_element_rd, jdr_docbuilder.UI_NS,'contents',v_section_layout_element_rd);
1419 
1420 	JDR_DOCBUILDER.setTopLevelElement(mainDocReadOnly, v_section_element_rd);
1421 
1422 	--------------------------------------
1423 	-----READ--ONLY--REGION---END---------
1424 	--------------------------------------
1425 
1426 	rval := JDR_DOCBUILDER.save;
1427 
1428 	x_result := fnd_api.g_ret_sts_success;
1429 
1430 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'END');
1431 
1432 EXCEPTION
1433     WHEN OTHERS THEN
1434 	x_result := fnd_api.g_ret_sts_error;
1435 	x_error_code := SQLCODE;
1436 	x_error_message := SUBSTR(SQLERRM, 1, 100);
1437 	PON_FORMS_UTIL_PVT.print_error_log(l_api_name, 'EXCEPTION - x_result=' || x_result || ' x_error_code=' || x_error_code || ' x_error_message=' || x_error_message || ' SQLERRM=' || SQLERRM);
1438 
1439 end CREATE_REPEATING_SECTION;
1440 
1441 
1442 
1443 /*=======================================================
1444  PROCEDURE:  CREATE_ABSTRACT_TABLE	PRIVATE
1445    PARAMETERS:
1446    COMMENT   : 	This procedure is invoked when a abstract
1447 		is made active. Using this procedure, we will
1448 		generate the table to be displayed on the external
1449 		supplier page containing all the negotiations with
1450 		abstracts.
1451 ========================================================*/
1452 PROCEDURE CREATE_ABSTRACT_TABLE(p_form_id 	IN 	NUMBER,
1453   				x_result	OUT NOCOPY  VARCHAR2,
1454   				x_error_code    OUT NOCOPY  VARCHAR2,
1455   				x_error_message OUT NOCOPY  VARCHAR2
1456  ) IS
1457 
1458 l_api_name	CONSTANT  VARCHAR2(30) := 'CREATE_ABSTRACT_TABLE';
1459 
1460 CURSOR V_ABSTRACT_FIELDS_CURSOR IS
1461 
1462 select 	pon_fields.field_code,
1463 	pon_form_section_compiled.mapping_field_value_column,
1464 	pon_fields.datatype,
1465 	pon_fields.value_set_name,
1466 	pon_fields.system_flag,
1467 	pon_fields.system_field_lov_flag,
1468 	pon_fields_tl.field_name,
1469 	pon_fields_tl.description field_description,
1470 	pon_forms_sections.form_id,
1471 	pon_forms_sections.form_code,
1472 	pon_forms_sections_tl.form_name,
1473 	pon_forms_sections_tl.form_description,
1474 	pon_form_section_compiled.display_on_main_page,
1475 	pon_form_section_compiled.internal_sequence_number
1476 from 	pon_fields,
1477 	pon_fields_tl,
1478 	pon_forms_sections,
1479 	pon_forms_sections_tl,
1480 	pon_form_section_compiled
1481 where
1482 	pon_forms_sections.FORM_CODE = 'ABSTRACT'
1483 and	pon_forms_sections.STATUS   = 'ACTIVE'
1484 and	pon_forms_sections.FORM_ID  = pon_form_section_compiled.FORM_ID
1485 and	pon_forms_sections.FORM_ID  = pon_forms_sections_tl.FORM_ID
1486 and	pon_form_section_compiled.TYPE 	= 'FORM_FIELD'
1487 and	pon_form_section_compiled.FIELD_CODE is not null
1488 and	pon_form_section_compiled.FIELD_CODE = pon_fields.FIELD_CODE
1489 and	pon_fields.FIELD_CODE 		= pon_fields_tl.FIELD_CODE
1490 and 	pon_fields_tl.LANGUAGE 		= g_base_language
1491 and	pon_forms_sections_tl.LANGUAGE	= g_base_language
1492 and	nvl(pon_form_section_compiled.display_on_main_page, 'N') = 'Y'
1493 order by
1494 	internal_sequence_number;
1495 
1496 mainDoc				JDR_DOCBUILDER.DOCUMENT;
1497 v_section_element 		JDR_DOCBUILDER.ELEMENT;
1498 v_section_layout_element 	JDR_DOCBUILDER.ELEMENT;
1499 v_section_field_element  	JDR_DOCBUILDER.ELEMENT;
1500 v_table_footer_element		JDR_DOCBUILDER.ELEMENT;
1501 v_action_parameters		JDR_DOCBUILDER.ELEMENT;
1502 v_action_parameter		JDR_DOCBUILDER.ELEMENT;
1503 v_section_case_element		JDR_DOCBUILDER.ELEMENT;
1504 v_section_link_element		JDR_DOCBUILDER.ELEMENT;
1505 v_section_img_element		JDR_DOCBUILDER.ELEMENT;
1506 
1507 v_abstract_fields_row           V_ABSTRACT_FIELDS_CURSOR%ROWTYPE;
1508 v_section_code			PON_FORMS_SECTIONS.FORM_CODE%TYPE;
1509 v_curr_vo_name   		VARCHAR2(100);
1510 rval 				INTEGER;
1511 
1512 BEGIN
1513 
1514 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'BEGIN-');
1515 
1516 	IF (JDR_DOCBUILDER.DOCUMENTEXISTS(g_jrad_ext_page_path)=TRUE) THEN
1517 		  JDR_DOCBUILDER.DELETEDOCUMENT (g_jrad_ext_page_path);
1518     	END IF;
1519 
1520 	v_section_code 			:= 'ABSTRACT';
1521 	v_curr_vo_name 			:= g_ext_abs_vo_name;
1522 
1523 	mainDoc	  := NULL;
1524 
1525 	mainDoc	  := JDR_DOCBUILDER.createDocument(g_jrad_ext_page_path,'en-US');
1526 
1527 	v_section_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'flowLayout');
1528 	JDR_DOCBUILDER.setAttribute (v_section_element, 'id', v_section_code);
1529 	JDR_DOCBUILDER.setAttribute (v_section_element, 'amDefName', g_ext_app_module);
1530 	JDR_DOCBUILDER.setAttribute (v_section_element, 'controllerClass', g_ext_controller);
1531 	JDR_DOCBUILDER.setAttribute (v_section_element, 'headerDisabled', 'true');
1532 
1533 	JDR_DOCBUILDER.setTopLevelElement(mainDoc, v_section_element);
1534 
1535 	/*v_section_layout_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'tableLayout');
1536 	JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'id', v_section_code || '_TAB_LAYOUT');
1537 	JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'extends', g_jrad_ext_poplist);
1538 	JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'headerDisabled', 'true');
1539 
1540 	JDR_DOCBUILDER.addChild (v_section_element, jdr_docbuilder.UI_NS,'contents',v_section_layout_element);*/
1541 
1542 	v_section_layout_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'table');
1543 	JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'id', v_section_code||'_table');
1544 	JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'width', '100%');
1545         JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'shortDesc', fnd_message.get_string ('PON', 'PON_EXT_ABSTRACT_TBL_SHORTDESC'));
1546 
1547 	FOR v_abstract_fields_row in V_ABSTRACT_FIELDS_CURSOR LOOP --{
1548 
1549                 v_section_field_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'messageStyledText');
1550 	 	JDR_DOCBUILDER.setAttribute (v_section_field_element, 'id', v_abstract_fields_row.field_code);
1551  	 	JDR_DOCBUILDER.setAttribute (v_section_field_element, 'prompt', escapespecialchar(v_abstract_fields_row.field_name));
1552 	 	JDR_DOCBUILDER.setAttribute (v_section_field_element, 'dataType', 'VARCHAR2');
1553 	 	JDR_DOCBUILDER.setAttribute (v_section_field_element, 'viewAttr', v_abstract_fields_row.field_code || '_NAME');
1554                	JDR_DOCBUILDER.setAttribute (v_section_field_element, 'viewName', v_curr_vo_name);
1555                	JDR_DOCBUILDER.addChild (v_section_layout_element, jdr_docbuilder.UI_NS,
1556 					'contents',v_section_field_element);
1557 
1558 	END LOOP; --}
1559 
1560 
1561 	-- after adding all the columns in the table, we need to add the following columns as well
1562 	-- 'details' icon
1563 	v_section_field_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'image');
1564 
1565 	JDR_DOCBUILDER.setAttribute (v_section_field_element, 'id', 'detailImage');
1566 
1567 	JDR_DOCBUILDER.setAttribute (v_section_field_element, 'source', 'eyeglasses_24x24_transparent.gif');
1568 	JDR_DOCBUILDER.setAttribute (v_section_field_element, 'warnAboutChanges', 'false');
1569 	JDR_DOCBUILDER.setAttribute (v_section_field_element, 'prompt', 'Details');
1570 
1571 	v_action_parameters := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'fireAction');
1572 	JDR_DOCBUILDER.setAttribute (v_action_parameters, 'event', 'DetailsIconClicked');
1573 
1574 	-- add all the parameters we want to pass to the details page
1575 
1576 	v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1577 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'FORM_ID');
1578 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value', p_form_id);
1579 	JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1580 
1581 
1582 	v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1583 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'OWNING_ENTITY_CODE');
1584 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value', 'PON_AUCTION_HEADERS_ALL');
1585 	JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1586 
1587 
1588 	v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1589 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'ENTITY_PK1');
1590 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value',
1591 					'${oa.encrypt.' || v_curr_vo_name ||  '.AUCTION_HEADER_ID}');
1592 	JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1593 
1594 	v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1595 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'ABSTRACT_AUCTION_STATUS');
1596 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value',
1597 					'${oa.encrypt.' || v_curr_vo_name ||  '.NEGOTIATION_STATUS}');
1598 	JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1599 
1600 
1601 	v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1602 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'JRAD_PAGE_MODE');
1603 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value', 'FORM_READ_ONLY');
1604 	JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1605 
1606 	v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1607 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'ABSTRACT_PDF_FLAG');
1608 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value',
1609 						'${oa.encrypt.' || v_curr_vo_name ||  '.ABSTRACT_PDF_FLAG}');
1610 	JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1611 
1612 	v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1613 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'ORG_ID');
1614 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value',
1615 						'${oa.encrypt.' || v_curr_vo_name ||  '.ORG_ID}');
1616 	JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1617 
1618 	v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1619 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'DOCTYPE_ID');
1620 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value',
1621 						'${oa.encrypt.' || v_curr_vo_name ||  '.DOCTYPE_ID}');
1622 	JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1623 
1624 	v_action_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
1625 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'key', 'FROM_PAGE');
1626 	JDR_DOCBUILDER.setAttribute (v_action_parameter, 'value', 'PON_FORMS_JRAD_GENX');
1627 
1628 	JDR_DOCBUILDER.addChild (v_action_parameters, JDR_DOCBUILDER.UI_NS, 'parameters', v_action_parameter);
1629 
1630 	JDR_DOCBUILDER.addChild (v_section_field_element, JDR_DOCBUILDER.UI_NS, 'primaryClientAction', v_action_parameters);
1631 
1632         JDR_DOCBUILDER.addChild (v_section_layout_element, jdr_docbuilder.UI_NS, 'contents',v_section_field_element);
1633 
1634 	JDR_DOCBUILDER.addChild (v_section_element, jdr_docbuilder.UI_NS, 'contents',v_section_layout_element);
1635 
1636 	JDR_DOCBUILDER.setTopLevelElement(mainDoc, v_section_element);
1637 
1638 	rval := JDR_DOCBUILDER.save;
1639 
1640 	x_result := fnd_api.g_ret_sts_success;
1641 
1642 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'END');
1643 
1644 EXCEPTION
1645     WHEN OTHERS THEN
1646 	x_result := fnd_api.g_ret_sts_error;
1647 	x_error_code := SQLCODE;
1648 	x_error_message := SUBSTR(SQLERRM, 1, 100);
1649 	PON_FORMS_UTIL_PVT.print_error_log(l_api_name, 'EXCEPTION - x_result=' || x_result || ' x_error_code=' || x_error_code || ' x_error_message=' || x_error_message || ' SQLERRM=' || SQLERRM);
1650 
1651 END CREATE_ABSTRACT_TABLE;
1652 
1653 /*======================================================================
1654  PROCEDURE :  CREATE_FORM	PRIVATE
1655    PARAMETERS:
1656    COMMENT   :  This is the mother of all procedures to actually generate
1657 		the JRAD for the corresponding form_id.
1658 ======================================================================*/
1659 
1660 PROCEDURE CREATE_FORM(p_form_id 	IN NUMBER,
1661   		      x_result		OUT NOCOPY  VARCHAR2,
1662   		      x_error_code    	OUT NOCOPY  VARCHAR2,
1663   		      x_error_message 	OUT NOCOPY  VARCHAR2) IS
1664 
1665 l_api_name	CONSTANT VARCHAR2(30) := 'CREATE_FORM';
1666 
1667 CURSOR V_FORM_FIELDS_CURSOR(p_form_id NUMBER) is
1668 
1669 SELECT	pon_form_section_compiled.FORM_ID,
1670 	pon_form_section_compiled.TYPE,
1671 	pon_form_section_compiled.FIELD_CODE,
1672 	pon_form_section_compiled.MAPPING_FIELD_VALUE_COLUMN,
1673 	pon_form_section_compiled.REQUIRED,
1674 	NVL (pon_form_section_compiled.LEVEL1_SECTION_ID, -1) SECTION_ID,
1675 	pon_forms_sections.FORM_CODE SECTION_CODE,
1676 	pon_fields.DATATYPE,
1677 	pon_fields.SYSTEM_FLAG,
1678 	pon_fields.VALUE_SET_NAME,
1679 	pon_fields_tl.FIELD_NAME,
1680 	pon_fields_tl.DESCRIPTION FIELD_DESCRIPTION,
1681 	pon_form_section_compiled.INTERNAL_SEQUENCE_NUMBER,
1682 	NVL(pon_form_section_compiled.LEVEL2_SECTION_ID, -1) LEVEL2_SECTION_ID,
1683 	NVL(pon_form_section_compiled.REPEATING_SECTION_ID, -1) REPEATING_SECTION_ID,
1684   pon_form_section_compiled.EDITABLE
1685 FROM	PON_FORM_SECTION_COMPILED,
1686 	PON_FIELDS,
1687 	PON_FIELDS_TL,
1688 	PON_FORMS_SECTIONS
1689 WHERE   pon_form_section_compiled.FIELD_CODE 		= pon_fields.FIELD_CODE(+)
1690 AND     pon_form_section_compiled.FIELD_CODE 		= pon_fields_tl.FIELD_CODE(+)
1691 AND	pon_forms_sections.FORM_ID	     		= pon_form_section_compiled.FORM_ID
1692 AND     pon_form_section_compiled.FORM_ID    		= P_FORM_ID
1693 AND	NVL(pon_form_section_compiled.ENABLED, 'Y') 	= 'Y'
1694 AND	pon_fields_tl.LANGUAGE(+)	     		= g_base_language
1695 ORDER BY
1696 	INTERNAL_SEQUENCE_NUMBER;
1697 
1698 
1699 TYPE SECTION_LAYOUT_ELEMENTS_TABLE IS TABLE OF JDR_DOCBUILDER.ELEMENT INDEX BY BINARY_INTEGER;
1700 
1701 TYPE SECTION_LAYOUT_TABLE IS TABLE OF JDR_DOCBUILDER.ELEMENT INDEX BY VARCHAR2(120);
1702 
1703 v_section_layout_array 		SECTION_LAYOUT_TABLE;
1704 v_section_layout_array_rd 	SECTION_LAYOUT_TABLE;
1705 v_parent_layout_array_index	VARCHAR2(120);
1706 v_current_layout_array_index	VARCHAR2(120);
1707 
1708 v_form_fields_row 		V_FORM_FIELDS_CURSOR%ROWTYPE;
1709 
1710 v_section_layout_element_array 	SECTION_LAYOUT_ELEMENTS_TABLE;
1711 
1712 v_current_layout_element_index 	BINARY_INTEGER;
1713 
1714 v_section_element_array_rd 	SECTION_LAYOUT_ELEMENTS_TABLE;
1715 
1716 v_current_element_index_rd 	BINARY_INTEGER;
1717 
1718 
1719 v_section_element 		JDR_DOCBUILDER.ELEMENT;
1720 v_section_layout_element 	JDR_DOCBUILDER.ELEMENT;
1721 v_message_layout_element	JDR_DOCBUILDER.ELEMENT;
1722 v_section_field_element  	JDR_DOCBUILDER.ELEMENT;
1723 v_section_tip_element		JDR_DOCBUILDER.ELEMENT;
1724 v_section_tip_element_rd	JDR_DOCBUILDER.ELEMENT;
1725 v_delete_field_element 		JDR_DOCBUILDER.ELEMENT;
1726 v_delete_parameter 		JDR_DOCBUILDER.ELEMENT;
1727 v_delete_parameters 		JDR_DOCBUILDER.ELEMENT;
1728 v_temp_element 			JDR_DOCBUILDER.ELEMENT;
1729 v_column_header_element 	JDR_DOCBUILDER.ELEMENT;
1730 v_add_table_row_element 	JDR_DOCBUILDER.ELEMENT;
1731 v_table_footer_element 		JDR_DOCBUILDER.ELEMENT;
1732 
1733 
1734 v_section_element_rd		JDR_DOCBUILDER.ELEMENT;
1735 v_section_layout_element_rd 	JDR_DOCBUILDER.ELEMENT;
1736 v_section_field_element_rd  	JDR_DOCBUILDER.ELEMENT;
1737 v_lov_mapping_element JDR_DOCBUILDER.ELEMENT;
1738 
1739 v_section_title 		PON_FORMS_SECTIONS_TL.FORM_NAME%TYPE;
1740 v_parent_section_code 		PON_FORMS_SECTIONS.FORM_CODE%TYPE;
1741 v_section_code 			PON_FORMS_SECTIONS.FORM_CODE%TYPE;
1742 v_section_desc			PON_FORMS_SECTIONS_TL.FORM_DESCRIPTION%TYPE;
1743 v_field_jrad_id			VARCHAR2(200);
1744 v_jrad_element_id		VARCHAR2(200);
1745 v_section_id			PON_FORMS_SECTIONS.FORM_ID%TYPE;
1746 
1747 v_LEVEL1_SECTION_ID		PON_FORMS_SECTIONS.FORM_ID%TYPE;
1748 v_parent_section_id		PON_FORMS_SECTIONS.FORM_ID%TYPE;
1749 v_current_section_id		PON_FORMS_SECTIONS.FORM_ID%TYPE;
1750 
1751 v_formfieldvaluesvo_list_count 	INTEGER;
1752 v_form_mcl_count		INTEGER;
1753 v_section_mcl_count		INTEGER;
1754 
1755 v_formfieldvaluesvo_name 	VARCHAR2(100);
1756 v_curr_formfieldvaluesvo_name 	VARCHAR2(100);
1757 v_top_formfieldvaluesvo_name	VARCHAR2(100);
1758 v_display_type 			VARCHAR2(1);
1759 v_validation_type 		VARCHAR2(1);
1760 v_prev_record_type 		PON_FORM_SECTION_COMPILED.TYPE%TYPE;
1761 
1762 rval 				INTEGER;
1763 dataEntryRegion 		JDR_DOCBUILDER.DOCUMENT := NULL;
1764 readOnlyRegion			JDR_DOCBUILDER.DOCUMENT := NULL;
1765 
1766 v_data_entry_rgn_name		VARCHAR2(250);
1767 v_read_only_rgn_name		VARCHAR2(250);
1768 v_vset_element_created		VARCHAR2(1);
1769 
1770 BEGIN
1771 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'BEGIN-');
1772 
1773 	-- we dont need to pass the fullPathName to this procedure
1774 	-- we can generate the region name here
1775 
1776 	v_data_entry_rgn_name := PON_FORMS_UTIL_PVT.getDataEntryRegionName(p_form_id);
1777 	v_read_only_rgn_name  := PON_FORMS_UTIL_PVT.getReadOnlyRegionName(p_form_id);
1778 
1779 	IF (JDR_DOCBUILDER.DOCUMENTEXISTS(v_data_entry_rgn_name)=TRUE) THEN --{
1780 		JDR_DOCBUILDER.DELETEDOCUMENT(v_data_entry_rgn_name);
1781 	END IF; --}
1782 
1783 	IF (JDR_DOCBUILDER.DOCUMENTEXISTS(v_read_only_rgn_name)=TRUE) THEN --{
1784 		JDR_DOCBUILDER.DELETEDOCUMENT(v_read_only_rgn_name);
1785 	END IF; --}
1786 
1787 	-- initialize the dataEntryRegion
1788 	dataEntryRegion := JDR_DOCBUILDER.createDocument(v_data_entry_rgn_name,'en-US');
1789 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'Step 1 - create data-entry region' || v_data_entry_rgn_name);
1790 
1791 	readOnlyRegion  := JDR_DOCBUILDER.createDocument(v_read_only_rgn_name,'en-US');
1792 
1793 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'Step 2 - create read-entry region' || v_read_only_rgn_name);
1794 
1795 	v_current_layout_element_index := 0;
1796 	v_parent_section_code 	:= NULL;
1797 	v_section_code 		:= NULL;
1798 
1799 	-- initialize a few local variables
1800 	v_date_list_count := 1;
1801 	v_table_vo_count := 1;
1802    	v_formfieldvaluesvo_list_count 	:= 1;
1803 	v_form_mcl_count := 0;
1804 	v_section_mcl_count := 0;
1805 	v_parent_section_id  := -9999;
1806 	v_LEVEL1_SECTION_ID     := -9999;
1807 	v_current_section_id := -9999;
1808 	v_prev_record_type   := 'DUMMY';
1809 	v_vset_element_created := 'N';
1810 
1811     	v_formfieldvaluesvo_name 	:= 'FormFieldValuesVO';
1812 	v_top_formfieldvaluesvo_name	:= 'FormFieldValuesVO1';
1813     	v_curr_formfieldvaluesvo_name 	:= 'FormFieldValuesVO1';
1814 
1815 	FOR v_form_fields_row in V_FORM_FIELDS_CURSOR (p_form_id) LOOP --{
1816 
1817 		v_jrad_element_id := getJradId (v_form_fields_row.type,
1818 						v_form_fields_row.form_id,
1819 						v_form_fields_row.section_id,
1820 						v_form_fields_row.LEVEL2_SECTION_ID,
1821 						v_form_fields_row.repeating_section_id,
1822 						v_form_fields_row.field_code);
1823 
1824 		IF(v_form_fields_row.type='FORM') THEN --{
1825 
1826 			v_parent_section_id  := -1;
1827 			v_current_section_id := v_form_fields_row.form_id;
1828 			v_LEVEL1_SECTION_ID     := -1;
1829 
1830 			--Create a new header section
1831 			v_section_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'header');
1832 			--Create a new header section for read only region
1833 			v_section_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'header');
1834 
1835 			--get the section title
1836 
1837 			SELECT
1838 				forms_tl.form_name, forms.form_code
1839 			INTO
1840 				v_section_title, v_section_code
1841 			FROM
1842 				pon_forms_sections forms,
1843 				pon_forms_sections_tl forms_tl
1844 			WHERE
1845 				forms.form_id		= forms_tl.form_id AND
1846 				forms.form_id		= v_current_section_id AND
1847 				forms_tl.LANGUAGE	= g_base_language;
1848 
1849 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case 1+ : create header region for section ' || v_section_code);
1850 
1851 			JDR_DOCBUILDER.setAttribute (v_section_element, 'id', v_jrad_element_id);
1852 
1853 			JDR_DOCBUILDER.setAttribute (v_section_element, 'text', escapespecialchar(v_section_title));
1854 
1855 			JDR_DOCBUILDER.setAttribute (v_section_element_rd, 'id', v_jrad_element_id);
1856 
1857 			JDR_DOCBUILDER.setAttribute (v_section_element_rd, 'text', escapespecialchar(v_section_title));
1858 
1859 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case 1+ - top level element is ' || v_current_section_id);
1860 
1861 			JDR_DOCBUILDER.setTopLevelElement(dataEntryRegion, v_section_element);
1862 
1863 			JDR_DOCBUILDER.setTopLevelElement(readOnlyRegion, v_section_element_rd);
1864 
1865 			--add the layout to the array
1866 			---
1867 			v_current_layout_array_index := getCurrentElementIndex(v_form_fields_row.type, p_form_id, 0, 0, 0, null);
1868 			v_section_layout_array(v_current_layout_array_index) := v_section_element;
1869 
1870 			----------------------------------------------------------------------------------------
1871 			-----READ-ONLY-REGION-START-------------------------------------------------------------
1872 			----------------------------------------------------------------------------------------
1873 			v_section_layout_array_rd(v_current_layout_array_index) := v_section_element_rd;
1874 			----------------------------------------------------------------------------------------
1875 			-----READ-ONLY-REGION-END---------------------------------------------------------------
1876 			----------------------------------------------------------------------------------------
1877 
1878 
1879 		--}
1880 
1881 		ELSIF (v_form_fields_row.type='FORM_FIELD') THEN
1882 		--{
1883 
1884 			IF(v_prev_record_type <> 'FORM_FIELD') THEN --{
1885 
1886 				v_parent_section_id  := v_form_fields_row.form_id;
1887 				v_current_section_id := v_form_fields_row.form_id;
1888 				v_LEVEL1_SECTION_ID     := -1;
1889 
1890 				--create a section layout(MCL) and add it to the new section
1891 				-- create a MCL
1892 				v_form_mcl_count := v_form_mcl_count + 1;
1893 				v_section_layout_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS,
1894 											  'messageComponentLayout');
1895 
1896 				v_section_layout_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS,
1897 											  'messageComponentLayout');
1898 
1899 				v_section_mcl_count := v_section_mcl_count + 1;
1900 
1901 				v_curr_formfieldvaluesvo_name := v_top_formfieldvaluesvo_name;
1902 
1903 				JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'id',
1904 							     v_section_code||'_MCL'|| v_section_mcl_count);
1905 
1906 				JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'columns', '2');
1907 				JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'rows', '1');
1908 
1909 				v_parent_layout_array_index := getParentElementIndex(v_form_fields_row.type, p_form_id, 0, 0, 0, null);
1910 
1911 				JDR_DOCBUILDER.addChild (v_section_layout_array(v_parent_layout_array_index),jdr_docbuilder.UI_NS,
1912 							'contents',v_section_layout_element);
1913 
1914 				--------------------------------------------
1915 				-----READ-ONLY-REGION-START-----------------
1916 				--------------------------------------------
1917 
1918 				JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'id',
1919 							     v_section_code||'_MCL'|| v_section_mcl_count);
1920 
1921 				JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'columns', '2');
1922 				JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'rows', '1');
1923 
1924 			  	-- add the MCL region as a child of the top-level header region
1925 
1926 				JDR_DOCBUILDER.addChild (v_section_layout_array_rd(v_parent_layout_array_index),jdr_docbuilder.UI_NS,
1927  							'contents', v_section_layout_element_rd);
1928 
1929 				--------------------------------------------
1930 				-----READ-ONLY-REGION-END-------------------
1931 				--------------------------------------------
1932 
1933 
1934 			END IF; --}
1935 
1936 		--}
1937 
1938 		ELSIF (v_form_fields_row.type='NORMAL_SECTION') THEN
1939 		--{
1940 
1941 			-- this is the 1st occurence of the section_field
1942 
1943 			v_parent_section_id  := v_form_fields_row.form_id;
1944 			v_current_section_id := v_form_fields_row.section_id;
1945 			v_LEVEL1_SECTION_ID     := v_current_section_id;
1946 
1947 			-- add the mcl as a child of the header region
1948 
1949 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case 2+ : v_parent_section_id = '
1950 							|| v_parent_section_id  || ' v_current_section_id = '
1951 							|| v_current_section_id || ' v_LEVEL1_SECTION_ID = ' || v_LEVEL1_SECTION_ID);
1952 
1953 			--Create a new header section
1954 			v_section_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'header');
1955 			--Create a new header section for the readonly region as well
1956 			v_section_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'header');
1957 
1958 			--get the section title
1959 
1960 			SELECT
1961 				forms_tl.form_name, forms.form_code, forms_tl.tip_text
1962 			INTO
1963 				v_section_title, v_section_code, v_section_desc
1964 			FROM
1965 				pon_forms_sections forms,
1966 				pon_forms_sections_tl forms_tl
1967 			WHERE
1968 				forms.form_id		= forms_tl.form_id AND
1969 				forms.form_id		= v_current_section_id AND
1970 				forms_tl.LANGUAGE	= g_base_language;
1971 
1972 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case 2+ - create header region for section ' || v_section_code);
1973 
1974 			JDR_DOCBUILDER.setAttribute (v_section_element, 'id', v_jrad_element_id);
1975 			JDR_DOCBUILDER.setAttribute (v_section_element, 'text', escapespecialchar(v_section_title));
1976 			g_total_element_count := g_total_element_count + 1;
1977 
1978 			JDR_DOCBUILDER.setAttribute (v_section_element_rd, 'id', v_jrad_element_id);
1979 			JDR_DOCBUILDER.setAttribute (v_section_element_rd, 'text', escapespecialchar(v_section_title));
1980 
1981 			-- add the header region of the section as a child of the toplevel header region of the form
1982 			v_current_layout_array_index := getCurrentElementIndex (v_form_fields_row.type,p_form_id,v_current_section_id,
1983 										0,0,null);
1984 
1985 			v_parent_layout_array_index  := getParentElementIndex  (v_form_fields_row.type,p_form_id,v_current_section_id,
1986 										0,0,null);
1987 			--add the layout to the array
1988 			JDR_DOCBUILDER.addChild(v_section_layout_array(v_parent_layout_array_index),
1989 						jdr_docbuilder.UI_NS,'contents',v_section_element);
1990 
1991 			v_section_layout_array(v_current_layout_array_index) := v_section_element;
1992 
1993 			-- add a small tip element if description has been entered
1994 			if(nvl(v_section_desc, 'E') <> 'E') then
1995 				v_section_tip_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS,
1996 										       'tip');
1997 
1998 				JDR_DOCBUILDER.setAttribute (v_section_tip_element, 'id', v_jrad_element_id || '_TIP');
1999 				JDR_DOCBUILDER.setAttribute (v_section_tip_element, 'text', escapespecialchar(v_section_desc));
2000 				JDR_DOCBUILDER.addChild(v_section_element,
2001 							jdr_docbuilder.UI_NS,'contents',v_section_tip_element);
2002 
2003 			else
2004 				v_section_desc := to_char(null);
2005 			end if;
2006 
2007 			------------------------------------------
2008 			---READONLY--REGION--START----------------
2009 			------------------------------------------
2010 
2011 			JDR_DOCBUILDER.addChild(v_section_layout_array_rd(v_parent_layout_array_index),
2012 						jdr_docbuilder.UI_NS,'contents',v_section_element_rd);
2013 
2014 			v_section_layout_array_rd(v_current_layout_array_index) := v_section_element_rd;
2015 
2016 			if(nvl(v_section_desc, 'E') <> 'E') then
2017 				v_section_tip_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'tip');
2018 				JDR_DOCBUILDER.setAttribute (v_section_tip_element_rd, 'id', v_jrad_element_id || '_TIP');
2019 				JDR_DOCBUILDER.setAttribute (v_section_tip_element_rd, 'text', escapespecialchar(v_section_desc));
2020 				JDR_DOCBUILDER.addChild(v_section_element_rd,
2021 							jdr_docbuilder.UI_NS,'contents',v_section_tip_element_rd);
2022 			else
2023 				v_section_desc := to_char(null);
2024 			end if;
2025 
2026 			--------------------------------------------
2027 			-----READ-ONLY-REGION-END-------------------
2028 			--------------------------------------------
2029 		--}
2030 
2031 		ELSIF (v_form_fields_row.type='SECTION_FIELD') THEN
2032 		--{
2033 			-- if this is the 1st occurence of a section field, then we will need
2034 			-- to create a MCL OR
2035 			-- if we haven't previously created an MCL for this section
2036 			-- normal adding of fields to an MCL for a section will be handled below,
2037 			-- here, we will determine whether or not this field appears in a section
2038 			-- apart from the remaining group of fields in the section
2039 
2040 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case ' || v_form_fields_row.type || ' :-: ' || v_prev_record_type);
2041 
2042 			IF(v_prev_record_type <> 'SECTION_FIELD') THEN
2043 			--{
2044 				v_parent_section_id := v_form_fields_row.form_id;
2045 				v_current_section_id := v_form_fields_row.section_id;
2046 				v_LEVEL1_SECTION_ID := v_current_section_id;
2047 
2048 				PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case '|| v_form_fields_row.type ||':+:'
2049 										      || v_current_section_id);
2050 
2051 				-- we have already created a oa:header region for this section
2052 				-- but just that this field has been added to this section out-of-order
2053 				-- so create a MCL
2054 				v_section_layout_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS,
2055 											  'messageComponentLayout');
2056 
2057 
2058 				v_section_layout_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS,
2059 											  'messageComponentLayout');
2060 
2061 
2062 				v_section_mcl_count := v_section_mcl_count + 1;
2063 
2064 				v_curr_formfieldvaluesvo_name := v_top_formfieldvaluesvo_name;
2065 
2066 
2067                                 SELECT
2068                                         forms_tl.form_name, forms.form_code, forms_tl.tip_text
2069                                 INTO
2070                                         v_section_title, v_section_code, v_section_desc
2071                                 FROM
2072                                         pon_forms_sections forms,
2073                                         pon_forms_sections_tl forms_tl
2074                                 WHERE
2075                                         forms.form_id           = forms_tl.form_id AND
2076                                         forms.form_id           = v_current_section_id AND
2077                                         forms_tl.LANGUAGE       = g_base_language;
2078 
2079 
2080 				JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'id',
2081 							     v_section_code||'_MCL'|| v_section_mcl_count);
2082 
2083 				JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'columns', '2');
2084 				JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'rows', '1');
2085 
2086 				-- add the MCL as a child of the header region of the section
2087 				-- we have already created that oa:header region before in type='normal-section'
2088 				------------------------------------------------------------------------------------
2089 				v_parent_layout_array_index :=getParentElementIndex(v_form_fields_row.type,p_form_id,v_current_section_id,
2090 										    0,0,null);
2091 
2092 				JDR_DOCBUILDER.addChild(v_section_layout_array(v_parent_layout_array_index),
2093 							jdr_docbuilder.UI_NS,'contents',v_section_layout_element);
2094 				------------------------------------------------------------------------------------
2095 
2096 				-------------------------------------------
2097 				-- READONLY--REGION--START-----------------
2098 				-------------------------------------------
2099 				JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'id',
2100 							     v_section_code||'_MCL'|| v_section_mcl_count);
2101 
2102 				JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'columns', '2');
2103 				JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'rows', '1');
2104 
2105 				JDR_DOCBUILDER.addChild(v_section_layout_array_rd(v_parent_layout_array_index),
2106 							jdr_docbuilder.UI_NS,'contents',v_section_layout_element_rd);
2107 
2108 				--------------------------------------------
2109 				-- READONLY--REGION--END--------------------
2110 				--------------------------------------------
2111 
2112 			END IF;
2113 			--}
2114 		--}
2115 
2116 		ELSIF (v_form_fields_row.type='INNER_NORMAL_SECTION') THEN
2117 		--{
2118 
2119 			v_parent_section_id  := v_form_fields_row.section_id;
2120 			v_current_section_id := v_form_fields_row.LEVEL2_SECTION_ID;
2121 			v_LEVEL1_SECTION_ID     := v_parent_section_id;
2122 
2123 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case 3+ : v_parent_section_id = '
2124 							|| v_parent_section_id  || ' v_current_section_id = '
2125 							|| v_current_section_id || ' v_LEVEL1_SECTION_ID = ' || v_LEVEL1_SECTION_ID);
2126 
2127 			--Create a new header section
2128 			v_section_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'header');
2129 
2130 
2131 			--Create a new header section
2132 			v_section_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'header');
2133 
2134 			--get the section title
2135 
2136 			SELECT
2137 				forms_tl.form_name, forms.form_code, forms_tl.tip_text
2138 			INTO
2139 				v_section_title, v_section_code, v_section_desc
2140 			FROM
2141 				pon_forms_sections forms,
2142 				pon_forms_sections_tl forms_tl
2143 			WHERE
2144 					forms.form_id		= forms_tl.form_id AND
2145 					forms.form_id		= v_current_section_id AND
2146 					forms_tl.LANGUAGE	= g_base_language;
2147 
2148 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case 3+ : create header region for section ' || v_section_code);
2149 
2150 			JDR_DOCBUILDER.setAttribute (v_section_element, 'id', v_jrad_element_id);
2151 			JDR_DOCBUILDER.setAttribute (v_section_element, 'text', escapespecialchar(v_section_title));
2152 
2153 			JDR_DOCBUILDER.setAttribute (v_section_element_rd, 'id', v_jrad_element_id);
2154 			JDR_DOCBUILDER.setAttribute (v_section_element_rd, 'text', escapespecialchar(v_section_title));
2155 
2156 			------------------------------------------------------------------------------------
2157 			v_current_layout_array_index := getCurrentElementIndex(v_form_fields_row.type,p_form_id,v_parent_section_id,
2158 									       v_current_section_id,0,null);
2159 
2160 			v_parent_layout_array_index  := getParentElementIndex(v_form_fields_row.type,p_form_id,v_parent_section_id,
2161 									      v_current_section_id,0,null);
2162 
2163 			JDR_DOCBUILDER.addChild(v_section_layout_array(v_parent_layout_array_index),
2164 						jdr_docbuilder.UI_NS,'contents',v_section_element);
2165 
2166 			v_section_layout_array(v_current_layout_array_index) := v_section_element;
2167 
2168 			------------------------------------------------------------------------------------
2169 
2170 			-- add a small tip element if description has been entered
2171 			if(nvl(v_section_desc, 'E') <> 'E') then
2172 				v_section_tip_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'tip');
2173 				JDR_DOCBUILDER.setAttribute (v_section_tip_element, 'id', v_jrad_element_id || '_TIP');
2174 				JDR_DOCBUILDER.setAttribute (v_section_tip_element, 'text', escapespecialchar(v_section_desc));
2175 				JDR_DOCBUILDER.addChild(v_section_element,
2176 							jdr_docbuilder.UI_NS,'contents',v_section_tip_element);
2177 
2178 			else
2179 				v_section_desc := to_char(null);
2180 			end if;
2181 			---------------------------------------
2182 			--- READ-ONLY-REGION-START-------------
2183 			---------------------------------------
2184 
2185 			JDR_DOCBUILDER.addChild(v_section_layout_array_rd(v_parent_layout_array_index),
2186 						jdr_docbuilder.UI_NS,'contents',v_section_element_rd);
2187 
2188 			v_section_layout_array_rd(v_current_layout_array_index) := v_section_element_rd;
2189 
2190 			if(nvl(v_section_desc, 'E') <> 'E') then
2191 				v_section_tip_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS,'tip');
2192 				JDR_DOCBUILDER.setAttribute (v_section_tip_element_rd, 'id', v_jrad_element_id || '_TIP');
2193 				JDR_DOCBUILDER.setAttribute (v_section_tip_element_rd, 'text', escapespecialchar(v_section_desc));
2194 				JDR_DOCBUILDER.addChild(v_section_element_rd,
2195 							jdr_docbuilder.UI_NS,'contents',v_section_tip_element_rd);
2196 			else
2197 				v_section_desc := to_char(null);
2198 			end if;
2199 			---------------------------------------
2200 			--- READ-ONLY-REGION-END-------------
2201 			---------------------------------------
2202 		--}
2203 
2204 		ELSIF (v_form_fields_row.type='INNER_SECTION_FIELD') THEN
2205 		--{
2206 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case ' || v_form_fields_row.type || ' :-: ' || v_prev_record_type);
2207 
2208 			IF(v_prev_record_type <> 'INNER_SECTION_FIELD') THEN
2209 			--{
2210 
2211 				v_parent_section_id  := v_form_fields_row.section_id;
2212 				v_current_section_id := v_form_fields_row.LEVEL2_SECTION_ID;
2213 				v_LEVEL1_SECTION_ID     := v_parent_section_id;
2214 
2215 				-- we have encountered a field inside a inner section, which was
2216 				-- added out-of-order from the original set of fields directly
2217 				-- inside the
2218 
2219 				PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case'||v_form_fields_row.type||':+:'||v_current_section_id);
2220 
2221 				--create a section layout(MCL) and add it to the new section
2222 				v_section_layout_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS,
2223 											  'messageComponentLayout');
2224 
2225 				--create a section layout(MCL) and add it to the new section
2226 				v_section_layout_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS,
2227 											  'messageComponentLayout');
2228 				-- increment the total number of MCLs we have created so far
2229 				v_section_mcl_count := v_section_mcl_count + 1;
2230 
2231 				-- since we are creating a MCL for the main page normal section, the top-level
2232 				-- view object should be used
2233 				v_curr_formfieldvaluesvo_name := v_top_formfieldvaluesvo_name;
2234 
2235                                 SELECT
2236                                         forms_tl.form_name, forms.form_code, forms_tl.tip_text
2237                                 INTO
2238                                         v_section_title, v_section_code, v_section_desc
2239                                 FROM
2240                                         pon_forms_sections forms,
2241                                         pon_forms_sections_tl forms_tl
2242                                 WHERE
2243                                         forms.form_id           = forms_tl.form_id AND
2244                                         forms.form_id           = v_current_section_id AND
2245                                         forms_tl.LANGUAGE       = g_base_language;
2246 
2247 				JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'id',
2248 							     v_section_code||'_MCL' || v_section_mcl_count);
2249 
2250 				JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'columns', '2');
2251 				JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'rows', '1');
2252 
2253 				------------------------------------------------------------------------------------
2254 				v_parent_layout_array_index :=getParentElementIndex(v_form_fields_row.type,p_form_id,v_parent_section_id,
2255 										    v_current_section_id,0,null);
2256 
2257 				JDR_DOCBUILDER.addChild(v_section_layout_array(v_parent_layout_array_index),
2258 							jdr_docbuilder.UI_NS,'contents',v_section_layout_element);
2259 				------------------------------------------------------------------------------------
2260 
2261 				-----------------------------------
2262 				-----READ-ONLY-REGION-START--------
2263 				-----------------------------------
2264 
2265 				JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'id',
2266 							     v_section_code||'_MCL' || v_section_mcl_count);
2267 
2268 				JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'columns', '2');
2269 				JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'rows', '1');
2270 				JDR_DOCBUILDER.addChild(v_section_layout_array_rd(v_parent_layout_array_index),
2271 							jdr_docbuilder.UI_NS,'contents',v_section_layout_element_rd);
2272 
2273 				-----------------------------------
2274 				-----READ-ONLY-REGION-END----------
2275 				-----------------------------------
2276 
2277 			END IF;
2278 			--}
2279 
2280 		--}
2281 
2282 		ELSIF (v_form_fields_row.type='REPEAT_SECTION') THEN
2283 		--{
2284 
2285 			-- this is a repeating section inside the form
2286 
2287 			v_parent_section_id  := v_form_fields_row.form_id;
2288 			v_current_section_id := v_form_fields_row.repeating_section_id;
2289 			v_LEVEL1_SECTION_ID     := v_current_section_id;
2290 
2291 			-- create a header section
2292 
2293 			v_section_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'header');
2294 
2295 			v_section_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'header');
2296 
2297 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case 4+ : v_parent_section_id = '
2298 							|| v_parent_section_id  || ' v_current_section_id = '
2299 							|| v_current_section_id || ' v_LEVEL1_SECTION_ID = '
2300 							|| v_LEVEL1_SECTION_ID);
2301 
2302 			-- get the section title
2303 			SELECT
2304 				forms_tl.form_name, forms.form_code
2305 			INTO
2306 				v_section_title, v_section_code
2307 			FROM
2308 				pon_forms_sections forms,
2309 				pon_forms_sections_tl forms_tl
2310 			WHERE
2311 				forms.form_id		= forms_tl.form_id AND
2312 				forms.form_id		= v_current_section_id AND
2313 				forms_tl.LANGUAGE	= g_base_language;
2314 
2315 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case 4+ : create header region for section - '
2316 								|| v_section_code );
2317 
2318 			JDR_DOCBUILDER.setAttribute (v_section_element, 'id', v_jrad_element_id);
2319 			JDR_DOCBUILDER.setAttribute (v_section_element, 'text', escapespecialchar(v_section_title));
2320 
2321 			JDR_DOCBUILDER.setAttribute (v_section_element_rd, 'id', v_jrad_element_id);
2322 			JDR_DOCBUILDER.setAttribute (v_section_element_rd, 'text', escapespecialchar(v_section_title));
2323 
2324 			-- set all table-level JRAD attributes
2325 			v_section_layout_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'advancedTable');
2326 			v_section_layout_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'advancedTable');
2327 			-- increment the VO count by one
2328 			v_formfieldvaluesvo_list_count := v_formfieldvaluesvo_list_count + 1;
2329 			v_curr_formfieldvaluesvo_name := v_formfieldvaluesvo_name || v_formfieldvaluesvo_list_count;
2330 
2331 			JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'id', v_jrad_element_id ||'_table');
2332 			JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'viewName', v_curr_formfieldvaluesvo_name);
2333 			JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'width', '100%');
2334 
2335 			JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'id', v_jrad_element_id ||'_table');
2336 			JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'viewName',
2337 						     v_curr_formfieldvaluesvo_name);
2338 
2339 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'Setting viewName for ' || v_section_code
2340 							||'_table' || ' ' || v_curr_formfieldvaluesvo_name);
2341 
2342 			JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'width', '100%');
2343 
2344 			-- create a table footer, and this footer as a child of the table region
2345 			v_table_footer_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'tableFooter');
2346 			JDR_DOCBUILDER.setAttribute (v_table_footer_element, 'id', v_jrad_element_id ||'_TABFTR');
2347 			JDR_DOCBUILDER.addChild (v_section_layout_element, JDR_DOCBUILDER.UI_NS, 'footer',
2348 						 v_table_footer_element);
2349 
2350 			v_add_table_row_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'addTableRow');
2351 			JDR_DOCBUILDER.setAttribute (v_add_table_row_element, 'id', v_jrad_element_id ||'_ADDBTN');
2352 			JDR_DOCBUILDER.setAttribute (v_add_table_row_element, 'autoInsertion', 'false');
2353 			JDR_DOCBUILDER.addChild (v_table_footer_element, JDR_DOCBUILDER.UI_NS, 'contents',
2354 						 v_add_table_row_element);
2355 
2356 			-- add all the rows in the table
2357 			-- create a repeating section directly inside a form
2358 
2359 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'Invoke CREATE_TABLE with '
2360 							|| v_current_section_id || ' ' || p_form_id || ' '
2361 							|| v_formfieldvaluesvo_list_count);
2362 
2363 			v_section_layout_element := CREATE_TABLE(v_current_section_id, v_section_layout_element,
2364 								 p_form_id, v_formfieldvaluesvo_list_count, 'N',
2365 								 v_form_fields_row.internal_sequence_number);
2366 
2367 			v_section_layout_element_rd := CREATE_TABLE(v_current_section_id,
2368 								    v_section_layout_element_rd,
2369 								    p_form_id,
2370 								    v_formfieldvaluesvo_list_count,
2371 							            'Y', v_form_fields_row.internal_sequence_number);
2372 
2373 
2374 			/** Adding the delete column **/
2375 			v_temp_element := JDR_DOCBUILDER.CREATEELEMENT (JDR_DOCBUILDER.OA_NS, 'column');
2376 			JDR_DOCBUILDER.setAttribute (v_temp_element, 'id', v_jrad_element_id || '_COLDEL');
2377 			JDR_DOCBUILDER.setAttribute (v_temp_element, 'columnDataFormat', 'iconButtonFormat');
2378 			JDR_DOCBUILDER.addChild (v_section_layout_element, JDR_DOCBUILDER.UI_NS,
2379 					 	 'contents', v_temp_element);
2380 
2381 			v_column_header_element := JDR_DOCBUILDER.CREATEELEMENT (JDR_DOCBUILDER.OA_NS, 'sortableHeader');
2382 
2383 			JDR_DOCBUILDER.setAttribute (v_column_header_element, 'id', v_jrad_element_id || '_SCLHDR');
2384 			JDR_DOCBUILDER.setAttribute (v_column_header_element, 'prompt', 'Delete');
2385 			JDR_DOCBUILDER.addChild (v_temp_element, JDR_DOCBUILDER.UI_NS, 'columnHeader',
2386 						 v_column_header_element);
2387 
2388 			v_delete_field_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS,'image');
2389 			JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'id', v_jrad_element_id ||   '_DELIMG');
2390 			JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'source', 'deleteicon_enabled.gif');
2391 			JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'warnAboutChanges', 'false');
2392 			JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'serverUnvalidated', 'true');
2393 			JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'unvalidated', 'true');
2394 			JDR_DOCBUILDER.addChild (v_temp_element, JDR_DOCBUILDER.UI_NS, 'contents',
2395 						 v_delete_field_element);
2396 
2397 			v_delete_parameters := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'fireAction');
2398 			JDR_DOCBUILDER.setAttribute (v_delete_parameters, 'event', 'Delete');
2399 			JDR_DOCBUILDER.setAttribute (v_delete_parameters, 'unvalidated', 'true');
2400 			v_delete_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
2401 			JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'key', 'Id');
2402 
2403 			JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'value',
2404 					'${oa.encrypt.' || v_curr_formfieldvaluesvo_name ||  '.FormFieldValueId}');
2405 
2406 			JDR_DOCBUILDER.addChild (v_delete_parameters, JDR_DOCBUILDER.UI_NS,
2407 							'parameters', v_delete_parameter);
2408 
2409 			v_delete_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
2410 
2411 			JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'key', 'ViewName');
2412 
2413 			JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'value', v_curr_formfieldvaluesvo_name);
2414 			JDR_DOCBUILDER.addChild (v_delete_parameters, JDR_DOCBUILDER.UI_NS,
2415 							'parameters', v_delete_parameter);
2416 
2417 			JDR_DOCBUILDER.addChild (v_delete_field_element, JDR_DOCBUILDER.UI_NS,
2418 							'primaryClientAction', v_delete_parameters);
2419 
2420 				/** Done: Adding delete colmn */
2421 
2422 			-- add the table into the header region
2423 			JDR_DOCBUILDER.addChild (v_section_element, jdr_docbuilder.UI_NS,'contents',
2424 						v_section_layout_element);
2425 
2426 			-- add the header region to its parent, since this is type='repeating_section'
2427 			-- we can rest assured that the parent of this section is the top-level form
2428 
2429 			---------------------------------------------------------------------------------------------------------------
2430 			v_current_layout_array_index := getCurrentElementIndex(v_form_fields_row.type,p_form_id,0,0,
2431 									       v_current_section_id,null);
2432 
2433 			v_parent_layout_array_index  := getParentElementIndex(v_form_fields_row.type,p_form_id,0,0,
2434 									      v_current_section_id,null);
2435 
2436 			JDR_DOCBUILDER.addChild(v_section_layout_array(v_parent_layout_array_index),
2437 						jdr_docbuilder.UI_NS,'contents',v_section_element);
2438 
2439 			v_section_layout_array(v_current_layout_array_index) := v_section_element;
2440 			---------------------------------------------------------------------------------------------------------------
2441 
2442 			-------------------------------------
2443 			-----READ-ONLY-REGION-START----------
2444 			-------------------------------------
2445 			JDR_DOCBUILDER.addChild (v_section_element_rd, jdr_docbuilder.UI_NS,'contents',
2446 						v_section_layout_element_rd);
2447 
2448 
2449 			JDR_DOCBUILDER.addChild(v_section_layout_array_rd(v_parent_layout_array_index),
2450 						jdr_docbuilder.UI_NS,'contents',v_section_element_rd);
2451 
2452 			v_section_layout_array_rd(v_current_layout_array_index) := v_section_element_rd;
2453 
2454 			-------------------------------------
2455 			-----READ-ONLY-REGION-END------------
2456 			-------------------------------------
2457 		--}
2458 
2459 		ELSIF (v_form_fields_row.type='INNER_REPEAT_SECTION') THEN
2460 		--{
2461 
2462 
2463 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case 5- : v_parent_section_id = '
2464 							|| v_parent_section_id  || ' v_current_section_id = '
2465 							|| v_current_section_id || ' v_LEVEL1_SECTION_ID = '
2466 							|| v_LEVEL1_SECTION_ID);
2467 
2468 				-- this is a repeating section inside a normal section
2469 
2470 				v_parent_section_id  := v_form_fields_row.section_id;
2471 				v_current_section_id := v_form_fields_row.repeating_section_id;
2472 				v_LEVEL1_SECTION_ID  := v_parent_section_id;
2473 
2474 				-- create a header region
2475 				PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case 5+ : v_parent_section_id = '
2476 								|| v_parent_section_id || ' v_current_section_id = '
2477 								|| v_current_section_id || ' v_LEVEL1_SECTION_ID = '
2478 								|| v_LEVEL1_SECTION_ID);
2479 
2480 				-- create a table region
2481 
2482 				-- create a header section
2483 				v_section_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'header');
2484 
2485 				-- create a header section
2486 				v_section_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'header');
2487 
2488 				-- get the section title
2489 
2490 				SELECT
2491 					forms_tl.form_name, forms.form_code
2492 				INTO
2493 					v_section_title, v_section_code
2494 				FROM
2495 					pon_forms_sections forms,
2496 					pon_forms_sections_tl forms_tl
2497 				WHERE
2498 					forms.form_id		= forms_tl.form_id AND
2499 					forms.form_id		= v_current_section_id AND
2500 					forms_tl.LANGUAGE	= g_base_language;
2501 
2502 				PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case 5+ : create header region for section - '
2503 								|| v_section_code );
2504 
2505 				JDR_DOCBUILDER.setAttribute (v_section_element, 'id', v_jrad_element_id);
2506 				JDR_DOCBUILDER.setAttribute (v_section_element, 'text', escapespecialchar(v_section_title));
2507 
2508 				JDR_DOCBUILDER.setAttribute (v_section_element_rd, 'id', v_jrad_element_id);
2509 				JDR_DOCBUILDER.setAttribute (v_section_element_rd, 'text', escapespecialchar(v_section_title));
2510 
2511 				-- set all table-level JRAD attributes
2512 				v_section_layout_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'advancedTable');
2513 
2514 				-- set all table-level JRAD attributes
2515 				v_section_layout_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'advancedTable');
2516 
2517 				-- increment the VO count by one
2518 				v_formfieldvaluesvo_list_count := v_formfieldvaluesvo_list_count + 1;
2519 				v_curr_formfieldvaluesvo_name := v_formfieldvaluesvo_name || v_formfieldvaluesvo_list_count;
2520 
2521 				JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'id', v_jrad_element_id ||'_table');
2522 				JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'viewName', v_curr_formfieldvaluesvo_name);
2523 				JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'width', '100%');
2524 
2525 				JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'id', v_jrad_element_id ||'_table');
2526 				JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'viewName',
2527 						             v_curr_formfieldvaluesvo_name);
2528 
2529 				PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'Setting viewName for ' || v_section_code
2530 								   ||'_table' || ' as ' ||  v_curr_formfieldvaluesvo_name);
2531 
2532 
2533 				JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'width', '100%');
2534 
2535 
2536 				-- create a table footer, and this footer as a child of the table region
2537 				v_table_footer_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'tableFooter');
2538 				JDR_DOCBUILDER.setAttribute (v_table_footer_element, 'id', v_jrad_element_id ||'_TABFTR');
2539 
2540 				JDR_DOCBUILDER.addChild (v_section_layout_element, JDR_DOCBUILDER.UI_NS, 'footer',
2541 							 v_table_footer_element);
2542 
2543 				v_add_table_row_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'addTableRow');
2544 				JDR_DOCBUILDER.setAttribute (v_add_table_row_element, 'id', v_jrad_element_id || '_ADDBTN');
2545 				JDR_DOCBUILDER.setAttribute (v_add_table_row_element, 'autoInsertion', 'false');
2546 				JDR_DOCBUILDER.addChild (v_table_footer_element, JDR_DOCBUILDER.UI_NS, 'contents',
2547 							 v_add_table_row_element);
2548 
2549 				-- add all the rows in the table
2550 				-- create a repeating section directly inside a form
2551 				-- originally passed 'v_section_code' as the 1st param
2552 				v_section_layout_element := CREATE_TABLE(v_current_section_id,
2553 									 v_section_layout_element,
2554 									 p_form_id,
2555 									 v_formfieldvaluesvo_list_count,
2556 									 'N', v_form_fields_row.internal_sequence_number);
2557 
2558 
2559 				v_section_layout_element_rd := CREATE_TABLE(v_current_section_id,
2560 									    v_section_layout_element_rd,
2561 									    p_form_id,
2562 								       	    v_formfieldvaluesvo_list_count,
2563 									    'Y', v_form_fields_row.internal_sequence_number);
2564 
2565 
2566 				/** Adding the delete column **/
2567 				v_temp_element := JDR_DOCBUILDER.CREATEELEMENT (JDR_DOCBUILDER.OA_NS, 'column');
2568 				JDR_DOCBUILDER.setAttribute (v_temp_element, 'id', v_jrad_element_id || '_COLDEL');
2569 				JDR_DOCBUILDER.setAttribute (v_temp_element, 'columnDataFormat', 'iconButtonFormat');
2570 				JDR_DOCBUILDER.addChild (v_section_layout_element, JDR_DOCBUILDER.UI_NS, 'contents', v_temp_element);
2571 
2572 				v_column_header_element := JDR_DOCBUILDER.CREATEELEMENT (JDR_DOCBUILDER.OA_NS, 'sortableHeader');
2573 
2574 				JDR_DOCBUILDER.setAttribute (v_column_header_element, 'id', v_jrad_element_id || '_SCLHDR');
2575 				JDR_DOCBUILDER.setAttribute (v_column_header_element, 'prompt', 'Delete');
2576 				JDR_DOCBUILDER.addChild (v_temp_element, JDR_DOCBUILDER.UI_NS, 'columnHeader',
2577 							 v_column_header_element);
2578 
2579 				v_delete_field_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS,'image');
2580 				JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'id', v_jrad_element_id || '_DELIMG');
2581 				JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'source', 'deleteicon_enabled.gif');
2582 				JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'warnAboutChanges', 'false');
2583 				JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'serverUnvalidated', 'true');
2584 				JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'unvalidated', 'true');
2585 
2586 
2587 
2588 				JDR_DOCBUILDER.addChild (v_temp_element, JDR_DOCBUILDER.UI_NS, 'contents',
2589 						   	 v_delete_field_element);
2590 
2591 				v_delete_parameters := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'fireAction');
2592 				JDR_DOCBUILDER.setAttribute (v_delete_parameters, 'event', 'Delete');
2593 				JDR_DOCBUILDER.setAttribute (v_delete_parameters, 'unvalidated', 'true');
2594 				v_delete_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
2595 				JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'key', 'Id');
2596 
2597 				JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'value',
2598 					'${oa.encrypt.' || v_curr_formfieldvaluesvo_name ||  '.FormFieldValueId}');
2599 
2600 				JDR_DOCBUILDER.addChild (v_delete_parameters, JDR_DOCBUILDER.UI_NS,
2601 							'parameters', v_delete_parameter);
2602 
2603 				v_delete_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
2604 
2605 				JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'key', 'ViewName');
2606 
2607 				JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'value', v_curr_formfieldvaluesvo_name);
2608 				JDR_DOCBUILDER.addChild (v_delete_parameters, JDR_DOCBUILDER.UI_NS,
2609 							'parameters', v_delete_parameter);
2610 
2611 				JDR_DOCBUILDER.addChild (v_delete_field_element, JDR_DOCBUILDER.UI_NS,
2612 							'primaryClientAction', v_delete_parameters);
2613 
2614 				/** Done: Adding delete colmn */
2615 
2616 				-- add the table into the header region
2617 				JDR_DOCBUILDER.addChild (v_section_element, jdr_docbuilder.UI_NS,'contents',
2618 							v_section_layout_element);
2619 
2620 				-- add the header region to its parent, since this is type='repeating_section'
2621 				-- we can rest assured that the parent of this section is the top-level form
2622 
2623 			---------------------------------------------------------------------------------------------------------------
2624 			v_current_layout_array_index := getCurrentElementIndex(v_form_fields_row.type,p_form_id,v_parent_section_id,0,
2625 									       v_current_section_id,null);
2626 			v_parent_layout_array_index  := getParentElementIndex (v_form_fields_row.type,p_form_id,v_parent_section_id,0,
2627 									       v_current_section_id,null);
2628 
2629 			JDR_DOCBUILDER.addChild(v_section_layout_array(v_parent_layout_array_index),
2630 						jdr_docbuilder.UI_NS,'contents',v_section_element);
2631 
2632 			v_section_layout_array(v_current_layout_array_index) := v_section_element;
2633 			---------------------------------------------------------------------------------------------------------------
2634 
2635 			-------------------------------------
2636 			-----READ-ONLY-REGION-START----------
2637 			-------------------------------------
2638 
2639 			JDR_DOCBUILDER.addChild (v_section_element_rd, jdr_docbuilder.UI_NS,'contents',
2640 						 v_section_layout_element_rd);
2641 
2642 			JDR_DOCBUILDER.addChild(v_section_layout_array_rd(v_parent_layout_array_index),
2643 						jdr_docbuilder.UI_NS,'contents',v_section_element_rd);
2644 
2645 			v_section_layout_array_rd(v_current_layout_array_index) := v_section_element_rd;
2646 
2647 			-------------------------------------
2648 			-----READ-ONLY-REGION-END------------
2649 			-------------------------------------
2650 
2651 
2652 		--}
2653 		ELSIF (v_form_fields_row.type='INNER_SECTION_REPEAT_SECTION') THEN
2654 		--{
2655 
2656 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case 6- : v_parent_section_id = '
2657 							|| v_parent_section_id  || ' v_current_section_id = '
2658 							|| v_current_section_id || ' v_LEVEL1_SECTION_ID = '
2659 							|| v_LEVEL1_SECTION_ID);
2660 
2661 			-- this is a repeating section inside a normal section which itself
2662 			-- is inside another normal section
2663 
2664 			v_parent_section_id  := v_form_fields_row.LEVEL2_SECTION_ID;
2665 			v_current_section_id := v_form_fields_row.repeating_section_id;
2666 			v_LEVEL1_SECTION_ID     := v_form_fields_row.section_id;
2667 			-- create a header region
2668 
2669 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case 6+ : v_parent_section_id = '
2670 							|| v_parent_section_id  || ' v_current_section_id = '
2671 							|| v_current_section_id || ' v_LEVEL1_SECTION_ID = '
2672 							|| v_LEVEL1_SECTION_ID);
2673 
2674 			v_section_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'header');
2675 
2676 			v_section_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'header');
2677 
2678 			-- get the section title
2679 
2680 			SELECT
2681 				forms_tl.form_name, forms.form_code
2682 			INTO
2683 				v_section_title, v_section_code
2684 			FROM
2685 				pon_forms_sections forms,
2686 				pon_forms_sections_tl forms_tl
2687 			WHERE
2688 				forms.form_id		= forms_tl.form_id AND
2689 				forms.form_id		= v_current_section_id AND
2690 				forms_tl.LANGUAGE	= g_base_language;
2691 
2692 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'case 4+ : create header region for section - ' || v_section_code );
2693 
2694 			JDR_DOCBUILDER.setAttribute (v_section_element, 'id', v_jrad_element_id);
2695 			JDR_DOCBUILDER.setAttribute (v_section_element, 'text', escapespecialchar(v_section_title));
2696 
2697 			JDR_DOCBUILDER.setAttribute (v_section_element_rd, 'id', v_jrad_element_id);
2698 			JDR_DOCBUILDER.setAttribute (v_section_element_rd, 'text', escapespecialchar(v_section_title));
2699 
2700 			-- set all table-level JRAD attributes
2701 			v_section_layout_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'advancedTable');
2702 
2703 			v_section_layout_element_rd := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'advancedTable');
2704 
2705 
2706 
2707 			-- increment the VO count by one
2708 			v_formfieldvaluesvo_list_count := v_formfieldvaluesvo_list_count + 1;
2709 			v_curr_formfieldvaluesvo_name := v_formfieldvaluesvo_name || v_formfieldvaluesvo_list_count;
2710 
2711 			JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'id', v_jrad_element_id ||'_table' );
2712 			JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'viewName', v_curr_formfieldvaluesvo_name);
2713 			JDR_DOCBUILDER.setAttribute (v_section_layout_element, 'width', '100%');
2714 
2715 
2716 			JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'id', v_jrad_element_id ||'_table');
2717 			JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'viewName', v_curr_formfieldvaluesvo_name);
2718 
2719 			PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'Setting viewName for ' || v_section_code||'_table' || ' as ' || v_curr_formfieldvaluesvo_name);
2720 			JDR_DOCBUILDER.setAttribute (v_section_layout_element_rd, 'width', '100%');
2721 
2722 			-- create a table footer, and this footer as a child of the table region
2723 			v_table_footer_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'tableFooter');
2724 			JDR_DOCBUILDER.setAttribute (v_table_footer_element, 'id', v_jrad_element_id || '_TABFTR');
2725 
2726 			JDR_DOCBUILDER.addChild (v_section_layout_element, JDR_DOCBUILDER.UI_NS, 'footer',
2727 						 v_table_footer_element);
2728 
2729 			v_add_table_row_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'addTableRow');
2730 			JDR_DOCBUILDER.setAttribute (v_add_table_row_element, 'id', v_jrad_element_id ||'_ADDBTN');
2731 			JDR_DOCBUILDER.setAttribute (v_add_table_row_element, 'autoInsertion', 'false');
2732 			JDR_DOCBUILDER.addChild (v_table_footer_element, JDR_DOCBUILDER.UI_NS, 'contents',
2733 						 v_add_table_row_element);
2734 
2735 			-- add all the 'columns' in the table
2736 			-- create a repeating section directly inside a form
2737 			-- originally passed 'v_section_code' as the 1st param
2738 			v_section_layout_element := CREATE_TABLE(v_current_section_id,
2739 									           v_section_layout_element,
2740 								                   p_form_id,
2741 		 							           v_formfieldvaluesvo_list_count,
2742 										   'N', v_form_fields_row.internal_sequence_number);
2743 
2744 			v_section_layout_element_rd := CREATE_TABLE(v_current_section_id,
2745 									           v_section_layout_element_rd,
2746 								                   p_form_id,
2747 		 							           v_formfieldvaluesvo_list_count,
2748 										   'Y', v_form_fields_row.internal_sequence_number);
2749 
2750 			/** Adding the delete column **/
2751 			v_temp_element := JDR_DOCBUILDER.CREATEELEMENT (JDR_DOCBUILDER.OA_NS, 'column');
2752 			JDR_DOCBUILDER.setAttribute (v_temp_element, 'id', v_jrad_element_id || '_COLDEL');
2753 			JDR_DOCBUILDER.setAttribute (v_temp_element, 'columnDataFormat', 'iconButtonFormat');
2754 			JDR_DOCBUILDER.addChild (v_section_layout_element, JDR_DOCBUILDER.UI_NS,
2755 						 'contents', v_temp_element);
2756 
2757 			v_column_header_element := JDR_DOCBUILDER.CREATEELEMENT (JDR_DOCBUILDER.OA_NS, 'sortableHeader');
2758 
2759 			JDR_DOCBUILDER.setAttribute (v_column_header_element, 'id', v_jrad_element_id || '_SCLHDR');
2760 			JDR_DOCBUILDER.setAttribute (v_column_header_element, 'prompt', 'Delete');
2761 			JDR_DOCBUILDER.addChild (v_temp_element, JDR_DOCBUILDER.UI_NS, 'columnHeader',
2762 							 v_column_header_element);
2763 
2764 			v_delete_field_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS,'image');
2765 			JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'id', v_jrad_element_id ||  '_DELIMG');
2766 			JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'source', 'deleteicon_enabled.gif');
2767 			JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'warnAboutChanges', 'false');
2768 			JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'serverUnvalidated', 'true');
2769 			JDR_DOCBUILDER.setAttribute (v_delete_field_element, 'unvalidated', 'true');
2770 			JDR_DOCBUILDER.addChild (v_temp_element, JDR_DOCBUILDER.UI_NS, 'contents', v_delete_field_element);
2771 
2772 			v_delete_parameters := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'fireAction');
2773 			JDR_DOCBUILDER.setAttribute (v_delete_parameters, 'event', 'Delete');
2774 			JDR_DOCBUILDER.setAttribute (v_delete_parameters, 'unvalidated', 'true');
2775 			v_delete_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
2776 			JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'key', 'Id');
2777 
2778 			JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'value',
2779 					'${oa.encrypt.' || v_curr_formfieldvaluesvo_name ||  '.FormFieldValueId}');
2780 
2781 			JDR_DOCBUILDER.addChild (v_delete_parameters, JDR_DOCBUILDER.UI_NS,
2782 							'parameters', v_delete_parameter);
2783 
2784 			v_delete_parameter := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.UI_NS, 'parameter');
2785 
2786 			JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'key', 'ViewName');
2787 
2788 			JDR_DOCBUILDER.setAttribute (v_delete_parameter, 'value', v_curr_formfieldvaluesvo_name);
2789 			JDR_DOCBUILDER.addChild (v_delete_parameters, JDR_DOCBUILDER.UI_NS,
2790 						'parameters', v_delete_parameter);
2791 
2792 			JDR_DOCBUILDER.addChild (v_delete_field_element, JDR_DOCBUILDER.UI_NS,
2793 						'primaryClientAction', v_delete_parameters);
2794 
2795 			/** Done: Adding delete colmn */
2796 
2797 			-- add the table into the header region
2798 			JDR_DOCBUILDER.addChild (v_section_element, jdr_docbuilder.UI_NS,'contents',
2799 						v_section_layout_element);
2800 
2801 			-- add the header region to its parent, since this is type='repeating_section'
2802 			-- we can rest assured that the parent of this section is the top-level form
2803 
2804 			---------------------------------------------------------------------------------------------------------------
2805 			v_current_layout_array_index := getCurrentElementIndex(v_form_fields_row.type,p_form_id,v_LEVEL1_SECTION_ID,
2806 									       v_parent_section_id,v_current_section_id,null);
2807 
2808 			v_parent_layout_array_index  := getParentElementIndex(v_form_fields_row.type,p_form_id,v_LEVEL1_SECTION_ID,
2809 									      v_parent_section_id,v_current_section_id,null);
2810 
2811 			JDR_DOCBUILDER.addChild(v_section_layout_array(v_parent_layout_array_index),
2812 						jdr_docbuilder.UI_NS,'contents',v_section_element);
2813 
2814 			v_section_layout_array(v_current_layout_array_index) := v_section_element;
2815 			---------------------------------------------------------------------------------------------------------------
2816 
2817 			-------------------------------------
2818 			-----READ-ONLY-REGION-START----------
2819 			-------------------------------------
2820 
2821 			JDR_DOCBUILDER.addChild (v_section_element_rd, jdr_docbuilder.UI_NS,'contents',
2822 						v_section_layout_element_rd);
2823 
2824 			JDR_DOCBUILDER.addChild(v_section_layout_array_rd(v_parent_layout_array_index),
2825 						jdr_docbuilder.UI_NS,'contents',v_section_element_rd);
2826 
2827 			v_section_layout_array_rd(v_current_layout_array_index) := v_section_element_rd;
2828 
2829 			-------------------------------------
2830 			-----READ-ONLY-REGION-END------------
2831 			-------------------------------------
2832 
2833 
2834 		--}
2835 
2836 		ELSE
2837 		--{
2838 			-- something really bad has happened
2839 			-- do we need to take some drastic action or simply ignore this error silently
2840 			null;
2841 		END IF;
2842 		--}
2843 
2844 
2845 		IF (v_form_fields_row.type <>'FORM' AND
2846 		    v_form_fields_row.type <>'REPEAT_SECTION' AND
2847 		    v_form_fields_row.type <>'INNER_REPEAT_SECTION' AND
2848 		    v_form_fields_row.type <>'INNER_SECTION_REPEAT_SECTION' AND
2849 		    v_form_fields_row.type <>'NORMAL_SECTION' AND
2850 		    v_form_fields_row.type <>'INNER_NORMAL_SECTION' AND
2851 		    nvl(v_form_fields_row.field_code, 'x$#$y') <> 'x$#$y' ) THEN
2852 		--{
2853 
2854 --		  v_field_jrad_id := v_section_code || '_' || v_form_fields_row.field_code;
2855 		  v_field_jrad_id := v_jrad_element_id;
2856 
2857 		  PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'Creating field ' || v_field_jrad_id);
2858 
2859 		  IF(NVL( v_form_fields_row.SYSTEM_FLAG, 'N') = 'Y' ) THEN
2860 		  --{
2861                       /* Bug 6050403: For the TWO_PART_FLAG system field there is need to
2862                        * have a checkbox instead of a text field. So we handle it separately
2863 		       */
2864         IF (v_form_fields_row.FIELD_CODE <> 'TWO_PART_FLAG') THEN -- {
2865           if ( (v_form_fields_row.datatype='TEXT') AND (v_form_fields_row.value_set_name is not null)) then
2866             v_section_field_element_rd := create_element ('messageStyledText', v_field_jrad_id,
2867                                                        v_form_fields_row.field_name, 'VARCHAR2', 'none',
2868             v_field_jrad_id || '_NAME');
2869             -- bug 10149273
2870 	    v_section_field_element   := create_vset_element_sysfield (v_field_jrad_id, v_form_fields_row.field_code,
2871                           v_form_fields_row.field_name,
2872                           v_form_fields_row.field_description,
2873                           v_form_fields_row.mapping_field_value_column,
2874                           v_form_fields_row.value_set_name, 'N');
2875             v_vset_element_created    := 'Y';
2876           elsif(NVL(v_form_fields_row.EDITABLE, 'N') = 'Y') THEN
2877             if(v_form_fields_row.datatype='TEXT') then
2878               v_section_field_element        := create_element ('messageTextInput', v_field_jrad_id, v_form_fields_row.field_name, 'VARCHAR2', 'none', v_form_fields_row.field_code || '_NAME');
2879               v_section_field_element_rd     := create_element ('messageStyledText', v_field_jrad_id, v_form_fields_row.field_name, 'VARCHAR2', 'none', v_form_fields_row.field_code || '_NAME');
2880             elsif(v_form_fields_row.datatype='DATE') then
2881               v_section_field_element        := create_element ('messageTextInput', v_field_jrad_id, v_form_fields_row.field_name, 'DATE', 'dateFormat', v_form_fields_row.field_code || '_NAME');
2882               v_section_field_element_rd     := create_element ('messageStyledText', v_field_jrad_id, v_form_fields_row.field_name, 'DATE', 'none', v_form_fields_row.field_code || '_NAME');
2883             else --add more datatype here if needed
2884               v_section_field_element        := create_element ('messageTextInput', v_field_jrad_id, v_form_fields_row.field_name, 'VARCHAR2', 'none', v_form_fields_row.field_code || '_NAME');
2885               v_section_field_element_rd     := create_element ('messageStyledText', v_field_jrad_id, v_form_fields_row.field_name, 'VARCHAR2', 'none', v_form_fields_row.field_code || '_NAME');
2886             end if;
2887           ELSE --noneditable
2888             if(v_form_fields_row.datatype='TEXT') then
2889               v_section_field_element        := create_element ('messageTextInput', v_field_jrad_id, v_form_fields_row.field_name, 'VARCHAR2', 'none', v_form_fields_row.field_code || '_NAME');
2890               JDR_DOCBUILDER.setAttribute (v_section_field_element, 'readOnly', 'true');
2891               v_section_field_element_rd     := create_element ('messageStyledText', v_field_jrad_id, v_form_fields_row.field_name, 'VARCHAR2', 'none', v_form_fields_row.field_code || '_NAME');
2892             elsif(v_form_fields_row.datatype='DATE') then
2893               v_section_field_element        := create_element ('messageTextInput', v_field_jrad_id, v_form_fields_row.field_name, 'DATE', 'dateFormat', v_form_fields_row.field_code || '_NAME');
2894               JDR_DOCBUILDER.setAttribute (v_section_field_element, 'readOnly', 'true');
2895               v_section_field_element_rd     := create_element ('messageStyledText', v_field_jrad_id, v_form_fields_row.field_name, 'DATE', 'none', v_form_fields_row.field_code || '_NAME');
2896             else --add more datatype here if needed
2897               v_section_field_element        := create_element ('messageTextInput', v_field_jrad_id, v_form_fields_row.field_name, 'VARCHAR2', 'none', v_form_fields_row.field_code || '_NAME');
2898               JDR_DOCBUILDER.setAttribute (v_section_field_element, 'readOnly', 'true');
2899               v_section_field_element_rd     := create_element ('messageStyledText', v_field_jrad_id, v_form_fields_row.field_name, 'VARCHAR2', 'none', v_form_fields_row.field_code || '_NAME');
2900             end if;
2901           END IF;
2902           /*add by pding*/
2903           IF (v_form_fields_row.required='Y') THEN
2904                   JDR_DOCBUILDER.setAttribute (v_section_field_element, 'required','yes');
2905           END IF;
2906 
2907         ELSE  -- } {
2908           v_section_field_element := create_element ('messageStyledText', v_field_jrad_id,
2909                                    v_form_fields_row.field_name, 'VARCHAR2', 'none',
2910           v_form_fields_row.field_code || '_NAME');
2911 
2912           v_section_field_element_rd := create_element ('messageStyledText', v_field_jrad_id,
2913                                    v_form_fields_row.field_name, 'VARCHAR2', 'none',
2914           v_form_fields_row.field_code || '_NAME');
2915 
2916         END IF; --}
2917 		  --}
2918 
2919 		  ELSE
2920 		  --{
2921 
2922 		  IF (v_form_fields_row.datatype='LONGTEXT') then
2923 			v_section_field_element := create_element ('messageTextInput', v_field_jrad_id,
2924 			                                           v_form_fields_row.field_name, 'VARCHAR2', 'none',
2925 								   v_form_fields_row.mapping_field_value_column);
2926 
2927 
2928 			JDR_DOCBUILDER.setAttribute (v_section_field_element, 'maximumLength', 2000);
2929 
2930 			v_section_field_element_rd := create_element ('messageStyledText', v_field_jrad_id,
2931 			                                           v_form_fields_row.field_name, 'VARCHAR2', 'none',
2932 								   v_form_fields_row.mapping_field_value_column);
2933 
2934 
2935 
2936 	  	 ELSIF (v_form_fields_row.datatype='DATE') then
2937 			v_section_field_element := create_element ('messageTextInput', v_field_jrad_id,
2938 			                                            v_form_fields_row.field_name, 'DATE', 'dateFormat',
2939 								    v_form_fields_row.mapping_field_value_column);
2940 
2941 			v_section_field_element_rd := create_element ('messageStyledText', v_field_jrad_id,
2942 			                                            v_form_fields_row.field_name, 'DATE', 'none',
2943 								    v_form_fields_row.mapping_field_value_column);
2944 
2945 	  	 ELSIF (v_form_fields_row.datatype='DATETIME') then
2946 
2947 			v_section_field_element := create_element ('messageTextInput', v_field_jrad_id,
2948 			                                           v_form_fields_row.field_name, 'DATETIME','dateFormat',
2949 								   v_form_fields_row.mapping_field_value_column);
2950 
2951 			v_section_field_element_rd := create_element ('messageStyledText', v_field_jrad_id,
2952 			                                            v_form_fields_row.field_name, 'DATETIME', 'dateFormat',
2953 								    v_form_fields_row.mapping_field_value_column);
2954 
2955 	  	 ELSIF (v_form_fields_row.datatype='AMOUNT') then
2956 			v_section_field_element := create_element ('messageTextInput', v_field_jrad_id,
2957 			                                           v_form_fields_row.field_name, 'NUMBER', 'none',
2958 								   v_form_fields_row.mapping_field_value_column);
2959 
2960 			v_section_field_element_rd := create_element ('messageStyledText', v_field_jrad_id,
2961 			                                           v_form_fields_row.field_name, 'NUMBER', 'none',
2962 								   v_form_fields_row.mapping_field_value_column);
2963 	  	 ELSIF (v_form_fields_row.datatype='NUMBER') then
2964 
2965 			IF(nvl(v_form_fields_row.field_description, 'x@Y#z') = 'x@Y#z' ) THEN
2966 
2967 				v_section_field_element := create_element ('messageTextInput', v_field_jrad_id,
2968 			                                           v_form_fields_row.field_name, 'NUMBER', 'none',
2969 								   v_form_fields_row.mapping_field_value_column);
2970 
2971 				v_section_field_element_rd := create_element ('messageStyledText', v_field_jrad_id,
2972 			                                           v_form_fields_row.field_name, 'NUMBER', 'none',
2973 								   v_form_fields_row.mapping_field_value_column);
2974 
2975 			ELSE
2976 				v_section_field_element := create_element ('messageTextInput', v_field_jrad_id,
2977 			                                           v_form_fields_row.field_name, 'NUMBER', 'longMessage',
2978 								   v_form_fields_row.mapping_field_value_column);
2979 
2980 				v_section_field_element_rd := create_element ('messageStyledText', v_field_jrad_id,
2981 			                                           v_form_fields_row.field_name, 'NUMBER', 'longMessage',
2982 								   v_form_fields_row.mapping_field_value_column);
2983 
2984 
2985 			END IF;
2986 
2987 	  	 ELSIF ( (v_form_fields_row.datatype='TEXT') AND (v_form_fields_row.value_set_name is not null)) then
2988 
2989 			v_section_field_element_rd := create_element ('messageStyledText', v_field_jrad_id,
2990 			                                           v_form_fields_row.field_name, 'VARCHAR2', 'none',
2991 								   v_field_jrad_id || '_NAME');
2992 
2993 			v_section_field_element   := create_vset_element (v_field_jrad_id, v_form_fields_row.field_code,
2994 									  v_form_fields_row.field_name,
2995 									  v_form_fields_row.field_description,
2996 									  v_form_fields_row.mapping_field_value_column,
2997 									  v_form_fields_row.value_set_name, 'N');
2998 			v_vset_element_created    := 'Y';
2999 
3000 
3001 	  	   ELSE -- TBD: Unrecognized field
3002 
3003 			IF(nvl(v_form_fields_row.field_description, 'x@Y#z') = 'x@Y#z' ) THEN
3004 
3005 				v_section_field_element := create_element ('messageTextInput', v_field_jrad_id,
3006 			                                            v_form_fields_row.field_name, 'VARCHAR2','none',
3007 								    v_form_fields_row.mapping_field_value_column);
3008 				JDR_DOCBUILDER.setAttribute (v_section_field_element, 'maximumLength', 2000);
3009 
3010 				v_section_field_element_rd := create_element ('messageStyledText', v_field_jrad_id,
3011 			                                            v_form_fields_row.field_name, 'VARCHAR2','none',
3012 								    v_form_fields_row.mapping_field_value_column);
3013 			ELSE
3014 				v_section_field_element := create_element ('messageTextInput', v_field_jrad_id,
3015 			                                            v_form_fields_row.field_name, 'VARCHAR2','longMessage',
3016 								    v_form_fields_row.mapping_field_value_column);
3017 				JDR_DOCBUILDER.setAttribute (v_section_field_element, 'maximumLength', 2000);
3018 
3019 				v_section_field_element_rd := create_element ('messageStyledText', v_field_jrad_id,
3020 			                                            v_form_fields_row.field_name, 'VARCHAR2','longMessage',
3021 								    v_form_fields_row.mapping_field_value_column);
3022 
3023 
3024 			END IF;
3025 
3026 	  	 END IF;
3027 
3028 		 --If the field is a required field then set it accordingly.
3029    		 IF (v_form_fields_row.required='Y') THEN
3030 			JDR_DOCBUILDER.setAttribute (v_section_field_element, 'required','yes');
3031 		 END IF;
3032 
3033 	       END IF;
3034 	       --}  -- end if this field is not a system field
3035 
3036                 /*
3037                  * Bug 6050403: We do not need a viewname for the two_part_flag field as the
3038 		 * checkbox will always remain checked. The rendered attribute will ensure that
3039 		 * the checkbox does not appear for non-two part rfqs
3040 		 */
3041                 IF (v_form_fields_row.FIELD_CODE <> 'TWO_PART_FLAG') THEN -- {
3042 	       	  JDR_DOCBUILDER.setAttribute (v_section_field_element, 'viewName', v_curr_formfieldvaluesvo_name);
3043                 END IF;
3044 	       	JDR_DOCBUILDER.addChild (v_section_layout_element,jdr_docbuilder.UI_NS,'contents',v_section_field_element);
3045 		---- need to create a formValue element for this LOV
3046 
3047 		if(v_vset_element_created = 'Y' and isLovValueSet(v_form_fields_row.field_code) = 'Y') then
3048 
3049 			v_vset_element_created := 'N';
3050 
3051 			-- encapsulate the formValue bean inside a messageLayout bean as
3052 			-- we cannot have a formValue directly inside a messageComponentLayout
3053 
3054 			v_message_layout_element := JDR_DOCBUILDER.createElement (JDR_DOCBUILDER.OA_NS, 'messageLayout');
3055 			JDR_DOCBUILDER.setAttribute (v_message_layout_element, 'id', v_field_jrad_id || '_MSL');
3056 			JDR_DOCBUILDER.addChild (v_section_layout_element,jdr_docbuilder.UI_NS,'contents',v_message_layout_element);
3057 
3058 			v_section_field_element := create_element ('formValue', v_field_jrad_id || '_FORM',
3059 			                                           v_form_fields_row.field_name, 'VARCHAR2', 'none',
3060 								   v_form_fields_row.mapping_field_value_column);
3061 
3062 		       	JDR_DOCBUILDER.setAttribute (v_section_field_element, 'viewName', v_curr_formfieldvaluesvo_name);
3063 		       	JDR_DOCBUILDER.addChild (v_message_layout_element,jdr_docbuilder.UI_NS,'contents',v_section_field_element);
3064 
3065 		end if;
3066 
3067 
3068                 /*
3069                  * Bug 6050403: We do not need a viewname for the two_part_flag field as the
3070 		 * checkbox will always remain checked. The rendered attribute will ensure that
3071 		 * the checkbox does not appear for non-two part rfqs
3072 		 */
3073                IF (v_form_fields_row.FIELD_CODE <> 'TWO_PART_FLAG') THEN -- {
3074 	         JDR_DOCBUILDER.setAttribute (v_section_field_element_rd, 'viewName', v_curr_formfieldvaluesvo_name);
3075                END IF;
3076 	       JDR_DOCBUILDER.addChild (v_section_layout_element_rd,jdr_docbuilder.UI_NS,'contents',v_section_field_element_rd);
3077 
3078 	       PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'Setting viewname for ' || v_form_fields_row.field_code || ' as ' || v_curr_formfieldvaluesvo_name);
3079 
3080 	   END IF; --}
3081 
3082 	   v_prev_record_type := v_form_fields_row.type;
3083 
3084 	END LOOP; --}
3085 
3086 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'JRAD created, now saving to JDR repository');
3087 
3088 	rval := JDR_DOCBUILDER.save;
3089 
3090 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'Finished saving to JDR repository');
3091 
3092 	x_result :=fnd_api.g_ret_sts_success;
3093 
3094 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'END');
3095 
3096 EXCEPTION
3097     WHEN OTHERS THEN
3098 	x_result := fnd_api.g_ret_sts_error;
3099 	x_error_code := SQLCODE;
3100 	x_error_message := SUBSTR(SQLERRM, 1, 100);
3101 	PON_FORMS_UTIL_PVT.print_error_log(l_api_name, 'EXCEPTION - x_result=' || x_result || ' x_error_code=' || x_error_code || ' x_error_message=' || x_error_message || ' SQLERRM=' || SQLERRM);
3102 
3103 END CREATE_FORM;
3104 
3105 /*======================================================================
3106  PROCEDURE:  CREATE_ABSTRACT	PRIVATE
3107    PARAMETERS:
3108    COMMENT   :  This procedure generates the following 3 JRAD regions for
3109 		a abstract -
3110 		** Buyer entry abstract region
3111 		** Read-only abstract region
3112 		** External supplier table region
3113 		This procedure is invoked when the abstract is made active
3114 ======================================================================*/
3115 
3116 PROCEDURE CREATE_ABSTRACT(p_form_id 		IN 	 	NUMBER,
3117   		      	  x_result		OUT NOCOPY  	VARCHAR2,
3118   		      	  x_error_code    	OUT NOCOPY  	VARCHAR2,
3119   		      	  x_error_message 	OUT NOCOPY  	VARCHAR2) IS
3120 
3121 l_api_name	CONSTANT VARCHAR2(30) := 'CREATE_ABSTRACT';
3122 
3123 BEGIN
3124 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'BEGIN-');
3125 
3126 	create_form(p_form_id, x_result, x_error_code, x_error_message);
3127 
3128 	create_abstract_table(p_form_id, x_result, x_error_code, x_error_message);
3129 
3130 	x_result :=fnd_api.g_ret_sts_success;
3131 
3132 EXCEPTION
3133     WHEN OTHERS THEN
3134 	x_result := fnd_api.g_ret_sts_error;
3135 	x_error_code := SQLCODE;
3136 	x_error_message := SUBSTR(SQLERRM, 1, 100);
3137 	PON_FORMS_UTIL_PVT.print_error_log(l_api_name, 'EXCEPTION - x_result=' || x_result || ' x_error_code=' || x_error_code || ' x_error_message=' || x_error_message || ' SQLERRM=' || SQLERRM);
3138 
3139 END;
3140 
3141 /*======================================================================
3142  PROCEDURE:  CREATE_JRAD	PUBLIC
3143    PARAMETERS:
3144    COMMENT   : 	Wrapper public procedure to all internal procedures. This
3145 		procedure is called from the middle-tier when a form or
3146 		a section or abstract is made active.
3147 ======================================================================*/
3148 PROCEDURE CREATE_JRAD(	p_form_id 	IN 	NUMBER,
3149   			x_result	OUT NOCOPY  VARCHAR2,
3150   			x_error_code    OUT NOCOPY  VARCHAR2,
3151   			x_error_message OUT NOCOPY  VARCHAR2
3152  ) IS
3153 
3154 v_form_type PON_FORMS_SECTIONS.TYPE%TYPE;
3155 v_is_repeating_section_flag PON_FORMS_SECTIONS.IS_REPEATING_SECTION_FLAG%TYPE;
3156 l_api_name	CONSTANT VARCHAR2(30) := 'CREATE_JRAD';
3157 
3158 BEGIN
3159 	-- initialize to error
3160 	x_result := fnd_api.g_ret_sts_error;
3161 
3162 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'BEGIN-');
3163 
3164 	-- the overall logic to generate jrad is as follows -
3165 	-- determine whether the type is 'SECTION' or 'ABSTRACT' or 'FORM'
3166 
3167 	select
3168     type,
3169     nvl(is_repeating_section_flag,'N')
3170   into
3171     v_form_type,
3172     v_is_repeating_section_flag
3173   from pon_forms_sections where form_id = p_form_id;
3174 
3175 	-- generate the buyer data-entry page
3176 	-- generate the buyer view-only page
3177 
3178 	-- if this is an abstract, generate the supplier external table
3179 	-- initialize a few global variables
3180 	g_sql_pop_list_count 	:= 1;
3181 	g_table_pop_list_count	:= 1;
3182 	g_lov_map_count		:= 1;
3183 	g_pop_list_count 	:= 1;
3184 	g_total_image_count	:= 1;
3185 	g_base_language		:= getBaseLanguage();
3186 
3187 	if(v_form_type = 'FORM') then
3188 	  create_form(p_form_id, x_result, x_error_code, x_error_message);
3189 	elsif(v_form_type = 'SECTION') then
3190     if (v_is_repeating_section_flag = 'Y') then
3191       create_repeating_section(p_form_id , x_result, x_error_code, x_error_message);
3192     else
3193       create_form(p_form_id, x_result, x_error_code, x_error_message);
3194     end if;
3195 	elsif (v_form_type = 'ABSTRACT') then
3196 	  create_abstract(p_form_id, x_result, x_error_code, x_error_message);
3197 	end if;
3198 
3199 	x_result := fnd_api.g_ret_sts_success;
3200 
3201 	PON_FORMS_UTIL_PVT.print_debug_log(l_api_name, 'END');
3202 
3203 EXCEPTION
3204     WHEN OTHERS THEN
3205 	x_result := fnd_api.g_ret_sts_error;
3206 	x_error_code := SQLCODE;
3207 	x_error_message := SUBSTR(SQLERRM, 1, 100);
3208 	PON_FORMS_UTIL_PVT.print_error_log(l_api_name, 'EXCEPTION - x_result=' || x_result || ' x_error_code=' || x_error_code || ' x_error_message=' || x_error_message || ' SQLERRM=' || SQLERRM);
3209 
3210 END CREATE_JRAD;
3211 
3212 
3213 END PON_FORMS_JRAD_PVT;