1 PACKAGE BODY PA_CLIENT_EXTN_DFFTRANS AS
2 /* $Header: PAPDFFCB.pls 120.1 2005/08/08 11:20:28 sbharath noship $ */
3
4 FUNCTION DFF_map_segments_f(
5 p_attribute_number IN NUMBER,
6 p_calling_module IN VARCHAR2,
7 p_trx_ref_1 IN NUMBER,
8 p_trx_ref_2 IN NUMBER,
9 p_trx_type IN VARCHAR2,
10 p_system_linkage_function IN VARCHAR2,
11 p_submodule IN VARCHAR2,
12 p_expenditure_type IN VARCHAR2,
13 p_set_of_books_id IN NUMBER,
14 p_org_id IN NUMBER,
15 p_attribute_category IN VARCHAR2,
16 p_attribute_1 IN VARCHAR2,
17 p_attribute_2 IN VARCHAR2,
18 p_attribute_3 IN VARCHAR2,
19 p_attribute_4 IN VARCHAR2,
20 p_attribute_5 IN VARCHAR2,
21 p_attribute_6 IN VARCHAR2,
22 p_attribute_7 IN VARCHAR2,
23 p_attribute_8 IN VARCHAR2,
24 p_attribute_9 IN VARCHAR2,
25 p_attribute_10 IN VARCHAR2)
26 RETURN pa_expenditure_items_all.attribute1%TYPE is
27
28 BEGIN
29 --
30 -- This function is the main place where user should provide the mapping
31 -- logic.
32 --
33 -- Logic: Given the attirubte_number as input parameter, the function returns
34 -- an attribute value (taken from p_attribute_1 - p_attribute_10). The logic
35 -- of which p_attribute_x to return is the logic user has to decide. The default
36 -- logic is to do direct mapping where p_attribute_number = N returns p_attribute_N.
37
38 IF (p_attribute_number > 5) THEN
39 IF (p_attribute_number > 7) THEN
40 IF (p_attribute_number > 9) THEN
41 RETURN p_attribute_10;
42 ELSIF (p_attribute_number < 9) THEN /* 7 < x < 9 */
43 RETURN p_attribute_8;
44 ELSE RETURN p_attribute_9;
45 END IF;
46 ELSE /* 5 < x <= 7 */
47 IF (p_attribute_number < 7) THEN
48 RETURN p_attribute_6;
49 ELSE RETURN p_attribute_7;
50 END IF;
51 END IF;
52 ELSE
53 IF (p_attribute_number < 3) THEN
54 IF (p_attribute_number < 2) THEN
55 RETURN p_attribute_1;
56 ELSE RETURN p_attribute_2;
57 END IF;
58 ELSE /* 3 <= x <= 5 */
59 IF (p_attribute_number < 4) THEN
60 RETURN p_attribute_3;
61 ELSIF (p_attribute_number < 5) THEN
62 RETURN p_attribute_4;
63 ELSE RETURN p_attribute_5;
64 END IF;
65 END IF;
66 END IF;
67 EXCEPTION
68 WHEN OTHERS THEN
69 raise;
70 END DFF_map_segments_f;
71
72 PROCEDURE DFF_map_segments_PA_and_AP (
73 p_calling_module IN VARCHAR2,
74 p_trx_ref_1 IN NUMBER,
75 p_trx_ref_2 IN NUMBER,
76 p_trx_type IN VARCHAR2,
77 p_system_linkage_function IN VARCHAR2,
78 p_submodule IN VARCHAR2,
79 p_expenditure_type IN VARCHAR2,
80 p_set_of_books_id IN NUMBER,
81 p_org_id IN NUMBER,
82 p_attribute_category IN OUT NOCOPY VARCHAR2,
83 p_attribute_1 IN OUT NOCOPY VARCHAR2,
84 p_attribute_2 IN OUT NOCOPY VARCHAR2,
85 p_attribute_3 IN OUT NOCOPY VARCHAR2,
86 p_attribute_4 IN OUT NOCOPY VARCHAR2,
87 p_attribute_5 IN OUT NOCOPY VARCHAR2,
88 p_attribute_6 IN OUT NOCOPY VARCHAR2,
89 p_attribute_7 IN OUT NOCOPY VARCHAR2,
90 p_attribute_8 IN OUT NOCOPY VARCHAR2,
91 p_attribute_9 IN OUT NOCOPY VARCHAR2,
92 p_attribute_10 IN OUT NOCOPY VARCHAR2,
93 x_status_code OUT NOCOPY VARCHAR2) IS
94
95 counter NUMBER;
96 temp_attribute_a attribute_a;
97 temp_attribute_1 VARCHAR2(150);
98 temp_attribute_2 VARCHAR2(150);
99 temp_attribute_3 VARCHAR2(150);
100 temp_attribute_4 VARCHAR2(150);
101 temp_attribute_5 VARCHAR2(150);
102 temp_attribute_6 VARCHAR2(150);
103 temp_attribute_7 VARCHAR2(150);
104 temp_attribute_8 VARCHAR2(150);
105 temp_attribute_9 VARCHAR2(150);
106 temp_attribute_10 VARCHAR2(150);
107
108 BEGIN
109 --
110 --This procedure does the DFF segment mapping by calling DFF_map_segments_f
111 --It stores the mapped segments in the p_attribute_x parameters.
112 --While DFF_map_segments_f takes care of maping segments, user still need
113 --to do attribute_category mapping in this procedure. Example of attirubte_category
114 --mapping is shown below.
115
116 /* User should set the corresponding attribute_category for
117 expenditure items here:
118 For instance AP invoice distributions DFF reference field is
119 invoice type lookup code and PA expenditure items DFF reference
120 field is system linkage function, then we can have the following
121 mapping logic:
122 Invoice Type System Linkage Function
123 EXPENSE REPORT ER
124 STANDARD VI
125 .....
126 IF (p_attribute_category = 'EXPENSE REPORT') THEN
127 p_attribute_category := 'ER';
128 ......
129
130 */
131
132
133 /* store IN parameters in temporary variables */
134 temp_attribute_1 := p_attribute_1;
135 temp_attribute_2 := p_attribute_2;
136 temp_attribute_3 := p_attribute_3;
137 temp_attribute_4 := p_attribute_4;
138 temp_attribute_5 := p_attribute_5;
139 temp_attribute_6 := p_attribute_6;
140 temp_attribute_7 := p_attribute_7;
141 temp_attribute_8 := p_attribute_8;
142 temp_attribute_9 := p_attribute_9;
143 temp_attribute_10 := p_attribute_10;
144 counter := 1;
145
146 WHILE counter <= 10 LOOP
147 /* Call the mapping function 10 times */
148 temp_attribute_a(counter) := DFF_map_segments_f (
149 p_attribute_number =>counter,
150 p_calling_module =>p_calling_module,
151 p_trx_ref_1 =>p_trx_ref_1,
152 p_trx_ref_2 =>p_trx_ref_2,
153 p_trx_type =>p_trx_type,
154 p_system_linkage_function =>p_system_linkage_function,
155 p_submodule =>p_submodule,
156 p_expenditure_type =>p_expenditure_type,
157 p_set_of_books_id =>p_set_of_books_id,
158 p_org_id =>p_org_id,
159 p_attribute_category =>p_attribute_category,
160 p_attribute_1 =>temp_attribute_1,
161 p_attribute_2 =>temp_attribute_2,
162 p_attribute_3 =>temp_attribute_3,
163 p_attribute_4 =>temp_attribute_4,
164 p_attribute_5 =>temp_attribute_5,
165 p_attribute_6 =>temp_attribute_6,
166 p_attribute_7 =>temp_attribute_7,
167 p_attribute_8 =>temp_attribute_8,
168 p_attribute_9 =>temp_attribute_9,
169 p_attribute_10 =>temp_attribute_10);
170
171 counter := counter + 1;
172 END LOOP;
173
174 p_attribute_1 := temp_attribute_a(1);
175 p_attribute_2 := temp_attribute_a(2);
176 p_attribute_3 := temp_attribute_a(3);
177 p_attribute_4 := temp_attribute_a(4);
178 p_attribute_5 := temp_attribute_a(5);
179 p_attribute_6 := temp_attribute_a(6);
180 p_attribute_7 := temp_attribute_a(7);
181 p_attribute_8 := temp_attribute_a(8);
182 p_attribute_9 := temp_attribute_a(9);
183 p_attribute_10 := temp_attribute_a(10);
184 x_status_code := NULL;
185
186 EXCEPTION
187 WHEN OTHERS THEN
188 raise;
189 END DFF_map_segments_PA_and_AP;
190
191 END PA_CLIENT_EXTN_DFFTRANS;
192