DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_CLIENT_EXTN_DFFTRANS

Source


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