DBA Data[Home] [Help]

PACKAGE BODY: APPS.XNP_TIMERS$XNP_TIMER_REGISTRY

Source


1 package body xnp_timers$xnp_timer_registry as
2 /* $Header: XNPWE2TB.pls 120.1 2005/06/21 04:12:58 appldev ship $ */
3 
4 
5    procedure FormView(Z_FORM_STATUS in number);
6    function BuildSQL(
7             P_ORDER_ID in varchar2 default null,
8             U_ORDER_ID in varchar2 default null,
9             P_REFERENCE_ID in varchar2 default null,
10             P_TIMER_MESSAGE_CODE in varchar2 default null,
11             P_STATUS in varchar2 default null,
12             P_START_TIME in varchar2 default null,
13             U_START_TIME in varchar2 default null,
14             P_END_TIME in varchar2 default null,
15             U_END_TIME in varchar2 default null,
16             P_NEXT_TIMER in varchar2 default null) return boolean;
17    function PreQuery(
18             P_ORDER_ID in varchar2 default null,
19             U_ORDER_ID in varchar2 default null,
20             P_REFERENCE_ID in varchar2 default null,
21             P_TIMER_MESSAGE_CODE in varchar2 default null,
22             P_STATUS in varchar2 default null,
23             P_START_TIME in varchar2 default null,
24             U_START_TIME in varchar2 default null,
25             P_END_TIME in varchar2 default null,
26             U_END_TIME in varchar2 default null,
27             P_NEXT_TIMER in varchar2 default null) return boolean;
28    function PostQuery(Z_POST_DML in boolean) return boolean;
29    procedure CreateQueryJavaScript;
30    procedure CreateListJavaScript;
31    procedure InitialiseDomain(P_ALIAS in varchar2);
32    function TIMER_MESSAGE_CODE_TranslateFK(
33             P_TIMER_MESSAGE_CODE in varchar2 default null,
34             Z_MODE in varchar2 default 'D') return boolean;
35    function NEXT_TIMER_TranslateFK(
36             P_NEXT_TIMER in varchar2 default null,
37             Z_MODE in varchar2 default 'D') return boolean;
38 
39    QF_BODY_ATTRIBUTES     constant varchar2(500) := 'BGCOLOR="CCCCCC"';
40    QF_QUERY_BUT_CAPTION   constant varchar2(100) := htf.escape_sc(fnd_message.get_string('XNP','WEB_FIND_BUTTON'));
41    QF_CLEAR_BUT_CAPTION   constant varchar2(100) := htf.escape_sc(fnd_message.get_string('XNP','WEB_CLEAR_BUTTON'));
42    QF_QUERY_BUT_ACTION    constant varchar2(10)  := 'QUERY';
43    QF_CLEAR_BUT_ACTION    constant varchar2(10)  := 'CLEAR';
44    QF_NUMBER_OF_COLUMNS   constant number(4)	 := 2;
45    VF_BODY_ATTRIBUTES     constant varchar2(500) := 'BGCOLOR="CCCCCC"';
46    VF_UPDATE_BUT_CAPTION  constant varchar2(100) := XNP_WSGL.MsgGetText(6,XNP_WSGLM.CAP006_VF_UPDATE);
47    VF_CLEAR_BUT_CAPTION   constant varchar2(100) := XNP_WSGL.MsgGetText(8,XNP_WSGLM.CAP008_VF_REVERT);
48    VF_DELETE_BUT_CAPTION  constant varchar2(100) := XNP_WSGL.MsgGetText(7,XNP_WSGLM.CAP007_VF_DELETE);
49    VF_UPDATE_BUT_ACTION   constant varchar2(10)  := 'UPDATE';
50    VF_CLEAR_BUT_ACTION    constant varchar2(10)  := 'CLEAR';
51    VF_DELETE_BUT_ACTION   constant varchar2(10)  := 'DELETE';
52    VF_VERIFIED_DELETE     constant varchar2(100) := 'VerifiedDelete';
53    VF_NUMBER_OF_COLUMNS   constant number(4)	 := 2;
54    RL_BODY_ATTRIBUTES     constant varchar2(500) := 'BGCOLOR="CCCCCC"';
55    RL_NEXT_BUT_CAPTION    constant varchar2(100) := htf.escape_sc(fnd_message.get_string('XNP','WEB_NEXT_BUTTON'));
56    RL_PREV_BUT_CAPTION    constant varchar2(100) := htf.escape_sc(fnd_message.get_string('XNP','WEB_PREVIOUS_BUTTON'));
57    RL_FIRST_BUT_CAPTION   constant varchar2(100) := htf.escape_sc(fnd_message.get_string('XNP','WEB_FIRST_BUTTON'));
58    RL_LAST_BUT_CAPTION    constant varchar2(100) := htf.escape_sc(fnd_message.get_string('XNP','WEB_LAST_BUTTON'));
59    RL_COUNT_BUT_CAPTION   constant varchar2(100) := htf.escape_sc(fnd_message.get_string('XNP','WEB_COUNT_BUTTON'));
60    RL_REQUERY_BUT_CAPTION constant varchar2(100) := htf.escape_sc(fnd_message.get_string('XNP','WEB_REFRESH_BUTTON'));
61    RL_QUERY_BUT_CAPTION  constant varchar2(100)  := htf.escape_sc(fnd_message.get_string('XNP','WEB_SEARCH_BUTTON'));
62    RL_QUERY_BUT_ACTION    constant varchar2(10)  := 'QUERY';
63    RL_NEXT_BUT_ACTION     constant varchar2(10)  := 'NEXT';
64    RL_PREV_BUT_ACTION     constant varchar2(10)  := 'PREV';
65    RL_FIRST_BUT_ACTION    constant varchar2(10)  := 'FIRST';
66    RL_LAST_BUT_ACTION     constant varchar2(10)  := 'LAST';
67    RL_COUNT_BUT_ACTION    constant varchar2(10)  := 'COUNT';
68    RL_REQUERY_BUT_ACTION  constant varchar2(10)  := 'REQUERY';
69    RL_RECORD_SET_SIZE     constant number(4)     := 12;
70    RL_TOTAL_COUNT_REQD    constant boolean       := TRUE;
71    RL_NUMBER_OF_COLUMNS   constant number(4)     := 1;
72    LOV_BODY_ATTRIBUTES    constant varchar2(500) := 'BGCOLOR="CCCCCC"';
73    LOV_FIND_BUT_CAPTION   constant varchar2(100) := htf.escape_sc(fnd_message.get_string('XNP','WEB_FIND_BUTTON'));
74    LOV_CLOSE_BUT_CAPTION  constant varchar2(100) := htf.escape_sc(fnd_message.get_string('XNP','WEB_CLOSE_BUTTON'));
75    LOV_FIND_BUT_ACTION    constant  varchar2(10) := 'FIND';
76    LOV_CLOSE_BUT_ACTION   constant varchar2(10)  := 'CLOSE';
77    LOV_BUTTON_TEXT        constant varchar2(100) := htf.italic(fnd_message.get_string('XNP','LIST_OF_VALUES'));
78    LOV_FRAME              constant varchar2(20)  := null;
79    TF_BODY_ATTRIBUTES     constant varchar2(500) := 'BGCOLOR="CCCCCC"';
80    DEF_BODY_ATTRIBUTES    constant varchar2(500) := 'BGCOLOR="CCCCCC"';
81 
82    CURR_VAL XNP_TIMER_REGISTRY%ROWTYPE;
83 
84    TYPE FORM_REC IS RECORD
85         (TIMER_ID            VARCHAR2(8)
86         ,ORDER_ID            VARCHAR2(8)
87         ,REFERENCE_ID        VARCHAR2(80)
88         ,XML_PAYLOAD_LINK    VARCHAR2(2000)
89         ,WI_INSTANCE_ID      VARCHAR2(8)
90         ,FA_INSTANCE_ID      VARCHAR2(8)
91         ,TIMER_MESSAGE_CODE  VARCHAR2(20)
92         ,STATUS              VARCHAR2(20)
93         ,START_TIME          VARCHAR2(20)
94         ,END_TIME            VARCHAR2(20)
95         ,NEXT_TIMER          VARCHAR2(20)
96         );
97    FORM_VAL   FORM_REC;
98 
99    TYPE NBT_REC IS RECORD
100         (XML_PAYLOAD_LINK    VARCHAR2(2000)
101         );
102    NBT_VAL    NBT_REC;
103 
104    ZONE_SQL   VARCHAR2(2236) := null;
105 
106    D_STATUS              XNP_WSGL.typDVRecord;
107 --------------------------------------------------------------------------------
108 -- Name:        xnp_timers$xnp_timer_registry.InitialiseDomain
109 --
110 -- Description: Initialises the Domain Record for the given Column Usage
111 --
112 -- Parameters:  P_ALIAS   The alias of the column usage
113 --
114 --------------------------------------------------------------------------------
115    procedure InitialiseDomain(P_ALIAS in varchar2) is
116    begin
117 
118       if P_ALIAS = 'STATUS' and not D_STATUS.Initialised then
119          D_STATUS.ColAlias := 'STATUS';
120          D_STATUS.ControlType := XNP_WSGL.DV_TEXT;
121          D_STATUS.DispWidth := 20;
122          D_STATUS.DispHeight := 1;
123          D_STATUS.MaxWidth := 20;
124          D_STATUS.UseMeanings := False;
125          D_STATUS.ColOptional := False;
126          D_STATUS.Vals(1) := 'ACTIVE';
127          D_STATUS.Meanings(1) := 'ACTIVE';
128          D_STATUS.Abbreviations(1) := '';
129          D_STATUS.Vals(2) := 'EXPIRED';
130          D_STATUS.Meanings(2) := 'EXPIRED';
131          D_STATUS.Abbreviations(2) := '';
132          D_STATUS.Vals(3) := 'CLOSED';
133          D_STATUS.Meanings(3) := 'CLOSED';
134          D_STATUS.Abbreviations(3) := '';
135          D_STATUS.Vals(4) := 'REMOVED';
136          D_STATUS.Meanings(4) := 'REMOVED';
137          D_STATUS.Abbreviations(4) := '';
138          D_STATUS.Vals(5) := 'WAITING';
139          D_STATUS.Meanings(5) := 'WAITING';
140          D_STATUS.Abbreviations(5) := '';
141          D_STATUS.NumOfVV := 5;
142          D_STATUS.Initialised := True;
143       end if;
144 
145    exception
146       when others then
147          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry'||' : '||'Timers',
148                              DEF_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.InitialseDomain');
149    end;
150 
151 --------------------------------------------------------------------------------
152 -- Name:        xnp_timers$xnp_timer_registry.TIMER_MESSAGE_CODE_TranslateFK
153 --
154 -- Description:
155 --
156 -- Parameters:
157 --
158 --------------------------------------------------------------------------------
159    function TIMER_MESSAGE_CODE_TranslateFK(
160             P_TIMER_MESSAGE_CODE in varchar2,
161             Z_MODE in varchar2) return boolean is
162    begin
163       select MESSAGE_TYPES_2.MSG_CODE
164       into   CURR_VAL.TIMER_MESSAGE_CODE
165       from   XNP_MSG_TYPES_B MESSAGE_TYPES_2
166       where  rownum = 1
167       and   ( MESSAGE_TYPES_2.MSG_CODE = P_TIMER_MESSAGE_CODE )
168       and    MSG_TYPE = 'TIMER';
169       return TRUE;
170    exception
171          when no_data_found then
172             XNP_cg$errors.push('Timer: '||
173                            XNP_WSGL.MsgGetText(226,XNP_WSGLM.MSG226_INVALID_FK),
174                            'E', 'WSG', SQLCODE, 'xnp_timers$xnp_timer_registry.TIMER_MESSAGE_CODE_TranslateFK');
175             return FALSE;
176          when too_many_rows then
177             XNP_cg$errors.push('Timer: '||
178                            XNP_WSGL.MsgGetText(227,XNP_WSGLM.MSG227_TOO_MANY_FKS),
179                            'E', 'WSG', SQLCODE, 'xnp_timers$xnp_timer_registry.TIMER_MESSAGE_CODE_TranslateFK');
180             return FALSE;
181          when others then
182             XNP_cg$errors.push('Timer: '||SQLERRM,
183                            'E', 'WSG', SQLCODE, 'xnp_timers$xnp_timer_registry.TIMER_MESSAGE_CODE_TranslateFK');
184             return FALSE;
185    end;
186 --------------------------------------------------------------------------------
187 -- Name:        xnp_timers$xnp_timer_registry.NEXT_TIMER_TranslateFK
188 --
189 -- Description:
190 --
191 -- Parameters:
192 --
193 --------------------------------------------------------------------------------
194    function NEXT_TIMER_TranslateFK(
195             P_NEXT_TIMER in varchar2,
196             Z_MODE in varchar2) return boolean is
197    begin
198       select MSG_CODE
199       into   CURR_VAL.NEXT_TIMER
200       from   XNP_MSG_TYPES_B
201       where  rownum = 1
202       and    MSG_TYPE = 'TIMER'
203       and   ( MSG_CODE = P_NEXT_TIMER
204       or     (MSG_CODE is null and P_NEXT_TIMER is null) );
205       return TRUE;
206    exception
207          when no_data_found then
208             XNP_cg$errors.push('Next Timer: '||
209                            XNP_WSGL.MsgGetText(226,XNP_WSGLM.MSG226_INVALID_FK),
210                            'E', 'WSG', SQLCODE, 'xnp_timers$xnp_timer_registry.NEXT_TIMER_TranslateFK');
211             return FALSE;
212          when too_many_rows then
213             XNP_cg$errors.push('Next Timer: '||
214                            XNP_WSGL.MsgGetText(227,XNP_WSGLM.MSG227_TOO_MANY_FKS),
215                            'E', 'WSG', SQLCODE, 'xnp_timers$xnp_timer_registry.NEXT_TIMER_TranslateFK');
216             return FALSE;
217          when others then
218             XNP_cg$errors.push('Next Timer: '||SQLERRM,
219                            'E', 'WSG', SQLCODE, 'xnp_timers$xnp_timer_registry.NEXT_TIMER_TranslateFK');
220             return FALSE;
221    end;
222 --------------------------------------------------------------------------------
223 -- Name:        xnp_timers$xnp_timer_registry.timer_message_code_listofvalue
224 --
225 -- Description:
226 --
227 -- Parameters:
228 --
229 --------------------------------------------------------------------------------
230    procedure timer_message_code_listofvalue(
231              Z_FILTER in varchar2,
232              Z_MODE in varchar2,
233              Z_CALLER_URL in varchar2,
234              Z_ISSUE_WAIT in varchar2) is
235       L_SEARCH_STRING varchar2(1000);
236       L_ABORT boolean := FALSE;
237       L_INVALID_DEPEDANT boolean := FALSE;
238       L_ANY boolean := FALSE;
239       L_BODY_ATTRIBUTES VarChar2 (1000) := LOV_BODY_ATTRIBUTES;
240    begin
241 
242       XNP_WSGL.RegisterURL('xnp_timers$xnp_timer_registry.timer_message_code_listofvalue');
243       XNP_WSGL.AddURLParam('Z_FILTER', Z_FILTER);
244       XNP_WSGL.AddURLParam('Z_MODE', Z_MODE);
245       XNP_WSGL.AddURLParam('Z_CALLER_URL', Z_CALLER_URL);
246       if XNP_WSGL.NotLowerCase then
247          return;
248       end if;
249 
250 
251       XNP_WSGL.OpenPageHead('Timers');
252 
253       if Z_ISSUE_WAIT is not null then
254 
255          htp.p ('<SCRIPT>
256 function RefreshMe()
257 {
258   location.href = location.href.substring (0, location.href.length - 1);
259 };
260 </SCRIPT>');
261 
262          L_BODY_ATTRIBUTES := L_BODY_ATTRIBUTES || ' OnLoad="RefreshMe()"';
263 
264       else
265          htp.p('<SCRIPT>
266 function PassBack(P_TIMER_MESSAGE_CODE) {
267    if (opener.location.href != document.forms[0].Z_CALLER_URL.value) {
268       alert("'||XNP_WSGL.MsgGetText(228,XNP_WSGLM.MSG228_LOV_NOT_IN_CONTEXT)||'");
269       return;
270    }
271    opener.document.forms[0].P_TIMER_MESSAGE_CODE.value = P_TIMER_MESSAGE_CODE;
272    opener.document.forms[0].P_TIMER_MESSAGE_CODE.focus();
273    close();
274 }
275 function Find_OnClick() {
276    document.forms[0].submit();
277 }');
278          if LOV_FRAME is null then
279             htp.p('function Close_OnClick() {
280       close();
281 }');
282          end if;
283          htp.p('</SCRIPT>');
284       end if;
285 
286       xnp_timers$.TemplateHeader(TRUE,0);
287 
288       XNP_WSGL.ClosePageHead;
289 
290       XNP_WSGL.OpenPageBody(FALSE, p_attributes=>L_BODY_ATTRIBUTES);
291 
292       htp.header(2, htf.italic('Timers'));
293 
294       if Z_ISSUE_WAIT is not null then
295          htp.p(XNP_WSGL.MsgGetText(127,XNP_WSGLM.DSP127_LOV_PLEASE_WAIT));
296          XNP_WSGL.ClosePageBody;
297          return;
298       else
299          htp.formOpen('xnp_timers$xnp_timer_registry.timer_message_code_listofvalue');
300          XNP_WSGL.HiddenField('Z_CALLER_URL', Z_CALLER_URL);
301          XNP_WSGL.HiddenField('Z_MODE', Z_MODE);
302       end if;
303 
304       L_SEARCH_STRING := rtrim(Z_FILTER);
305       if L_SEARCH_STRING is not null then
306          if ((instr(Z_FILTER,'%') = 0) and (instr(Z_FILTER,'_') = 0)) then
307             L_SEARCH_STRING := L_SEARCH_STRING || '%';
308          end if;
309       else
310          L_SEARCH_STRING := '%';
311       end if;
312 
313       htp.para;
314       htp.p(XNP_WSGL.MsgGetText(19,XNP_WSGLM.CAP019_LOV_FILTER_CAPTION,'Timer'));
315       htp.para;
316       htp.formText('Z_FILTER', cvalue=>L_SEARCH_STRING);
317       htp.p('<input type="button" value="'||LOV_FIND_BUT_CAPTION||'" onclick="Find_OnClick()">');
318       if LOV_FRAME is null then
319          htp.p('<input type="button" value="'||LOV_CLOSE_BUT_CAPTION||'" onclick="Close_OnClick()">');
320       end if;
321       htp.formClose;
322 
323 
324       if not L_ABORT then
325 
326          XNP_WSGL.LayoutOpen(XNP_WSGL.LAYOUT_TABLE, TRUE);
327 
328          XNP_WSGL.LayoutRowStart;
329          XNP_WSGL.LayoutHeader(1, 'LEFT', 'Timer');
330          XNP_WSGL.LayoutRowEnd;
331 
332          declare
333             l_uu varchar2(100);
334             l_ul varchar2(100);
335             l_lu varchar2(100);
336             l_ll varchar2(100);
337             l_retval number;
338             cursor c1(zmode varchar2,srch varchar2,uu varchar2,ul varchar2,lu varchar2,ll varchar2) is
339                select MESSAGE_TYPES_2.MSG_CODE TIMER_MESSAGE_CODE
340                from   XNP_MSG_TYPES_B MESSAGE_TYPES_2
341                where  ((MESSAGE_TYPES_2.MSG_CODE like uu||'%' or
342                         MESSAGE_TYPES_2.MSG_CODE like ul||'%' or
343                         MESSAGE_TYPES_2.MSG_CODE like lu||'%' or
344                         MESSAGE_TYPES_2.MSG_CODE like ll||'%') and
345                         upper(MESSAGE_TYPES_2.MSG_CODE) like upper(srch))
346                and    MSG_TYPE = 'TIMER'
347                order by MESSAGE_TYPES_2.MSG_CODE;
348          begin
349             l_retval := XNP_WSGL.SearchComponents(L_SEARCH_STRING,l_uu,l_ul,l_lu,l_ll);
350             for c1rec in c1(Z_MODE, L_SEARCH_STRING,l_uu,l_ul,l_lu,l_ll) loop
351                CURR_VAL.TIMER_MESSAGE_CODE := c1rec.TIMER_MESSAGE_CODE;
352                XNP_WSGL.LayoutRowStart('TOP');
353                XNP_WSGL.LayoutData('<a href="javascript:PassBack('''||
354                                replace(replace(c1rec.TIMER_MESSAGE_CODE,'"','"'),'''','\''')||''')">'||CURR_VAL.TIMER_MESSAGE_CODE||'</a>');
355                XNP_WSGL.LayoutRowEnd;
356                l_any := true;
357             end loop;
358             XNP_WSGL.LayoutClose;
359             if not l_any then
360                htp.p(XNP_WSGL.MsgGetText(224,XNP_WSGLM.MSG224_LOV_NO_ROWS));
361             end if;
362          end;
363       end if;
364 
365       htp.p('<SCRIPT>document.forms[0].Z_FILTER.focus()</SCRIPT>');
366 
367       XNP_WSGL.ClosePageBody;
368 
369    exception
370       when others then
371          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry',
372                              LOV_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.timer_message_code_listofvalue');
373    end;
374 
375 --------------------------------------------------------------------------------
376 -- Name:        xnp_timers$xnp_timer_registry.next_timer_listofvalues
377 --
378 -- Description:
379 --
380 -- Parameters:
381 --
382 --------------------------------------------------------------------------------
383    procedure next_timer_listofvalues(
384              Z_FILTER in varchar2,
385              Z_MODE in varchar2,
386              Z_CALLER_URL in varchar2,
387              Z_ISSUE_WAIT in varchar2) is
388       L_SEARCH_STRING varchar2(1000);
389       L_ABORT boolean := FALSE;
390       L_INVALID_DEPEDANT boolean := FALSE;
391       L_ANY boolean := FALSE;
392       L_BODY_ATTRIBUTES VarChar2 (1000) := LOV_BODY_ATTRIBUTES;
393    begin
394 
395       XNP_WSGL.RegisterURL('xnp_timers$xnp_timer_registry.next_timer_listofvalues');
396       XNP_WSGL.AddURLParam('Z_FILTER', Z_FILTER);
397       XNP_WSGL.AddURLParam('Z_MODE', Z_MODE);
398       XNP_WSGL.AddURLParam('Z_CALLER_URL', Z_CALLER_URL);
399       if XNP_WSGL.NotLowerCase then
400          return;
401       end if;
402 
403 
404       XNP_WSGL.OpenPageHead(XNP_WSGL.MsgGetText(123,XNP_WSGLM.DSP123_LOV_CAPTION,
405                         'Next Timer'));
406 
407       if Z_ISSUE_WAIT is not null then
408 
409          htp.p ('<SCRIPT>
410 function RefreshMe()
411 {
412   location.href = location.href.substring (0, location.href.length - 1);
413 };
414 </SCRIPT>');
415 
416          L_BODY_ATTRIBUTES := L_BODY_ATTRIBUTES || ' OnLoad="RefreshMe()"';
417 
418       else
419          htp.p('<SCRIPT>
420 function PassBack(P_NEXT_TIMER) {
421    if (opener.location.href != document.forms[0].Z_CALLER_URL.value) {
422       alert("'||XNP_WSGL.MsgGetText(228,XNP_WSGLM.MSG228_LOV_NOT_IN_CONTEXT)||'");
423       return;
424    }
425    opener.document.forms[0].P_NEXT_TIMER.value = P_NEXT_TIMER;
426    opener.document.forms[0].P_NEXT_TIMER.focus();
427    close();
428 }
429 function Find_OnClick() {
430    document.forms[0].submit();
431 }');
432          if LOV_FRAME is null then
433             htp.p('function Close_OnClick() {
434       close();
435 }');
436          end if;
437          htp.p('</SCRIPT>');
438       end if;
439 
440       xnp_timers$.TemplateHeader(TRUE,0);
441 
442       XNP_WSGL.ClosePageHead;
443 
444       XNP_WSGL.OpenPageBody(FALSE, p_attributes=>L_BODY_ATTRIBUTES);
445 
446       htp.header(2, htf.italic(XNP_WSGL.MsgGetText(123,XNP_WSGLM.DSP123_LOV_CAPTION,'Next Timer')));
447 
448       if Z_ISSUE_WAIT is not null then
449          htp.p(XNP_WSGL.MsgGetText(127,XNP_WSGLM.DSP127_LOV_PLEASE_WAIT));
450          XNP_WSGL.ClosePageBody;
451          return;
452       else
453          htp.formOpen('xnp_timers$xnp_timer_registry.next_timer_listofvalues');
454          XNP_WSGL.HiddenField('Z_CALLER_URL', Z_CALLER_URL);
455          XNP_WSGL.HiddenField('Z_MODE', Z_MODE);
456       end if;
457 
458       L_SEARCH_STRING := rtrim(Z_FILTER);
459       if L_SEARCH_STRING is not null then
460          if ((instr(Z_FILTER,'%') = 0) and (instr(Z_FILTER,'_') = 0)) then
461             L_SEARCH_STRING := L_SEARCH_STRING || '%';
462          end if;
463       else
464          L_SEARCH_STRING := '%';
465       end if;
466 
467       htp.para;
468       htp.p(XNP_WSGL.MsgGetText(19,XNP_WSGLM.CAP019_LOV_FILTER_CAPTION,'Next Timer'));
469       htp.para;
470       htp.formText('Z_FILTER', cvalue=>L_SEARCH_STRING);
471       htp.p('<input type="button" value="'||LOV_FIND_BUT_CAPTION||'" onclick="Find_OnClick()">');
472       if LOV_FRAME is null then
473          htp.p('<input type="button" value="'||LOV_CLOSE_BUT_CAPTION||'" onclick="Close_OnClick()">');
474       end if;
475       htp.formClose;
476 
477 
478       if not L_ABORT then
479 
480          XNP_WSGL.LayoutOpen(XNP_WSGL.LAYOUT_TABLE, TRUE);
481 
482          XNP_WSGL.LayoutRowStart;
483          XNP_WSGL.LayoutHeader(1, 'LEFT', 'Next Timer');
484          XNP_WSGL.LayoutRowEnd;
485 
486          declare
487             l_uu varchar2(100);
488             l_ul varchar2(100);
489             l_lu varchar2(100);
490             l_ll varchar2(100);
491             l_retval number;
492             cursor c1(zmode varchar2,srch varchar2,uu varchar2,ul varchar2,lu varchar2,ll varchar2) is
493                select MSG_CODE NEXT_TIMER
494                from   XNP_MSG_TYPES_B
495                where  ((MSG_CODE like uu||'%' or
496                         MSG_CODE like ul||'%' or
497                         MSG_CODE like lu||'%' or
498                         MSG_CODE like ll||'%') and
499                         upper(MSG_CODE) like upper(srch))
500                and    MSG_TYPE = 'TIMER'
501                order by MSG_CODE;
502          begin
503             l_retval := XNP_WSGL.SearchComponents(L_SEARCH_STRING,l_uu,l_ul,l_lu,l_ll);
504             for c1rec in c1(Z_MODE, L_SEARCH_STRING,l_uu,l_ul,l_lu,l_ll) loop
505                CURR_VAL.NEXT_TIMER := c1rec.NEXT_TIMER;
506                XNP_WSGL.LayoutRowStart('TOP');
507                XNP_WSGL.LayoutData('<a href="javascript:PassBack('''||
508                                replace(replace(c1rec.NEXT_TIMER,'"','"'),'''','\''')||''')">'||CURR_VAL.NEXT_TIMER||'</a>');
509                XNP_WSGL.LayoutRowEnd;
510                l_any := true;
511             end loop;
512             XNP_WSGL.LayoutClose;
513             if not l_any then
514                htp.p(XNP_WSGL.MsgGetText(224,XNP_WSGLM.MSG224_LOV_NO_ROWS));
515             end if;
516          end;
517       end if;
518 
519       htp.p('<SCRIPT>document.forms[0].Z_FILTER.focus()</SCRIPT>');
520 
521       XNP_WSGL.ClosePageBody;
522 
523    exception
524       when others then
525          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry',
526                              LOV_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.next_timer_listofvalues');
527    end;
528 
529 --------------------------------------------------------------------------------
530 -- Name:        xnp_timers$xnp_timer_registry.Startup
531 --
532 -- Description: Entry point for the 'XNP_TIMER_REGISTRY' module
533 --              component  (Timers).
534 --
535 -- Parameters:
536 --
537 --------------------------------------------------------------------------------
538    procedure Startup(
539              Z_DIRECT_CALL in boolean,
540              Z_CHK in varchar2) is
541    begin
542 
543       XNP_WSGL.RegisterURL('xnp_timers$xnp_timer_registry.startup');
544       XNP_WSGL.AddURLParam('Z_CHK', Z_CHK);
545 
546       if not Z_DIRECT_CALL then
547          if not XNP_WSGL.ValidateChecksum('', Z_CHK) then
548             return;
549          end if;
550       end if;
551 
552       XNP_WSGL.StoreURLLink(1, 'Timers');
553 
554 
555       FormQuery(
556       Z_DIRECT_CALL=>TRUE);
557 
558    exception
559       when others then
560          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry'||' : '||'Timers',
561                              DEF_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.Startup');
562    end;
563 
564 --------------------------------------------------------------------------------
565 -- Name:        xnp_timers$xnp_timer_registry.ActionQuery
566 --
567 -- Description: Called when a Query form is subitted to action the query request.
568 --
569 -- Parameters:
570 --
571 --------------------------------------------------------------------------------
572    procedure ActionQuery(
573              P_ORDER_ID in varchar2,
574              U_ORDER_ID in varchar2,
575              P_REFERENCE_ID in varchar2,
576              P_TIMER_MESSAGE_CODE in varchar2,
577              P_STATUS in varchar2,
578              P_START_TIME in varchar2,
579              U_START_TIME in varchar2,
580              P_END_TIME in varchar2,
581              U_END_TIME in varchar2,
582              P_NEXT_TIMER in varchar2,
583        	     Z_DIRECT_CALL in boolean default false,
584              Z_ACTION in varchar2,
585              Z_CHK in varchar2) is
586 
587      L_CHK varchar2(10) := Z_CHK;
588      L_BUTCHK varchar2(100):= null;
589    begin
590 
591     if Z_DIRECT_CALL then
592       L_CHK := to_char(XNP_WSGL.Checksum(''));
593     else
594       if not XNP_WSGL.ValidateChecksum('', L_CHK) then
595          return;
596       end if;
597     end if;
598 
599 --if on the query form and insert is allowed
600       QueryList(
601                 P_ORDER_ID,
602                 U_ORDER_ID,
603                 P_REFERENCE_ID,
604                 P_TIMER_MESSAGE_CODE,
605                 P_STATUS,
606                 P_START_TIME,
607                 U_START_TIME,
608                 P_END_TIME,
609                 U_END_TIME,
610                 P_NEXT_TIMER,
611                 null, L_BUTCHK, Z_DIRECT_CALL=>TRUE);
612 
613    exception
614       when others then
615          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry'||' : '||'Timers',
616                              DEF_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.ActionQuery');
617    end;
618 
619 --------------------------------------------------------------------------------
620 -- Name:        xnp_timers$xnp_timer_registry.QueryHits
621 --
622 -- Description: Returns the number or rows which matches the given search
623 --              criteria (if any).
624 --
625 -- Parameters:
626 --
627 --------------------------------------------------------------------------------
628    function QueryHits(
629             P_ORDER_ID in varchar2,
630             U_ORDER_ID in varchar2,
631             P_REFERENCE_ID in varchar2,
632             P_TIMER_MESSAGE_CODE in varchar2,
633             P_STATUS in varchar2,
634             P_START_TIME in varchar2,
635             U_START_TIME in varchar2,
636             P_END_TIME in varchar2,
637             U_END_TIME in varchar2,
638             P_NEXT_TIMER in varchar2) return number is
639       I_QUERY     varchar2(2000) := '';
640       I_CURSOR    integer;
641       I_VOID      integer;
642       I_FROM_POS  integer := 0;
643       I_COUNT     number(10);
644    begin
645 
646       if not BuildSQL(P_ORDER_ID,
647                       U_ORDER_ID,
648                       P_REFERENCE_ID,
649                       P_TIMER_MESSAGE_CODE,
650                       P_STATUS,
651                       P_START_TIME,
652                       U_START_TIME,
653                       P_END_TIME,
654                       U_END_TIME,
655                       P_NEXT_TIMER) then
656          return -1;
657       end if;
658 
659       if not PreQuery(P_ORDER_ID,
660                       U_ORDER_ID,
661                       P_REFERENCE_ID,
662                       P_TIMER_MESSAGE_CODE,
663                       P_STATUS,
664                       P_START_TIME,
665                       U_START_TIME,
666                       P_END_TIME,
667                       U_END_TIME,
668                       P_NEXT_TIMER) then
669          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_ERROR, XNP_cg$errors.GetErrors,
670                              'Timer Registry'||' : '||'Timers', DEF_BODY_ATTRIBUTES);
671          return -1;
672       end if;
673 
674       I_FROM_POS := instr(upper(ZONE_SQL), ' FROM ');
675 
676       if I_FROM_POS = 0 then
677          return -1;
678       end if;
679 
680       I_QUERY := 'SELECT count(*)' ||
681                  substr(ZONE_SQL, I_FROM_POS);
682 
683       I_CURSOR := dbms_sql.open_cursor;
684       dbms_sql.parse(I_CURSOR, I_QUERY, dbms_sql.v7);
685       dbms_sql.define_column(I_CURSOR, 1, I_COUNT);
686       I_VOID := dbms_sql.execute(I_CURSOR);
687       I_VOID := dbms_sql.fetch_rows(I_CURSOR);
688       dbms_sql.column_value(I_CURSOR, 1, I_COUNT);
689       dbms_sql.close_cursor(I_CURSOR);
690 
691       return I_COUNT;
692 
693    exception
694       when others then
695          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry'||' : '||'Timers',
696                              DEF_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.QueryHits');
697          return -1;
698    end;--------------------------------------------------------------------------------
699 -- Name:        xnp_timers$xnp_timer_registry.BuildSQL
700 --
701 -- Description: Builds the SQL for the 'XNP_TIMER_REGISTRY' module component (Timers).
702 --              This incorporates all query criteria and Foreign key columns.
703 --
704 -- Parameters:
705 --
706 --------------------------------------------------------------------------------
707    function BuildSQL(
708             P_ORDER_ID in varchar2,
709             U_ORDER_ID in varchar2,
710             P_REFERENCE_ID in varchar2,
711             P_TIMER_MESSAGE_CODE in varchar2,
712             P_STATUS in varchar2,
713             P_START_TIME in varchar2,
714             U_START_TIME in varchar2,
715             P_END_TIME in varchar2,
716             U_END_TIME in varchar2,
717             P_NEXT_TIMER in varchar2) return boolean is
718 
719       I_WHERE varchar2(2000);
720    begin
721 
722       InitialiseDomain('STATUS');
723 
724       -- Build up the Where clause
725       I_WHERE := I_WHERE || ' where MESSAGE_TYPES_2.MSG_CODE = TIMER_REGISTRY.TIMER_MESSAGE_CODE';
726       I_WHERE := I_WHERE || ' and ' || 'MESSAGE_TYPES_2.MSG_TYPE = ''TIMER''';
727 
728       begin
729          XNP_WSGL.BuildWhere(P_ORDER_ID, U_ORDER_ID, 'TIMER_REGISTRY.ORDER_ID', XNP_WSGL.TYPE_NUMBER, I_WHERE);
730       exception
731          when others then
732             XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_ERROR_QRY, SQLERRM,
733                                 'Timer Registry'||' : '||'Timers', DEF_BODY_ATTRIBUTES, NULL,
734                                 XNP_WSGL.MsgGetText(210,XNP_WSGLM.MSG210_INVALID_QRY,'Order Id'));
735             return false;
736       end;
737       XNP_WSGL.BuildWhere(P_REFERENCE_ID, 'TIMER_REGISTRY.REFERENCE_ID', XNP_WSGL.TYPE_CHAR, I_WHERE);
738       XNP_WSGL.BuildWhere(P_TIMER_MESSAGE_CODE, 'TIMER_REGISTRY.TIMER_MESSAGE_CODE', XNP_WSGL.TYPE_CHAR, I_WHERE);
739       XNP_WSGL.BuildWhere(XNP_WSGL.DomainValue(D_STATUS, P_STATUS), 'TIMER_REGISTRY.STATUS', XNP_WSGL.TYPE_CHAR, I_WHERE);
740       begin
741          XNP_WSGL.BuildWhere(P_START_TIME, U_START_TIME, 'TIMER_REGISTRY.START_TIME', XNP_WSGL.TYPE_DATE, I_WHERE, 'DD-MON-RRRR HH24:MI:SS');
742       exception
743          when others then
744             XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_ERROR_QRY, SQLERRM,
745                                 'Timer Registry'||' : '||'Timers', DEF_BODY_ATTRIBUTES, NULL,
746                                 XNP_WSGL.MsgGetText(210,XNP_WSGLM.MSG210_INVALID_QRY,'Start Time'),
747                                 XNP_WSGL.MsgGetText(211,XNP_WSGLM.MSG211_EXAMPLE_TODAY,to_char(sysdate, 'DD-MON-RRRR HH24:MI:SS')));
748             return false;
749       end;
750       begin
751          XNP_WSGL.BuildWhere(P_END_TIME, U_END_TIME, 'TIMER_REGISTRY.END_TIME', XNP_WSGL.TYPE_DATE, I_WHERE, 'DD-MON-RRRR HH24:MI:SS');
752       exception
753          when others then
754             XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_ERROR_QRY, SQLERRM,
755                                 'Timer Registry'||' : '||'Timers', DEF_BODY_ATTRIBUTES, NULL,
756                                 XNP_WSGL.MsgGetText(210,XNP_WSGLM.MSG210_INVALID_QRY,'End Time'),
757                                 XNP_WSGL.MsgGetText(211,XNP_WSGLM.MSG211_EXAMPLE_TODAY,to_char(sysdate, 'DD-MON-RRRR HH24:MI:SS')));
758             return false;
759       end;
760       XNP_WSGL.BuildWhere(P_NEXT_TIMER, 'TIMER_REGISTRY.NEXT_TIMER', XNP_WSGL.TYPE_CHAR, I_WHERE);
761 
762       ZONE_SQL := 'SELECT TIMER_REGISTRY.TIMER_ID,
763                          TIMER_REGISTRY.ORDER_ID,
764                          TIMER_REGISTRY.REFERENCE_ID,
765                          ''xnp_web_utils.show_msg_body?p_msg_id=''||TIMER_REGISTRY.TIMER_ID,
766                          TIMER_REGISTRY.TIMER_MESSAGE_CODE,
767                          TIMER_REGISTRY.STATUS,
768                          TIMER_REGISTRY.START_TIME,
769                          TIMER_REGISTRY.END_TIME,
770                          TIMER_REGISTRY.NEXT_TIMER
771                   FROM   XNP_TIMER_REGISTRY TIMER_REGISTRY,
772                          XNP_MSG_TYPES_B MESSAGE_TYPES_2';
773 
774       ZONE_SQL := ZONE_SQL || I_WHERE;
775       ZONE_SQL := ZONE_SQL || ' ORDER BY TIMER_REGISTRY.TIMER_ID Desc ,
776                                        TIMER_REGISTRY.TIMER_MESSAGE_CODE';
777       return true;
778 
779    exception
780       when others then
781          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry'||' : '||'Timers',
782                              DEF_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.BuildSQL');
783          return false;
784    end;
785 
786 
787 --------------------------------------------------------------------------------
788 -- Name:        xnp_timers$xnp_timer_registry.FormQuery
789 --
790 -- Description: This procedure builds an HTML form for entry of query criteria.
791 --              The criteria entered are to restrict the query of the 'XNP_TIMER_REGISTRY'
792 --              module component (Timers).
793 --
794 -- Parameters:
795 --
796 --------------------------------------------------------------------------------
797    procedure FormQuery(
798              Z_DIRECT_CALL in boolean,
799              Z_CHK in varchar2) is
800    begin
801 
802       if not Z_DIRECT_CALL then
803          if not XNP_WSGL.ValidateChecksum('', Z_CHK) then
804             return;
805          end if;
806       end if;
807 
808       XNP_WSGL.OpenPageHead('Timer Registry'||' : '||'Timers');
809       CreateQueryJavaScript;
810 	  -- Added for iHelp
811 	  htp.p('<SCRIPT> ');
812 	  icx_admin_sig.help_win_script('xnpDiag_timer', null, 'XNP');
813 	  htp.p('</SCRIPT>');
814 	  -- <<
815       xnp_timers$.TemplateHeader(TRUE,0);
816       XNP_WSGL.ClosePageHead;
817 
818 	  -- Added for iHelp
819 	  htp.p('<A HREF="javascript:help_window()"');
820 	  htp.p('onMouseOver="window.status='||''''||'Help'||''''||';return true">');
821 	  htp.p(htf.img('/OA_MEDIA/afhelp.gif'));
822 	  htp.p('</A>');
823 	  htp.p(htf.nl);
824 	  -- <<
825 
826       XNP_WSGL.OpenPageBody(FALSE, p_attributes=>QF_BODY_ATTRIBUTES);
827 
828       htp.p(htf.bold(fnd_message.get_string('XNP','WEB_TITLE')));
829       xnp_timers$.FirstPage(TRUE);
830       htp.p(htf.header(1,fnd_message.get_string('XNP','WEB_XNPTIMER_DETAILS_TITLE')));
831       htp.para;
832       htp.p(XNP_WSGL.MsgGetText(116,XNP_WSGLM.DSP116_ENTER_QRY_CAPTION,'Timers'));
833       htp.para;
834 
835       htp.formOpen(curl => 'xnp_timers$xnp_timer_registry.actionquery', cattributes => 'NAME="frmZero"');
836 
837       XNP_WSGL.LayoutOpen(XNP_WSGL.LAYOUT_TABLE);
838 
839       XNP_WSGL.LayoutRowStart;
840       for i in 1..QF_NUMBER_OF_COLUMNS loop
841 	  XNP_WSGL.LayoutHeader(13, 'LEFT', NULL);
842 	  XNP_WSGL.LayoutHeader(20, 'LEFT', NULL);
843       end loop;
844       XNP_WSGL.LayoutRowEnd;
845 
846       XNP_WSGL.LayoutRowStart('TOP');
847       XNP_WSGL.LayoutData(htf.bold('Order Id:'));
848       XNP_WSGL.LayoutData(XNP_WSGL.BuildQueryControl('ORDER_ID', '8', TRUE));
849       XNP_WSGL.LayoutRowEnd;
850       XNP_WSGL.LayoutRowStart('TOP');
851       XNP_WSGL.LayoutData(htf.bold('Reference Id:'));
852       XNP_WSGL.LayoutData(XNP_WSGL.BuildQueryControl('REFERENCE_ID', '20', FALSE));
853       XNP_WSGL.LayoutRowEnd;
854       XNP_WSGL.LayoutRowStart('TOP');
855       XNP_WSGL.LayoutData(htf.bold('Timer:'));
856       XNP_WSGL.LayoutData(XNP_WSGL.BuildQueryControl('TIMER_MESSAGE_CODE', '20', FALSE) || ' ' ||
857                       XNP_WSGJSL.LOVButton('TIMER_MESSAGE_CODE',LOV_BUTTON_TEXT));
858       XNP_WSGL.LayoutRowEnd;
859       XNP_WSGL.LayoutRowStart('TOP');
860       XNP_WSGL.LayoutData(htf.bold('Status:'));
861       InitialiseDomain('STATUS');
862       XNP_WSGL.LayoutData(XNP_WSGL.BuildDVControl(D_STATUS, XNP_WSGL.CTL_QUERY));
863       XNP_WSGL.LayoutRowEnd;
864       XNP_WSGL.LayoutRowStart('TOP');
865       XNP_WSGL.LayoutData(htf.bold('Start Time:'));
866       XNP_WSGL.LayoutData(XNP_WSGL.BuildQueryControl('START_TIME', '18', TRUE));
867       XNP_WSGL.LayoutRowEnd;
868       XNP_WSGL.LayoutRowStart('TOP');
869       XNP_WSGL.LayoutData(htf.bold('End Time:'));
870       XNP_WSGL.LayoutData(XNP_WSGL.BuildQueryControl('END_TIME', '18', TRUE));
871       XNP_WSGL.LayoutRowEnd;
872       XNP_WSGL.LayoutRowStart('TOP');
873       XNP_WSGL.LayoutData(htf.bold('Next Timer:'));
874       XNP_WSGL.LayoutData(XNP_WSGL.BuildQueryControl('NEXT_TIMER', '20', FALSE) || ' ' ||
875                       XNP_WSGJSL.LOVButton('NEXT_TIMER',LOV_BUTTON_TEXT));
876       XNP_WSGL.LayoutRowEnd;
877 
878       XNP_WSGL.LayoutClose;
879 
880       htp.p ('<SCRIPT><!--');
881       htp.p ('document.write (''<input type=hidden name="Z_ACTION">'')');
882       htp.p ('//-->');
883       htp.p ('</SCRIPT>');
884       htp.p ('<SCRIPT><!--');
885       htp.p ('document.write (''' || htf.formSubmit('', htf.escape_sc(QF_QUERY_BUT_CAPTION), 'onClick="this.form.Z_ACTION.value=\''' || QF_QUERY_BUT_ACTION || '\''"') || ''')');
886       htp.p ('//-->');
887       htp.p ('</SCRIPT>');
888 
889       if XNP_WSGL.IsSupported ('NOSCRIPT')
890       then
891 
892         htp.p ('<NOSCRIPT>');
893         htp.formSubmit('Z_ACTION', htf.escape_sc(QF_QUERY_BUT_CAPTION));
894         htp.p ('</NOSCRIPT>');
895 
896       end if;
897       htp.formReset(htf.escape_sc(QF_CLEAR_BUT_CAPTION));
898 
899       XNP_WSGL.HiddenField('Z_CHK',
900                      to_char(XNP_WSGL.Checksum('')));
901       htp.formClose;
902 
903       htp.p(htf.img('/OA_MEDIA/FNDLOGOS.gif'));
904 
905       XNP_WSGL.ClosePageBody;
906 
907    exception
908       when others then
909          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry'||' : '||'Timers',
910                              QF_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.FormQuery');
911          XNP_WSGL.ClosePageBody;
912    end;
913 
914 --------------------------------------------------------------------------------
915 -- Name:        xnp_timers$xnp_timer_registry.FormView
916 --
917 -- Description: This procedure builds an HTML form for view/update of fields in
918 --              the 'XNP_TIMER_REGISTRY' module component (Timers).
919 --
920 -- Parameters:  Z_FORM_STATUS  Status of the form
921 --
922 --------------------------------------------------------------------------------
923    procedure FormView(Z_FORM_STATUS in number) is
924 
925 
926     begin
927 
928       XNP_WSGL.OpenPageHead('Timer Registry'||' : '||'Timers');
929       xnp_timers$.TemplateHeader(TRUE,0);
930       XNP_WSGL.ClosePageHead;
931 
932       XNP_WSGL.OpenPageBody(FALSE, p_attributes=>VF_BODY_ATTRIBUTES);
933 
934       htp.p(htf.bold(fnd_message.get_string('XNP','WEB_TITLE')));
935       htp.p(htf.header(1,fnd_message.get_string('XNP','WEB_XNPTIMER_DETAILS_TITLE')));
936       InitialiseDomain('STATUS');
937 
938 
939 
940       FORM_VAL.TIMER_ID := CURR_VAL.TIMER_ID;
941       FORM_VAL.ORDER_ID := CURR_VAL.ORDER_ID;
942       FORM_VAL.REFERENCE_ID := CURR_VAL.REFERENCE_ID;
943       FORM_VAL.XML_PAYLOAD_LINK := NBT_VAL.XML_PAYLOAD_LINK;
944       FORM_VAL.WI_INSTANCE_ID := CURR_VAL.WI_INSTANCE_ID;
945       FORM_VAL.FA_INSTANCE_ID := CURR_VAL.FA_INSTANCE_ID;
946       FORM_VAL.TIMER_MESSAGE_CODE := CURR_VAL.TIMER_MESSAGE_CODE;
947       FORM_VAL.STATUS := XNP_WSGL.DomainMeaning(D_STATUS, CURR_VAL.STATUS);
948       FORM_VAL.START_TIME := ltrim(to_char(CURR_VAL.START_TIME, 'DD-MON-RRRR HH24:MI:SS'));
949       FORM_VAL.END_TIME := ltrim(to_char(CURR_VAL.END_TIME, 'DD-MON-RRRR HH24:MI:SS'));
950       FORM_VAL.NEXT_TIMER := CURR_VAL.NEXT_TIMER;
951 
952       if Z_FORM_STATUS = XNP_WSGL.FORM_STATUS_ERROR then
953          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_ERROR, XNP_cg$errors.GetErrors,
954                              'Timer Registry'||' : '||'Timers', VF_BODY_ATTRIBUTES);
955       elsif Z_FORM_STATUS = XNP_WSGL.FORM_STATUS_UPD then
956          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_SUCCESS, XNP_WSGL.MsgGetText(207, XNP_WSGLM.MSG207_ROW_UPDATED),
957                              'Timer Registry'||' : '||'Timers', VF_BODY_ATTRIBUTES);
958       elsif Z_FORM_STATUS = XNP_WSGL.FORM_STATUS_INS then
959          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_SUCCESS, XNP_WSGL.MsgGetText(208, XNP_WSGLM.MSG208_ROW_INSERTED),
960                              'Timer Registry'||' : '||'Timers', VF_BODY_ATTRIBUTES);
961       end if;
962 
963 
964       XNP_WSGL.LayoutOpen(XNP_WSGL.LAYOUT_TABLE, P_BORDER=>TRUE);
965 
966       XNP_WSGL.LayoutRowStart;
967       for i in 1..VF_NUMBER_OF_COLUMNS loop
968          XNP_WSGL.LayoutHeader(31, 'LEFT', NULL);
969          XNP_WSGL.LayoutHeader(30, 'LEFT', NULL);
970       end loop;
971       XNP_WSGL.LayoutRowEnd;
972 
973       XNP_WSGL.LayoutRowStart('TOP');
974       XNP_WSGL.LayoutData(htf.bold('Order Id:'));
975       XNP_WSGL.LayoutData(htf.bold(FORM_VAL.ORDER_ID));
976       XNP_WSGL.LayoutRowEnd;
977       XNP_WSGL.LayoutRowStart('TOP');
978       XNP_WSGL.LayoutData(htf.bold('Reference Id:'));
979       XNP_WSGL.LayoutData(htf.bold(FORM_VAL.REFERENCE_ID));
980       XNP_WSGL.LayoutRowEnd;
981       if NBT_VAL.XML_PAYLOAD_LINK is not null then
982          XNP_WSGL.LayoutRowStart('TOP');
983          XNP_WSGL.LayoutData(htf.anchor2(FORM_VAL.XML_PAYLOAD_LINK, 'XML'));
984          XNP_WSGL.LayoutData('');
985          XNP_WSGL.LayoutRowEnd;
986       end if;
987       XNP_WSGL.LayoutRowStart('TOP');
988       XNP_WSGL.LayoutData(htf.bold('Workitem Instance Id:'));
989       XNP_WSGL.LayoutData(FORM_VAL.WI_INSTANCE_ID);
990       XNP_WSGL.LayoutRowEnd;
991       XNP_WSGL.LayoutRowStart('TOP');
992       XNP_WSGL.LayoutData(htf.bold('Fulfillment Action Instance Id:'));
993       XNP_WSGL.LayoutData(FORM_VAL.FA_INSTANCE_ID);
994       XNP_WSGL.LayoutRowEnd;
995       XNP_WSGL.LayoutRowStart('TOP');
996       XNP_WSGL.LayoutData(htf.bold('Timer:'));
997       XNP_WSGL.LayoutData(htf.bold(FORM_VAL.TIMER_MESSAGE_CODE));
998       XNP_WSGL.LayoutRowEnd;
999       XNP_WSGL.LayoutRowStart('TOP');
1000       XNP_WSGL.LayoutData(htf.bold('Status:'));
1001       XNP_WSGL.LayoutData(htf.bold(FORM_VAL.STATUS));
1002       XNP_WSGL.LayoutRowEnd;
1003       XNP_WSGL.LayoutRowStart('TOP');
1004       XNP_WSGL.LayoutData(htf.bold('Start Time:'));
1005       XNP_WSGL.LayoutData(htf.bold(FORM_VAL.START_TIME));
1006       XNP_WSGL.LayoutRowEnd;
1007       XNP_WSGL.LayoutRowStart('TOP');
1008       XNP_WSGL.LayoutData(htf.bold('End Time:'));
1009       XNP_WSGL.LayoutData(htf.bold(FORM_VAL.END_TIME));
1010       XNP_WSGL.LayoutRowEnd;
1011       XNP_WSGL.LayoutRowStart('TOP');
1012       XNP_WSGL.LayoutData(htf.bold('Next Timer:'));
1013       XNP_WSGL.LayoutData(htf.bold(FORM_VAL.NEXT_TIMER));
1014       XNP_WSGL.LayoutRowEnd;
1015 
1016       XNP_WSGL.LayoutClose;
1017 
1018 
1019 
1020 
1021 
1022 
1023       XNP_WSGL.ReturnLinks('0.1', XNP_WSGL.MENU_LONG);
1024       XNP_WSGL.NavLinks;
1025 
1026 
1027       htp.p(htf.img('/OA_MEDIA/FNDLOGOS.gif'));
1028 
1029       XNP_WSGL.ClosePageBody;
1030 
1031    exception
1032       when others then
1033          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry'||' : '||'Timers',
1034                              VF_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.FormView');
1035          XNP_WSGL.ClosePageBody;
1036    end;
1037 
1038 --------------------------------------------------------------------------------
1039 -- Name:        xnp_timers$xnp_timer_registry.QueryView
1040 --
1041 -- Description: Queries the details of a single row in preparation for display.
1042 --
1043 -- Parameters:
1044 --
1045 --------------------------------------------------------------------------------
1046    procedure QueryView(
1047              P_TIMER_ID in varchar2,
1048              Z_POST_DML in boolean,
1049              Z_FORM_STATUS in number,
1050              Z_DIRECT_CALL in boolean,
1051              Z_CHK in varchar2) is
1052    begin
1053 
1054       XNP_WSGL.RegisterURL('xnp_timers$xnp_timer_registry.queryview');
1055       XNP_WSGL.AddURLParam('P_TIMER_ID', P_TIMER_ID);
1056       XNP_WSGL.AddURLParam('Z_CHK', Z_CHK);
1057       if not Z_DIRECT_CALL then
1058          if not XNP_WSGL.ValidateChecksum('' ||
1059                                       P_TIMER_ID, Z_CHK) then
1060             return;
1061          end if;
1062       end if;
1063 
1064 
1065       if P_TIMER_ID is not null then
1066          CURR_VAL.TIMER_ID := P_TIMER_ID;
1067       end if;
1068       if Z_POST_DML then
1069 
1070          null;
1071 
1072       else
1073 
1074          SELECT TIMER_REGISTRY.TIMER_ID,
1075                 TIMER_REGISTRY.ORDER_ID,
1076                 TIMER_REGISTRY.REFERENCE_ID,
1077                 TIMER_REGISTRY.WI_INSTANCE_ID,
1078                 TIMER_REGISTRY.FA_INSTANCE_ID,
1079                 TIMER_REGISTRY.TIMER_MESSAGE_CODE,
1080                 TIMER_REGISTRY.STATUS,
1081                 TIMER_REGISTRY.START_TIME,
1082                 TIMER_REGISTRY.END_TIME,
1083                 TIMER_REGISTRY.NEXT_TIMER
1084          INTO   CURR_VAL.TIMER_ID,
1085                 CURR_VAL.ORDER_ID,
1086                 CURR_VAL.REFERENCE_ID,
1087                 CURR_VAL.WI_INSTANCE_ID,
1088                 CURR_VAL.FA_INSTANCE_ID,
1089                 CURR_VAL.TIMER_MESSAGE_CODE,
1090                 CURR_VAL.STATUS,
1091                 CURR_VAL.START_TIME,
1092                 CURR_VAL.END_TIME,
1093                 CURR_VAL.NEXT_TIMER
1094          FROM   XNP_TIMER_REGISTRY TIMER_REGISTRY,
1095                 XNP_MSG_TYPES_B MESSAGE_TYPES_2
1096          WHERE  TIMER_REGISTRY.TIMER_ID = CURR_VAL.TIMER_ID
1097          AND    MESSAGE_TYPES_2.MSG_CODE = TIMER_REGISTRY.TIMER_MESSAGE_CODE
1098          ;
1099 
1100       end if;
1101 
1102       NBT_VAL.XML_PAYLOAD_LINK := 'xnp_web_utils.show_msg_body?p_msg_id='||CURR_VAL.TIMER_ID;
1103 
1104       if not PostQuery(Z_POST_DML) then
1105          FormView(XNP_WSGL.FORM_STATUS_ERROR);
1106       else
1107          FormView(Z_FORM_STATUS);
1108       end if;
1109 
1110    exception
1111       when NO_DATA_FOUND then
1112          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_ERROR, XNP_WSGL.MsgGetText(204, XNP_WSGLM.MSG204_ROW_DELETED),
1113                              'Timer Registry'||' : '||'Timers', VF_BODY_ATTRIBUTES);
1114       when others then
1115          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry'||' : '||'Timers',
1116                              VF_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.QueryView');
1117    end;
1118 --------------------------------------------------------------------------------
1119 -- Name:        xnp_timers$xnp_timer_registry.QueryList
1120 --
1121 -- Description: This procedure builds the Record list for the 'XNP_TIMER_REGISTRY'
1122 --              module component (Timers).
1123 --
1124 --              The Record List displays context information for records which
1125 --              match the specified query criteria.
1126 --              Sets of records are displayed (12 records at a time)
1127 --              with Next/Previous buttons to get other record sets.
1128 --
1129 --              The first context column will be created as a link to the
1130 --              xnp_timers$xnp_timer_registry.FormView procedure for display of more details
1131 --              of that particular row.
1132 --
1133 -- Parameters:  P_ORDER_ID - Order Id
1134 --              U_ORDER_ID - Order Id (upper bound)
1135 --              P_REFERENCE_ID - Reference Id
1136 --              P_TIMER_MESSAGE_CODE - Timer
1137 --              P_STATUS - Status
1138 --              P_START_TIME - Start Time
1139 --              U_START_TIME - Start Time (upper bound)
1140 --              P_END_TIME - End Time
1141 --              U_END_TIME - End Time (upper bound)
1142 --              P_NEXT_TIMER - Next Timer
1143 --              Z_START - First record to display
1144 --              Z_ACTION - Next or Previous set
1145 --
1146 --------------------------------------------------------------------------------
1147    procedure QueryList(
1148              P_ORDER_ID in varchar2,
1149              U_ORDER_ID in varchar2,
1150              P_REFERENCE_ID in varchar2,
1151              P_TIMER_MESSAGE_CODE in varchar2,
1152              P_STATUS in varchar2,
1153              P_START_TIME in varchar2,
1154              U_START_TIME in varchar2,
1155              P_END_TIME in varchar2,
1156              U_END_TIME in varchar2,
1157              P_NEXT_TIMER in varchar2,
1158              Z_START in varchar2,
1159              Z_ACTION in varchar2,
1160              Z_DIRECT_CALL in boolean,
1161              Z_CHK in varchar2) is
1162 
1163       L_VF_FRAME          varchar2(20) := null;
1164       I_WHERE             varchar2(2000) := '';
1165       I_CURSOR            integer;
1166       I_VOID              integer;
1167       I_ROWS_FETCHED      integer := 0;
1168       I_TOTAL_ROWS        integer := 0;
1169       I_START             number(6) := to_number(Z_START);
1170       I_COUNT             number(10) := 0;
1171       I_OF_TOTAL_TEXT     varchar2(200) := '';
1172       I_NEXT_BUT          boolean;
1173       I_PREV_BUT          boolean;
1174       L_CHECKSUM          varchar2(10);
1175 
1176    begin
1177 
1178       XNP_WSGL.RegisterURL('xnp_timers$xnp_timer_registry.querylist');
1179       XNP_WSGL.AddURLParam('P_ORDER_ID', P_ORDER_ID);
1180       XNP_WSGL.AddURLParam('U_ORDER_ID', U_ORDER_ID);
1181       XNP_WSGL.AddURLParam('P_REFERENCE_ID', P_REFERENCE_ID);
1182       XNP_WSGL.AddURLParam('P_TIMER_MESSAGE_CODE', P_TIMER_MESSAGE_CODE);
1183       XNP_WSGL.AddURLParam('P_STATUS', P_STATUS);
1184       XNP_WSGL.AddURLParam('P_START_TIME', P_START_TIME);
1185       XNP_WSGL.AddURLParam('U_START_TIME', U_START_TIME);
1186       XNP_WSGL.AddURLParam('P_END_TIME', P_END_TIME);
1187       XNP_WSGL.AddURLParam('U_END_TIME', U_END_TIME);
1188       XNP_WSGL.AddURLParam('P_NEXT_TIMER', P_NEXT_TIMER);
1189       XNP_WSGL.AddURLParam('Z_START', Z_START);
1190       XNP_WSGL.AddURLParam('Z_ACTION', Z_ACTION);
1191       XNP_WSGL.AddURLParam('Z_CHK', Z_CHK);
1192       if not Z_DIRECT_CALL then
1193          if not XNP_WSGL.ValidateChecksum('', Z_CHK) then
1194             return;
1195          end if;
1196       end if;
1197 
1198       if (Z_ACTION = RL_QUERY_BUT_ACTION) or (Z_ACTION = RL_QUERY_BUT_CAPTION) then
1199          FormQuery(
1200          Z_DIRECT_CALL=>TRUE);
1201          return;
1202       end if;
1203 
1204       XNP_WSGL.OpenPageHead('Timer Registry'||' : '||'Timers');
1205       CreateListJavaScript;
1206       xnp_timers$.TemplateHeader(TRUE,0);
1207       XNP_WSGL.ClosePageHead;
1208 
1209       XNP_WSGL.OpenPageBody(FALSE, p_attributes=>RL_BODY_ATTRIBUTES);
1210 
1211       htp.p(htf.bold(fnd_message.get_string('XNP','WEB_TITLE')));
1212       htp.p(htf.header(1,fnd_message.get_string('XNP','WEB_XNPTIMER_DETAILS_TITLE')));
1213       if (Z_ACTION = RL_LAST_BUT_ACTION) or (Z_ACTION = RL_LAST_BUT_CAPTION) or
1214          (Z_ACTION = RL_COUNT_BUT_ACTION) or (Z_ACTION = RL_COUNT_BUT_CAPTION) or
1215          (RL_TOTAL_COUNT_REQD)
1216       then
1217 
1218          I_COUNT := QueryHits(
1219                     P_ORDER_ID,
1220                     U_ORDER_ID,
1221                     P_REFERENCE_ID,
1222                     P_TIMER_MESSAGE_CODE,
1223                     P_STATUS,
1224                     P_START_TIME,
1225                     U_START_TIME,
1226                     P_END_TIME,
1227                     U_END_TIME,
1228                     P_NEXT_TIMER);
1229          if I_COUNT = -1 then
1230             XNP_WSGL.ClosePageBody;
1231             return;
1232          end if;
1233       end if;
1234 
1235       if (Z_ACTION = RL_COUNT_BUT_ACTION) or (Z_ACTION = RL_COUNT_BUT_CAPTION) or
1236          RL_TOTAL_COUNT_REQD then
1237          I_OF_TOTAL_TEXT := ' '||XNP_WSGL.MsgGetText(111,XNP_WSGLM.DSP111_OF_TOTAL, to_char(I_COUNT));
1238       end if;
1239 
1240       if Z_START IS NULL or (Z_ACTION = RL_FIRST_BUT_ACTION) or (Z_ACTION = RL_FIRST_BUT_CAPTION) then
1241          I_START := 1;
1242       elsif (Z_ACTION = RL_NEXT_BUT_ACTION) or (Z_ACTION = RL_NEXT_BUT_CAPTION) then
1243          I_START := I_START + RL_RECORD_SET_SIZE;
1244       elsif (Z_ACTION = RL_PREV_BUT_ACTION) or (Z_ACTION = RL_PREV_BUT_CAPTION) then
1245          I_START := I_START - RL_RECORD_SET_SIZE;
1246       elsif (Z_ACTION = RL_LAST_BUT_ACTION) or (Z_ACTION = RL_LAST_BUT_CAPTION) then
1247          I_START := 1 + (floor((I_COUNT-1)/RL_RECORD_SET_SIZE)*RL_RECORD_SET_SIZE);
1248       elsif Z_ACTION is null and I_START = 1 then
1249 	 null;
1250       elsif Z_ACTION IS NULL then
1251          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_ERROR, XNP_WSGL.MsgGetText(215,XNP_WSGLM.MSG215_NO_MULTIPLE_SUBMITS),
1252                              'Timer Registry'||' : '||'Timers', RL_BODY_ATTRIBUTES);
1253          XNP_WSGL.ClosePageBody;
1254          return;
1255       end if;
1256 
1257       if I_START < 1 then
1258           I_START := 1;
1259       end if;
1260 
1261       I_PREV_BUT := TRUE;
1262       I_NEXT_BUT := FALSE;
1263       if I_START = 1 or Z_ACTION IS NULL then
1264          I_PREV_BUT := FALSE;
1265       end if;
1266 
1267       if nvl(Z_ACTION, 'X') <> 'DONTQUERY' then
1268 
1269          if ZONE_SQL IS NULL then
1270             if not BuildSQL(
1271                        P_ORDER_ID,
1272                        U_ORDER_ID,
1273                        P_REFERENCE_ID,
1274                        P_TIMER_MESSAGE_CODE,
1275                        P_STATUS,
1276                        P_START_TIME,
1277                        U_START_TIME,
1278                        P_END_TIME,
1279                        U_END_TIME,
1280                        P_NEXT_TIMER) then
1281                XNP_WSGL.ClosePageBody;
1282                return;
1283             end if;
1284          end if;
1285 
1286          if not PreQuery(
1287                        P_ORDER_ID,
1288                        U_ORDER_ID,
1289                        P_REFERENCE_ID,
1290                        P_TIMER_MESSAGE_CODE,
1291                        P_STATUS,
1292                        P_START_TIME,
1293                        U_START_TIME,
1294                        P_END_TIME,
1295                        U_END_TIME,
1296                        P_NEXT_TIMER) then
1297             XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_ERROR, XNP_cg$errors.GetErrors,
1298                                 'Timer Registry'||' : '||'Timers', RL_BODY_ATTRIBUTES);
1299          return;
1300          end if;
1301 
1302          InitialiseDomain('STATUS');
1303 
1304 
1305          I_CURSOR := dbms_sql.open_cursor;
1306          dbms_sql.parse(I_CURSOR, ZONE_SQL, dbms_sql.v7);
1307          dbms_sql.define_column(I_CURSOR, 1, CURR_VAL.TIMER_ID);
1308          dbms_sql.define_column(I_CURSOR, 2, CURR_VAL.ORDER_ID);
1309          dbms_sql.define_column(I_CURSOR, 3, CURR_VAL.REFERENCE_ID, 80);
1310          dbms_sql.define_column(I_CURSOR, 4, NBT_VAL.XML_PAYLOAD_LINK, 2000);
1311          dbms_sql.define_column(I_CURSOR, 5, CURR_VAL.TIMER_MESSAGE_CODE, 20);
1312          dbms_sql.define_column(I_CURSOR, 6, CURR_VAL.STATUS, 20);
1313          dbms_sql.define_column(I_CURSOR, 7, CURR_VAL.START_TIME);
1314          dbms_sql.define_column(I_CURSOR, 8, CURR_VAL.END_TIME);
1315          dbms_sql.define_column(I_CURSOR, 9, CURR_VAL.NEXT_TIMER, 20);
1316 
1317          I_VOID := dbms_sql.execute(I_CURSOR);
1318          I_ROWS_FETCHED := dbms_sql.fetch_rows(I_CURSOR);
1319       else
1320          I_ROWS_FETCHED := 0;
1321       end if;
1322       I_TOTAL_ROWS := I_ROWS_FETCHED;
1323 
1324       if I_ROWS_FETCHED <> 0 then
1325 
1326          XNP_WSGL.LayoutOpen(XNP_WSGL.LAYOUT_TABLE, P_BORDER=>TRUE);
1327 
1328          XNP_WSGL.LayoutRowStart;
1329          for i in 1..RL_NUMBER_OF_COLUMNS loop
1330       	    XNP_WSGL.LayoutHeader(8, 'RIGHT', 'Order Id');
1331       	    XNP_WSGL.LayoutHeader(20, 'LEFT', 'Reference Id');
1332       	    XNP_WSGL.LayoutHeader(30, 'LEFT', 'XML');
1333       	    XNP_WSGL.LayoutHeader(20, 'LEFT', 'Timer');
1334       	    XNP_WSGL.LayoutHeader(20, 'LEFT', 'Status');
1335       	    XNP_WSGL.LayoutHeader(18, 'LEFT', 'Start Time');
1336       	    XNP_WSGL.LayoutHeader(18, 'LEFT', 'End Time');
1337       	    XNP_WSGL.LayoutHeader(20, 'LEFT', 'Next Timer');
1338          end loop;
1339          XNP_WSGL.LayoutRowEnd;
1340 
1341          while I_ROWS_FETCHED <> 0 loop
1342 
1343             if I_TOTAL_ROWS >= I_START then
1344                dbms_sql.column_value(I_CURSOR, 1, CURR_VAL.TIMER_ID);
1345                dbms_sql.column_value(I_CURSOR, 2, CURR_VAL.ORDER_ID);
1346                dbms_sql.column_value(I_CURSOR, 3, CURR_VAL.REFERENCE_ID);
1347                dbms_sql.column_value(I_CURSOR, 4, NBT_VAL.XML_PAYLOAD_LINK);
1348                dbms_sql.column_value(I_CURSOR, 5, CURR_VAL.TIMER_MESSAGE_CODE);
1349                dbms_sql.column_value(I_CURSOR, 6, CURR_VAL.STATUS);
1350                dbms_sql.column_value(I_CURSOR, 7, CURR_VAL.START_TIME);
1351                dbms_sql.column_value(I_CURSOR, 8, CURR_VAL.END_TIME);
1352                dbms_sql.column_value(I_CURSOR, 9, CURR_VAL.NEXT_TIMER);
1353                L_CHECKSUM := to_char(XNP_WSGL.Checksum(''||CURR_VAL.TIMER_ID));
1354 
1355 
1356                XNP_WSGL.LayoutRowStart('TOP');
1357                XNP_WSGL.LayoutData(htf.anchor2('xnp_timers$xnp_timer_registry.queryview?P_TIMER_ID='||CURR_VAL.TIMER_ID||'&Z_CHK='||L_CHECKSUM, CURR_VAL.ORDER_ID, ctarget=>L_VF_FRAME));
1358                XNP_WSGL.LayoutData(CURR_VAL.REFERENCE_ID);
1359                XNP_WSGL.LayoutData(htf.anchor2(NBT_VAL.XML_PAYLOAD_LINK, 'XML'));
1360                XNP_WSGL.LayoutData(CURR_VAL.TIMER_MESSAGE_CODE);
1361                XNP_WSGL.LayoutData(XNP_WSGL.DomainMeaning(D_STATUS, CURR_VAL.STATUS));
1362                XNP_WSGL.LayoutData(ltrim(to_char(CURR_VAL.START_TIME, 'DD-MON-RRRR HH24:MI:SS')));
1363                XNP_WSGL.LayoutData(ltrim(to_char(CURR_VAL.END_TIME, 'DD-MON-RRRR HH24:MI:SS')));
1364                XNP_WSGL.LayoutData(CURR_VAL.NEXT_TIMER);
1365                XNP_WSGL.LayoutRowEnd;
1366 
1367                I_ROWS_FETCHED := dbms_sql.fetch_rows(I_CURSOR);
1368                if I_TOTAL_ROWS = I_START + RL_RECORD_SET_SIZE - 1 then
1369                   if I_ROWS_FETCHED <> 0 then
1370                      I_NEXT_BUT := TRUE;
1371                   end if;
1372                   exit;
1373                end if;
1374             else
1375                I_ROWS_FETCHED := dbms_sql.fetch_rows(I_CURSOR);
1376             end if;
1377 
1378             I_TOTAL_ROWS := I_TOTAL_ROWS + I_ROWS_FETCHED;
1379 
1380          end loop;
1381 
1382          XNP_WSGL.LayoutClose;
1383 
1384          if I_START = I_TOTAL_ROWS then
1385             htp.p(XNP_WSGL.MsgGetText(109,XNP_WSGLM.DSP109_RECORD, to_char(I_TOTAL_ROWS))||I_OF_TOTAL_TEXT);
1386          else
1387             htp.p(XNP_WSGL.MsgGetText(110,XNP_WSGLM.DSP110_RECORDS_N_M,
1388                                   to_char(I_START), to_char(I_TOTAL_ROWS))||
1389                   I_OF_TOTAL_TEXT);
1390          end if;
1391          htp.para;
1392       else
1393          htp.p(XNP_WSGL.MsgGetText(112,XNP_WSGLM.DSP112_NO_RECORDS));
1394       end if;
1395 
1396       if nvl(Z_ACTION, 'X') <> 'DONTQUERY' then
1397          dbms_sql.close_cursor(I_CURSOR);
1398       end if;
1399 
1400       htp.formOpen(curl => 'xnp_timers$xnp_timer_registry.querylist', cattributes => 'NAME="frmZero"');
1401       XNP_WSGL.HiddenField('P_ORDER_ID', P_ORDER_ID);
1402       XNP_WSGL.HiddenField('U_ORDER_ID', U_ORDER_ID);
1403       XNP_WSGL.HiddenField('P_REFERENCE_ID', P_REFERENCE_ID);
1404       XNP_WSGL.HiddenField('P_TIMER_MESSAGE_CODE', P_TIMER_MESSAGE_CODE);
1405       XNP_WSGL.HiddenField('P_STATUS', P_STATUS);
1406       XNP_WSGL.HiddenField('P_START_TIME', P_START_TIME);
1407       XNP_WSGL.HiddenField('U_START_TIME', U_START_TIME);
1408       XNP_WSGL.HiddenField('P_END_TIME', P_END_TIME);
1409       XNP_WSGL.HiddenField('U_END_TIME', U_END_TIME);
1410       XNP_WSGL.HiddenField('P_NEXT_TIMER', P_NEXT_TIMER);
1411       XNP_WSGL.HiddenField('Z_START', to_char(I_START));
1412       htp.p ('<SCRIPT><!--');
1413       htp.p ('document.write (''<input type=hidden name="Z_ACTION">'')');
1414       htp.p ('//-->');
1415       htp.p ('</SCRIPT>');
1416 
1417       XNP_WSGL.RecordListButton(I_PREV_BUT, 'Z_ACTION', htf.escape_sc(RL_FIRST_BUT_CAPTION),                            XNP_WSGL.MsgGetText(213,XNP_WSGLM.MSG213_AT_FIRST),			    FALSE,
1418                             'onClick="this.form.Z_ACTION.value=\''' || RL_FIRST_BUT_ACTION || '\''"');
1419       XNP_WSGL.RecordListButton(I_PREV_BUT, 'Z_ACTION', htf.escape_sc(RL_PREV_BUT_CAPTION),                            XNP_WSGL.MsgGetText(213,XNP_WSGLM.MSG213_AT_FIRST),			    FALSE,
1420                             'onClick="this.form.Z_ACTION.value=\''' || RL_PREV_BUT_ACTION || '\''"');
1421       XNP_WSGL.RecordListButton(I_NEXT_BUT,'Z_ACTION', htf.escape_sc(RL_NEXT_BUT_CAPTION),                            XNP_WSGL.MsgGetText(214,XNP_WSGLM.MSG214_AT_LAST),			    FALSE,
1422                             'onClick="this.form.Z_ACTION.value=\''' || RL_NEXT_BUT_ACTION || '\''"');
1423       XNP_WSGL.RecordListButton(I_NEXT_BUT,'Z_ACTION', htf.escape_sc(RL_LAST_BUT_CAPTION),                            XNP_WSGL.MsgGetText(214,XNP_WSGLM.MSG214_AT_LAST),			    FALSE,
1424                             'onClick="this.form.Z_ACTION.value=\''' || RL_LAST_BUT_ACTION || '\''"');
1425 
1426       XNP_WSGL.RecordListButton(TRUE, 'Z_ACTION', htf.escape_sc(RL_REQUERY_BUT_CAPTION),p_dojs=>FALSE,
1427                             buttonJS => 'onClick="this.form.Z_ACTION.value=\''' || RL_REQUERY_BUT_ACTION || '\''"');
1428       htp.para;
1429 
1430       XNP_WSGL.RecordListButton(TRUE, 'Z_ACTION', htf.escape_sc(RL_QUERY_BUT_CAPTION),p_dojs=>FALSE,
1431                             buttonJS => 'onClick="this.form.Z_ACTION.value=\''' || RL_QUERY_BUT_ACTION || '\''"');
1432       XNP_WSGL.HiddenField('Z_CHK',
1433                      to_char(XNP_WSGL.Checksum('')));
1434       htp.formClose;
1435 
1436       XNP_WSGL.ReturnLinks('0', XNP_WSGL.MENU_LONG);
1437       XNP_WSGL.NavLinks;
1438 
1439       htp.p(htf.img('/OA_MEDIA/FNDLOGOS.gif'));
1440 
1441       XNP_WSGL.ClosePageBody;
1442 
1443    exception
1444       when others then
1445          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry'||' : '||'Timers',
1446                              RL_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.QueryList');
1447          XNP_WSGL.ClosePageBody;
1448    end;
1449 
1450 --------------------------------------------------------------------------------
1451 -- Name:        xnp_timers$xnp_timer_registry.QueryFirst
1452 --
1453 -- Description: Finds the first row which matches the given search criteria
1454 --              (if any), and calls QueryView for that row
1455 --
1456 -- Parameters:
1457 --
1458 --------------------------------------------------------------------------------
1459    procedure QueryFirst(
1460              P_ORDER_ID in varchar2,
1461              U_ORDER_ID in varchar2,
1462              P_REFERENCE_ID in varchar2,
1463              P_TIMER_MESSAGE_CODE in varchar2,
1464              P_STATUS in varchar2,
1465              P_START_TIME in varchar2,
1466              U_START_TIME in varchar2,
1467              P_END_TIME in varchar2,
1468              U_END_TIME in varchar2,
1469              P_NEXT_TIMER in varchar2,
1470              Z_ACTION in varchar2,
1471              Z_DIRECT_CALL in boolean,
1472              Z_CHK in varchar2) is
1473 
1474       I_CURSOR            integer;
1475       I_VOID              integer;
1476       I_ROWS_FETCHED      integer := 0;
1477 
1478    begin
1479 
1480       XNP_WSGL.RegisterURL('xnp_timers$xnp_timer_registry.queryfirst');
1481       XNP_WSGL.AddURLParam('P_ORDER_ID', P_ORDER_ID);
1482       XNP_WSGL.AddURLParam('U_ORDER_ID', U_ORDER_ID);
1483       XNP_WSGL.AddURLParam('P_REFERENCE_ID', P_REFERENCE_ID);
1484       XNP_WSGL.AddURLParam('P_TIMER_MESSAGE_CODE', P_TIMER_MESSAGE_CODE);
1485       XNP_WSGL.AddURLParam('P_STATUS', P_STATUS);
1486       XNP_WSGL.AddURLParam('P_START_TIME', P_START_TIME);
1487       XNP_WSGL.AddURLParam('U_START_TIME', U_START_TIME);
1488       XNP_WSGL.AddURLParam('P_END_TIME', P_END_TIME);
1489       XNP_WSGL.AddURLParam('U_END_TIME', U_END_TIME);
1490       XNP_WSGL.AddURLParam('P_NEXT_TIMER', P_NEXT_TIMER);
1491       XNP_WSGL.AddURLParam('Z_ACTION', Z_ACTION);
1492       XNP_WSGL.AddURLParam('Z_CHK', Z_CHK);
1493       if not Z_DIRECT_CALL then
1494          if not XNP_WSGL.ValidateChecksum('', Z_CHK) then
1495             return;
1496          end if;
1497       end if;
1498 
1499       if Z_ACTION = 'BLANK' then
1500          XNP_WSGL.EmptyPage(VF_BODY_ATTRIBUTES);
1501          return;
1502       end if;
1503 
1504 
1505       if not BuildSQL(
1506                     P_ORDER_ID,
1507                     U_ORDER_ID,
1508                     P_REFERENCE_ID,
1509                     P_TIMER_MESSAGE_CODE,
1510                     P_STATUS,
1511                     P_START_TIME,
1512                     U_START_TIME,
1513                     P_END_TIME,
1514                     U_END_TIME,
1515                     P_NEXT_TIMER) then
1516          return;
1517       end if;
1518 
1519       if not PreQuery(
1520                     P_ORDER_ID,
1521                     U_ORDER_ID,
1522                     P_REFERENCE_ID,
1523                     P_TIMER_MESSAGE_CODE,
1524                     P_STATUS,
1525                     P_START_TIME,
1526                     U_START_TIME,
1527                     P_END_TIME,
1528                     U_END_TIME,
1529                     P_NEXT_TIMER) then
1530          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_ERROR, XNP_cg$errors.GetErrors,
1531                              'Timer Registry'||' : '||'Timers', VF_BODY_ATTRIBUTES);
1532          return;
1533       end if;
1534 
1535       I_CURSOR := dbms_sql.open_cursor;
1536       dbms_sql.parse(I_CURSOR, ZONE_SQL, dbms_sql.v7);
1537       dbms_sql.define_column(I_CURSOR, 1, CURR_VAL.TIMER_ID);
1538       dbms_sql.define_column(I_CURSOR, 2, CURR_VAL.ORDER_ID);
1539       dbms_sql.define_column(I_CURSOR, 3, CURR_VAL.REFERENCE_ID, 80);
1540       dbms_sql.define_column(I_CURSOR, 4, NBT_VAL.XML_PAYLOAD_LINK, 2000);
1541       dbms_sql.define_column(I_CURSOR, 5, CURR_VAL.TIMER_MESSAGE_CODE, 20);
1542       dbms_sql.define_column(I_CURSOR, 6, CURR_VAL.STATUS, 20);
1543       dbms_sql.define_column(I_CURSOR, 7, CURR_VAL.START_TIME);
1544       dbms_sql.define_column(I_CURSOR, 8, CURR_VAL.END_TIME);
1545       dbms_sql.define_column(I_CURSOR, 9, CURR_VAL.NEXT_TIMER, 20);
1546 
1547       I_VOID := dbms_sql.execute(I_CURSOR);
1548 
1549       I_ROWS_FETCHED := dbms_sql.fetch_rows(I_CURSOR);
1550 
1551       if I_ROWS_FETCHED = 0 then
1552          XNP_WSGL.EmptyPage(VF_BODY_ATTRIBUTES);
1553       else
1554          dbms_sql.column_value(I_CURSOR, 1, CURR_VAL.TIMER_ID);
1555          dbms_sql.column_value(I_CURSOR, 2, CURR_VAL.ORDER_ID);
1556          dbms_sql.column_value(I_CURSOR, 3, CURR_VAL.REFERENCE_ID);
1557          dbms_sql.column_value(I_CURSOR, 4, NBT_VAL.XML_PAYLOAD_LINK);
1558          dbms_sql.column_value(I_CURSOR, 5, CURR_VAL.TIMER_MESSAGE_CODE);
1559          dbms_sql.column_value(I_CURSOR, 6, CURR_VAL.STATUS);
1560          dbms_sql.column_value(I_CURSOR, 7, CURR_VAL.START_TIME);
1561          dbms_sql.column_value(I_CURSOR, 8, CURR_VAL.END_TIME);
1562          dbms_sql.column_value(I_CURSOR, 9, CURR_VAL.NEXT_TIMER);
1563          xnp_timers$xnp_timer_registry.QueryView(Z_DIRECT_CALL=>TRUE);
1564       end if;
1565 
1566       dbms_sql.close_cursor(I_CURSOR);
1567 
1568    exception
1569       when others then
1570          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry'||' : '||'Timers',
1571                              VF_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.QueryFirst');
1572          XNP_WSGL.ClosePageBody;
1573    end;
1574 
1575 --------------------------------------------------------------------------------
1576 -- Name:        xnp_timers$xnp_timer_registry.PreQuery
1577 --
1578 -- Description: Provides place holder for code to be run prior to a query
1579 --              for the 'XNP_TIMER_REGISTRY' module component  (Timers).
1580 --
1581 -- Parameters:  None
1582 --
1583 -- Returns:     True           If success
1584 --              False          Otherwise
1585 --
1586 --------------------------------------------------------------------------------
1587    function PreQuery(
1588             P_ORDER_ID in varchar2,
1589             U_ORDER_ID in varchar2,
1590             P_REFERENCE_ID in varchar2,
1591             P_TIMER_MESSAGE_CODE in varchar2,
1592             P_STATUS in varchar2,
1593             P_START_TIME in varchar2,
1594             U_START_TIME in varchar2,
1595             P_END_TIME in varchar2,
1596             U_END_TIME in varchar2,
1597             P_NEXT_TIMER in varchar2) return boolean is
1598       L_RET_VAL boolean := TRUE;
1599    begin
1600       return L_RET_VAL;
1601    exception
1602       when others then
1603          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry'||' : '||'Timers',
1604                              DEF_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.PreQuery');
1605          return FALSE;
1606    end;
1607 
1608 --------------------------------------------------------------------------------
1609 -- Name:        xnp_timers$xnp_timer_registry.PostQuery
1610 --
1611 -- Description: Provides place holder for code to be run after a query
1612 --              for the 'XNP_TIMER_REGISTRY' module component  (Timers).
1613 --
1614 -- Parameters:  Z_POST_DML  Flag indicating if Query after insert or update
1615 --
1616 -- Returns:     True           If success
1617 --              False          Otherwise
1618 --
1619 --------------------------------------------------------------------------------
1620    function PostQuery(Z_POST_DML in boolean) return boolean is
1621       L_RET_VAL boolean := TRUE;
1622    begin
1623        return L_RET_VAL;
1624    exception
1625       when others then
1626          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry'||' : '||'Timers',
1627                              DEF_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.PostQuery');
1628           return FALSE;
1629    end;
1630 
1631 --------------------------------------------------------------------------------
1632 -- Name:        xnp_timers$xnp_timer_registry.CreateQueryJavaScript
1633 --
1634 -- Description:
1635 --
1636 -- Parameters:
1637 --
1638 --------------------------------------------------------------------------------
1639    procedure CreateQueryJavaScript is
1640    begin
1641       htp.p(XNP_WSGJSL.OpenScript);
1642       htp.p('var FormType = "Query";');
1643 
1644       htp.p(
1645 'function TIMER_MESSAGE_CODE_LOV() {
1646    var filter = "";
1647    var the_pathname = location.pathname;
1648    var i            = the_pathname.indexOf (''/:'');
1649    var j            = the_pathname.indexOf (''/'', ++i);
1650 
1651    if (i != -1)
1652    {
1653 
1654      // Syntactically incorrect url so it needs to be corrected
1655 
1656      the_pathname = the_pathname.substring (j, the_pathname.length);
1657 
1658    }; // (i != -1)
1659 
1660    frmLOV = open("xnp_timers$xnp_timer_registry.timer_message_code_listofvalue" +
1661                  "?Z_FILTER=" + escape(filter) + "&Z_MODE=Q" +
1662                  "&Z_CALLER_URL=" + escape(location.protocol + ''//'' + location.host + the_pathname + location.search) +
1663                  "&Z_ISSUE_WAIT=Y",');
1664       if LOV_FRAME is not null then
1665          htp.p('                 "'||LOV_FRAME||'");');
1666       else
1667          htp.p('                 "winLOV", "scrollbars=yes,resizable=yes,width=400,height=400");');
1668       end if;
1669       htp.p('   if (frmLOV.opener == null) {
1670       frmLOV.opener = self;
1671    }
1672 }
1673 ');
1674 
1675       htp.p(
1676 'function NEXT_TIMER_LOV() {
1677    var filter = "";
1678    var the_pathname = location.pathname;
1679    var i            = the_pathname.indexOf (''/:'');
1680    var j            = the_pathname.indexOf (''/'', ++i);
1681 
1682    if (i != -1)
1683    {
1684 
1685      // Syntactically incorrect url so it needs to be corrected
1686 
1687      the_pathname = the_pathname.substring (j, the_pathname.length);
1688 
1689    }; // (i != -1)
1690 
1691    frmLOV = open("xnp_timers$xnp_timer_registry.next_timer_listofvalues" +
1692                  "?Z_FILTER=" + escape(filter) + "&Z_MODE=Q" +
1693                  "&Z_CALLER_URL=" + escape(location.protocol + ''//'' + location.host + the_pathname + location.search) +
1694                  "&Z_ISSUE_WAIT=Y",');
1695       if LOV_FRAME is not null then
1696          htp.p('                 "'||LOV_FRAME||'");');
1697       else
1698          htp.p('                 "winLOV", "scrollbars=yes,resizable=yes,width=400,height=400");');
1699       end if;
1700       htp.p('   if (frmLOV.opener == null) {
1701       frmLOV.opener = self;
1702    }
1703 }
1704 ');
1705 
1706       htp.p(XNP_WSGJSL.CloseScript);
1707    exception
1708       when others then
1709          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry'||' : '||'Timers',
1710                              QF_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.CreateQueryJavaScript');
1711    end;
1712 
1713 --------------------------------------------------------------------------------
1714 -- Name:        xnp_timers$xnp_timer_registry.CreateListJavaScript
1715 --
1716 -- Description:
1717 --
1718 -- Parameters:
1719 --
1720 --------------------------------------------------------------------------------
1721    procedure CreateListJavaScript is
1722    begin
1723       htp.p(XNP_WSGJSL.OpenScript);
1724       htp.p('var FormType = "List";');
1725       htp.p(XNP_WSGJSL.CloseScript);
1726    exception
1727       when others then
1728          XNP_WSGL.DisplayMessage(XNP_WSGL.MESS_EXCEPTION, SQLERRM, 'Timer Registry'||' : '||'Timers',
1729                              RL_BODY_ATTRIBUTES, 'xnp_timers$xnp_timer_registry.CreateListJavaScript');
1730    end;
1731 end;