DBA Data[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;