[Home] [Help]
PACKAGE BODY: APPS.FTE_PTRACKING
Source
1 PACKAGE BODY FTE_PTRACKING AS
2 /* $Header: FTEPTRKB.pls 120.3 2005/08/18 22:10:00 shravisa noship $ */
3
4 --===================
5 -- TYPES
6 --===================
7
8
9 --===================
10 -- PROCEDURES
11 --===================
12
13
14
15 PROCEDURE GetParam(
16 p_key_list IN KeyTable,
17 p_value_list IN ValueTable,
18 p_type_list IN TypeTable,
19 p_key IN VARCHAR2,
20 x_value OUT NOCOPY VARCHAR2,
21 x_type OUT NOCOPY VARCHAR2) IS
22
23 i BINARY_INTEGER := 0;
24
25 -- This procedure finds the value corresponding to a key given a list of keys and values
26
27 BEGIN
28
29 -- dbms_output.put_line('-- IN GetParam ');
30 -- dbms_output.put_line(' p_key '|| p_key);
31
32 LOOP
33 i := i + 1;
34 IF p_key_list(i) = p_key
35 THEN
36 x_value := p_value_list(i);
37 x_type := p_type_list(i);
38 EXIT;
39 END IF;
40 END LOOP;
41
42
43 -- dbms_output.put_line(' x_value '|| x_value);
44 -- dbms_output.put_line(' x_type '|| x_type);
45 -- dbms_output.put_line('-- LEAVING GetParam ');
46
47
48 EXCEPTION
49 WHEN NO_DATA_FOUND THEN
50 x_value := null;
51 x_type := 'NONE';
52 -- dbms_output.put_line('-- LEAVING GetParam with exception: '||x_type);
53
54 END GetParam;
55
56
57 PROCEDURE GetTokenValue(
58 p_table IN VARCHAR2,
59 p_column IN VARCHAR2,
60 p_kc1 IN VARCHAR2,
61 p_kc2 IN VARCHAR2,
62 p_kc3 IN VARCHAR2,
63 p_kc4 IN VARCHAR2,
64 p_kc5 IN VARCHAR2,
65 p_key_list IN KeyTable,
66 p_value_list IN ValueTable,
67 p_type_list IN TypeTable,
68 x_token_value OUT NOCOPY VARCHAR2,
69 x_return_status OUT NOCOPY VARCHAR2,
70 x_err_msg OUT NOCOPY VARCHAR2) IS
71
72 -- This procedure takes a table, a source column, and a set of keys and values to
73 -- make a query to extract the contents of the source column from the source table
74 -- satisfying the set of keys.
75
76 l_k1 VARCHAR2(100) := null;
77 l_k2 VARCHAR2(100) := null;
78 l_k3 VARCHAR2(100) := null;
79 l_k4 VARCHAR2(100) := null;
80 l_k5 VARCHAR2(100) := null;
81
82 l_query VARCHAR2(2500) := null;
83 l_param VARCHAR2(100);
84 l_param1 VARCHAR2(100) := null;
85 l_param2 VARCHAR2(100) := null;
86 l_param3 VARCHAR2(100) := null;
87 l_param4 VARCHAR2(100) := null;
88 l_param5 VARCHAR2(100) := null;
89 l_type VARCHAR2(10);
90
91
92 KEY_MISSING EXCEPTION;
93
94 BEGIN
95
96 -- should check data integrity. Make sure token is built correctly: can't have first kc null.
97
98 /*
99 dbms_output.put_line('-- IN GetTokenValue ');
100 dbms_output.put_line(' p_table '|| p_table);
101 dbms_output.put_line(' p_column '|| p_column);
102 dbms_output.put_line(' p_kc1 '|| p_kc1);
103 dbms_output.put_line(' p_kc2 '|| p_kc2);
104 dbms_output.put_line(' p_kc3 '|| p_kc3);
105 dbms_output.put_line(' p_kc4 '|| p_kc4);
106 dbms_output.put_line(' p_kc5 '|| p_kc5);
107 */
108
109 l_query := 'SELECT ' ||p_column || ' FROM ' || p_table;
110
111 IF p_kc1 is null THEN
112 GOTO after_query;
113 ELSE
114
115 GetParam(p_key_list, p_value_list, p_type_list, p_kc1, l_param1, l_type);
116
117 IF l_type = 'NONE' THEN l_type := p_kc1; RAISE KEY_MISSING;
118 ELSIF l_type = 'SYSDATE' THEN l_query := l_query || ' WHERE ' || p_kc1 || ' = sysdate';
119 ELSIF l_type = 'DATE' THEN
120 l_query := l_query || ' WHERE ' || p_kc1 || ' = to_date(:1 , ''dd-mm-yyyy hh24:mi:ss'')';
121 ELSIF l_type = 'VARCHAR2' OR l_type = 'NUMBER' THEN l_query := l_query || ' WHERE ' || p_kc1 || ' = :1 ';
122 END IF;
123 l_param := l_param1;
124
125 END IF;
126
127
128
129 IF p_kc2 is null THEN
130
131 BEGIN
132 EXECUTE IMMEDIATE l_query INTO x_token_value USING l_param1;
133 EXCEPTION
134 WHEN OTHERS THEN
135 NULL;
136 END;
137
138
139 GOTO after_query;
140 ELSE
141 GetParam(p_key_list, p_value_list, p_type_list, p_kc2, l_param2, l_type);
142 IF l_type = 'NONE' THEN l_type := p_kc2; RAISE KEY_MISSING;
143 ELSIF l_type = 'SYSDATE' THEN l_query := l_query || ' AND ' || p_kc2 || ' = sysdate';
144 ELSIF l_type = 'DATE' THEN
145 l_query := l_query || ' AND ' || p_kc2 || ' = to_date( :2, ''dd-mm-yyyy hh24:mi:ss'')';
146 ELSIF l_type = 'VARCHAR2' OR l_type = 'NUMBER' THEN l_query := l_query || ' AND ' || p_kc2 || ' = :2 ';
147 END IF;
148 l_param := l_param2;
149 END IF;
150
151 IF p_kc3 is null THEN
152 begin
153 EXECUTE IMMEDIATE l_query INTO x_token_value USING l_param1, l_param2;
154 EXCEPTION
155 WHEN OTHERS THEN
156 NULL;
157 END;
158 GOTO after_query;
159 ELSE
160 GetParam(p_key_list, p_value_list, p_type_list, p_kc3, l_param3, l_type);
161 IF l_type = 'NONE' THEN l_type := p_kc3; RAISE KEY_MISSING;
162 ELSIF l_type = 'SYSDATE' THEN l_query := l_query || ' AND ' || p_kc3 || ' = sysdate';
163 ELSIF l_type = 'DATE' THEN
164 l_query := l_query || ' AND ' || p_kc3 || ' = to_date(:3, ''dd-mm-yyyy hh24:mi:ss'')';
165 ELSIF l_type = 'VARCHAR2' OR l_type = 'NUMBER' THEN l_query := l_query || ' AND ' || p_kc3 || ' = :3 ';
166 END IF;
167 l_param := l_param3;
168 END IF;
169
170 IF p_kc4 is null THEN
171 begin
172 EXECUTE IMMEDIATE l_query INTO x_token_value USING l_param1, l_param2, l_param3;
173 EXCEPTION
174 WHEN OTHERS THEN
175 NULL;
176 END;
177 GOTO after_query;
178 ELSE
179 GetParam(p_key_list, p_value_list, p_type_list, p_kc4, l_param4, l_type);
180 IF l_type = 'NONE' THEN l_type := p_kc4; RAISE KEY_MISSING;
181 ELSIF l_type = 'SYSDATE' THEN l_query := l_query || ' AND ' || p_kc4 || ' = sysdate';
182 ELSIF l_type = 'DATE' THEN
183 l_query := l_query || ' AND ' || p_kc4 || ' = to_date( :4, ''dd-mm-yyyy hh24:mi:ss'')';
184 ELSIF l_type = 'VARCHAR2' OR l_type = 'NUMBER' THEN l_query := l_query || ' AND ' || p_kc4 || ' = :4 ';
185 END IF;
186 l_param := l_param4;
187 END IF;
188
189 IF p_kc5 is null THEN
190 BEGIN
191 EXECUTE IMMEDIATE l_query INTO x_token_value USING l_param1, l_param2, l_param3, l_param4;
192 EXCEPTION
193 WHEN OTHERS THEN
194 NULL;
195 END;
196 GOTO after_query;
197 ELSE
198 GetParam(p_key_list, p_value_list, p_type_list, p_kc5, l_param5, l_type);
199 IF l_type = 'NONE' THEN l_type := p_kc5; RAISE KEY_MISSING;
200 ELSIF l_type = 'SYSDATE' THEN l_query := l_query || ' AND ' || p_kc5 || ' = sysdate';
201 ELSIF l_type = 'DATE' THEN
202 l_query := l_query || ' AND ' || p_kc5 || ' = to_date( :5, ''dd-mm-yyyy hh24:mi:ss'')';
203 ELSIF l_type = 'VARCHAR2' OR l_type = 'NUMBER' THEN l_query := l_query || ' AND ' || p_kc5 || ' = :5 ';
204 END IF;
205 BEGIN
206 EXECUTE IMMEDIATE l_query INTO x_token_value USING l_param1, l_param2, l_param3, l_param4, l_param5;
207 EXCEPTION
208 WHEN OTHERS THEN
209 NULL;
210 END;
211 l_param := l_param5;
212 END IF;
213
214
215 <<after_query>>
216
217 x_return_status := 'S';
218
219 /*
220 dbms_output.put_line(' l_query :');
221 IF LENGTH(l_query)<256 THEN dbms_output.put_line(l_query);
222 ELSE
223 dbms_output.put_line(SUBSTR(l_query,0,255));
224 IF LENGTH(l_query)>512 THEN dbms_output.put_line(SUBSTR(l_query,256,255));
225 ELSE
226 dbms_output.put_line(SUBSTR(l_query,256));
227 END IF;
228 END IF;
229
230 dbms_output.put_line(' x_token_value '|| x_token_value);
231 dbms_output.put_line(' x_return_status '|| x_return_status);
232 dbms_output.put_line(' x_err_msg '|| x_err_msg);
233 dbms_output.put_line('-- LEAVING GetTokenValue');
234 */
235
236 EXCEPTION
237 WHEN KEY_MISSING THEN
238 x_return_status := 'E';
239 x_err_msg := 'MISSING KEY PARAM: ' || l_param;
240 -- dbms_output.put_line('-- LEAVING GetTokenValue with exception: '||x_err_msg);
241 --WHEN OTHERS THEN
242 -- x_return_status := 'E';
243 -- x_err_msg := 'UNKNOWN ERROR';
244 -- dbms_output.put_line('-- LEAVING GetTokenValue with exception: '||x_err_msg);
245
246
247 END GetTokenValue;
248
249
250 FUNCTION InstallCheck return VARCHAR2 IS
251
252 l_fte_install_status VARCHAR2(10):= null;
253 l_industry VARCHAR2(50):= null;
254
255 BEGIN
256
257 IF(TRUE) THEN RETURN 'Y'; -- added to remove functionality 5/14
258 END IF;
259
260 IF (fnd_installation.get(716, 716,l_fte_install_status,l_industry)) THEN
261 IF (l_fte_install_status = 'I') THEN
262 RETURN 'Y';
263 ELSE
264 RETURN 'N';
265 END IF;
266 END IF;
267 END InstallCheck;
268
269
270 PROCEDURE Validate(
271 p_application_id IN NUMBER,
272 p_org_id IN NUMBER,
273 p_carrier_id IN NUMBER,
274 p_tracking_event IN VARCHAR2,
275 p_granularity IN NUMBER,
276 x_return_status OUT NOCOPY VARCHAR2,
277 x_page_id OUT NOCOPY NUMBER,
278 x_base_url OUT NOCOPY VARCHAR2,
279 x_request_method OUT NOCOPY VARCHAR2,
280 x_name OUT NOCOPY VARCHAR2,
281 x_description OUT NOCOPY VARCHAR2,
282 x_token OUT NOCOPY VARCHAR2
283 ) IS
284
285 -- this procedure returns a stored page if this granularity, tracking_event and
286 -- application combination is valid and includes information for this carrier and organization.
287
288 l_org_id NUMBER;
289
290
291 CURSOR get_page(x_org_id NUMBER) IS
292 SELECT page_id, base_url, request_method, name, description FROM FTE_PTRK_PAGES
293 WHERE STATUS = 'COMPLETED'
294 AND OWNER_APPLICATION_ID = p_application_id
295 AND CARRIER_PARTY_ID = p_carrier_id
296 AND GRANULARITY <= p_granularity
297 AND BUSINESS_CONCEPTS like ('%'||p_tracking_event||'%')
298 AND ORGANIZATIONS like ('%'||x_org_id||'%')
299 ORDER BY ORGANIZATIONS ASC; -- this forces the most restrictive page record.
300
301 CURSOR get_token(l_page_id NUMBER) IS
302 SELECT --p.param_id, p.param_name,
303 s.token_name
304 FROM fte_ptrk_params p, fte_ptrk_sources s
305 WHERE p.token_id = s.token_id
306 AND p.flag = 'Y'
307 AND p.page_id = l_page_id;
308
309
310 BEGIN
311
312 IF (InstallCheck() = 'N')
313 THEN
314 x_return_status := 'E';
315 x_page_id := null;
316 x_base_url := null;
317 x_request_method := null;
318 x_name := null;
319 x_description := null;
320 x_token := null;
321
322 RETURN;
323
324 END IF;
325
326
327 -- dbms_output.put_line('-- IN Validate ');
328 -- dbms_output.put_line(' p_application_id '|| p_application_id);
329 -- dbms_output.put_line(' p_org_id '|| p_org_id);
330 -- dbms_output.put_line(' p_carrier_id '|| p_carrier_id);
331 -- dbms_output.put_line(' p_tracking_event '|| p_tracking_event);
332 -- dbms_output.put_line(' p_granularity '|| p_granularity);
333
334 --------------------------------------------------
335 -- removed for pack J
336
337 -- SELECT organization_id into l_org_id
338 -- FROM wsh_new_deliveries
339 -- WHERE delivery_id = p_org_id;
340
341 --------------------------------------------------
342
343
344
345 OPEN get_page(p_org_id); -- changed from l_org_id for packJ
346 FETCH get_page
347 INTO x_page_id, x_base_url, x_request_method, x_name, x_description;
348
349 IF (get_page%NOTFOUND) THEN
350 x_return_status := 'NO_PAGE';
351 ELSE
352 x_return_status := 'VALID';
353 OPEN get_token(x_page_id);
354 FETCH get_token INTO x_token;
355 IF (get_token%NOTFOUND) THEN x_token := null; END IF;
356 CLOSE get_token;
357 END IF;
358 CLOSE get_page;
359
360
361 -- dbms_output.put_line(' x_return_status '|| x_return_status);
362 -- dbms_output.put_line(' x_page_id '|| x_page_id);
363 -- dbms_output.put_line(' x_base_url '|| x_base_url);
364 -- dbms_output.put_line(' x_request_method '|| x_request_method);
365 -- dbms_output.put_line(' x_name '|| x_name);
366 -- dbms_output.put_line(' x_description '|| x_description);
367 -- dbms_output.put_line('-- LEAVING Validate');
368
369 EXCEPTION
370 WHEN OTHERS THEN
371 x_return_status := 'ERROR';
372 -- dbms_output.put_line('-- LEAVING Validate with exception: '|| SQLERRM);
373
374
375
376 END Validate;
377
378 PROCEDURE ParseParamList(
379 p_param_list IN VARCHAR2,
380 x_keyTable OUT NOCOPY KeyTable,
381 x_valueTable OUT NOCOPY ValueTable,
382 x_typeTable OUT NOCOPY TypeTable
383 ) IS
384
385
386
387 l_key VARCHAR2(50);
388 l_value VARCHAR2(100);
389 l_type VARCHAR2(20);
390
391 i NUMBER := 0;
392 j NUMBER := 1;
393 k NUMBER := 0;
394 l NUMBER := 0;
395 c CHAR := ' ';
396 c2 CHAR :=' ';
397
398 --type KeyTable is TABLE OF VARCHAR2(64) INDEX BY BINARY_INTEGER;
399 --type ValueTable is TABLE OF VARCHAR2(64) INDEX BY BINARY_INTEGER;
400 --type TypeTable is TABLE OF VARCHAR2(64) INDEX BY BINARY_INTEGER;
401
402 l_keyTable KeyTable;
403 l_valueTable ValueTable;
404 l_typeTable TypeTable;
405
406 param_index NUMBER := 1;
407 l_param_list VARCHAR2(10000);
408
409
410 BEGIN
411
412 l_param_list := p_param_list || ';';
413 FOR i IN 1..(LENGTH(l_param_list)) LOOP
414 c2 := c;
415 c := SUBSTR(l_param_list, i, 1);
416 IF c = ';' AND c2 <> '\' THEN
417 l_key := SUBSTR(l_param_list, j, k-j-1);
418 l_value := SUBSTR(l_param_list, k, l-k-1);
419 l_type := SUBSTR(l_param_list, l, i-l);
420 l_keyTable(param_index) := l_key;
421 l_valueTable(param_index) := l_value;
422 l_typeTable(param_index) := l_type;
423 param_index := param_index + 1;
424 j := i+1;
425 -- dbms_output.put_line(' l_key, l_value, l_type:'||
426 -- l_key ||','|| l_value ||','|| l_type);
427 ELSIF c = ',' AND c2 <> '\' THEN
428 IF l < k THEN l := i + 1;
429 ELSE k := i + 1;
430 END IF;
431 END IF;
432 END LOOP;
433
434 x_keyTable := l_keyTable;
435 x_valueTable := l_valueTable;
436 x_typeTable := l_typeTable;
437
438
439 END ParseParamList;
440
441
442
443 PROCEDURE Punchout(
444 p_application_id IN NUMBER,
445 p_org_id IN NUMBER,
446 p_carrier_id IN NUMBER,
447 p_tracking_event IN VARCHAR2,
448 p_granularity IN NUMBER,
449 p_param_list IN VARCHAR2,
450 x_return_status OUT NOCOPY VARCHAR2,
451 x_err_msg OUT NOCOPY VARCHAR2,
452 x_form_output OUT NOCOPY VARCHAR2) IS
453
454 -- Punchout takes in an application, organization, carrier, tracking event, granularity
455 -- and a list of key parameters from the user in order to create a form to punch out to a
456 -- remote carrier's tracking site. This differs from the other overloaded call in that the
460 --type KeyTable is TABLE OF VARCHAR2(64) INDEX BY BINARY_INTEGER;
457 -- key/value pairs are represented in a single long VARCHAR2.
458
459
461 --type ValueTable is TABLE OF VARCHAR2(64) INDEX BY BINARY_INTEGER;
462 --type TypeTable is TABLE OF VARCHAR2(64) INDEX BY BINARY_INTEGER;
463
464 l_keyTable KeyTable;
465 l_valueTable ValueTable;
466 l_typeTable TypeTable;
467
468
469 BEGIN
470
471 IF (InstallCheck() = 'N')
472 THEN
473 x_return_status := 'E';
474 x_err_msg := 'FTE Not Installed';
475 x_form_output := null;
476
477 RETURN;
478
479 END IF;
480
481 -- dbms_output.put_line('-- IN Punchout (1)');
482 -- dbms_output.put_line('-- app_id : ' || p_application_id);
483 -- dbms_output.put_line('-- org_id : ' || p_org_id);
484 -- dbms_output.put_line('-- carrier_id : ' || p_carrier_id);
485 -- dbms_output.put_line('-- tracking_event : ' || p_tracking_event);
486 -- dbms_output.put_line('-- granularity : ' || p_granularity);
487 -- dbms_output.put_line('-- param_list : ' || p_param_list);
488
489 ParseParamList(p_param_list, l_keyTable, l_valueTable, l_typeTable);
490
491 Punchout(
492 p_application_id,
493 p_org_id,
494 p_carrier_id,
495 p_tracking_event,
496 p_granularity,
497 l_keyTable,
498 l_valueTable,
499 l_typeTable,
500 x_return_status,
501 x_err_msg,
502 x_form_output);
503
504
505 END Punchout;
506
507
508
509
510
511
512
513 PROCEDURE FindTokenValue(
514 p_application_id IN NUMBER,
515 p_token_name IN VARCHAR2,
516 p_param_list IN VARCHAR2,
517 x_token_value OUT NOCOPY VARCHAR2,
518 x_return_status OUT NOCOPY VARCHAR2,
519 x_err_msg OUT NOCOPY VARCHAR2
520 ) IS
521
522 l_source_table VARCHAR2(30);
523 l_source_column VARCHAR2(30);
524 l_static_value VARCHAR2(100);
525 l_key_column1 VARCHAR2(50);
526 l_key_column2 VARCHAR2(50);
527 l_key_column3 VARCHAR2(50);
528 l_key_column4 VARCHAR2(50);
529 l_key_column5 VARCHAR2(50);
530
531 l_keyTable KeyTable;
532 l_valueTable ValueTable;
533 l_typeTable TypeTable;
534
535 l_token_value VARCHAR2(100);
536
537 CURSOR c_token IS
538 SELECT t.source_table, t.source_column, t.key_column1, t.key_column2, t.key_column3, t.key_column4, t.key_column5
539 FROM FTE_PTRK_SOURCES t
540 WHERE t.owner_application_id = p_application_id
541 AND t.token_name = p_token_name;
542
543
544 BEGIN
545
546 IF (InstallCheck() = 'N')
547 THEN
548 x_return_status := 'E';
549 x_err_msg := 'FTE Not Installed';
550 x_token_value := null;
551
552 RETURN;
553
554 END IF;
555
556 OPEN c_token;
557 FETCH c_token INTO l_source_table, l_source_column,
558 l_key_column1, l_key_column2, l_key_column3, l_key_column4, l_key_column5;
559 CLOSE c_token;
560
561
562 ParseParamList(p_param_list, l_keyTable, l_valueTable, l_typeTable);
563
564
565 GetTokenValue(
566 l_source_table, l_source_column,
567 l_key_column1, l_key_column2, l_key_column3, l_key_column4, l_key_column5,
568 l_keyTable, l_valueTable, l_typeTable,
569 l_token_value, x_return_status, x_err_msg);
570
571 -- dbms_output.put_line('---- l_source_table '|| l_source_table);
572 -- dbms_output.put_line('--- l_source_column '|| l_source_column);
573 -- dbms_output.put_line('---- l_key_column1 '|| l_key_column1);
574 -- dbms_output.put_line('---- l_key_column2 '|| l_key_column2);
575 -- dbms_output.put_line('---- l_key_column3 '|| l_key_column3);
576 -- dbms_output.put_line('---- l_key_column4 '|| l_key_column4);
577 -- dbms_output.put_line('---- l_key_column5 '|| l_key_column5);
578 -- dbms_output.put_line('---- l_token_value '|| l_token_value);
579 -- dbms_output.put_line('--- x_return_status '|| x_return_status);
580 -- dbms_output.put_line('---- x_err_msg '|| x_err_msg);
581
582
583 x_token_value := l_token_value;
584
585
586 END FindTokenValue;
587
588
589
590
591
592
593
594 PROCEDURE Punchout(
595 p_application_id IN NUMBER,
596 p_org_id IN NUMBER,
597 p_carrier_id IN NUMBER,
598 p_tracking_event IN VARCHAR2,
599 p_granularity IN NUMBER,
600 p_key_list IN KeyTable,
601 p_value_list IN ValueTable,
602 p_type_list IN TypeTable,
603 x_return_status OUT NOCOPY VARCHAR2,
604 x_err_msg OUT NOCOPY VARCHAR2,
605 x_form_output OUT NOCOPY VARCHAR2) IS
606
607 -- Punchout takes in an application, organization, carrier, tracking event, granularity
608 -- and a list of key parameters from the user in order to create a form to punch out to a
609 -- remote carrier's tracking site. This differs from the other overloaded call in that the
610 -- key/value pairs are represented in two PL/SQL tables.
611
612 l_page_id NUMBER;
613 l_base_url VARCHAR2(200);
614 l_request_method VARCHAR2(10);
615 l_page_name VARCHAR2(30);
616 l_page_description VARCHAR2(200);
617 l_prefix VARCHAR2(10);
618 l_token VARCHAR2(30);
619
620 l_validity VARCHAR2(30);
621 l_param_name VARCHAR2(30);
622 l_param_value VARCHAR2(300);
623 l_return_status VARCHAR2(10);
624 l_err_msg VARCHAR2(50);
625 l_source_table VARCHAR2(30);
626 l_source_column VARCHAR2(30);
627 l_static_value VARCHAR2(100);
628 l_key_column1 VARCHAR2(50);
629 l_key_column2 VARCHAR2(50);
630 l_key_column3 VARCHAR2(50);
631 l_key_column4 VARCHAR2(50);
632 l_key_column5 VARCHAR2(50);
633
634 l_token_name VARCHAR2(50);
635 l_token_id NUMBER;
636
637
638 CURSOR c_params(p_page_id IN NUMBER) IS
639 SELECT p.param_name, p.static_value, t.token_id, t.token_name, t.source_table, t.source_column,
640 t.key_column1, t.key_column2, t.key_column3, t.key_column4, t.key_column5
641 FROM FTE_PTRK_PARAMS p, FTE_PTRK_SOURCES t
642 WHERE p.page_id = p_page_id
643 and p.token_id = t.token_id (+);
644
645 INVALID_INPUT EXCEPTION;
646 TOKEN_ERROR EXCEPTION;
647
648 br VARCHAR2(2) := '
649 ';
650 -- CHR(13)||CHR(10);
651
652
653 BEGIN
654
655 IF (InstallCheck() = 'N')
656 THEN
657 x_return_status := 'E';
658 x_err_msg := 'FTE Not Installed';
659 x_form_output := null;
660
661 RETURN;
662
663 END IF;
664
665 Validate(p_application_id, p_org_id, p_carrier_id, p_tracking_event, p_granularity,
666 l_validity, l_page_id, l_base_url, l_request_method, l_page_name, l_page_description, l_token);
667
668 IF l_validity <> 'VALID' THEN RAISE INVALID_INPUT; END IF;
669
670 IF (UPPER(SUBSTR(l_base_url,1,4)) <> 'HTTP') THEN l_prefix := 'http://'; ELSE l_prefix := ''; END IF;
671
672 x_form_output := '<FORM ACTION="'|| l_prefix || l_base_url || '" METHOD="' || l_request_method ||
673 --'" NAME="' || l_page_name || '" >' || br;
674 '" NAME="TheForm" >' || br;
675
676
677 OPEN c_params(l_page_id);
678 LOOP
679 FETCH c_params INTO l_param_name, l_static_value, l_token_id, l_token_name, l_source_table, l_source_column,
680 l_key_column1, l_key_column2, l_key_column3, l_key_column4, l_key_column5;
681
682
683 EXIT WHEN c_params%NOTFOUND;
684
685 IF l_token_id is not null THEN -- find token value
686
687 --dbms_output.put_line('$$ TOKEN FOUND: ' || l_param_name || ' ' || to_char(l_token_id) || ' ' || l_token_name);
688 GetTokenValue(l_source_table, l_source_column,
689 l_key_column1, l_key_column2, l_key_column3, l_key_column4, l_key_column5,
690 p_key_list, p_value_list, p_type_list, l_param_value, l_return_status, l_err_msg);
691
692 IF l_return_status = 'E' THEN RAISE TOKEN_ERROR; END IF;
693
694 IF (l_param_value is not NULL) THEN
695
696 x_form_output := x_form_output ||
697 ' <INPUT TYPE="HIDDEN" NAME="' || l_param_name ||
698 '" VALUE="' || l_param_value || '" >' || br;
699
700 -- ELSIF l_static_value is not null THEN -- take static value
701 ELSIF (l_static_value is not null) THEN
702 --dbms_output.put_line('$$ STATIC FOUND: ' || l_param_name || ' ' || l_static_value);
703 x_form_output := x_form_output ||
704 ' <INPUT TYPE="HIDDEN" NAME="' || l_param_name ||
705 '" VALUE="' || l_static_value || '" >' || br;
706
707 END IF ;
708 END IF;
709
710 END LOOP;
711
712 CLOSE c_params;
713
714 x_form_output := x_form_output || '</FORM>';
715 EXCEPTION
716 WHEN INVALID_INPUT THEN
717 x_return_status := 'INVALID_INPUT';
718 x_err_msg := 'INVALID INPUT ' || l_validity;
719 WHEN TOKEN_ERROR THEN
720 x_return_status := l_return_status;
721 x_err_msg := l_err_msg;
722
723 END Punchout;
724
725
726
727 END FTE_PTRACKING;