[Home] [Help]
PACKAGE BODY: APPS.CN_RULES_DISP_PUB_W
Source
1 package body cn_rules_disp_pub_w as
2 /* $Header: cnwrulb.pls 115.4 2002/11/25 23:51:30 fting ship $ */
3 rosetta_g_mistake_date date := to_date('01/01/+4713', 'MM/DD/SYYYY');
4 rosetta_g_miss_date date := to_date('01/01/-4712', 'MM/DD/SYYYY');
5
6 -- this is to workaround the JDBC bug regarding IN DATE of value GMiss
7 function rosetta_g_miss_date_in_map(d date) return date as
8 begin
9 if d = rosetta_g_mistake_date then return fnd_api.g_miss_date; end if;
10 return d;
11 end;
12
13 procedure rosetta_table_copy_in_p1(t out nocopy cn_rules_disp_pub.rls_dsp_tbl_type, a0 JTF_VARCHAR2_TABLE_100
14 , a1 JTF_NUMBER_TABLE
15 , a2 JTF_VARCHAR2_TABLE_100
16 , a3 JTF_VARCHAR2_TABLE_2000
17 ) as
18 ddindx binary_integer; indx binary_integer;
19 begin
20 if a0 is not null and a0.count > 0 then
21 if a0.count > 0 then
22 indx := a0.first;
23 ddindx := 1;
24 while true loop
25 t(ddindx).rule_name := a0(indx);
26 t(ddindx).rule_level := a1(indx);
27 t(ddindx).rule_revenue_class := a2(indx);
28 t(ddindx).rule_expression := a3(indx);
29 ddindx := ddindx+1;
30 if a0.last =indx
31 then exit;
32 end if;
33 indx := a0.next(indx);
34 end loop;
35 end if;
36 end if;
37 end rosetta_table_copy_in_p1;
38 procedure rosetta_table_copy_out_p1(t cn_rules_disp_pub.rls_dsp_tbl_type, a0 out nocopy JTF_VARCHAR2_TABLE_100
39 , a1 out nocopy JTF_NUMBER_TABLE
40 , a2 out nocopy JTF_VARCHAR2_TABLE_100
41 , a3 out nocopy JTF_VARCHAR2_TABLE_2000
42 ) as
43 ddindx binary_integer; indx binary_integer;
44 begin
45 if t is null or t.count = 0 then
46 a0 := JTF_VARCHAR2_TABLE_100();
47 a1 := JTF_NUMBER_TABLE();
48 a2 := JTF_VARCHAR2_TABLE_100();
49 a3 := JTF_VARCHAR2_TABLE_2000();
50 else
51 a0 := JTF_VARCHAR2_TABLE_100();
52 a1 := JTF_NUMBER_TABLE();
53 a2 := JTF_VARCHAR2_TABLE_100();
54 a3 := JTF_VARCHAR2_TABLE_2000();
55 if t.count > 0 then
56 a0.extend(t.count);
57 a1.extend(t.count);
58 a2.extend(t.count);
59 a3.extend(t.count);
60 ddindx := t.first;
61 indx := 1;
62 while true loop
63 a0(indx) := t(ddindx).rule_name;
64 a1(indx) := t(ddindx).rule_level;
65 a2(indx) := t(ddindx).rule_revenue_class;
66 a3(indx) := t(ddindx).rule_expression;
67 indx := indx+1;
68 if t.last =ddindx
69 then exit;
70 end if;
71 ddindx := t.next(ddindx);
72 end loop;
73 end if;
74 end if;
75 end rosetta_table_copy_out_p1;
76
77 procedure get_rules(p_api_version NUMBER
78 , p_init_msg_list VARCHAR2
79 , p_validation_level VARCHAR2
80 , x_return_status out nocopy VARCHAR2
81 , x_msg_count out nocopy NUMBER
82 , x_msg_data out nocopy VARCHAR2
83 , x_loading_status out nocopy VARCHAR2
84 , p_ruleset_id NUMBER
85 , p_parent_id NUMBER
86 , p_date date
87 , p_start_record NUMBER
88 , p_increment_count NUMBER
89 , p12_a0 out nocopy JTF_VARCHAR2_TABLE_100
90 , p12_a1 out nocopy JTF_NUMBER_TABLE
91 , p12_a2 out nocopy JTF_VARCHAR2_TABLE_100
92 , p12_a3 out nocopy JTF_VARCHAR2_TABLE_2000
93 , x_rules_count out nocopy NUMBER
94 )
95
96 as
97 ddp_date date;
98 ddx_rules_display_tbl cn_rules_disp_pub.rls_dsp_tbl_type;
99 ddindx binary_integer; indx binary_integer;
100 begin
101
102 -- copy data to the local IN or IN-OUT args, if any
103
104
105
106
107
108
109
110
111
112 ddp_date := rosetta_g_miss_date_in_map(p_date);
113
114
115
116
117
118 -- here's the delegated call to the old PL/SQL routine
119 cn_rules_disp_pub.get_rules(p_api_version,
120 p_init_msg_list,
121 p_validation_level,
122 x_return_status,
123 x_msg_count,
124 x_msg_data,
125 x_loading_status,
126 p_ruleset_id,
127 p_parent_id,
128 ddp_date,
129 p_start_record,
130 p_increment_count,
131 ddx_rules_display_tbl,
132 x_rules_count);
133
134 -- copy data back from the local variables to OUT or IN-OUT args, if any
135
136
137
138
139
140
141
142
143
144
145
146
147 cn_rules_disp_pub_w.rosetta_table_copy_out_p1(ddx_rules_display_tbl, p12_a0
148 , p12_a1
149 , p12_a2
150 , p12_a3
151 );
152
153 end;
154
155 end cn_rules_disp_pub_w;