DBA Data[Home] [Help]

PACKAGE BODY: APPS.XDP_INTERFACES_PUB_W

Source


1 package body xdp_interfaces_pub_w as
2   /* $Header: XDPINPWB.pls 120.1 2005/06/22 07:11:58 appldev 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   g_date_fmtStr varchar2(30) := 'YYYY.MM.DD HH24:MI:SS';
6   --lg_delimiter varchar2(4) := chr(5)||chr(30);
7   lg_delimiter varchar2(4) := fnd_global.local_chr(5)||fnd_global.local_chr(30);
8   --lg_inline_delimiter varchar2(4) := chr(5)||chr(31);
9   lg_inline_delimiter varchar2(4) := fnd_global.local_chr(5)||fnd_global.local_chr(31);
10 
11   lg_line_clob CLOB;
12   lg_line_param_clob CLOB;
13   lg_order_param_clob CLOB;
14 
15   function rosetta_g_miss_num_map(n number) return number as
16     a number := fnd_api.g_miss_num;
17     b number := 0-1962.0724;
18   begin
19     if n=a then return b; end if;
20     if n=b then return a; end if;
21     return n;
22   end;
23 
24   -- this is to workaround the JDBC bug regarding IN DATE of value GMiss
25   function rosetta_g_miss_date_in_map(d date) return date as
26   begin
27     if d = rosetta_g_mistake_date then return fnd_api.g_miss_date; end if;
28     return d;
29   end;
30 
31   procedure process_order(p_api_version  NUMBER
32     , p_init_msg_list  VARCHAR2
33     , p_commit  VARCHAR2
34     , p_validation_level  NUMBER
35     , x_return_status OUT NOCOPY  VARCHAR2
36     , x_msg_count OUT NOCOPY  NUMBER
37     , x_msg_data OUT NOCOPY  VARCHAR2
38     , p7_a0  VARCHAR2
39     , p7_a1  VARCHAR2
40     , p7_a2  DATE
41     , p7_a3  NUMBER
42     , p7_a4  DATE
43     , p7_a5  DATE
44     , p7_a6  VARCHAR2
45     , p7_a7  VARCHAR2
46     , p7_a8  VARCHAR2
47     , p7_a9  NUMBER
48     , p7_a10  NUMBER
49     , p7_a11  VARCHAR2
50     , p7_a12  NUMBER
51     , p7_a13  NUMBER
52     , p7_a14  VARCHAR2
53     , p7_a15  VARCHAR2
54     , p7_a16  VARCHAR2
55     , p7_a17  DATE
56     , p7_a18  DATE
57     , p7_a19  NUMBER
58     , p7_a20  NUMBER
59     , p7_a21  NUMBER
60     , p7_a22  VARCHAR2
61     , p7_a23  VARCHAR2
62     , p7_a24  VARCHAR2
63     , p7_a25  VARCHAR2
64     , p7_a26  NUMBER
65     , p8_a0 JTF_VARCHAR2_TABLE_100
66     , p8_a1 JTF_VARCHAR2_TABLE_4000
67     , p9_a0 JTF_NUMBER_TABLE
68     , p9_a1 JTF_VARCHAR2_TABLE_100
69     , p9_a2 JTF_VARCHAR2_TABLE_100
70     , p9_a3 JTF_VARCHAR2_TABLE_100
71     , p9_a4 JTF_VARCHAR2_TABLE_100
72     , p9_a5 JTF_DATE_TABLE
73     , p9_a6 JTF_VARCHAR2_TABLE_100
74     , p9_a7 JTF_NUMBER_TABLE
75     , p9_a8 JTF_NUMBER_TABLE
76     , p9_a9 JTF_NUMBER_TABLE
77     , p9_a10 JTF_NUMBER_TABLE
78     , p9_a11 JTF_DATE_TABLE
79     , p9_a12 JTF_DATE_TABLE
80     , p9_a13 JTF_VARCHAR2_TABLE_100
81     , p9_a14 JTF_DATE_TABLE
82     , p9_a15 JTF_NUMBER_TABLE
83     , p9_a16 JTF_NUMBER_TABLE
84     , p9_a17 JTF_NUMBER_TABLE
85     , p9_a18 JTF_VARCHAR2_TABLE_100
86     , p9_a19 JTF_NUMBER_TABLE
87     , p9_a20 JTF_VARCHAR2_TABLE_100
88     , p9_a21 JTF_NUMBER_TABLE
89     , p9_a22 JTF_NUMBER_TABLE
90     , p10_a0 JTF_NUMBER_TABLE
91     , p10_a1 JTF_VARCHAR2_TABLE_100
92     , p10_a2 JTF_VARCHAR2_TABLE_4000
93     , p10_a3 JTF_VARCHAR2_TABLE_4000
94     , x_sdp_order_id OUT NOCOPY  NUMBER
95   )
96   as
97     ddp_order_header xdp_types.order_header;
98     ddp_order_parameter xdp_types.order_parameter_list;
99     ddp_order_line_list xdp_types.order_line_list;
100     ddp_line_parameter_list xdp_types.line_param_list;
101     ddindx binary_integer; indx binary_integer;
102   begin
103 
104     -- copy data to the local IN or IN-OUT args, if any
105 
106 
107 
108 
109 
110 
111 
112     ddp_order_header.order_number := p7_a0;
113     ddp_order_header.order_version := p7_a1;
114     ddp_order_header.provisioning_date := rosetta_g_miss_date_in_map(p7_a2);
115     ddp_order_header.priority := p7_a3;
116     ddp_order_header.due_date := rosetta_g_miss_date_in_map(p7_a4);
117     ddp_order_header.customer_required_date := rosetta_g_miss_date_in_map(p7_a5);
118     ddp_order_header.order_type := p7_a6;
119     ddp_order_header.order_action := p7_a7;
120     ddp_order_header.order_source := p7_a8;
121     ddp_order_header.related_order_id := p7_a9;
122     ddp_order_header.org_id := p7_a10;
123     ddp_order_header.customer_name := p7_a11;
124     ddp_order_header.customer_id := p7_a12;
125     ddp_order_header.service_provider_id := p7_a13;
126     ddp_order_header.telephone_number := p7_a14;
127     ddp_order_header.order_status := p7_a15;
128     ddp_order_header.order_state := p7_a16;
129     ddp_order_header.actual_provisioning_date := rosetta_g_miss_date_in_map(p7_a17);
130     ddp_order_header.completion_date := rosetta_g_miss_date_in_map(p7_a18);
131     ddp_order_header.previous_order_id := p7_a19;
132     ddp_order_header.next_order_id := p7_a20;
133     ddp_order_header.sdp_order_id := p7_a21;
134     ddp_order_header.jeopardy_enabled_flag := p7_a22;
135     ddp_order_header.order_ref_name := p7_a23;
136     ddp_order_header.order_ref_value := p7_a24;
137     ddp_order_header.sp_order_number := p7_a25;
138     ddp_order_header.sp_userid := p7_a26;
139 
140     xdp_types_w.rosetta_table_copy_in_p3(ddp_order_parameter, p8_a0
141       , p8_a1
142       );
143 
144     xdp_types_w.rosetta_table_copy_in_p5(ddp_order_line_list, p9_a0
145       , p9_a1
146       , p9_a2
147       , p9_a3
148       , p9_a4
149       , p9_a5
150       , p9_a6
151       , p9_a7
152       , p9_a8
153       , p9_a9
154       , p9_a10
155       , p9_a11
156       , p9_a12
157       , p9_a13
158       , p9_a14
159       , p9_a15
160       , p9_a16
161       , p9_a17
162       , p9_a18
163       , p9_a19
164       , p9_a20
165       , p9_a21
166       , p9_a22
167       );
168 
169     xdp_types_w.rosetta_table_copy_in_p7(ddp_line_parameter_list, p10_a0
170       , p10_a1
171       , p10_a2
172       , p10_a3
173       );
174 
175 
176     -- here's the delegated call to the old PL/SQL routine
177     xdp_interfaces_pub.process_order(p_api_version,
178       p_init_msg_list,
179       p_commit,
180       p_validation_level,
181       x_return_status,
182       x_msg_count,
183       x_msg_data,
184       ddp_order_header,
185       ddp_order_parameter,
186       ddp_order_line_list,
187       ddp_line_parameter_list,
188       x_sdp_order_id);
189 
190     -- copy data back from the local OUT or IN-OUT args, if any
191 
192 
193 
194 
195 
196 
197 
198 
199 
200 
201 
202   end;
203 
204   procedure process_order(p_api_version  NUMBER
205     , p_init_msg_list  VARCHAR2
206     , p_commit  VARCHAR2
207     , p_validation_level  NUMBER
208     , x_return_status OUT NOCOPY  VARCHAR2
209     , x_msg_count OUT NOCOPY  NUMBER
210     , x_msg_data OUT NOCOPY  VARCHAR2
211     , x_error_code OUT NOCOPY  VARCHAR2
212     , p8_a0  VARCHAR2
213     , p8_a1  VARCHAR2
214     , p8_a2  DATE
215     , p8_a3  NUMBER
216     , p8_a4  VARCHAR2
217     , p8_a5  VARCHAR2
218     , p8_a6  VARCHAR2
219     , p8_a7  NUMBER
220     , p8_a8  DATE
221     , p8_a9  DATE
222     , p8_a10  VARCHAR2
223     , p8_a11  VARCHAR2
224     , p8_a12  NUMBER
225     , p8_a13  NUMBER
226     , p8_a14  NUMBER
227     , p8_a15  NUMBER
228     , p8_a16  VARCHAR2
229     , p8_a17  VARCHAR2
230     , p8_a18  VARCHAR2
231     , p8_a19  NUMBER
232     , p8_a20  VARCHAR2
233     , p8_a21  VARCHAR2
234     , p8_a22  VARCHAR2
235     , p8_a23  DATE
236     , p8_a24  DATE
237     , p8_a25  NUMBER
238     , p8_a26  VARCHAR2
239     , p8_a27  VARCHAR2
240     , p8_a28  VARCHAR2
241     , p8_a29  VARCHAR2
242     , p8_a30  VARCHAR2
243     , p8_a31  VARCHAR2
244     , p8_a32  VARCHAR2
245     , p8_a33  VARCHAR2
246     , p8_a34  VARCHAR2
247     , p8_a35  VARCHAR2
248     , p8_a36  VARCHAR2
249     , p8_a37  VARCHAR2
250     , p8_a38  VARCHAR2
251     , p8_a39  VARCHAR2
252     , p8_a40  VARCHAR2
253     , p8_a41  VARCHAR2
254     , p8_a42  VARCHAR2
255     , p8_a43  VARCHAR2
256     , p8_a44  VARCHAR2
257     , p8_a45  VARCHAR2
258     , p8_a46  VARCHAR2
259     , p8_a47  VARCHAR2
260     , p8_a48  VARCHAR2
261     , p9_a0 JTF_VARCHAR2_TABLE_100
262     , p9_a1 JTF_VARCHAR2_TABLE_4000
263     , p10_a0 JTF_NUMBER_TABLE
264     , p10_a1 JTF_VARCHAR2_TABLE_100
265     , p10_a2 JTF_NUMBER_TABLE
266     , p10_a3 JTF_VARCHAR2_TABLE_100
267     , p10_a4 JTF_VARCHAR2_TABLE_100
268     , p10_a5 JTF_VARCHAR2_TABLE_100
269     , p10_a6 JTF_VARCHAR2_TABLE_100
270     , p10_a7 JTF_NUMBER_TABLE
271     , p10_a8 JTF_NUMBER_TABLE
272     , p10_a9 JTF_VARCHAR2_TABLE_100
273     , p10_a10 JTF_NUMBER_TABLE
274     , p10_a11 JTF_DATE_TABLE
275     , p10_a12 JTF_VARCHAR2_TABLE_100
276     , p10_a13 JTF_VARCHAR2_TABLE_100
277     , p10_a14 JTF_NUMBER_TABLE
278     , p10_a15 JTF_NUMBER_TABLE
279     , p10_a16 JTF_NUMBER_TABLE
280     , p10_a17 JTF_NUMBER_TABLE
281     , p10_a18 JTF_DATE_TABLE
282     , p10_a19 JTF_VARCHAR2_TABLE_100
283     , p10_a20 JTF_DATE_TABLE
284     , p10_a21 JTF_NUMBER_TABLE
285     , p10_a22 JTF_NUMBER_TABLE
286     , p10_a23 JTF_NUMBER_TABLE
287     , p10_a24 JTF_NUMBER_TABLE
288     , p10_a25 JTF_VARCHAR2_TABLE_100
289     , p10_a26 JTF_DATE_TABLE
290     , p10_a27 JTF_DATE_TABLE
291     , p10_a28 JTF_NUMBER_TABLE
292     , p10_a29 JTF_VARCHAR2_TABLE_100
293     , p10_a30 JTF_VARCHAR2_TABLE_100
294     , p10_a31 JTF_VARCHAR2_TABLE_300
295     , p10_a32 JTF_VARCHAR2_TABLE_300
296     , p10_a33 JTF_VARCHAR2_TABLE_300
297     , p10_a34 JTF_VARCHAR2_TABLE_300
298     , p10_a35 JTF_VARCHAR2_TABLE_300
299     , p10_a36 JTF_VARCHAR2_TABLE_300
300     , p10_a37 JTF_VARCHAR2_TABLE_300
301     , p10_a38 JTF_VARCHAR2_TABLE_300
302     , p10_a39 JTF_VARCHAR2_TABLE_300
303     , p10_a40 JTF_VARCHAR2_TABLE_300
304     , p10_a41 JTF_VARCHAR2_TABLE_300
305     , p10_a42 JTF_VARCHAR2_TABLE_300
306     , p10_a43 JTF_VARCHAR2_TABLE_300
307     , p10_a44 JTF_VARCHAR2_TABLE_300
308     , p10_a45 JTF_VARCHAR2_TABLE_300
309     , p10_a46 JTF_VARCHAR2_TABLE_300
310     , p10_a47 JTF_VARCHAR2_TABLE_300
311     , p10_a48 JTF_VARCHAR2_TABLE_300
312     , p10_a49 JTF_VARCHAR2_TABLE_300
313     , p10_a50 JTF_VARCHAR2_TABLE_300
314     , p11_a0 JTF_NUMBER_TABLE
315     , p11_a1 JTF_VARCHAR2_TABLE_100
316     , p11_a2 JTF_VARCHAR2_TABLE_4000
317     , p11_a3 JTF_VARCHAR2_TABLE_4000
318     , x_order_id OUT NOCOPY  NUMBER
319   )
320   as
321     ddp_order_header xdp_types.service_order_header;
322     ddp_order_param_list xdp_types.service_order_param_list;
323     ddp_order_line_list xdp_types.service_order_line_list;
324     ddp_line_param_list xdp_types.service_line_param_list;
325     ddindx binary_integer; indx binary_integer;
326   begin
327 
328     -- copy data to the local IN or IN-OUT args, if any
329 
330 
331 
332 
333 
334 
335 
336 
337     ddp_order_header.order_number := p8_a0;
338     ddp_order_header.order_version := p8_a1;
339     ddp_order_header.required_fulfillment_date := rosetta_g_miss_date_in_map(p8_a2);
340     ddp_order_header.priority := p8_a3;
341     ddp_order_header.jeopardy_enabled_flag := p8_a4;
342     ddp_order_header.execution_mode := p8_a5;
343     ddp_order_header.account_number := p8_a6;
344     ddp_order_header.cust_account_id := p8_a7;
345     ddp_order_header.due_date := rosetta_g_miss_date_in_map(p8_a8);
346     ddp_order_header.customer_required_date := rosetta_g_miss_date_in_map(p8_a9);
347     ddp_order_header.order_type := p8_a10;
348     ddp_order_header.order_source := p8_a11;
349     ddp_order_header.org_id := p8_a12;
350     ddp_order_header.related_order_id := p8_a13;
351     ddp_order_header.previous_order_id := p8_a14;
352     ddp_order_header.next_order_id := p8_a15;
353     ddp_order_header.order_ref_name := p8_a16;
354     ddp_order_header.order_ref_value := p8_a17;
355     ddp_order_header.order_comments := p8_a18;
356     ddp_order_header.order_id := p8_a19;
357     ddp_order_header.order_status := p8_a20;
358     ddp_order_header.fulfillment_status := p8_a21;
359     ddp_order_header.fulfillment_result := p8_a22;
360     ddp_order_header.completion_date := rosetta_g_miss_date_in_map(p8_a23);
361     ddp_order_header.actual_fulfillment_date := rosetta_g_miss_date_in_map(p8_a24);
362     ddp_order_header.customer_id := p8_a25;
363     ddp_order_header.customer_name := p8_a26;
364     ddp_order_header.telephone_number := p8_a27;
365     ddp_order_header.attribute_category := p8_a28;
366     ddp_order_header.attribute1 := p8_a29;
367     ddp_order_header.attribute2 := p8_a30;
368     ddp_order_header.attribute3 := p8_a31;
369     ddp_order_header.attribute4 := p8_a32;
370     ddp_order_header.attribute5 := p8_a33;
371     ddp_order_header.attribute6 := p8_a34;
372     ddp_order_header.attribute7 := p8_a35;
373     ddp_order_header.attribute8 := p8_a36;
374     ddp_order_header.attribute9 := p8_a37;
375     ddp_order_header.attribute10 := p8_a38;
376     ddp_order_header.attribute11 := p8_a39;
377     ddp_order_header.attribute12 := p8_a40;
378     ddp_order_header.attribute13 := p8_a41;
379     ddp_order_header.attribute14 := p8_a42;
380     ddp_order_header.attribute15 := p8_a43;
381     ddp_order_header.attribute16 := p8_a44;
382     ddp_order_header.attribute17 := p8_a45;
383     ddp_order_header.attribute18 := p8_a46;
384     ddp_order_header.attribute19 := p8_a47;
385     ddp_order_header.attribute20 := p8_a48;
386 
387     xdp_types_w.rosetta_table_copy_in_p15(ddp_order_param_list, p9_a0
388       , p9_a1
389       );
390 
391     xdp_types_w.rosetta_table_copy_in_p11(ddp_order_line_list, p10_a0
392       , p10_a1
393       , p10_a2
394       , p10_a3
395       , p10_a4
396       , p10_a5
397       , p10_a6
398       , p10_a7
399       , p10_a8
400       , p10_a9
401       , p10_a10
402       , p10_a11
403       , p10_a12
404       , p10_a13
405       , p10_a14
406       , p10_a15
407       , p10_a16
408       , p10_a17
409       , p10_a18
410       , p10_a19
411       , p10_a20
412       , p10_a21
413       , p10_a22
414       , p10_a23
415       , p10_a24
416       , p10_a25
417       , p10_a26
418       , p10_a27
419       , p10_a28
420       , p10_a29
421       , p10_a30
422       , p10_a31
423       , p10_a32
424       , p10_a33
425       , p10_a34
426       , p10_a35
427       , p10_a36
428       , p10_a37
429       , p10_a38
430       , p10_a39
431       , p10_a40
432       , p10_a41
433       , p10_a42
434       , p10_a43
435       , p10_a44
436       , p10_a45
437       , p10_a46
438       , p10_a47
439       , p10_a48
440       , p10_a49
441       , p10_a50
442       );
443 
444     xdp_types_w.rosetta_table_copy_in_p19(ddp_line_param_list, p11_a0
445       , p11_a1
446       , p11_a2
447       , p11_a3
448       );
449 
450 
451     -- here's the delegated call to the old PL/SQL routine
452     xdp_interfaces_pub.process_order(p_api_version,
453       p_init_msg_list,
454       p_commit,
455       p_validation_level,
456       x_return_status,
457       x_msg_count,
458       x_msg_data,
459       x_error_code,
460       ddp_order_header,
461       ddp_order_param_list,
462       ddp_order_line_list,
463       ddp_line_param_list,
464       x_order_id);
465 
466     -- copy data back from the local OUT or IN-OUT args, if any
467 
468 
469 
470 
471 
472 
473 
474 
475 
476 
477 
478 
479   end;
480 
484     , p_validation_level  NUMBER
481   procedure get_order_details(p_api_version  NUMBER
482     , p_init_msg_list  VARCHAR2
483     , p_commit  VARCHAR2
485     , x_return_status OUT NOCOPY  VARCHAR2
486     , x_msg_count OUT NOCOPY  NUMBER
487     , x_msg_data OUT NOCOPY  VARCHAR2
488     , x_error_code OUT NOCOPY  VARCHAR2
489     , p_order_number  VARCHAR2
490     , p_order_version  VARCHAR2
491     , p_order_id  NUMBER
492     , p11_a0 OUT NOCOPY  VARCHAR2
493     , p11_a1 OUT NOCOPY  VARCHAR2
494     , p11_a2 OUT NOCOPY  DATE
495     , p11_a3 OUT NOCOPY  NUMBER
496     , p11_a4 OUT NOCOPY  VARCHAR2
497     , p11_a5 OUT NOCOPY  VARCHAR2
498     , p11_a6 OUT NOCOPY  VARCHAR2
499     , p11_a7 OUT NOCOPY  NUMBER
500     , p11_a8 OUT NOCOPY  DATE
501     , p11_a9 OUT NOCOPY  DATE
502     , p11_a10 OUT NOCOPY  VARCHAR2
503     , p11_a11 OUT NOCOPY  VARCHAR2
504     , p11_a12 OUT NOCOPY  NUMBER
505     , p11_a13 OUT NOCOPY  NUMBER
506     , p11_a14 OUT NOCOPY  NUMBER
507     , p11_a15 OUT NOCOPY  NUMBER
508     , p11_a16 OUT NOCOPY  VARCHAR2
509     , p11_a17 OUT NOCOPY  VARCHAR2
510     , p11_a18 OUT NOCOPY  VARCHAR2
511     , p11_a19 OUT NOCOPY  NUMBER
512     , p11_a20 OUT NOCOPY  VARCHAR2
513     , p11_a21 OUT NOCOPY  VARCHAR2
514     , p11_a22 OUT NOCOPY  VARCHAR2
515     , p11_a23 OUT NOCOPY  DATE
516     , p11_a24 OUT NOCOPY  DATE
517     , p11_a25 OUT NOCOPY  NUMBER
518     , p11_a26 OUT NOCOPY  VARCHAR2
519     , p11_a27 OUT NOCOPY  VARCHAR2
520     , p11_a28 OUT NOCOPY  VARCHAR2
521     , p11_a29 OUT NOCOPY  VARCHAR2
522     , p11_a30 OUT NOCOPY  VARCHAR2
523     , p11_a31 OUT NOCOPY  VARCHAR2
524     , p11_a32 OUT NOCOPY  VARCHAR2
525     , p11_a33 OUT NOCOPY  VARCHAR2
526     , p11_a34 OUT NOCOPY  VARCHAR2
527     , p11_a35 OUT NOCOPY  VARCHAR2
528     , p11_a36 OUT NOCOPY  VARCHAR2
529     , p11_a37 OUT NOCOPY  VARCHAR2
530     , p11_a38 OUT NOCOPY  VARCHAR2
531     , p11_a39 OUT NOCOPY  VARCHAR2
532     , p11_a40 OUT NOCOPY  VARCHAR2
533     , p11_a41 OUT NOCOPY  VARCHAR2
534     , p11_a42 OUT NOCOPY  VARCHAR2
535     , p11_a43 OUT NOCOPY  VARCHAR2
536     , p11_a44 OUT NOCOPY  VARCHAR2
537     , p11_a45 OUT NOCOPY  VARCHAR2
538     , p11_a46 OUT NOCOPY  VARCHAR2
539     , p11_a47 OUT NOCOPY  VARCHAR2
540     , p11_a48 OUT NOCOPY  VARCHAR2
541     , p12_a0 OUT NOCOPY JTF_VARCHAR2_TABLE_100
542     , p12_a1 OUT NOCOPY JTF_VARCHAR2_TABLE_4000
543     , p13_a0 OUT NOCOPY JTF_NUMBER_TABLE
544     , p13_a1 OUT NOCOPY JTF_VARCHAR2_TABLE_100
545     , p13_a2 OUT NOCOPY JTF_NUMBER_TABLE
546     , p13_a3 OUT NOCOPY JTF_VARCHAR2_TABLE_100
547     , p13_a4 OUT NOCOPY JTF_VARCHAR2_TABLE_100
548     , p13_a5 OUT NOCOPY JTF_VARCHAR2_TABLE_100
549     , p13_a6 OUT NOCOPY JTF_VARCHAR2_TABLE_100
550     , p13_a7 OUT NOCOPY JTF_NUMBER_TABLE
551     , p13_a8 OUT NOCOPY JTF_NUMBER_TABLE
552     , p13_a9 OUT NOCOPY JTF_VARCHAR2_TABLE_100
553     , p13_a10 OUT NOCOPY JTF_NUMBER_TABLE
554     , p13_a11 OUT NOCOPY JTF_DATE_TABLE
555     , p13_a12 OUT NOCOPY JTF_VARCHAR2_TABLE_100
556     , p13_a13 OUT NOCOPY JTF_VARCHAR2_TABLE_100
557     , p13_a14 OUT NOCOPY JTF_NUMBER_TABLE
558     , p13_a15 OUT NOCOPY JTF_NUMBER_TABLE
559     , p13_a16 OUT NOCOPY JTF_NUMBER_TABLE
560     , p13_a17 OUT NOCOPY JTF_NUMBER_TABLE
561     , p13_a18 OUT NOCOPY JTF_DATE_TABLE
562     , p13_a19 OUT NOCOPY JTF_VARCHAR2_TABLE_100
563     , p13_a20 OUT NOCOPY JTF_DATE_TABLE
564     , p13_a21 OUT NOCOPY JTF_NUMBER_TABLE
565     , p13_a22 OUT NOCOPY JTF_NUMBER_TABLE
566     , p13_a23 OUT NOCOPY JTF_NUMBER_TABLE
567     , p13_a24 OUT NOCOPY JTF_NUMBER_TABLE
568     , p13_a25 OUT NOCOPY JTF_VARCHAR2_TABLE_100
569     , p13_a26 OUT NOCOPY JTF_DATE_TABLE
570     , p13_a27 OUT NOCOPY JTF_DATE_TABLE
571     , p13_a28 OUT NOCOPY JTF_NUMBER_TABLE
572     , p13_a29 OUT NOCOPY JTF_VARCHAR2_TABLE_100
573     , p13_a30 OUT NOCOPY JTF_VARCHAR2_TABLE_100
574     , p13_a31 OUT NOCOPY JTF_VARCHAR2_TABLE_300
575     , p13_a32 OUT NOCOPY JTF_VARCHAR2_TABLE_300
576     , p13_a33 OUT NOCOPY JTF_VARCHAR2_TABLE_300
577     , p13_a34 OUT NOCOPY JTF_VARCHAR2_TABLE_300
578     , p13_a35 OUT NOCOPY JTF_VARCHAR2_TABLE_300
579     , p13_a36 OUT NOCOPY JTF_VARCHAR2_TABLE_300
580     , p13_a37 OUT NOCOPY JTF_VARCHAR2_TABLE_300
581     , p13_a38 OUT NOCOPY JTF_VARCHAR2_TABLE_300
582     , p13_a39 OUT NOCOPY JTF_VARCHAR2_TABLE_300
583     , p13_a40 OUT NOCOPY JTF_VARCHAR2_TABLE_300
584     , p13_a41 OUT NOCOPY JTF_VARCHAR2_TABLE_300
585     , p13_a42 OUT NOCOPY JTF_VARCHAR2_TABLE_300
586     , p13_a43 OUT NOCOPY JTF_VARCHAR2_TABLE_300
587     , p13_a44 OUT NOCOPY JTF_VARCHAR2_TABLE_300
588     , p13_a45 OUT NOCOPY JTF_VARCHAR2_TABLE_300
589     , p13_a46 OUT NOCOPY JTF_VARCHAR2_TABLE_300
590     , p13_a47 OUT NOCOPY JTF_VARCHAR2_TABLE_300
591     , p13_a48 OUT NOCOPY JTF_VARCHAR2_TABLE_300
592     , p13_a49 OUT NOCOPY JTF_VARCHAR2_TABLE_300
593     , p13_a50 OUT NOCOPY JTF_VARCHAR2_TABLE_300
594     , p14_a0 OUT NOCOPY JTF_NUMBER_TABLE
595     , p14_a1 OUT NOCOPY JTF_VARCHAR2_TABLE_100
596     , p14_a2 OUT NOCOPY JTF_VARCHAR2_TABLE_4000
597     , p14_a3 OUT NOCOPY JTF_VARCHAR2_TABLE_4000
598   )
599   as
600     ddx_order_header xdp_types.service_order_header;
601     ddx_order_param_list xdp_types.service_order_param_list;
602     ddx_line_item_list xdp_types.service_order_line_list;
603     ddx_line_param_list xdp_types.service_line_param_list;
604     ddindx binary_integer; indx binary_integer;
605   begin
606 
607     -- copy data to the local IN or IN-OUT args, if any
611 
608 
609 
610 
612 
613 
614 
615 
616 
617 
618 
619 
620 
621 
622 
623     -- here's the delegated call to the old PL/SQL routine
624     xdp_interfaces_pub.get_order_details(p_api_version,
625       p_init_msg_list,
626       p_commit,
627       p_validation_level,
628       x_return_status,
629       x_msg_count,
630       x_msg_data,
631       x_error_code,
632       p_order_number,
633       p_order_version,
634       p_order_id,
635       ddx_order_header,
636       ddx_order_param_list,
637       ddx_line_item_list,
638       ddx_line_param_list);
639 
640     -- copy data back from the local OUT or IN-OUT args, if any
641 
642 
643 
644 
645 
646 
647 
648 
649 
650 
651 
652     p11_a0 := ddx_order_header.order_number;
653     p11_a1 := ddx_order_header.order_version;
654     p11_a2 := ddx_order_header.required_fulfillment_date;
655     p11_a3 := ddx_order_header.priority;
656     p11_a4 := ddx_order_header.jeopardy_enabled_flag;
657     p11_a5 := ddx_order_header.execution_mode;
658     p11_a6 := ddx_order_header.account_number;
659     p11_a7 := ddx_order_header.cust_account_id;
660     p11_a8 := ddx_order_header.due_date;
661     p11_a9 := ddx_order_header.customer_required_date;
662     p11_a10 := ddx_order_header.order_type;
663     p11_a11 := ddx_order_header.order_source;
664     p11_a12 := ddx_order_header.org_id;
665     p11_a13 := ddx_order_header.related_order_id;
666     p11_a14 := ddx_order_header.previous_order_id;
667     p11_a15 := ddx_order_header.next_order_id;
668     p11_a16 := ddx_order_header.order_ref_name;
669     p11_a17 := ddx_order_header.order_ref_value;
670     p11_a18 := ddx_order_header.order_comments;
671     p11_a19 := ddx_order_header.order_id;
672     p11_a20 := ddx_order_header.order_status;
673     p11_a21 := ddx_order_header.fulfillment_status;
674     p11_a22 := ddx_order_header.fulfillment_result;
675     p11_a23 := ddx_order_header.completion_date;
676     p11_a24 := ddx_order_header.actual_fulfillment_date;
677     p11_a25 := ddx_order_header.customer_id;
678     p11_a26 := ddx_order_header.customer_name;
679     p11_a27 := ddx_order_header.telephone_number;
680     p11_a28 := ddx_order_header.attribute_category;
681     p11_a29 := ddx_order_header.attribute1;
682     p11_a30 := ddx_order_header.attribute2;
683     p11_a31 := ddx_order_header.attribute3;
684     p11_a32 := ddx_order_header.attribute4;
685     p11_a33 := ddx_order_header.attribute5;
686     p11_a34 := ddx_order_header.attribute6;
687     p11_a35 := ddx_order_header.attribute7;
688     p11_a36 := ddx_order_header.attribute8;
689     p11_a37 := ddx_order_header.attribute9;
690     p11_a38 := ddx_order_header.attribute10;
691     p11_a39 := ddx_order_header.attribute11;
692     p11_a40 := ddx_order_header.attribute12;
693     p11_a41 := ddx_order_header.attribute13;
694     p11_a42 := ddx_order_header.attribute14;
695     p11_a43 := ddx_order_header.attribute15;
696     p11_a44 := ddx_order_header.attribute16;
697     p11_a45 := ddx_order_header.attribute17;
698     p11_a46 := ddx_order_header.attribute18;
699     p11_a47 := ddx_order_header.attribute19;
700     p11_a48 := ddx_order_header.attribute20;
701 
702     xdp_types_w.rosetta_table_copy_out_p15(ddx_order_param_list, p12_a0
703       , p12_a1
704       );
705 
706     xdp_types_w.rosetta_table_copy_out_p11(ddx_line_item_list, p13_a0
707       , p13_a1
708       , p13_a2
709       , p13_a3
710       , p13_a4
711       , p13_a5
712       , p13_a6
713       , p13_a7
714       , p13_a8
715       , p13_a9
716       , p13_a10
717       , p13_a11
718       , p13_a12
719       , p13_a13
720       , p13_a14
721       , p13_a15
722       , p13_a16
723       , p13_a17
724       , p13_a18
725       , p13_a19
726       , p13_a20
727       , p13_a21
728       , p13_a22
729       , p13_a23
730       , p13_a24
731       , p13_a25
732       , p13_a26
733       , p13_a27
734       , p13_a28
735       , p13_a29
736       , p13_a30
737       , p13_a31
738       , p13_a32
739       , p13_a33
740       , p13_a34
741       , p13_a35
742       , p13_a36
743       , p13_a37
744       , p13_a38
745       , p13_a39
746       , p13_a40
747       , p13_a41
748       , p13_a42
749       , p13_a43
750       , p13_a44
751       , p13_a45
752       , p13_a46
753       , p13_a47
754       , p13_a48
755       , p13_a49
756       , p13_a50
757       );
758 
759     xdp_types_w.rosetta_table_copy_out_p19(ddx_line_param_list, p14_a0
760       , p14_a1
761       , p14_a2
762       , p14_a3
763       );
764   end;
765 
766   procedure get_order_status(p_api_version  NUMBER
767     , p_init_msg_list  VARCHAR2
768     , p_commit  VARCHAR2
769     , p_validation_level  NUMBER
773     , x_error_code OUT NOCOPY  VARCHAR2
770     , x_return_status OUT NOCOPY  VARCHAR2
771     , x_msg_count OUT NOCOPY  NUMBER
772     , x_msg_data OUT NOCOPY  VARCHAR2
774     , p_order_number  VARCHAR2
775     , p_order_version  VARCHAR2
776     , p_order_id  NUMBER
777     , p11_a0 OUT NOCOPY  NUMBER
778     , p11_a1 OUT NOCOPY  VARCHAR2
779     , p11_a2 OUT NOCOPY  VARCHAR2
780     , p11_a3 OUT NOCOPY  VARCHAR2
781     , p11_a4 OUT NOCOPY  VARCHAR2
782     , p11_a5 OUT NOCOPY  VARCHAR2
783     , p11_a6 OUT NOCOPY  DATE
784     , p11_a7 OUT NOCOPY  DATE
785   )
786   as
787     ddx_order_status xdp_types.service_order_status;
788     ddindx binary_integer; indx binary_integer;
789   begin
790 
791     -- copy data to the local IN or IN-OUT args, if any
792 
793 
794 
795 
796 
797 
798 
799 
800 
801 
802 
803 
804     -- here's the delegated call to the old PL/SQL routine
805     xdp_interfaces_pub.get_order_status(p_api_version,
806       p_init_msg_list,
807       p_commit,
808       p_validation_level,
809       x_return_status,
810       x_msg_count,
811       x_msg_data,
812       x_error_code,
813       p_order_number,
814       p_order_version,
815       p_order_id,
816       ddx_order_status);
817 
818     -- copy data back from the local OUT or IN-OUT args, if any
819 
820 
821 
822 
823 
824 
825 
826 
827 
828 
829 
830     p11_a0 := ddx_order_status.order_id;
831     p11_a1 := ddx_order_status.order_status;
832     p11_a2 := ddx_order_status.order_number;
833     p11_a3 := ddx_order_status.order_version;
834     p11_a4 := ddx_order_status.fulfillment_status;
835     p11_a5 := ddx_order_status.fulfillment_result;
836     p11_a6 := ddx_order_status.completion_date;
837     p11_a7 := ddx_order_status.actual_fulfillment_date;
838   end;
839 
840 --------------------------------------------------------
841 --This section is hand coded for pl/sql call
842 --------------------------------------------------------
843 
844  FUNCTION STR2DATE(dateStr VARCHAR2)
845  RETURN DATE
846  AS
847  BEGIN
848         IF dateStr IS NULL THEN
849             RETURN NULL;
850         END IF;
851         IF LENGTH(dateStr) = 0 THEN
852             RETURN NULL;
853         END IF;
854 
855         RETURN TO_DATE(dateStr,g_date_fmtStr);
856  END STR2DATE;
857 
858  FUNCTION GET_FIRST_STR(p_inStr IN OUT NOCOPY VARCHAR2,p_delimiter IN VARCHAR2) RETURN VARCHAR2
859  AS
860         l_index NUMBER;
861         l_first_str VARCHAR2(32000);
862  BEGIN
863         l_index := INSTR(p_inStr,p_delimiter);
864         IF l_index = -1 THEN
865             l_first_str := p_inStr;
866             p_inStr := '';
867         ELSE
868             l_first_str := substr(p_inStr,1,l_index-1);
869             p_inStr := substr(p_inStr,l_index+length(p_delimiter));
870         END IF;
871 
872         IF length(l_first_str)=0 THEN
873             l_first_str := NULL;
874         END IF;
875 
876         RETURN l_first_str;
877  END GET_FIRST_STR;
878 
879  FUNCTION GET_STR_IN_CLOB(p_inStr IN CLOB,p_start_index IN OUT NOCOPY NUMBER,p_delimiter IN VARCHAR2) RETURN VARCHAR2
880  AS
881         l_index NUMBER;
882         l_first_str VARCHAR2(32000);
883  BEGIN
884         l_index := dbms_lob.INSTR(p_inStr,p_delimiter,p_start_index);
885         IF l_index = 0 THEN
886             l_first_str := dbms_lob.substr(p_inStr);
887             p_start_index := dbms_lob.GETLENGTH(p_instr);
888         ELSE
889             l_first_str := dbms_lob.substr(p_inStr,l_index-p_start_index,p_start_index);
890             p_start_index := l_index+length(p_delimiter);
891         END IF;
892 
893         IF length(l_first_str)=0 THEN
894             l_first_str := NULL;
895         END IF;
896         RETURN l_first_str;
897  END GET_STR_IN_CLOB;
898 
902         l_param_pair VARCHAR2(32000);
899  FUNCTION GET_ORDER_PARAM(l_encoded_str IN OUT NOCOPY VARCHAR2) RETURN xdp_types.SERVICE_ORDER_PARAM
900  AS
901         l_order_param xdp_types.SERVICE_ORDER_PARAM;
903         l_clob CLOB;
904         l_index number := 1;
905  BEGIN
906         l_param_pair := get_first_str(l_encoded_str,lg_delimiter);
907         l_order_param.parameter_name := get_first_str(l_param_pair,lg_inline_delimiter);
908         l_order_param.parameter_value := get_first_str(l_param_pair,lg_inline_delimiter);
909         RETURN l_order_param;
910  END GET_ORDER_PARAM;
911 
912  FUNCTION GET_ORDER_PARAM(p_clob IN CLOB, p_index in OUT NOCOPY NUMBER) RETURN xdp_types.SERVICE_ORDER_PARAM
913  AS
914         l_order_param xdp_types.SERVICE_ORDER_PARAM;
915         l_param_pair VARCHAR2(32024);
916         l_index number := 1;
917  BEGIN
918         l_param_pair := GET_STR_IN_CLOB(p_clob,p_index,lg_delimiter);
919         IF (l_param_pair) is NULL THEN
920             RETURN NULL;
921         END IF;
922         l_order_param.parameter_name := get_first_str(l_param_pair,lg_inline_delimiter);--||'_'||p_index;
923         l_order_param.parameter_value := get_first_str(l_param_pair,lg_inline_delimiter);
924         RETURN l_order_param;
925  END GET_ORDER_PARAM;
926 
927  FUNCTION GET_ORDER_LINE_PARAM(p_clob IN CLOB, p_index in OUT NOCOPY NUMBER) RETURN xdp_types.SERVICE_LINE_PARAM
928  AS
929         l_line_param xdp_types.SERVICE_LINE_PARAM;
930         l_param_pair VARCHAR2(32000);
931  BEGIN
932         l_param_pair := GET_STR_IN_CLOB(p_clob,p_index,lg_delimiter);
933         IF (l_param_pair) is NULL THEN
934             RETURN NULL;
935         END IF;
936         l_line_param.line_number := get_first_str(l_param_pair,lg_inline_delimiter);
937         l_line_param.parameter_name := get_first_str(l_param_pair,lg_inline_delimiter);
938         l_line_param.parameter_value := get_first_str(l_param_pair,lg_inline_delimiter);
939         l_line_param.parameter_ref_value := get_first_str(l_param_pair,lg_inline_delimiter);
940         RETURN l_line_param;
941  END;
942 
943  FUNCTION get_order_line_param(l_encoded_str IN OUT NOCOPY varchar2) RETURN xdp_types.SERVICE_LINE_PARAM
944  AS
945         l_line_param xdp_types.SERVICE_LINE_PARAM;
946         l_param_pair VARCHAR2(32000);
947  BEGIN
948         l_param_pair := get_first_str(l_encoded_str,lg_delimiter);
949         IF (l_param_pair) is NULL THEN
950             RETURN NULL;
951         END IF;
952         l_line_param.line_number := get_first_str(l_param_pair,lg_inline_delimiter);
953         l_line_param.parameter_name := get_first_str(l_param_pair,lg_inline_delimiter);
954         l_line_param.parameter_value := get_first_str(l_param_pair,lg_inline_delimiter);
955         l_line_param.parameter_ref_value := get_first_str(l_param_pair,lg_inline_delimiter);
956         RETURN l_line_param;
957  END;
958 
959  FUNCTION CREATE_ORDER_LINE(l_line_details IN OUT NOCOPY VARCHAR2) RETURN xdp_types.SERVICE_LINE_ITEM
960  AS
961         l_line_item xdp_types.SERVICE_LINE_ITEM;
962  BEGIN
963         l_line_item.line_number := get_first_str(l_line_details,lg_inline_delimiter);
964         l_line_item.line_source := get_first_str(l_line_details,lg_inline_delimiter);
965         l_line_item.inventory_item_id := get_first_str(l_line_details,lg_inline_delimiter);
966         l_line_item.service_item_name := get_first_str(l_line_details,lg_inline_delimiter);
967         l_line_item.version := get_first_str(l_line_details,lg_inline_delimiter);
968         l_line_item.action_code := get_first_str(l_line_details,lg_inline_delimiter);
969         l_line_item.organization_code := get_first_str(l_line_details,lg_inline_delimiter);
970         l_line_item.organization_id := get_first_str(l_line_details,lg_inline_delimiter);
971         l_line_item.site_use_id := get_first_str(l_line_details,lg_inline_delimiter);
972         l_line_item.ib_source := get_first_str(l_line_details,lg_inline_delimiter);
973         l_line_item.ib_source_id := get_first_str(l_line_details,lg_inline_delimiter);
974         l_line_item.required_fulfillment_date := STR2DATE(get_first_str(l_line_details,lg_inline_delimiter));
975         l_line_item.fulfillment_required_flag := get_first_str(l_line_details,lg_inline_delimiter);
976         l_line_item.is_package_flag := get_first_str(l_line_details,lg_inline_delimiter);
977         l_line_item.fulfillment_sequence := get_first_str(l_line_details,lg_inline_delimiter);
978         l_line_item.bundle_id := get_first_str(l_line_details,lg_inline_delimiter);
979         l_line_item.bundle_sequence := get_first_str(l_line_details,lg_inline_delimiter);
980         l_line_item.priority := get_first_str(l_line_details,lg_inline_delimiter);
981         l_line_item.due_date := STR2DATE(get_first_str(l_line_details,lg_inline_delimiter));
982         l_line_item.jeopardy_enabled_flag := get_first_str(l_line_details,lg_inline_delimiter);
983         l_line_item.customer_required_date := STR2DATE(get_first_str(l_line_details,lg_inline_delimiter));
984         l_line_item.starting_number := get_first_str(l_line_details,lg_inline_delimiter);
985         l_line_item.ending_number := get_first_str(l_line_details,lg_inline_delimiter);
986         l_line_item.line_item_id := get_first_str(l_line_details,lg_inline_delimiter);
987         l_line_item.workitem_id := get_first_str(l_line_details,lg_inline_delimiter);
988         l_line_item.line_status := get_first_str(l_line_details,lg_inline_delimiter);
992         l_line_item.is_virtual_line_flag := get_first_str(l_line_details,lg_inline_delimiter);
989         l_line_item.completion_date := STR2DATE(get_first_str(l_line_details,lg_inline_delimiter));
990         l_line_item.actual_fulfillment_date := STR2DATE(get_first_str(l_line_details,lg_inline_delimiter));
991         l_line_item.parent_line_number := get_first_str(l_line_details,lg_inline_delimiter);
993         l_line_item.attribute_category := get_first_str(l_line_details,lg_inline_delimiter);
994         l_line_item.attribute1 := get_first_str(l_line_details,lg_inline_delimiter);
995         l_line_item.attribute2 := get_first_str(l_line_details,lg_inline_delimiter);
996         l_line_item.attribute3 := get_first_str(l_line_details,lg_inline_delimiter);
997         l_line_item.attribute4 := get_first_str(l_line_details,lg_inline_delimiter);
998         l_line_item.attribute5 := get_first_str(l_line_details,lg_inline_delimiter);
999         l_line_item.attribute6 := get_first_str(l_line_details,lg_inline_delimiter);
1000         l_line_item.attribute7 := get_first_str(l_line_details,lg_inline_delimiter);
1001         l_line_item.attribute8 := get_first_str(l_line_details,lg_inline_delimiter);
1002         l_line_item.attribute9 := get_first_str(l_line_details,lg_inline_delimiter);
1003         l_line_item.attribute10 := get_first_str(l_line_details,lg_inline_delimiter);
1004         l_line_item.attribute11 := get_first_str(l_line_details,lg_inline_delimiter);
1005         l_line_item.attribute12 := get_first_str(l_line_details,lg_inline_delimiter);
1006         l_line_item.attribute13 := get_first_str(l_line_details,lg_inline_delimiter);
1007         l_line_item.attribute14 := get_first_str(l_line_details,lg_inline_delimiter);
1008         l_line_item.attribute15 := get_first_str(l_line_details,lg_inline_delimiter);
1009         l_line_item.attribute16 := get_first_str(l_line_details,lg_inline_delimiter);
1010         l_line_item.attribute17 := get_first_str(l_line_details,lg_inline_delimiter);
1011         l_line_item.attribute18 := get_first_str(l_line_details,lg_inline_delimiter);
1012         l_line_item.attribute19 := get_first_str(l_line_details,lg_inline_delimiter);
1013         l_line_item.attribute20 := get_first_str(l_line_details,lg_inline_delimiter);
1014         RETURN l_line_item;
1015  END CREATE_ORDER_LINE;
1016 
1017  FUNCTION CREATE_ORDER(l_encoded_str IN OUT NOCOPY VARCHAR2) RETURN XDP_TYPES.SERVICE_ORDER_HEADER
1018  AS
1019         ddp_order_header XDP_TYPES.SERVICE_ORDER_HEADER;
1020  BEGIN
1021         ddp_order_header.order_number := get_first_str(l_encoded_str,lg_inline_delimiter);
1022         ddp_order_header.order_version := get_first_str(l_encoded_str,lg_inline_delimiter);
1023         ddp_order_header.required_fulfillment_date := STR2DATE(get_first_str(l_encoded_str,lg_inline_delimiter));
1024         ddp_order_header.priority := get_first_str(l_encoded_str,lg_inline_delimiter);
1025         ddp_order_header.jeopardy_enabled_flag := get_first_str(l_encoded_str,lg_inline_delimiter);
1026         ddp_order_header.execution_mode := get_first_str(l_encoded_str,lg_inline_delimiter);
1027         ddp_order_header.account_number := get_first_str(l_encoded_str,lg_inline_delimiter);
1028         ddp_order_header.cust_account_id := get_first_str(l_encoded_str,lg_inline_delimiter);
1029         ddp_order_header.due_date := STR2DATE(get_first_str(l_encoded_str,lg_inline_delimiter));
1030         ddp_order_header.customer_required_date := STR2DATE(get_first_str(l_encoded_str,lg_inline_delimiter));
1031         ddp_order_header.order_type := get_first_str(l_encoded_str,lg_inline_delimiter);
1032         ddp_order_header.order_source := get_first_str(l_encoded_str,lg_inline_delimiter);
1033         ddp_order_header.org_id := get_first_str(l_encoded_str,lg_inline_delimiter);
1034         ddp_order_header.related_order_id := get_first_str(l_encoded_str,lg_inline_delimiter);
1035         ddp_order_header.previous_order_id := get_first_str(l_encoded_str,lg_inline_delimiter);
1036         ddp_order_header.next_order_id := get_first_str(l_encoded_str,lg_inline_delimiter);
1037         ddp_order_header.order_ref_name := get_first_str(l_encoded_str,lg_inline_delimiter);
1038         ddp_order_header.order_ref_value := get_first_str(l_encoded_str,lg_inline_delimiter);
1039         ddp_order_header.order_comments := get_first_str(l_encoded_str,lg_inline_delimiter);
1040         ddp_order_header.order_id := get_first_str(l_encoded_str,lg_inline_delimiter);
1041         ddp_order_header.order_status := get_first_str(l_encoded_str,lg_inline_delimiter);
1042         ddp_order_header.fulfillment_status := get_first_str(l_encoded_str,lg_inline_delimiter);
1043         ddp_order_header.fulfillment_result := get_first_str(l_encoded_str,lg_inline_delimiter);
1044         ddp_order_header.completion_date := STR2DATE(get_first_str(l_encoded_str,lg_inline_delimiter));
1045         ddp_order_header.actual_fulfillment_date := STR2DATE(get_first_str(l_encoded_str,lg_inline_delimiter));
1046         ddp_order_header.customer_id := get_first_str(l_encoded_str,lg_inline_delimiter);
1047         ddp_order_header.customer_name := get_first_str(l_encoded_str,lg_inline_delimiter);
1048         ddp_order_header.telephone_number := get_first_str(l_encoded_str,lg_inline_delimiter);
1049         ddp_order_header.attribute_category := get_first_str(l_encoded_str,lg_inline_delimiter);
1050         ddp_order_header.attribute1 := get_first_str(l_encoded_str,lg_inline_delimiter);
1051         ddp_order_header.attribute2 := get_first_str(l_encoded_str,lg_inline_delimiter);
1052         ddp_order_header.attribute3 := get_first_str(l_encoded_str,lg_inline_delimiter);
1053         ddp_order_header.attribute4 := get_first_str(l_encoded_str,lg_inline_delimiter);
1054         ddp_order_header.attribute5 := get_first_str(l_encoded_str,lg_inline_delimiter);
1058         ddp_order_header.attribute9 := get_first_str(l_encoded_str,lg_inline_delimiter);
1055         ddp_order_header.attribute6 := get_first_str(l_encoded_str,lg_inline_delimiter);
1056         ddp_order_header.attribute7 := get_first_str(l_encoded_str,lg_inline_delimiter);
1057         ddp_order_header.attribute8 := get_first_str(l_encoded_str,lg_inline_delimiter);
1059         ddp_order_header.attribute10 := get_first_str(l_encoded_str,lg_inline_delimiter);
1060         ddp_order_header.attribute11 := get_first_str(l_encoded_str,lg_inline_delimiter);
1061         ddp_order_header.attribute12 := get_first_str(l_encoded_str,lg_inline_delimiter);
1062         ddp_order_header.attribute13 := get_first_str(l_encoded_str,lg_inline_delimiter);
1063         ddp_order_header.attribute14 := get_first_str(l_encoded_str,lg_inline_delimiter);
1064         ddp_order_header.attribute15 := get_first_str(l_encoded_str,lg_inline_delimiter);
1065         ddp_order_header.attribute16 := get_first_str(l_encoded_str,lg_inline_delimiter);
1066         ddp_order_header.attribute17 := get_first_str(l_encoded_str,lg_inline_delimiter);
1067         ddp_order_header.attribute18 := get_first_str(l_encoded_str,lg_inline_delimiter);
1068         ddp_order_header.attribute19 := get_first_str(l_encoded_str,lg_inline_delimiter);
1069         ddp_order_header.attribute20 := get_first_str(l_encoded_str,lg_inline_delimiter);
1070         RETURN ddp_order_header;
1071  END CREATE_ORDER;
1072 
1073 
1074  FUNCTION GET_ORDER_LINE(l_encoded_str IN OUT NOCOPY VARCHAR2) RETURN xdp_types.SERVICE_LINE_ITEM
1075  AS
1076         l_line_item xdp_types.SERVICE_LINE_ITEM;
1077         l_line_details VARCHAR2(32000);
1078  BEGIN
1079         l_line_details := get_first_str(l_encoded_str,lg_delimiter);
1080         IF(l_line_details IS NULL) THEN
1081             RETURN NULL;
1082         END IF;
1083 
1084         RETURN CREATE_ORDER_LINE(l_line_details);
1085  END GET_ORDER_LINE;
1086 
1087  FUNCTION GET_ORDER_LINE(p_clob IN CLOB, p_index in OUT NOCOPY NUMBER) RETURN xdp_types.SERVICE_LINE_ITEM
1088  AS
1089         l_line_item xdp_types.SERVICE_LINE_ITEM;
1090         l_line_details VARCHAR2(32000);
1091  BEGIN
1092         l_line_details := GET_STR_IN_CLOB(p_clob,p_index,lg_delimiter);
1093         IF (l_line_details) is NULL THEN
1094             RETURN NULL;
1095         END IF;
1096         RETURN CREATE_ORDER_LINE(l_line_details);
1097  END GET_ORDER_LINE;
1098 
1099  PROCEDURE PROCESS_ORDER(
1100     p_api_version  VARCHAR2
1101     , p_init_msg_list  VARCHAR2
1102     , p_commit  VARCHAR2
1103     , p_validation_level  VARCHAR2
1104     , x_return_status OUT NOCOPY  VARCHAR2
1105     , x_msg_count OUT NOCOPY  VARCHAR2
1106     , x_msg_data OUT NOCOPY  VARCHAR2
1107     , x_error_code OUT NOCOPY  NUMBER
1108     , p_order_header in VARCHAR2
1109     , p_order_line in VARCHAR2
1110     , p_order_params in VARCHAR2
1111     , p_order_line_params in VARCHAR2
1112     , x_order_id OUT NOCOPY  NUMBER
1113   )
1114   AS
1115     ddp_order_header xdp_types.service_order_header;
1116     ddp_order_param_list xdp_types.service_order_param_list;
1117     ddp_order_line_list xdp_types.service_order_line_list;
1118     ddp_line_param_list xdp_types.service_line_param_list;
1119     ddindx BINARY_INTEGER;
1120     indx BINARY_INTEGER;
1121     l_pointer BINARY_INTEGER := 1;
1122     l_index number := 1;
1123     l_encoded_str VARCHAR2(32000);
1124  BEGIN
1125 
1126     l_encoded_str := p_order_header;
1127     ddp_order_header := create_order(l_encoded_str);
1128     l_pointer := 1;
1129     IF length(p_order_params) > 0 THEN
1130         l_encoded_str := p_order_params;
1131         LOOP
1132             ddp_order_param_list(l_pointer) := get_order_param(l_encoded_str);
1133             l_pointer := l_pointer+1;
1134             IF(length(l_encoded_str) = 0) OR (l_encoded_str is null)THEN
1135                 EXIT;
1136             END IF;
1137         END LOOP;
1138     END IF;
1139 
1140     l_pointer := 1;
1141     IF length(p_order_line_params) > 0 THEN
1142         l_encoded_str := p_order_line_params;
1143         LOOP
1144             ddp_line_param_list(l_pointer) := get_order_line_param(l_encoded_str);
1145             l_pointer := l_pointer+1;
1146             IF(length(l_encoded_str) = 0) OR (l_encoded_str IS NULL) THEN
1147                 EXIT;
1148             END IF;
1149         END LOOP;
1150     END IF;
1151 
1152     l_pointer := 1;
1153     IF length(p_order_line) > 0 THEN
1154         l_encoded_str := p_order_line;
1155         LOOP
1156             ddp_order_line_list(l_pointer) := get_order_line(l_encoded_str);
1157             l_pointer := l_pointer+1;
1158             IF(length(l_encoded_str) = 0) OR (l_encoded_str IS NULL) THEN
1159                 EXIT;
1160             END IF;
1161         END LOOP;
1162     END IF;
1163 
1164     xdp_interfaces_pub.process_order(p_api_version,
1165       p_init_msg_list,
1166       p_commit,
1167       p_validation_level,
1168       x_return_status,
1169       x_msg_count,
1170       x_msg_data,
1171       x_error_code,
1172       ddp_order_header,
1173       ddp_order_param_list,
1174       ddp_order_line_list,
1175       ddp_line_param_list,
1176       x_order_id);
1180  PROCEDURE PROCESS_ORDER(
1177     -- copy data back from the local OUT or IN-OUT args, if any
1178   END PROCESS_ORDER;
1179 
1181     p_api_version  VARCHAR2
1182     , p_init_msg_list  VARCHAR2
1183     , p_commit  VARCHAR2
1184     , p_validation_level  VARCHAR2
1185     , x_return_status OUT NOCOPY  VARCHAR2
1186     , x_msg_count OUT NOCOPY  VARCHAR2
1187     , x_msg_data OUT NOCOPY  VARCHAR2
1188     , x_error_code OUT NOCOPY  NUMBER
1189     , p_order_header in VARCHAR2
1190     , x_order_id OUT NOCOPY  NUMBER
1191   )
1192   AS
1193  BEGIN
1194      PROCESS_ORDER(
1195         p_api_version
1196         , p_init_msg_list
1197         , p_commit
1198         , p_validation_level
1199         , x_return_status
1200         , x_msg_count
1201         , x_msg_data
1202         , x_error_code
1203         , p_order_header
1204         , lg_line_clob
1205         , lg_order_param_clob
1206         , lg_line_param_clob
1207         , x_order_id
1208       );
1209  END;
1210 
1211  PROCEDURE GET_CLOBS(
1212     x_line OUT NOCOPY CLOB,
1213     x_order_param OUT NOCOPY CLOB,
1214     x_line_param OUT NOCOPY CLOB
1215  ) AS
1216  BEGIN
1217     dbms_lob.createtemporary(lg_order_param_clob,true);
1218     dbms_lob.open(lg_order_param_clob,dbms_lob.lob_readwrite);
1219     dbms_lob.createtemporary(lg_line_clob,true);
1220     dbms_lob.open(lg_line_clob,dbms_lob.lob_readwrite);
1221     dbms_lob.createtemporary(lg_line_param_clob,true);
1222     dbms_lob.open(lg_line_param_clob,dbms_lob.lob_readwrite);
1223     x_line := lg_line_clob;
1224     x_order_param := lg_order_param_clob;
1225     x_line_param := lg_line_param_clob;
1226  END GET_CLOBS;
1227 
1228  PROCEDURE FREE_CLOBS AS
1229  BEGIN
1230       dbms_lob.freetemporary(lg_order_param_clob);
1231       dbms_lob.freetemporary(lg_line_clob);
1232       dbms_lob.freetemporary(lg_line_param_clob);
1233  END FREE_CLOBS;
1234 
1235  PROCEDURE PROCESS_ORDER(
1236     p_api_version  VARCHAR2
1237     , p_init_msg_list  VARCHAR2
1238     , p_commit  VARCHAR2
1239     , p_validation_level  VARCHAR2
1240     , x_return_status OUT NOCOPY  VARCHAR2
1241     , x_msg_count OUT NOCOPY  VARCHAR2
1242     , x_msg_data OUT NOCOPY  VARCHAR2
1243     , x_error_code OUT NOCOPY  NUMBER
1244     , p_order_header in VARCHAR2
1245     , p_order_line in CLOB
1246     , p_order_params in CLOB
1247     , p_order_line_params in CLOB
1248     , x_order_id OUT NOCOPY  NUMBER
1249   )
1250   AS
1251     ddp_order_header xdp_types.service_order_header;
1252     ddp_order_param_list xdp_types.service_order_param_list;
1253     ddp_order_line_list xdp_types.service_order_line_list;
1254     ddp_line_param_list xdp_types.service_line_param_list;
1255     ddindx BINARY_INTEGER;
1256     indx BINARY_INTEGER;
1257     l_pointer BINARY_INTEGER := 1;
1258     l_clob CLOB;
1259     l_index number := 1;
1260     l_encoded_str VARCHAR2(32000);
1261     l_clob_length NUMBER;
1262  BEGIN
1263     l_encoded_str := p_order_header;
1264     ddp_order_header := create_order(l_encoded_str);
1265     l_pointer := 1;
1266     l_clob_length := DBMS_LOB.GETLENGTH(p_order_params);
1267     IF l_clob_length > 0 THEN
1268         l_index := 1;
1269         LOOP
1270             ddp_order_param_list(l_pointer) := get_order_param(p_order_params,l_index);
1271             l_pointer := l_pointer+1;
1272             IF l_index >= l_clob_length THEN
1273                 EXIT;
1274             END IF;
1275         END LOOP;
1276     END IF;
1277 
1278     l_pointer := 1;
1279     l_clob_length := DBMS_LOB.GETLENGTH(p_order_line_params);
1280     IF l_clob_length > 0 THEN
1281         l_index := 1;
1282         LOOP
1283             ddp_line_param_list(l_pointer) := get_order_line_param(p_order_line_params,l_index);
1284             l_pointer := l_pointer+1;
1285             IF(l_index >= l_clob_length) THEN
1286                 EXIT;
1287             END IF;
1288         END LOOP;
1289     END IF;
1290 
1291     l_pointer := 1;
1292     l_clob_length := DBMS_LOB.GETLENGTH(p_order_line);
1293     IF l_clob_length > 0 THEN
1294         l_index := 1;
1295         LOOP
1296             ddp_order_line_list(l_pointer) := get_order_line(p_order_line,l_index);
1297             l_pointer := l_pointer+1;
1298             IF(l_index >= l_clob_length) THEN
1299                 EXIT;
1300             END IF;
1301         END LOOP;
1302     END IF;
1303 
1304     xdp_interfaces_pub.process_order(p_api_version,
1305       p_init_msg_list,
1306       p_commit,
1307       p_validation_level,
1308       x_return_status,
1309       x_msg_count,
1310       x_msg_data,
1311       x_error_code,
1312       ddp_order_header,
1313       ddp_order_param_list,
1314       ddp_order_line_list,
1315       ddp_line_param_list,
1316       x_order_id);
1317 
1318     FREE_CLOBS();
1319 
1320  END PROCESS_ORDER;
1321 
1322 end xdp_interfaces_pub_w;