[Home] [Help]
PACKAGE BODY: APPS.IEX_METRIC_PVT
Source
1 PACKAGE BODY IEX_METRIC_PVT AS
2 /* $Header: iexvmtrb.pls 120.9.12010000.3 2010/04/30 04:03:28 nkanchan ship $ */
3 PG_DEBUG NUMBER;
4 --BEGIN-FIX BUG#4375831-05/18/2005-JYPARK-fix error ORA-06521 because x_metric_value_tbl has charater value so convert to numeric value
5 TYPE curr_rec_type IS RECORD (
6 set_of_books_id ar_system_parameters.set_of_books_id%TYPE ,
7 base_currency gl_sets_of_books.currency_code%TYPE ,
8 base_precision fnd_currencies.precision%type ,
9 base_min_acc_unit fnd_currencies.minimum_accountable_unit%type ,
10 past_year_from DATE,
11 past_year_to DATE
12 );
13
14 g_curr_rec curr_rec_type;
15 --END-FIX BUG#4375831-05/18/2005-JYPARK-fix error ORA-06521 because x_metric_value_tbl has charater value so convert to numeric value
16
17 PROCEDURE Get_Metric_Info
18 (p_api_version IN NUMBER,
19 p_init_msg_list IN VARCHAR2,
20 p_commit IN VARCHAR2,
21 p_validation_level IN NUMBER,
22 x_return_status OUT NOCOPY VARCHAR2,
23 x_msg_count OUT NOCOPY NUMBER,
24 x_msg_data OUT NOCOPY VARCHAR2,
25 p_party_id IN NUMBER,
26 p_cust_account_id IN NUMBER,
27 p_customer_site_use_id IN NUMBER,
28 p_delinquency_id IN NUMBER,
29 p_filter_by_object IN VARCHAR2,
30 x_metric_id_tbl OUT NOCOPY Metric_ID_Tbl_Type,
31 x_metric_name_tbl OUT NOCOPY Metric_Name_Tbl_Type,
32 x_metric_value_tbl OUT NOCOPY Metric_Value_Tbl_Type,
33 x_metric_rating_tbl OUT NOCOPY Metric_Rating_Tbl_Type)
34 IS
35
36 CURSOR c_metric IS
37 SELECT score_comp_type_id, score_comp_name, score_comp_value
38 FROM iex_score_comp_types_vl
39 WHERE active_flag = 'Y'
40 AND metric_flag = 'Y'
41 AND jtf_object_code = NVL(p_filter_by_object, jtf_object_code)
42 ORDER BY display_order;
43
44 l_current_row NUMBER := 0;
45
46 l_str VARCHAR2(2000);
47 l_str2 VARCHAR2(2000);
48 l_party_count NUMBER;
49 l_acc_count NUMBER;
50 l_billto_count NUMBER;
51 p_del_count NUMBER;
52 l_start NUMBER;
53 l_str_result VARCHAR2(2000);
54 l_sqlcursor NUMBER;
55
56 -- l_value VARCHAR2(100); -- bug 5695898 by ehuh 3/2/07
57 l_value VARCHAR2(1000); -- bug 5695898 by ehuh 3/2/07
58 l_dummy INTEGER;
59
60 CURSOR c_rating(x_score_comp_type_id NUMBER) IS
61 SELECT low_from, low_to, medium_from, medium_to, high_from, high_to
62 FROM iex_metric_ratings
63 WHERE score_comp_type_id = x_score_comp_type_id;
64
65 r_rating c_rating%ROWTYPE;
66 l_current_status VARCHAR2(1);
67 --BEGIN-FIX BUG#4375831-05/18/2005-JYPARK-fix error ORA-06521 because x_metric_value_tbl has charater value so convert to numeric value
68 l_current_value_num NUMBER;
69 --END-FIX BUG#4375831-05/18/2005-JYPARK-fix error ORA-06521 because x_metric_value_tbl has charater value so convert to numeric value
70 --Begin bug#5208170 schekuri 29-May-2006
71 CURSOR c_currency IS
72 SELECT gll.currency_code,
73 c.precision,
74 c.minimum_accountable_unit,
75 TRUNC(add_months(sysdate, - 12)) pastYearFrom ,
76 TRUNC(sysdate) pastYearTo
77 FROM ar_system_parameters sp,
78 gl_ledgers_public_v gll,
79 fnd_currencies c
80 WHERE gll.ledger_id = sp.set_of_books_id
81 AND gll.currency_code = c.currency_code;
82 --End bug#5208170 schekuri 29-May-2006
83 BEGIN
84 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
85 IEX_DEBUG_PUB.logMessage('Object ID values: ' || p_party_id || p_cust_account_id || p_customer_site_use_id || p_delinquency_id);
86
87 END IF;
88 x_return_status := 'S';
89 --Begin bug#5208170 schekuri 29-May-2006
90 open c_currency;
91 fetch c_currency into IEX_COLL_IND.g_curr_rec.base_currency,
92 IEX_COLL_IND.g_curr_rec.base_precision,
93 IEX_COLL_IND.g_curr_rec.base_min_acc_unit,
94 IEX_COLL_IND.g_curr_rec.past_year_from,
95 IEX_COLL_IND.g_curr_rec.past_year_to;
96 close c_currency;
97 --End bug#5208170 schekuri 29-May-2006
98
99
100 FOR r_metric IN c_metric LOOP
101 l_current_status := 'S';
102 l_current_row := l_current_row + 1;
103
104 x_metric_id_tbl(l_current_row) := r_metric.score_comp_type_id;
105 x_metric_name_tbl(l_current_row) := r_metric.score_comp_name;
106 l_str := r_metric.score_comp_value;
107 l_str_result := '';
108
109 l_party_count := 0;
110 l_acc_count := 0;
111 l_billto_count := 0;
112 p_del_count := 0;
113 l_start := 1;
114
115 IF UPPER(l_str) like 'CALL %' THEN
116 l_str := REPLACE(UPPER(l_str), 'CALL ', '');
117
118 l_str := SUBSTRB(l_str, 1, INSTRB(l_str,')',1,1));
119
120 l_str:= l_str || '; END; ';
121
122 LOOP
123 l_start := NVL(INSTRB(l_str,':',1,1),0);
124 IF l_start > 0 THEN
125 l_str2 := SUBSTRB(l_str,INSTRB(l_str,':',1,1),(INSTRB(UPPER(l_str),'_ID',INSTRB(l_str,':',1,1),1)+2-INSTRB(l_str,':',1,1)+1));
126 IF UPPER(l_str2) = ':PARTY_ID' THEN
127 l_party_count := l_party_count + 1;
128 l_str2 := ':B_PARTY_ID_' || l_party_count;
129 ELSIF UPPER(l_str2) = ':CUST_ACCOUNT_ID' THEN
130 l_acc_count := l_acc_count + 1;
131 l_str2 := ':B_CUST_ACCOUNT_ID_' || l_acc_count;
132 ELSIF UPPER(l_str2) = ':CUSTOMER_SITE_USE_ID' THEN
133 l_billto_count := l_billto_count + 1;
134 l_str2 := ':B_CUSTOMER_SITE_USE_ID_' || l_billto_count;
135 ELSIF UPPER(l_str2) = ':DELINQUENCY_ID' THEN
136 p_del_count := p_del_count + 1;
137 l_str2 := ':B_DELINQUENCY_ID_' || p_del_count;
138 END IF;
139 l_str_result := l_str_result || SUBSTRB(l_str, 1, INSTRB(l_str,':',1,1)-1) || l_str2;
140
141 l_str := SUBSTRB(l_str, INSTRB(UPPER(l_str),'_ID',INSTRB(l_str,':',1,1),1)+3);
142 ELSE
143 l_str_result := l_str_result || l_str;
144 END IF;
145 EXIT WHEN l_start < 1;
146 END LOOP;
147 l_str_result := 'BEGIN :l_result := ' || l_str_result;
148
149
150 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
151 IEX_DEBUG_PUB.logMessage('result: ' || l_str_result);
152 END IF;
153
154 l_sqlcursor := DBMS_SQL.OPEN_CURSOR;
155 BEGIN
156 DBMS_SQL.PARSE(l_sqlcursor, l_str_result, 1);
157 -- DBMS_SQL.BIND_VARIABLE_CHAR(l_sqlcursor,'l_result', '0', 2000); -- bug 5695898 by ehuh 3/2/07
158 DBMS_SQL.BIND_VARIABLE_CHAR(l_sqlcursor,'l_result', '0', 1000); -- bug 5695898 by ehuh 3/2/07
159 --DBMS_SQL.DEFINE_COLUMN(l_sqlcursor, 1, l_count);
160
161 IF p_party_id > 0 THEN
162
163 FOR i IN 1..l_party_count LOOP
164 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_PARTY_ID_'||i, p_party_id);
165 END LOOP;
166 END IF;
167
168 IF p_cust_account_id > 0 THEN
169
170 FOR i IN 1..l_acc_count LOOP
171 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_CUST_ACCOUNT_ID_'||i, p_cust_account_id);
172 END LOOP;
173 END IF;
174
175 IF p_customer_site_use_id > 0 THEN
176
177 FOR i IN 1..l_billto_count LOOP
178 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_CUSTOMER_SITE_USE_ID_'||i, p_customer_site_use_id);
179 END LOOP;
180 END IF;
181
182 IF p_delinquency_id > 0 THEN
183
184 FOR i IN 1..p_del_count LOOP
185 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_DELINQUENCY_ID_'||i, p_delinquency_id);
186 END LOOP;
187 END IF;
188
189
190
191
192
193 l_dummy := DBMS_SQL.EXECUTE(l_sqlcursor);
194
195 DBMS_SQL.VARIABLE_VALUE_CHAR(l_sqlcursor, 'l_result', l_value);
196 x_metric_value_tbl(l_current_row) := RTRIM(l_value, ' ');
197
198 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
199 IEX_DEBUG_PUB.logMessage('Metrics value: ' || x_metric_value_tbl(l_current_row));
200 END IF;
201
202 EXCEPTION
203 WHEN OTHERS THEN
204 l_current_status := 'E';
205 x_metric_value_tbl(l_current_row) := 'NA';
206
207 END;
208 DBMS_SQL.CLOSE_CURSOR(l_sqlcursor);
209 ELSE
210 LOOP
211 l_start := NVL(INSTRB(l_str,':',1,1),0);
212 IF l_start > 0 THEN
213 l_str2 := SUBSTRB(l_str,INSTRB(l_str,':',1,1),(INSTRB(UPPER(l_str),'_ID',INSTRB(l_str,':',1,1),1)+2-INSTRB(l_str,':',1,1)+1));
214 IF UPPER(l_str2) = ':PARTY_ID' THEN
215 l_party_count := l_party_count + 1;
216 l_str2 := ':B_PARTY_ID_' || l_party_count;
217 ELSIF UPPER(l_str2) = ':CUST_ACCOUNT_ID' THEN
218 l_acc_count := l_acc_count + 1;
219 l_str2 := ':B_CUST_ACCOUNT_ID_' || l_acc_count;
220 ELSIF UPPER(l_str2) = ':CUSTOMER_SITE_USE_ID' THEN
221 l_billto_count := l_billto_count + 1;
222 l_str2 := ':B_CUSTOMER_SITE_USE_ID_' || l_billto_count;
223 ELSIF UPPER(l_str2) = ':DELINQUENCY_ID' THEN
224 p_del_count := p_del_count + 1;
225 l_str2 := ':B_DELINQUENCY_ID_' || p_del_count;
226 END IF;
227 l_str_result := l_str_result || SUBSTRB(l_str, 1, INSTRB(l_str,':',1,1)-1) || l_str2;
228
229 l_str := SUBSTRB(l_str, INSTRB(UPPER(l_str),'_ID',INSTRB(l_str,':',1,1),1)+3);
230 ELSE
231 l_str_result := l_str_result || l_str;
232 END IF;
233
234 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
235 IEX_DEBUG_PUB.logMessage('result: ' || l_str_result);
236 END IF;
237
238 EXIT WHEN l_start < 1;
239 END LOOP;
240
241 l_sqlcursor := DBMS_SQL.OPEN_CURSOR;
242
243 BEGIN
244 DBMS_SQL.PARSE(l_sqlcursor, l_str_result, 1);
245 DBMS_SQL.DEFINE_COLUMN(l_sqlcursor, 1, l_value, 200);
246
247 IF p_party_id > 0 THEN
248 FOR i IN 1..l_party_count LOOP
249 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_PARTY_ID_'||i, p_party_id);
250 END LOOP;
251 END IF;
252
253 IF p_cust_account_id > 0 THEN
254 FOR i IN 1..l_acc_count LOOP
255 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_CUST_ACCOUNT_ID_'||i, p_cust_account_id);
256 END LOOP;
257 END IF;
258
259 IF p_customer_site_use_id > 0 THEN
260 FOR i IN 1..l_billto_count LOOP
261 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_CUSTOMER_SITE_USE_ID_'||i, p_customer_site_use_id);
262 END LOOP;
263 END IF;
264
265 IF p_delinquency_id > 0 THEN
266 FOR i IN 1..p_del_count LOOP
267 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_DELINQUENCY_ID_'||i, p_delinquency_id);
268 END LOOP;
269 END IF;
270
271 l_dummy := DBMS_SQL.EXECUTE(l_sqlcursor);
272
273 IF DBMS_SQL.FETCH_ROWS(l_sqlcursor) > 0 THEN
274 DBMS_SQL.COLUMN_VALUE(l_sqlcursor,1,l_value);
275 END IF;
276
277 x_metric_value_tbl(l_current_row) := l_value;
278
279 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
280 IEX_DEBUG_PUB.logMessage('Metrics value: ' || x_metric_value_tbl(l_current_row));
281 END IF;
282
283 EXCEPTION
284 WHEN OTHERS THEN
285 l_current_status := 'E';
286 x_metric_value_tbl(l_current_row) := 'NA';
287
288 END;
289 DBMS_SQL.CLOSE_CURSOR(l_sqlcursor);
290 END IF;
291
292 IF (l_current_status = 'S') AND (x_metric_value_tbl(l_current_row) <> 'NA') THEN
293 --BEGIN-FIX BUG#4375831-05/18/2005-JYPARK-fix error ORA-06521 because x_metric_value_tbl has charater value so convert to numeric value
294 BEGIN
295 OPEN c_rating(r_metric.score_comp_type_id);
296 FETCH c_rating INTO r_rating;
297
298 IF c_rating%FOUND THEN
299 CLOSE c_rating;
300 --Begin bug#5208170 schekuri 29-May-2006
301 BEGIN
302 l_current_value_num := TO_NUMBER(x_metric_value_tbl(l_current_row),
303 fnd_currency.get_format_mask(iex_coll_ind.g_curr_rec.base_currency, 30));
304 -- Begin fix bug #5360519-JYPARK-07/06/2006-if value is negative and non-amount format, getting number value
305 EXCEPTION
306 WHEN OTHERS THEN
307 l_current_value_num := x_metric_value_tbl(l_current_row);
308 END;
309 -- End fix bug #5360519-JYPARK-07/06/2006-if value is negative and non-amount format, getting number value
310 --l_current_value_num := TO_NUMBER(x_metric_value_tbl(l_current_row), fnd_currency.get_format_mask(g_curr_rec.base_currency, 30));
311 --End bug#5208170 schekuri 29-May-2006
312
313 -- IF(x_metric_value_tbl(l_current_row) >= r_rating.low_from) AND
314 -- (x_metric_value_tbl(l_current_row) <= r_rating.low_to) THEN
315 -- x_metric_rating_tbl(l_current_row) := 'LOW';
316 -- ELSIF(x_metric_value_tbl(l_current_row) >= r_rating.medium_from) AND
317 -- (x_metric_value_tbl(l_current_row) <= r_rating.medium_to) THEN
318 -- x_metric_rating_tbl(l_current_row) := 'MEDIUM';
319 -- ELSIF(x_metric_value_tbl(l_current_row) >= r_rating.high_from) AND
320 -- (x_metric_value_tbl(l_current_row) <= r_rating.high_to) THEN
321 -- x_metric_rating_tbl(l_current_row) := 'HIGH';
322 -- ELSE
323 -- x_metric_rating_tbl(l_current_row) := '';
324 -- END IF;
325
326 IF(l_current_value_num >= r_rating.low_from) AND
327 (l_current_value_num <= r_rating.low_to) THEN
328 x_metric_rating_tbl(l_current_row) := 'LOW';
329 ELSIF(l_current_value_num >= r_rating.medium_from) AND
330 (l_current_value_num <= r_rating.medium_to) THEN
331 x_metric_rating_tbl(l_current_row) := 'MEDIUM';
332 ELSIF(l_current_value_num >= r_rating.high_from) AND
333 (l_current_value_num <= r_rating.high_to) THEN
334 x_metric_rating_tbl(l_current_row) := 'HIGH';
335 ELSE
336 x_metric_rating_tbl(l_current_row) := '';
337 END IF;
338 ELSE
339 CLOSE c_rating;
340 x_metric_rating_tbl(l_current_row) := '';
341 END IF;
342 EXCEPTION
343 WHEN OTHERS THEN
344 x_metric_rating_tbl(l_current_row) := '';
345 END;
346 --END-FIX BUG#4375831-05/18/2005-JYPARK-fix error ORA-06521 because x_metric_value_tbl has charater value so convert to numeric value
347 ELSE
348 x_metric_rating_tbl(l_current_row) := '';
349 END IF;
350 END LOOP;
351
352 --BEGIN-FIX BUG#4375831-05/18/2005-JYPARK-fix error ORA-06521 because x_metric_value_tbl has charater value so convert to numeric value
353 EXCEPTION
354 WHEN OTHERS THEN
355 null;
356 END Get_Metric_Info;
357 --END-FIX BUG#4375831-05/18/2005-JYPARK-fix error ORA-06521 because x_metric_value_tbl has charater value so convert to numeric value
358 PROCEDURE Test_Metric
359 (
360 p_filter_id IN NUMBER,
361 p_score_comp_type_id IN NUMBER,
362 x_return_status OUT NOCOPY VARCHAR2,
363 x_metric_value OUT NOCOPY VARCHAR2)
364 IS
365 CURSOR c_metric IS
366 SELECT score_comp_value
367 FROM iex_score_comp_types_b
368 WHERE score_comp_type_id = p_score_comp_type_id;
369
370 l_sql_stmt VARCHAR2(2000);
371
372 l_str VARCHAR2(2000);
373 l_str2 VARCHAR2(2000);
374 l_party_count NUMBER;
375 l_acc_count NUMBER;
376 l_billto_count NUMBER;
377 p_del_count NUMBER;
378 l_start NUMBER;
379 l_str_result VARCHAR2(2000);
380 l_sqlcursor NUMBER;
381 -- l_value VARCHAR2(100); Modified by nkanchan for bug # 8848670
382 l_value VARCHAR2(1000);
383 l_dummy INTEGER;
384
385 l_current_status VARCHAR2(1);
386 BEGIN
387
388 x_return_status := 'S';
389
390 OPEN c_metric;
391 FETCH c_metric INTO l_sql_stmt;
392 IF c_metric%FOUND THEN
393 l_current_status := 'S';
394
395 l_str := l_sql_stmt;
396 l_str_result := '';
397
398 l_party_count := 0;
399 l_acc_count := 0;
400 l_billto_count := 0;
401 p_del_count := 0;
402 l_start := 1;
403
404 IF UPPER(l_str) like 'CALL %' THEN
405 l_str := REPLACE(UPPER(l_str), 'CALL ', '');
406
407 l_str := SUBSTRB(l_str, 1, INSTRB(l_str,')',1,1));
408
409 l_str:= l_str || '; END; ';
410
411 LOOP
412 l_start := NVL(INSTRB(l_str,':',1,1),0);
413 IF l_start > 0 THEN
414 l_str2 := SUBSTRB(l_str,INSTRB(l_str,':',1,1),(INSTRB(UPPER(l_str),'_ID',INSTRB(l_str,':',1,1),1)+2-INSTRB(l_str,':',1,1)+1));
415 IF UPPER(l_str2) = ':PARTY_ID' THEN
416 l_party_count := l_party_count + 1;
417 l_str2 := ':B_PARTY_ID_' || l_party_count;
418 ELSIF UPPER(l_str2) = ':CUST_ACCOUNT_ID' THEN
419 l_acc_count := l_acc_count + 1;
420 l_str2 := ':B_CUST_ACCOUNT_ID_' || l_acc_count;
421 ELSIF UPPER(l_str2) = ':CUSTOMER_SITE_USE_ID' THEN
422 l_billto_count := l_billto_count + 1;
423 l_str2 := ':B_CUSTOMER_SITE_USE_ID_' || l_billto_count;
424 ELSIF UPPER(l_str2) = ':DELINQUENCY_ID' THEN
425 p_del_count := p_del_count + 1;
426 l_str2 := ':B_DELINQUENCY_ID_' || p_del_count;
427 END IF;
428 l_str_result := l_str_result || SUBSTRB(l_str, 1, INSTRB(l_str,':',1,1)-1) || l_str2;
429
430 l_str := SUBSTRB(l_str, INSTRB(UPPER(l_str),'_ID',INSTRB(l_str,':',1,1),1)+3);
431 ELSE
432 l_str_result := l_str_result || l_str;
433 END IF;
434 EXIT WHEN l_start < 1;
435 END LOOP;
436 l_str_result := 'BEGIN :l_result := ' || l_str_result;
437
438 l_sqlcursor := DBMS_SQL.OPEN_CURSOR;
439 BEGIN
440 DBMS_SQL.PARSE(l_sqlcursor, l_str_result, 1);
441 -- Changed value from 2000 to 1000 by nkanchan for bug # 8848670
442 DBMS_SQL.BIND_VARIABLE_CHAR(l_sqlcursor,'l_result', '0', 1000);
443 --DBMS_SQL.DEFINE_COLUMN(l_sqlcursor, 1, l_count);
444
445 FOR i IN 1..l_party_count LOOP
446 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_PARTY_ID_'||i, p_filter_id);
447 END LOOP;
448
449 FOR i IN 1..l_acc_count LOOP
450 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_CUST_ACCOUNT_ID_'||i, p_filter_id);
451 END LOOP;
452
453 FOR i IN 1..l_billto_count LOOP
454 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_CUSTOMER_SITE_USE_ID_'||i, p_filter_id);
455 END LOOP;
456
457 FOR i IN 1..p_del_count LOOP
458 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_DELINQUENCY_ID_'||i, p_filter_id);
459 END LOOP;
460
461 l_dummy := DBMS_SQL.EXECUTE(l_sqlcursor);
462
463 DBMS_SQL.VARIABLE_VALUE_CHAR(l_sqlcursor, 'l_result', l_value);
464 x_metric_value := RTRIM(l_value, ' ');
465
466
467 EXCEPTION
468 WHEN OTHERS THEN
469 x_return_status := 'E';
470 x_metric_value := iex_utilities.get_lookup_meaning('IEX_METRIC_STATUS', 'NA');
471 fnd_message.set_name ('IEX', 'JTF_CHK_UNKNOWN_ERROR');
472 fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
473 fnd_msg_pub.add;
474 END;
475 DBMS_SQL.CLOSE_CURSOR(l_sqlcursor);
476 ELSE
477 LOOP
478 l_start := NVL(INSTRB(l_str,':',1,1),0);
479 IF l_start > 0 THEN
480 l_str2 := SUBSTRB(l_str,INSTRB(l_str,':',1,1),(INSTRB(UPPER(l_str),'_ID',INSTRB(l_str,':',1,1),1)+2-INSTRB(l_str,':',1,1)+1));
481 IF UPPER(l_str2) = ':PARTY_ID' THEN
482 l_party_count := l_party_count + 1;
483 l_str2 := ':B_PARTY_ID_' || l_party_count;
484 ELSIF UPPER(l_str2) = ':CUST_ACCOUNT_ID' THEN
485 l_acc_count := l_acc_count + 1;
486 l_str2 := ':B_CUST_ACCOUNT_ID_' || l_acc_count;
487 ELSIF UPPER(l_str2) = ':CUSTOMER_SITE_USE_ID' THEN
488 l_billto_count := l_billto_count + 1;
489 l_str2 := ':B_CUSTOMER_SITE_USE_ID_' || l_billto_count;
490 ELSIF UPPER(l_str2) = ':DELINQUENCY_ID' THEN
491 p_del_count := p_del_count + 1;
492 l_str2 := ':B_DELINQUENCY_ID_' || p_del_count;
493 END IF;
494 l_str_result := l_str_result || SUBSTRB(l_str, 1, INSTRB(l_str,':',1,1)-1) || l_str2;
495
496 l_str := SUBSTRB(l_str, INSTRB(UPPER(l_str),'_ID',INSTRB(l_str,':',1,1),1)+3);
497 ELSE
498 l_str_result := l_str_result || l_str;
499 END IF;
500 EXIT WHEN l_start < 1;
501 END LOOP;
502
503
504 l_sqlcursor := DBMS_SQL.OPEN_CURSOR;
505
506 BEGIN
507 DBMS_SQL.PARSE(l_sqlcursor, l_str_result, 1);
508 DBMS_SQL.DEFINE_COLUMN(l_sqlcursor, 1, l_value, 200);
509
510 FOR i IN 1..l_party_count LOOP
511 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_PARTY_ID_'||i, p_filter_id);
512 END LOOP;
513
514 FOR i IN 1..l_acc_count LOOP
515 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_CUST_ACCOUNT_ID_'||i, p_filter_id);
516 END LOOP;
517
518 FOR i IN 1..l_billto_count LOOP
519 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_CUSTOMER_SITE_USE_ID_'||i, p_filter_id);
520 END LOOP;
521
522 FOR i IN 1..p_del_count LOOP
523 DBMS_SQL.BIND_VARIABLE(l_sqlcursor,'B_DELINQUENCY_ID_'||i, p_filter_id);
524 END LOOP;
525
526 l_dummy := DBMS_SQL.EXECUTE(l_sqlcursor);
527
528 IF DBMS_SQL.FETCH_ROWS(l_sqlcursor) > 0 THEN
529 DBMS_SQL.COLUMN_VALUE(l_sqlcursor,1,l_value);
530 END IF;
531
532 x_metric_value := l_value;
533
534 EXCEPTION
535 WHEN OTHERS THEN
536 x_return_status := 'E';
537 x_metric_value := iex_utilities.get_lookup_meaning('IEX_METRIC_STATUS', 'NA');
538 fnd_message.set_name ('IEX', 'IEX_METRIC_SQL_ERROR');
539 fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
540 fnd_msg_pub.add;
541 END;
542 DBMS_SQL.CLOSE_CURSOR(l_sqlcursor);
543 END IF;
544 END IF;
545 CLOSE c_metric;
546
547 END Test_Metric;
548 BEGIN
549 --Strat MOAC
550 --Replaced view gl_sets_of_books with gl_ledgers_public_v
551 --Begin bug#5208170 schekuri 29-May-2006
552 --Removed this because it's not being used anywhere
553 /*SELECT gll.currency_code,
554 c.precision,
555 c.minimum_accountable_unit
556 INTO g_curr_rec.base_currency,
557 g_curr_rec.base_precision,
558 g_curr_rec.base_min_acc_unit
559 FROM ar_system_parameters sysp,
560 gl_ledgers_public_v gll,
561 fnd_currencies c
562 WHERE gll.ledger_id = sysp.set_of_books_id
563 AND gll.currency_code = c.currency_code;*/
564 --End bug#5208170 schekuri 29-May-2006
565 /*SELECT sob.currency_code,
566 c.precision,
567 c.minimum_accountable_unit
568 INTO g_curr_rec.base_currency,
569 g_curr_rec.base_precision,
570 g_curr_rec.base_min_acc_unit
571 FROM ar_system_parameters sysp,
572 gl_sets_of_books sob,
573 fnd_currencies c
574 WHERE sob.set_of_books_id = sysp.set_of_books_id
575 AND sob.currency_code = c.currency_code;*/
576 --End MOAC
577
578 -- Past Year From and To
579 --Begin bug#5208170 schekuri 29-May-2006
580 --Removed this because it's not being used anywhere
581 /* SELECT TRUNC(add_months(sysdate, - 12)) pastYearFrom ,
582 TRUNC(sysdate) pastYearTo
583 INTO g_curr_rec.past_year_from,
584 g_curr_rec.past_year_to
585 FROM dual;*/
586 NULL;
587 --End bug#5208170 schekuri 29-May-2006
588 EXCEPTION
589 WHEN OTHERS THEN
590 NULL;
591
592 END;