[Home] [Help]
PACKAGE BODY: APPS.PV_OFFER_PUB_W
Source
1 package body pv_offer_pub_w as
2 /* $Header: pvxwoffb.pls 120.1 2005/06/16 17:26 appldev $ */
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_p2(t out nocopy pv_offer_pub.discount_line_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_VARCHAR2_TABLE_100
27 , a5 JTF_VARCHAR2_TABLE_100
28 , a6 JTF_NUMBER_TABLE
29 , a7 JTF_VARCHAR2_TABLE_100
30 , a8 JTF_NUMBER_TABLE
31 , a9 JTF_VARCHAR2_TABLE_100
32 ) as
33 ddindx binary_integer; indx binary_integer;
34 begin
35 if a0 is not null and a0.count > 0 then
36 if a0.count > 0 then
37 indx := a0.first;
38 ddindx := 1;
39 while true loop
40 t(ddindx).offer_discount_line_id := rosetta_g_miss_num_map(a0(indx));
41 t(ddindx).parent_discount_line_id := rosetta_g_miss_num_map(a1(indx));
42 t(ddindx).discount := rosetta_g_miss_num_map(a2(indx));
43 t(ddindx).discount_type := a3(indx);
44 t(ddindx).tier_type := a4(indx);
45 t(ddindx).tier_level := a5(indx);
46 t(ddindx).object_version_number := rosetta_g_miss_num_map(a6(indx));
47 t(ddindx).product_level := a7(indx);
48 t(ddindx).product_id := rosetta_g_miss_num_map(a8(indx));
49 t(ddindx).operation := a9(indx);
50 ddindx := ddindx+1;
51 if a0.last =indx
52 then exit;
53 end if;
54 indx := a0.next(indx);
55 end loop;
56 end if;
57 end if;
58 end rosetta_table_copy_in_p2;
59 procedure rosetta_table_copy_out_p2(t pv_offer_pub.discount_line_tbl_type, a0 out nocopy JTF_NUMBER_TABLE
60 , a1 out nocopy JTF_NUMBER_TABLE
61 , a2 out nocopy JTF_NUMBER_TABLE
62 , a3 out nocopy JTF_VARCHAR2_TABLE_100
63 , a4 out nocopy JTF_VARCHAR2_TABLE_100
64 , a5 out nocopy JTF_VARCHAR2_TABLE_100
65 , a6 out nocopy JTF_NUMBER_TABLE
66 , a7 out nocopy JTF_VARCHAR2_TABLE_100
67 , a8 out nocopy JTF_NUMBER_TABLE
68 , a9 out nocopy JTF_VARCHAR2_TABLE_100
69 ) as
70 ddindx binary_integer; indx binary_integer;
71 begin
72 if t is null or t.count = 0 then
73 a0 := JTF_NUMBER_TABLE();
74 a1 := JTF_NUMBER_TABLE();
75 a2 := JTF_NUMBER_TABLE();
76 a3 := JTF_VARCHAR2_TABLE_100();
77 a4 := JTF_VARCHAR2_TABLE_100();
78 a5 := JTF_VARCHAR2_TABLE_100();
79 a6 := JTF_NUMBER_TABLE();
80 a7 := JTF_VARCHAR2_TABLE_100();
81 a8 := JTF_NUMBER_TABLE();
82 a9 := JTF_VARCHAR2_TABLE_100();
83 else
84 a0 := JTF_NUMBER_TABLE();
85 a1 := JTF_NUMBER_TABLE();
86 a2 := JTF_NUMBER_TABLE();
87 a3 := JTF_VARCHAR2_TABLE_100();
88 a4 := JTF_VARCHAR2_TABLE_100();
89 a5 := JTF_VARCHAR2_TABLE_100();
90 a6 := JTF_NUMBER_TABLE();
91 a7 := JTF_VARCHAR2_TABLE_100();
92 a8 := JTF_NUMBER_TABLE();
93 a9 := JTF_VARCHAR2_TABLE_100();
94 if t.count > 0 then
95 a0.extend(t.count);
96 a1.extend(t.count);
97 a2.extend(t.count);
98 a3.extend(t.count);
99 a4.extend(t.count);
100 a5.extend(t.count);
101 a6.extend(t.count);
102 a7.extend(t.count);
103 a8.extend(t.count);
104 a9.extend(t.count);
105 ddindx := t.first;
106 indx := 1;
107 while true loop
108 a0(indx) := rosetta_g_miss_num_map(t(ddindx).offer_discount_line_id);
109 a1(indx) := rosetta_g_miss_num_map(t(ddindx).parent_discount_line_id);
110 a2(indx) := rosetta_g_miss_num_map(t(ddindx).discount);
111 a3(indx) := t(ddindx).discount_type;
112 a4(indx) := t(ddindx).tier_type;
113 a5(indx) := t(ddindx).tier_level;
114 a6(indx) := rosetta_g_miss_num_map(t(ddindx).object_version_number);
115 a7(indx) := t(ddindx).product_level;
116 a8(indx) := rosetta_g_miss_num_map(t(ddindx).product_id);
117 a9(indx) := t(ddindx).operation;
118 indx := indx+1;
119 if t.last =ddindx
120 then exit;
121 end if;
122 ddindx := t.next(ddindx);
123 end loop;
124 end if;
125 end if;
126 end rosetta_table_copy_out_p2;
127
128 procedure rosetta_table_copy_in_p4(t out nocopy pv_offer_pub.na_qualifier_tbl_type, a0 JTF_NUMBER_TABLE
129 , a1 JTF_VARCHAR2_TABLE_100
130 , a2 JTF_VARCHAR2_TABLE_100
131 , a3 JTF_VARCHAR2_TABLE_300
132 , a4 JTF_NUMBER_TABLE
133 , a5 JTF_VARCHAR2_TABLE_100
134 ) as
135 ddindx binary_integer; indx binary_integer;
136 begin
137 if a0 is not null and a0.count > 0 then
138 if a0.count > 0 then
139 indx := a0.first;
140 ddindx := 1;
141 while true loop
142 t(ddindx).qualifier_id := rosetta_g_miss_num_map(a0(indx));
143 t(ddindx).qualifier_context := a1(indx);
144 t(ddindx).qualifier_attribute := a2(indx);
145 t(ddindx).qualifier_attr_value := a3(indx);
146 t(ddindx).object_version_number := rosetta_g_miss_num_map(a4(indx));
147 t(ddindx).operation := a5(indx);
148 ddindx := ddindx+1;
149 if a0.last =indx
150 then exit;
151 end if;
152 indx := a0.next(indx);
153 end loop;
154 end if;
155 end if;
156 end rosetta_table_copy_in_p4;
157 procedure rosetta_table_copy_out_p4(t pv_offer_pub.na_qualifier_tbl_type, a0 out nocopy JTF_NUMBER_TABLE
158 , a1 out nocopy JTF_VARCHAR2_TABLE_100
159 , a2 out nocopy JTF_VARCHAR2_TABLE_100
160 , a3 out nocopy JTF_VARCHAR2_TABLE_300
161 , a4 out nocopy JTF_NUMBER_TABLE
162 , a5 out nocopy JTF_VARCHAR2_TABLE_100
163 ) as
164 ddindx binary_integer; indx binary_integer;
165 begin
166 if t is null or t.count = 0 then
167 a0 := JTF_NUMBER_TABLE();
168 a1 := JTF_VARCHAR2_TABLE_100();
169 a2 := JTF_VARCHAR2_TABLE_100();
170 a3 := JTF_VARCHAR2_TABLE_300();
171 a4 := JTF_NUMBER_TABLE();
172 a5 := JTF_VARCHAR2_TABLE_100();
173 else
174 a0 := JTF_NUMBER_TABLE();
175 a1 := JTF_VARCHAR2_TABLE_100();
176 a2 := JTF_VARCHAR2_TABLE_100();
177 a3 := JTF_VARCHAR2_TABLE_300();
178 a4 := JTF_NUMBER_TABLE();
179 a5 := JTF_VARCHAR2_TABLE_100();
180 if t.count > 0 then
181 a0.extend(t.count);
182 a1.extend(t.count);
183 a2.extend(t.count);
184 a3.extend(t.count);
185 a4.extend(t.count);
186 a5.extend(t.count);
187 ddindx := t.first;
188 indx := 1;
189 while true loop
190 a0(indx) := rosetta_g_miss_num_map(t(ddindx).qualifier_id);
191 a1(indx) := t(ddindx).qualifier_context;
192 a2(indx) := t(ddindx).qualifier_attribute;
193 a3(indx) := t(ddindx).qualifier_attr_value;
194 a4(indx) := rosetta_g_miss_num_map(t(ddindx).object_version_number);
195 a5(indx) := t(ddindx).operation;
196 indx := indx+1;
197 if t.last =ddindx
198 then exit;
199 end if;
200 ddindx := t.next(ddindx);
201 end loop;
202 end if;
203 end if;
204 end rosetta_table_copy_out_p4;
205
206 procedure rosetta_table_copy_in_p6(t out nocopy pv_offer_pub.budget_tbl_type, a0 JTF_NUMBER_TABLE
207 , a1 JTF_NUMBER_TABLE
208 , a2 JTF_NUMBER_TABLE
209 , a3 JTF_VARCHAR2_TABLE_100
210 ) as
211 ddindx binary_integer; indx binary_integer;
212 begin
213 if a0 is not null and a0.count > 0 then
214 if a0.count > 0 then
215 indx := a0.first;
216 ddindx := 1;
217 while true loop
218 t(ddindx).act_budget_id := rosetta_g_miss_num_map(a0(indx));
219 t(ddindx).budget_id := rosetta_g_miss_num_map(a1(indx));
220 t(ddindx).budget_amount := rosetta_g_miss_num_map(a2(indx));
221 t(ddindx).operation := a3(indx);
222 ddindx := ddindx+1;
223 if a0.last =indx
224 then exit;
225 end if;
226 indx := a0.next(indx);
227 end loop;
228 end if;
229 end if;
230 end rosetta_table_copy_in_p6;
231 procedure rosetta_table_copy_out_p6(t pv_offer_pub.budget_tbl_type, a0 out nocopy JTF_NUMBER_TABLE
232 , a1 out nocopy JTF_NUMBER_TABLE
233 , a2 out nocopy JTF_NUMBER_TABLE
234 , a3 out nocopy JTF_VARCHAR2_TABLE_100
235 ) as
236 ddindx binary_integer; indx binary_integer;
237 begin
238 if t is null or t.count = 0 then
239 a0 := JTF_NUMBER_TABLE();
240 a1 := JTF_NUMBER_TABLE();
241 a2 := JTF_NUMBER_TABLE();
242 a3 := JTF_VARCHAR2_TABLE_100();
243 else
244 a0 := JTF_NUMBER_TABLE();
245 a1 := JTF_NUMBER_TABLE();
246 a2 := JTF_NUMBER_TABLE();
247 a3 := JTF_VARCHAR2_TABLE_100();
248 if t.count > 0 then
249 a0.extend(t.count);
250 a1.extend(t.count);
251 a2.extend(t.count);
252 a3.extend(t.count);
253 ddindx := t.first;
254 indx := 1;
255 while true loop
256 a0(indx) := rosetta_g_miss_num_map(t(ddindx).act_budget_id);
257 a1(indx) := rosetta_g_miss_num_map(t(ddindx).budget_id);
258 a2(indx) := rosetta_g_miss_num_map(t(ddindx).budget_amount);
259 a3(indx) := t(ddindx).operation;
260 indx := indx+1;
261 if t.last =ddindx
262 then exit;
263 end if;
264 ddindx := t.next(ddindx);
265 end loop;
266 end if;
267 end if;
268 end rosetta_table_copy_out_p6;
269
270 procedure create_offer(p_init_msg_list VARCHAR2
271 , p_api_version NUMBER
272 , p_commit VARCHAR2
273 , p_benefit_id NUMBER
274 , p_operation VARCHAR2
275 , p_offer_id NUMBER
276 , p7_a0 JTF_NUMBER_TABLE
277 , p7_a1 JTF_NUMBER_TABLE
278 , p7_a2 JTF_NUMBER_TABLE
279 , p7_a3 JTF_VARCHAR2_TABLE_100
280 , p8_a0 JTF_NUMBER_TABLE
281 , p8_a1 JTF_NUMBER_TABLE
282 , p8_a2 JTF_NUMBER_TABLE
283 , p8_a3 JTF_VARCHAR2_TABLE_100
284 , p8_a4 JTF_VARCHAR2_TABLE_100
285 , p8_a5 JTF_VARCHAR2_TABLE_100
286 , p8_a6 JTF_NUMBER_TABLE
287 , p8_a7 JTF_VARCHAR2_TABLE_100
288 , p8_a8 JTF_NUMBER_TABLE
289 , p8_a9 JTF_VARCHAR2_TABLE_100
290 , p9_a0 JTF_NUMBER_TABLE
291 , p9_a1 JTF_VARCHAR2_TABLE_100
292 , p9_a2 JTF_VARCHAR2_TABLE_100
293 , p9_a3 JTF_VARCHAR2_TABLE_300
294 , p9_a4 JTF_NUMBER_TABLE
295 , p9_a5 JTF_VARCHAR2_TABLE_100
296 , x_offer_id out nocopy NUMBER
297 , x_qp_list_header_id out nocopy NUMBER
298 , x_error_location out nocopy NUMBER
299 , x_return_status out nocopy VARCHAR2
300 , x_msg_count out nocopy NUMBER
301 , x_msg_data out nocopy VARCHAR2
302 , p6_a0 NUMBER := 0-1962.0724
303 , p6_a1 NUMBER := 0-1962.0724
304 , p6_a2 VARCHAR2 := fnd_api.g_miss_char
305 , p6_a3 VARCHAR2 := fnd_api.g_miss_char
306 , p6_a4 NUMBER := 0-1962.0724
307 , p6_a5 NUMBER := 0-1962.0724
308 , p6_a6 VARCHAR2 := fnd_api.g_miss_char
309 , p6_a7 NUMBER := 0-1962.0724
310 , p6_a8 NUMBER := 0-1962.0724
311 , p6_a9 VARCHAR2 := fnd_api.g_miss_char
312 , p6_a10 VARCHAR2 := fnd_api.g_miss_char
313 , p6_a11 VARCHAR2 := fnd_api.g_miss_char
314 , p6_a12 VARCHAR2 := fnd_api.g_miss_char
315 , p6_a13 VARCHAR2 := fnd_api.g_miss_char
316 , p6_a14 VARCHAR2 := fnd_api.g_miss_char
317 , p6_a15 VARCHAR2 := fnd_api.g_miss_char
318 , p6_a16 VARCHAR2 := fnd_api.g_miss_char
319 , p6_a17 VARCHAR2 := fnd_api.g_miss_char
320 , p6_a18 VARCHAR2 := fnd_api.g_miss_char
321 )
322
323 as
324 ddp_modifier_list_rec pv_offer_pub.modifier_list_rec_type;
325 ddp_budget_tbl pv_offer_pub.budget_tbl_type;
326 ddp_discount_tbl pv_offer_pub.discount_line_tbl_type;
327 ddp_na_qualifier_tbl pv_offer_pub.na_qualifier_tbl_type;
328 ddindx binary_integer; indx binary_integer;
329 begin
330
331 -- copy data to the local IN or IN-OUT args, if any
332
333
334
335
336
337
338 ddp_modifier_list_rec.offer_id := rosetta_g_miss_num_map(p6_a0);
339 ddp_modifier_list_rec.qp_list_header_id := rosetta_g_miss_num_map(p6_a1);
340 ddp_modifier_list_rec.offer_type := p6_a2;
341 ddp_modifier_list_rec.offer_code := p6_a3;
342 ddp_modifier_list_rec.user_status_id := rosetta_g_miss_num_map(p6_a4);
343 ddp_modifier_list_rec.object_version_number := rosetta_g_miss_num_map(p6_a5);
344 ddp_modifier_list_rec.status_code := p6_a6;
345 ddp_modifier_list_rec.custom_setup_id := rosetta_g_miss_num_map(p6_a7);
346 ddp_modifier_list_rec.budget_amount_tc := rosetta_g_miss_num_map(p6_a8);
347 ddp_modifier_list_rec.transaction_currency_code := p6_a9;
348 ddp_modifier_list_rec.functional_currency_code := p6_a10;
349 ddp_modifier_list_rec.currency_code := p6_a11;
350 ddp_modifier_list_rec.name := p6_a12;
351 ddp_modifier_list_rec.description := p6_a13;
352 ddp_modifier_list_rec.comments := p6_a14;
353 ddp_modifier_list_rec.offer_operation := p6_a15;
354 ddp_modifier_list_rec.modifier_operation := p6_a16;
355 ddp_modifier_list_rec.budget_offer_yn := p6_a17;
356 ddp_modifier_list_rec.tier_level := p6_a18;
357
358 pv_offer_pub_w.rosetta_table_copy_in_p6(ddp_budget_tbl, p7_a0
359 , p7_a1
360 , p7_a2
361 , p7_a3
362 );
363
364 pv_offer_pub_w.rosetta_table_copy_in_p2(ddp_discount_tbl, p8_a0
365 , p8_a1
366 , p8_a2
367 , p8_a3
368 , p8_a4
369 , p8_a5
370 , p8_a6
371 , p8_a7
372 , p8_a8
373 , p8_a9
374 );
375
376 pv_offer_pub_w.rosetta_table_copy_in_p4(ddp_na_qualifier_tbl, p9_a0
377 , p9_a1
378 , p9_a2
379 , p9_a3
380 , p9_a4
381 , p9_a5
382 );
383
384
385
386
387
388
389
390 -- here's the delegated call to the old PL/SQL routine
391 pv_offer_pub.create_offer(p_init_msg_list,
392 p_api_version,
393 p_commit,
394 p_benefit_id,
395 p_operation,
396 p_offer_id,
397 ddp_modifier_list_rec,
398 ddp_budget_tbl,
399 ddp_discount_tbl,
400 ddp_na_qualifier_tbl,
401 x_offer_id,
402 x_qp_list_header_id,
403 x_error_location,
404 x_return_status,
405 x_msg_count,
406 x_msg_data);
407
408 -- copy data back from the local variables to OUT or IN-OUT args, if any
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424 end;
425
426 end pv_offer_pub_w;