[Home] [Help]
PACKAGE BODY: APPS.GHG_ORGANIZATION_MAPPINGS_PKG
Source
1 PACKAGE BODY GHG_ORGANIZATION_MAPPINGS_PKG AS
2 /*$Header: ghgorgmb.pls 120.3 2011/12/30 22:56:27 lvenkatr noship $ */
3
4 FUNCTION find_flexfield_mapping (x_distribution_line_number NUMBER,
5 x_code_combination_id NUMBER,
6 x_chart_of_accounts_id NUMBER,
7 x_gl_date DATE,
8 x_calling_mode VARCHAR2 DEFAULT 'ONLINE') RETURN NUMBER IS
9
10 v_debug_info VARCHAR2(200);
11 v_map_segment1_flag VARCHAR2(1);
12 v_map_segment2_flag VARCHAR2(1);
13 v_map_segment3_flag VARCHAR2(1);
14 v_map_segment4_flag VARCHAR2(1);
15 v_map_segment5_flag VARCHAR2(1);
16 v_map_segment6_flag VARCHAR2(1);
17 v_map_segment7_flag VARCHAR2(1);
18 v_map_segment8_flag VARCHAR2(1);
19 v_map_segment9_flag VARCHAR2(1);
20 v_map_segment10_flag VARCHAR2(1);
21 v_map_segment11_flag VARCHAR2(1);
22 v_map_segment12_flag VARCHAR2(1);
23 v_map_segment13_flag VARCHAR2(1);
24 v_map_segment14_flag VARCHAR2(1);
25 v_map_segment15_flag VARCHAR2(1);
26 v_map_segment16_flag VARCHAR2(1);
27 v_map_segment17_flag VARCHAR2(1);
28 v_map_segment18_flag VARCHAR2(1);
29 v_map_segment19_flag VARCHAR2(1);
30 v_map_segment20_flag VARCHAR2(1);
31 v_map_segment21_flag VARCHAR2(1);
32 v_map_segment22_flag VARCHAR2(1);
33 v_map_segment23_flag VARCHAR2(1);
34 v_map_segment24_flag VARCHAR2(1);
35 v_map_segment25_flag VARCHAR2(1);
36 v_map_segment26_flag VARCHAR2(1);
37 v_map_segment27_flag VARCHAR2(1);
38 v_map_segment28_flag VARCHAR2(1);
39 v_map_segment29_flag VARCHAR2(1);
40 v_map_segment30_flag VARCHAR2(1);
41 v_sqltext VARCHAR2(2000) := NULL;
42 v_flexfield VARCHAR2(240) := NULL;
43 v_ghg_organization_id NUMBER(15);
44
45 CURSOR get_mapping_segments (i_coa_id NUMBER) IS
46 SELECT application_column_name
47 FROM fnd_id_flex_segments_vl
48 WHERE id_flex_num = i_coa_id
49 AND id_flex_code = 'GL#'
50 ORDER BY segment_num;
51
52 BEGIN
53
54 v_debug_info := 'Retrieving organization account mapping for code_combination_id ' || x_code_combination_id || '(distribution line ' || x_distribution_line_number ||')' || '(Gl Date ' || to_char(x_gl_date, 'DD-MON-YYYY') || ')';
55
56 SELECT gcc.concatenated_segments
57 INTO v_flexfield
58 FROM gl_code_combinations_kfv gcc
59 WHERE gcc.code_combination_id = x_code_combination_id;
60
61 SELECT map_segment1_flag,
62 map_segment2_flag,
63 map_segment3_flag,
64 map_segment4_flag,
65 map_segment5_flag,
66 map_segment6_flag,
67 map_segment7_flag,
72 map_segment12_flag,
68 map_segment8_flag,
69 map_segment9_flag,
70 map_segment10_flag,
71 map_segment11_flag,
73 map_segment13_flag,
74 map_segment14_flag,
75 map_segment15_flag,
76 map_segment16_flag,
77 map_segment17_flag,
78 map_segment18_flag,
79 map_segment19_flag,
80 map_segment20_flag,
81 map_segment21_flag,
82 map_segment22_flag,
83 map_segment23_flag,
84 map_segment24_flag,
85 map_segment25_flag,
86 map_segment26_flag,
87 map_segment27_flag,
88 map_segment28_flag,
89 map_segment29_flag,
90 map_segment30_flag
91 INTO v_map_segment1_flag,
92 v_map_segment2_flag,
93 v_map_segment3_flag,
94 v_map_segment4_flag,
95 v_map_segment5_flag,
96 v_map_segment6_flag,
97 v_map_segment7_flag,
98 v_map_segment8_flag,
99 v_map_segment9_flag,
100 v_map_segment10_flag,
101 v_map_segment11_flag,
102 v_map_segment12_flag,
103 v_map_segment13_flag,
104 v_map_segment14_flag,
105 v_map_segment15_flag,
106 v_map_segment16_flag,
107 v_map_segment17_flag,
108 v_map_segment18_flag,
109 v_map_segment19_flag,
110 v_map_segment20_flag,
111 v_map_segment21_flag,
112 v_map_segment22_flag,
113 v_map_segment23_flag,
114 v_map_segment24_flag,
115 v_map_segment25_flag,
116 v_map_segment26_flag,
117 v_map_segment27_flag,
118 v_map_segment28_flag,
119 v_map_segment29_flag,
120 v_map_segment30_flag
121 FROM GHG_SEGMENT_MAPPINGS;
122
123 v_sqltext := 'SELECT xnfam.ghg_organization_id FROM gl_code_combinations gcc, GHG_ORG_ACCOUNT_MAPPINGS_V xnfam ';
124 v_sqltext := v_sqltext || 'WHERE gcc.code_combination_id = ' || x_code_combination_id || ' AND gcc.chart_of_accounts_id = ' || x_chart_of_accounts_id ;
125 v_sqltext := v_sqltext || ' AND ' || 'to_date(''' || to_char(x_gl_date, 'DD-MON-YYYY') || ''', ''DD-MON-YYYY'') BETWEEN NVL(xnfam.start_date, sysdate - 1) AND NVL(xnfam.end_date, sysdate + 1) ';
126
127 FOR map_rec IN get_mapping_segments(x_chart_of_accounts_id) LOOP
128
129 IF map_rec.application_column_name = 'SEGMENT1' AND v_map_segment1_flag = 'Y' THEN
130 v_sqltext := v_sqltext || 'AND gcc.segment1 BETWEEN xnfam.segment1_low AND xnfam.segment1_high ';
131 ELSIF map_rec.application_column_name = 'SEGMENT2' AND v_map_segment2_flag = 'Y' THEN
132 v_sqltext := v_sqltext || 'AND gcc.segment2 BETWEEN xnfam.segment2_low AND xnfam.segment2_high ';
133 ELSIF map_rec.application_column_name = 'SEGMENT3' AND v_map_segment3_flag = 'Y' THEN
134 v_sqltext := v_sqltext || 'AND gcc.segment3 BETWEEN xnfam.segment3_low AND xnfam.segment3_high ';
135 ELSIF map_rec.application_column_name = 'SEGMENT4' AND v_map_segment4_flag = 'Y' THEN
136 v_sqltext := v_sqltext || 'AND gcc.segment4 BETWEEN xnfam.segment4_low AND xnfam.segment4_high ';
137 ELSIF map_rec.application_column_name = 'SEGMENT5' AND v_map_segment5_flag = 'Y' THEN
138 v_sqltext := v_sqltext || 'AND gcc.segment5 BETWEEN xnfam.segment5_low AND xnfam.segment5_high ';
139 ELSIF map_rec.application_column_name = 'SEGMENT6' AND v_map_segment6_flag = 'Y' THEN
140 v_sqltext := v_sqltext || 'AND gcc.segment6 BETWEEN xnfam.segment6_low AND xnfam.segment6_high ';
141 ELSIF map_rec.application_column_name = 'SEGMENT7' AND v_map_segment7_flag = 'Y' THEN
142 v_sqltext := v_sqltext || 'AND gcc.segment7 BETWEEN xnfam.segment7_low AND xnfam.segment7_high ';
143 ELSIF map_rec.application_column_name = 'SEGMENT8' AND v_map_segment8_flag = 'Y' THEN
144 v_sqltext := v_sqltext || 'AND gcc.segment8 BETWEEN xnfam.segment8_low AND xnfam.segment8_high ';
145 ELSIF map_rec.application_column_name = 'SEGMENT9' AND v_map_segment9_flag = 'Y' THEN
146 v_sqltext := v_sqltext || 'AND gcc.segment9 BETWEEN xnfam.segment9_low AND xnfam.segment9_high ';
147 ELSIF map_rec.application_column_name = 'SEGMENT10' AND v_map_segment10_flag = 'Y' THEN
148 v_sqltext := v_sqltext || 'AND gcc.segment10 BETWEEN xnfam.segment10_low AND xnfam.segment10_high ';
149 ELSIF map_rec.application_column_name = 'SEGMENT11' AND v_map_segment11_flag = 'Y' THEN
150 v_sqltext := v_sqltext || 'AND gcc.segment11 BETWEEN xnfam.segment11_low AND xnfam.segment11_high ';
151 ELSIF map_rec.application_column_name = 'SEGMENT12' AND v_map_segment12_flag = 'Y' THEN
152 v_sqltext := v_sqltext || 'AND gcc.segment12 BETWEEN xnfam.segment12_low AND xnfam.segment12_high ';
153 ELSIF map_rec.application_column_name = 'SEGMENT13' AND v_map_segment13_flag = 'Y' THEN
154 v_sqltext := v_sqltext || 'AND gcc.segment13 BETWEEN xnfam.segment13_low AND xnfam.segment13_high ';
155 ELSIF map_rec.application_column_name = 'SEGMENT14' AND v_map_segment14_flag = 'Y' THEN
156 v_sqltext := v_sqltext || 'AND gcc.segment14 BETWEEN xnfam.segment14_low AND xnfam.segment14_high ';
157 ELSIF map_rec.application_column_name = 'SEGMENT15' AND v_map_segment15_flag = 'Y' THEN
158 v_sqltext := v_sqltext || 'AND gcc.segment15 BETWEEN xnfam.segment15_low AND xnfam.segment15_high ';
159 ELSIF map_rec.application_column_name = 'SEGMENT16' AND v_map_segment16_flag = 'Y' THEN
160 v_sqltext := v_sqltext || 'AND gcc.segment16 BETWEEN xnfam.segment16_low AND xnfam.segment16_high ';
161 ELSIF map_rec.application_column_name = 'SEGMENT17' AND v_map_segment17_flag = 'Y' THEN
162 v_sqltext := v_sqltext || 'AND gcc.segment17 BETWEEN xnfam.segment17_low AND xnfam.segment17_high ';
166 v_sqltext := v_sqltext || 'AND gcc.segment19 BETWEEN xnfam.segment19_low AND xnfam.segment19_high ';
163 ELSIF map_rec.application_column_name = 'SEGMENT18' AND v_map_segment18_flag = 'Y' THEN
164 v_sqltext := v_sqltext || 'AND gcc.segment18 BETWEEN xnfam.segment18_low AND xnfam.segment18_high ';
165 ELSIF map_rec.application_column_name = 'SEGMENT19' AND v_map_segment19_flag = 'Y' THEN
167 ELSIF map_rec.application_column_name = 'SEGMENT20' AND v_map_segment20_flag = 'Y' THEN
168 v_sqltext := v_sqltext || 'AND gcc.segment20 BETWEEN xnfam.segment20_low AND xnfam.segment20_high ';
169 ELSIF map_rec.application_column_name = 'SEGMENT21' AND v_map_segment21_flag = 'Y' THEN
170 v_sqltext := v_sqltext || 'AND gcc.segment21 BETWEEN xnfam.segment21_low AND xnfam.segment21_high ';
171 ELSIF map_rec.application_column_name = 'SEGMENT22' AND v_map_segment22_flag = 'Y' THEN
172 v_sqltext := v_sqltext || 'AND gcc.segment22 BETWEEN xnfam.segment22_low AND xnfam.segment22_high ';
173 ELSIF map_rec.application_column_name = 'SEGMENT23' AND v_map_segment23_flag = 'Y' THEN
174 v_sqltext := v_sqltext || 'AND gcc.segment23 BETWEEN xnfam.segment23_low AND xnfam.segment23_high ';
175 ELSIF map_rec.application_column_name = 'SEGMENT24' AND v_map_segment24_flag = 'Y' THEN
176 v_sqltext := v_sqltext || 'AND gcc.segment24 BETWEEN xnfam.segment24_low AND xnfam.segment24_high ';
177 ELSIF map_rec.application_column_name = 'SEGMENT25' AND v_map_segment25_flag = 'Y' THEN
178 v_sqltext := v_sqltext || 'AND gcc.segment25 BETWEEN xnfam.segment25_low AND xnfam.segment25_high ';
179 ELSIF map_rec.application_column_name = 'SEGMENT26' AND v_map_segment26_flag = 'Y' THEN
180 v_sqltext := v_sqltext || 'AND gcc.segment26 BETWEEN xnfam.segment26_low AND xnfam.segment26_high ';
181 ELSIF map_rec.application_column_name = 'SEGMENT27' AND v_map_segment27_flag = 'Y' THEN
182 v_sqltext := v_sqltext || 'AND gcc.segment27 BETWEEN xnfam.segment27_low AND xnfam.segment27_high ';
183 ELSIF map_rec.application_column_name = 'SEGMENT28' AND v_map_segment28_flag = 'Y' THEN
184 v_sqltext := v_sqltext || 'AND gcc.segment28 BETWEEN xnfam.segment28_low AND xnfam.segment28_high ';
185 ELSIF map_rec.application_column_name = 'SEGMENT29' AND v_map_segment29_flag = 'Y' THEN
186 v_sqltext := v_sqltext || 'AND gcc.segment29 BETWEEN xnfam.segment29_low AND xnfam.segment29_high ';
187 ELSIF map_rec.application_column_name = 'SEGMENT30' AND v_map_segment30_flag = 'Y' THEN
188 v_sqltext := v_sqltext || 'AND gcc.segment30 BETWEEN xnfam.segment30_low AND xnfam.segment30_high ';
189 END IF;
190
191 END LOOP;
192
193 EXECUTE IMMEDIATE v_sqltext INTO v_ghg_organization_id;
194
195 RETURN v_ghg_organization_id;
196
197 EXCEPTION
198 WHEN NO_DATA_FOUND THEN
199 IF x_calling_mode = 'BATCH' THEN
200 RETURN -1;
201 ELSE
202 FND_MESSAGE.SET_NAME('GHG', 'GHG_CANNOT_FIND_FLEX_MAPPING');
203
204 FND_MESSAGE.SET_TOKEN('DETAILS', v_flexfield);
205 FND_MESSAGE.SET_TOKEN('DIST_LINE_NUM', x_distribution_line_number);
206 APP_EXCEPTION.RAISE_EXCEPTION;
207 END IF;
208 WHEN OTHERS THEN
209 IF x_calling_mode = 'BATCH' THEN
210 RETURN -1;
211 ELSE
212 IF (SQLCODE <> -20001) THEN
213 FND_MESSAGE.SET_NAME('GHG', 'GHG_DEBUG');
214 FND_MESSAGE.SET_TOKEN('ERROR', SQLERRM);
215 FND_MESSAGE.SET_TOKEN('DEBUG_INFO', v_debug_info);
216 END IF;
217 APP_EXCEPTION.RAISE_EXCEPTION;
218 END IF;
219
220 END;
221
222 FUNCTION find_project_mapping (x_distribution_line_number NUMBER,
223 x_project_number VARCHAR2,
224 x_task_number VARCHAR2,
225 x_gl_date DATE) RETURN NUMBER IS
226
227 v_debug_info VARCHAR2(100);
228 v_ghg_organization_id NUMBER(15);
229
230 BEGIN
231
232 v_debug_info := 'Retrieving organization project mapping for project/task ' || x_project_number || '/' || x_task_number || '(distribution line ' || x_distribution_line_number ||')';
233
234 SELECT ghg_organization_id
235 INTO v_ghg_organization_id
236 FROM GHG_ORG_PROJECT_MAPPINGS_V xnpm
237 WHERE x_project_number BETWEEN xnpm.from_project_number AND xnpm.to_project_number
238 AND x_task_number BETWEEN xnpm.from_task_number AND xnpm.to_task_number
239 AND x_gl_date BETWEEN NVL(xnpm.start_date, sysdate - 1)
240 AND NVL(xnpm.end_date, sysdate + 1);
241
242 RETURN v_ghg_organization_id;
243
244 EXCEPTION
245 WHEN NO_DATA_FOUND THEN
246 FND_MESSAGE.SET_NAME('GHG', 'GHG_CANNOT_FIND_PRJ_MAPPING');
247
248 FND_MESSAGE.SET_TOKEN('DETAILS', x_project_number || '/' || x_task_number);
249 FND_MESSAGE.SET_TOKEN('DIST_LINE_NUM', x_distribution_line_number);
250 APP_EXCEPTION.RAISE_EXCEPTION;
251 WHEN OTHERS THEN
252 IF (SQLCODE <> -20001) THEN
253 FND_MESSAGE.SET_NAME('GHG', 'GHG_DEBUG');
254 FND_MESSAGE.SET_TOKEN('ERROR', SQLERRM);
255 FND_MESSAGE.SET_TOKEN('DEBUG_INFO', v_debug_info);
256 END IF;
257 APP_EXCEPTION.RAISE_EXCEPTION;
258
259 END;
260
261 END GHG_ORGANIZATION_MAPPINGS_PKG;