[Home] [Help]
PACKAGE BODY: APPS.OKL_LOSS_PROV_PVT_W
Source
1 package body okl_loss_prov_pvt_w as
2 /* $Header: OKLELPVB.pls 120.5 2005/10/30 03:20:11 appldev noship $ */
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 function rosetta_g_miss_num_map(n number) return number as
14 a number := fnd_api.g_miss_num;
15 b number := 0-1962.0724;
16 begin
17 if n=a then return b; end if;
18 if n=b then return a; end if;
19 return n;
20 end;
21
22 procedure rosetta_table_copy_in_p3(t out nocopy okl_loss_prov_pvt.bucket_tbl_type, a0 JTF_NUMBER_TABLE
23 , a1 JTF_NUMBER_TABLE
24 , a2 JTF_NUMBER_TABLE
25 , a3 JTF_VARCHAR2_TABLE_100
26 , a4 JTF_NUMBER_TABLE
27 , a5 JTF_NUMBER_TABLE
28 , a6 JTF_NUMBER_TABLE
29 ) as
30 ddindx binary_integer; indx binary_integer;
31 begin
32 if a0 is not null and a0.count > 0 then
33 if a0.count > 0 then
34 indx := a0.first;
35 ddindx := 1;
36 while true loop
37 t(ddindx).aging_bucket_line_id := rosetta_g_miss_num_map(a0(indx));
38 t(ddindx).bkt_id := rosetta_g_miss_num_map(a1(indx));
39 t(ddindx).loss_rate := rosetta_g_miss_num_map(a2(indx));
40 t(ddindx).bucket_name := a3(indx);
41 t(ddindx).days_start := rosetta_g_miss_num_map(a4(indx));
42 t(ddindx).days_to := rosetta_g_miss_num_map(a5(indx));
43 t(ddindx).loss_amount := rosetta_g_miss_num_map(a6(indx));
44 ddindx := ddindx+1;
45 if a0.last =indx
46 then exit;
47 end if;
48 indx := a0.next(indx);
49 end loop;
50 end if;
51 end if;
52 end rosetta_table_copy_in_p3;
53 procedure rosetta_table_copy_out_p3(t okl_loss_prov_pvt.bucket_tbl_type, a0 out nocopy JTF_NUMBER_TABLE
54 , a1 out nocopy JTF_NUMBER_TABLE
55 , a2 out nocopy JTF_NUMBER_TABLE
56 , a3 out nocopy JTF_VARCHAR2_TABLE_100
57 , a4 out nocopy JTF_NUMBER_TABLE
58 , a5 out nocopy JTF_NUMBER_TABLE
59 , a6 out nocopy JTF_NUMBER_TABLE
60 ) as
61 ddindx binary_integer; indx binary_integer;
62 begin
63 if t is null or t.count = 0 then
64 a0 := JTF_NUMBER_TABLE();
65 a1 := JTF_NUMBER_TABLE();
66 a2 := JTF_NUMBER_TABLE();
67 a3 := JTF_VARCHAR2_TABLE_100();
68 a4 := JTF_NUMBER_TABLE();
69 a5 := JTF_NUMBER_TABLE();
70 a6 := JTF_NUMBER_TABLE();
71 else
72 a0 := JTF_NUMBER_TABLE();
73 a1 := JTF_NUMBER_TABLE();
74 a2 := JTF_NUMBER_TABLE();
75 a3 := JTF_VARCHAR2_TABLE_100();
76 a4 := JTF_NUMBER_TABLE();
77 a5 := JTF_NUMBER_TABLE();
78 a6 := JTF_NUMBER_TABLE();
79 if t.count > 0 then
80 a0.extend(t.count);
81 a1.extend(t.count);
82 a2.extend(t.count);
83 a3.extend(t.count);
84 a4.extend(t.count);
85 a5.extend(t.count);
86 a6.extend(t.count);
87 ddindx := t.first;
88 indx := 1;
89 while true loop
90 a0(indx) := rosetta_g_miss_num_map(t(ddindx).aging_bucket_line_id);
91 a1(indx) := rosetta_g_miss_num_map(t(ddindx).bkt_id);
92 a2(indx) := rosetta_g_miss_num_map(t(ddindx).loss_rate);
93 a3(indx) := t(ddindx).bucket_name;
94 a4(indx) := rosetta_g_miss_num_map(t(ddindx).days_start);
95 a5(indx) := rosetta_g_miss_num_map(t(ddindx).days_to);
96 a6(indx) := rosetta_g_miss_num_map(t(ddindx).loss_amount);
97 indx := indx+1;
98 if t.last =ddindx
99 then exit;
100 end if;
101 ddindx := t.next(ddindx);
102 end loop;
103 end if;
104 end if;
105 end rosetta_table_copy_out_p3;
106
107 procedure rosetta_table_copy_in_p4(t out nocopy okl_loss_prov_pvt.slpv_tbl_type, a0 JTF_NUMBER_TABLE
108 , a1 JTF_NUMBER_TABLE
109 , a2 JTF_NUMBER_TABLE
110 , a3 JTF_VARCHAR2_TABLE_2000
111 , a4 JTF_VARCHAR2_TABLE_100
112 , a5 JTF_VARCHAR2_TABLE_100
113 , a6 JTF_VARCHAR2_TABLE_100
114 , a7 JTF_DATE_TABLE
115 ) as
116 ddindx binary_integer; indx binary_integer;
117 begin
118 if a0 is not null and a0.count > 0 then
119 if a0.count > 0 then
120 indx := a0.first;
121 ddindx := 1;
122 while true loop
123 t(ddindx).khr_id := rosetta_g_miss_num_map(a0(indx));
124 t(ddindx).sty_id := rosetta_g_miss_num_map(a1(indx));
125 t(ddindx).amount := rosetta_g_miss_num_map(a2(indx));
126 t(ddindx).description := a3(indx);
127 t(ddindx).reverse_flag := a4(indx);
128 t(ddindx).tax_deductible_local := a5(indx);
129 t(ddindx).tax_deductible_corporate := a6(indx);
130 t(ddindx).provision_date := rosetta_g_miss_date_in_map(a7(indx));
131 ddindx := ddindx+1;
132 if a0.last =indx
133 then exit;
134 end if;
135 indx := a0.next(indx);
136 end loop;
137 end if;
138 end if;
139 end rosetta_table_copy_in_p4;
140 procedure rosetta_table_copy_out_p4(t okl_loss_prov_pvt.slpv_tbl_type, a0 out nocopy JTF_NUMBER_TABLE
141 , a1 out nocopy JTF_NUMBER_TABLE
142 , a2 out nocopy JTF_NUMBER_TABLE
143 , a3 out nocopy JTF_VARCHAR2_TABLE_2000
144 , a4 out nocopy JTF_VARCHAR2_TABLE_100
145 , a5 out nocopy JTF_VARCHAR2_TABLE_100
146 , a6 out nocopy JTF_VARCHAR2_TABLE_100
147 , a7 out nocopy JTF_DATE_TABLE
148 ) as
149 ddindx binary_integer; indx binary_integer;
150 begin
151 if t is null or t.count = 0 then
152 a0 := JTF_NUMBER_TABLE();
153 a1 := JTF_NUMBER_TABLE();
154 a2 := JTF_NUMBER_TABLE();
155 a3 := JTF_VARCHAR2_TABLE_2000();
156 a4 := JTF_VARCHAR2_TABLE_100();
157 a5 := JTF_VARCHAR2_TABLE_100();
158 a6 := JTF_VARCHAR2_TABLE_100();
159 a7 := JTF_DATE_TABLE();
160 else
161 a0 := JTF_NUMBER_TABLE();
162 a1 := JTF_NUMBER_TABLE();
163 a2 := JTF_NUMBER_TABLE();
164 a3 := JTF_VARCHAR2_TABLE_2000();
165 a4 := JTF_VARCHAR2_TABLE_100();
166 a5 := JTF_VARCHAR2_TABLE_100();
167 a6 := JTF_VARCHAR2_TABLE_100();
168 a7 := JTF_DATE_TABLE();
169 if t.count > 0 then
170 a0.extend(t.count);
171 a1.extend(t.count);
172 a2.extend(t.count);
173 a3.extend(t.count);
174 a4.extend(t.count);
175 a5.extend(t.count);
176 a6.extend(t.count);
177 a7.extend(t.count);
178 ddindx := t.first;
179 indx := 1;
180 while true loop
181 a0(indx) := rosetta_g_miss_num_map(t(ddindx).khr_id);
182 a1(indx) := rosetta_g_miss_num_map(t(ddindx).sty_id);
183 a2(indx) := rosetta_g_miss_num_map(t(ddindx).amount);
184 a3(indx) := t(ddindx).description;
185 a4(indx) := t(ddindx).reverse_flag;
186 a5(indx) := t(ddindx).tax_deductible_local;
187 a6(indx) := t(ddindx).tax_deductible_corporate;
188 a7(indx) := t(ddindx).provision_date;
189 indx := indx+1;
190 if t.last =ddindx
191 then exit;
192 end if;
193 ddindx := t.next(ddindx);
194 end loop;
195 end if;
196 end if;
197 end rosetta_table_copy_out_p4;
198
199 function submit_general_loss(x_return_status out nocopy VARCHAR2
200 , x_msg_count out nocopy NUMBER
201 , x_msg_data out nocopy VARCHAR2
202 , p_api_version NUMBER
203 , p_init_msg_list VARCHAR2
204 , p5_a0 NUMBER := 0-1962.0724
205 , p5_a1 NUMBER := 0-1962.0724
206 , p5_a2 DATE := fnd_api.g_miss_date
207 , p5_a3 VARCHAR2 := fnd_api.g_miss_char
208 , p5_a4 VARCHAR2 := fnd_api.g_miss_char
209 , p5_a5 VARCHAR2 := fnd_api.g_miss_char
210 ) return number
211
212 as
213 ddp_glpv_rec okl_loss_prov_pvt.glpv_rec_type;
214 ddindx binary_integer; indx binary_integer;
215 ddrosetta_retval number;
216 begin
217
218 -- copy data to the local IN or IN-OUT args, if any
219
220
221
222
223
224 ddp_glpv_rec.product_id := rosetta_g_miss_num_map(p5_a0);
225 ddp_glpv_rec.bucket_id := rosetta_g_miss_num_map(p5_a1);
226 ddp_glpv_rec.entry_date := rosetta_g_miss_date_in_map(p5_a2);
227 ddp_glpv_rec.tax_deductible_local := p5_a3;
228 ddp_glpv_rec.tax_deductible_corporate := p5_a4;
229 ddp_glpv_rec.description := p5_a5;
230
231 -- here's the delegated call to the old PL/SQL routine
232 ddrosetta_retval := okl_loss_prov_pvt.submit_general_loss(x_return_status,
233 x_msg_count,
234 x_msg_data,
235 p_api_version,
236 p_init_msg_list,
237 ddp_glpv_rec);
238
239 -- copy data back from the local variables to OUT or IN-OUT args, if any
240
241
242
243
244
245
246 return ddrosetta_retval;
247 end;
248
249 procedure specific_loss_provision(p_api_version NUMBER
250 , p_init_msg_list VARCHAR2
251 , x_msg_count out nocopy NUMBER
252 , x_msg_data out nocopy VARCHAR2
253 , x_return_status out nocopy VARCHAR2
254 , p5_a0 NUMBER := 0-1962.0724
255 , p5_a1 NUMBER := 0-1962.0724
256 , p5_a2 NUMBER := 0-1962.0724
257 , p5_a3 VARCHAR2 := fnd_api.g_miss_char
258 , p5_a4 VARCHAR2 := fnd_api.g_miss_char
259 , p5_a5 VARCHAR2 := fnd_api.g_miss_char
260 , p5_a6 VARCHAR2 := fnd_api.g_miss_char
261 , p5_a7 DATE := fnd_api.g_miss_date
262 )
263
264 as
265 ddp_slpv_rec okl_loss_prov_pvt.slpv_rec_type;
266 ddindx binary_integer; indx binary_integer;
267 begin
268
269 -- copy data to the local IN or IN-OUT args, if any
270
271
272
273
274
275 ddp_slpv_rec.khr_id := rosetta_g_miss_num_map(p5_a0);
276 ddp_slpv_rec.sty_id := rosetta_g_miss_num_map(p5_a1);
277 ddp_slpv_rec.amount := rosetta_g_miss_num_map(p5_a2);
278 ddp_slpv_rec.description := p5_a3;
279 ddp_slpv_rec.reverse_flag := p5_a4;
280 ddp_slpv_rec.tax_deductible_local := p5_a5;
281 ddp_slpv_rec.tax_deductible_corporate := p5_a6;
282 ddp_slpv_rec.provision_date := rosetta_g_miss_date_in_map(p5_a7);
283
284 -- here's the delegated call to the old PL/SQL routine
285 okl_loss_prov_pvt.specific_loss_provision(p_api_version,
286 p_init_msg_list,
287 x_msg_count,
288 x_msg_data,
289 x_return_status,
290 ddp_slpv_rec);
291
292 -- copy data back from the local variables to OUT or IN-OUT args, if any
293
294
295
296
297
298 end;
299
300 end okl_loss_prov_pvt_w;