[Home] [Help]
PACKAGE BODY: APPS.JTY_CUST_QUAL_PKG
Source
1 PACKAGE BODY JTY_CUST_QUAL_PKG AS
2 /* $Header: jtfcusqb.pls 120.2 2006/09/22 22:16:45 chchandr noship $ */
3 -- Start of Comments
4 -- ---------------------------------------------------
5 -- PACKAGE NAME: JTY_CUST_QUAL_PKG
6 -- ---------------------------------------------------
7 -- PURPOSE
8 -- This package is used to create custom qualifiers
9 --
10 -- Procedures:
11 -- (see below for specification)
12 --
13 -- NOTES
14 -- This package is publicly available for use
15 --
16 -- HISTORY
17 -- 09/08/05 ACHANDA Created
18 --
19 -- End of Comments
20 --
21
22 G_NEW_LINE VARCHAR2(02) := fnd_global.local_chr(10);
23
24 /* this procedure forms the insert and update statement for the columns UPDATE_ATTR_VAL_STMT */
25 /* and UPDATE_ATTR_VAL_STMT in the table jtf_qual_usgs_all */
26 PROCEDURE get_attr_val_stmt(
27 p_comparison_operator IN VARCHAR2,
28 p_low_value_char IN VARCHAR2,
29 p_high_value_char IN VARCHAR2,
30 p_low_value_char_id IN VARCHAR2,
31 p_low_value_number IN VARCHAR2,
32 p_high_value_number IN VARCHAR2,
33 p_interest_type_id IN VARCHAR2,
34 p_primary_interest_code_id IN VARCHAR2,
35 p_secondary_interest_code_id IN VARCHAR2,
36 p_value1_id IN VARCHAR2,
37 p_value2_id IN VARCHAR2,
38 p_value3_id IN VARCHAR2,
39 p_value4_id IN VARCHAR2,
40 p_first_char IN VARCHAR2,
41 p_currency_code IN VARCHAR2,
42 p_update_stmt OUT NOCOPY VARCHAR2,
43 p_insert_stmt OUT NOCOPY VARCHAR2,
44 retcode OUT NOCOPY VARCHAR2,
45 errbuf OUT NOCOPY VARCHAR2) IS
46 BEGIN
47 p_insert_stmt :=
48 'INSERT into jty_denorm_terr_attr_values_gt( ' || g_new_line ||
49 ' terr_id' || g_new_line ||
50 ' ,start_date' || g_new_line ||
51 ' ,end_date' || g_new_line ||
52 ' ,source_id' || g_new_line ||
53 ' ,trans_type_id' || g_new_line ||
54 ' ,creation_date' || g_new_line ||
55 ' ,created_by' || g_new_line ||
56 ' ,last_update_date' || g_new_line ||
57 ' ,last_updated_by' || g_new_line ||
58 ' ,last_update_login' || g_new_line ||
59 ' ,absolute_rank' || g_new_line ||
60 ' ,top_level_terr_id' || g_new_line ||
61 ' ,program_id' || g_new_line ||
62 ' ,program_login_id' || g_new_line ||
63 ' ,program_application_id' || g_new_line ||
64 ' ,request_id' || g_new_line ||
65 ' ,program_update_date' || g_new_line;
66
67 p_update_stmt := 'UPDATE jty_denorm_terr_attr_values_gt ' || g_new_line || 'SET ';
68
69 p_insert_stmt := p_insert_stmt || ' ,' || p_comparison_operator || g_new_line;
70
71 p_update_stmt := p_update_stmt || p_comparison_operator || ' = :1,' || g_new_line;
72
73 if (p_low_value_char_id is not null) then
74 p_insert_stmt := p_insert_stmt || ' ,' || p_low_value_char_id || g_new_line;
75 p_update_stmt := p_update_stmt || p_low_value_char_id || ' = :2,' || g_new_line;
76 else
77 p_insert_stmt := p_insert_stmt || ' ,dummy1' || g_new_line;
78 p_update_stmt := p_update_stmt || 'dummy1 = :2, ' || g_new_line;
79 end if;
80
81 if (p_low_value_char is not null) then
82 p_insert_stmt := p_insert_stmt || ' ,' || p_low_value_char || g_new_line;
83 p_update_stmt := p_update_stmt || p_low_value_char || ' = :3,' || g_new_line;
84 else
85 p_insert_stmt := p_insert_stmt || ' ,dummy2' || g_new_line;
86 p_update_stmt := p_update_stmt || 'dummy2 = :3, ' || g_new_line;
87 end if;
88
89 if (p_high_value_char is not null) then
90 p_insert_stmt := p_insert_stmt || ' ,' || p_high_value_char || g_new_line;
91 p_update_stmt := p_update_stmt || p_high_value_char || ' = :4,' || g_new_line;
92 else
93 p_insert_stmt := p_insert_stmt || ' ,dummy3' || g_new_line;
94 p_update_stmt := p_update_stmt || 'dummy3 = :4, ' || g_new_line;
95 end if;
96
97 if (p_low_value_number is not null) then
98 p_insert_stmt := p_insert_stmt || ' ,' || p_low_value_number || g_new_line;
99 p_update_stmt := p_update_stmt || p_low_value_number || ' = :5,' || g_new_line;
100 else
101 p_insert_stmt := p_insert_stmt || ' ,dummy4' || g_new_line;
102 p_update_stmt := p_update_stmt || 'dummy4 = :5, ' || g_new_line;
103 end if;
104
105 if (p_high_value_number is not null) then
106 p_insert_stmt := p_insert_stmt || ' ,' || p_high_value_number || g_new_line;
107 p_update_stmt := p_update_stmt || p_high_value_number || ' = :6,' || g_new_line;
108 else
109 p_insert_stmt := p_insert_stmt || ' ,dummy5' || g_new_line;
110 p_update_stmt := p_update_stmt || 'dummy5 = :6, ' || g_new_line;
111 end if;
112
113 if (p_interest_type_id is not null) then
114 p_insert_stmt := p_insert_stmt || ' ,' || p_interest_type_id || g_new_line;
115 p_update_stmt := p_update_stmt || p_interest_type_id || ' = :7,' || g_new_line;
116 else
117 p_insert_stmt := p_insert_stmt || ' ,dummy6' || g_new_line;
118 p_update_stmt := p_update_stmt || 'dummy6 = :7, ' || g_new_line;
119 end if;
120
121 if (p_primary_interest_code_id is not null) then
122 p_insert_stmt := p_insert_stmt || ' ,' || p_primary_interest_code_id || g_new_line;
123 p_update_stmt := p_update_stmt || p_primary_interest_code_id || ' = :8,' || g_new_line;
124 else
125 p_insert_stmt := p_insert_stmt || ' ,dummy7' || g_new_line;
126 p_update_stmt := p_update_stmt || 'dummy7 = :8, ' || g_new_line;
127 end if;
128
129 if (p_secondary_interest_code_id is not null) then
130 p_insert_stmt := p_insert_stmt || ' ,' || p_secondary_interest_code_id || g_new_line;
131 p_update_stmt := p_update_stmt || p_secondary_interest_code_id || ' = :9,' || g_new_line;
132 else
133 p_insert_stmt := p_insert_stmt || ' ,dummy8' || g_new_line;
134 p_update_stmt := p_update_stmt || 'dummy8 = :9, ' || g_new_line;
135 end if;
136
137 if (p_currency_code is not null) then
138 p_insert_stmt := p_insert_stmt || ' ,' || p_currency_code || g_new_line;
139 p_update_stmt := p_update_stmt || p_currency_code || ' = :10,' || g_new_line;
140 else
141 p_insert_stmt := p_insert_stmt || ' ,dummy9' || g_new_line;
142 p_update_stmt := p_update_stmt || 'dummy9 = :10, ' || g_new_line;
143 end if;
144
145 if (p_value1_id is not null) then
146 p_insert_stmt := p_insert_stmt || ' ,' || p_value1_id || g_new_line;
147 p_update_stmt := p_update_stmt || p_value1_id || ' = :11,' || g_new_line;
148 else
149 p_insert_stmt := p_insert_stmt || ' ,dummy10' || g_new_line;
150 p_update_stmt := p_update_stmt || 'dummy10 = :11, ' || g_new_line;
151 end if;
152
153 if (p_value2_id is not null) then
154 p_insert_stmt := p_insert_stmt || ' ,' || p_value2_id || g_new_line;
155 p_update_stmt := p_update_stmt || p_value2_id || ' = :12,' || g_new_line;
156 else
157 p_insert_stmt := p_insert_stmt || ' ,dummy11' || g_new_line;
158 p_update_stmt := p_update_stmt || 'dummy11 = :12, ' || g_new_line;
159 end if;
160
161 if (p_value3_id is not null) then
162 p_insert_stmt := p_insert_stmt || ' ,' || p_value3_id || g_new_line;
163 p_update_stmt := p_update_stmt || p_value3_id || ' = :13,' || g_new_line;
164 else
165 p_insert_stmt := p_insert_stmt || ' ,dummy12' || g_new_line;
166 p_update_stmt := p_update_stmt || 'dummy12 = :13, ' || g_new_line;
167 end if;
168
169 if (p_value4_id is not null) then
170 p_insert_stmt := p_insert_stmt || ' ,' || p_value4_id || g_new_line;
171 p_update_stmt := p_update_stmt || p_value4_id || ' = :14,' || g_new_line;
172 else
173 p_insert_stmt := p_insert_stmt || ' ,dummy13' || g_new_line;
174 p_update_stmt := p_update_stmt || 'dummy13 = :14, ' || g_new_line;
175 end if;
176
177 if (p_first_char is not null) then
178 p_insert_stmt := p_insert_stmt || ' ,' || p_first_char || g_new_line;
179 p_update_stmt := p_update_stmt || p_first_char || ' = :15' || g_new_line;
180 else
181 p_insert_stmt := p_insert_stmt || ' ,dummy14' || g_new_line;
182 p_update_stmt := p_update_stmt || 'dummy14 = :15 ' || g_new_line;
183 end if;
184
185 p_insert_stmt := p_insert_stmt || ')' || g_new_line;
186 p_insert_stmt := p_insert_stmt || 'VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, ' ||
187 ':16, :17, :18, :19, :20, :21, :22, :23, :24, :25, :26, :27, :28, :29, :30, :31, :32)';
188
189 p_update_stmt := p_update_stmt || 'where terr_id = :16' || g_new_line ||
190 'and source_id = :17' || g_new_line ||
191 'and trans_type_id = :18';
192
193 retcode := 0;
194 errbuf := null;
195 EXCEPTION
196 WHEN OTHERS THEN
197 retcode := 2;
198 errbuf := 'Error in generating insert and update attribute values statement';
199 END get_attr_val_stmt;
200
201 PROCEDURE create_qual(
202 p_seeded_qual_id IN NUMBER,
203 p_name IN VARCHAR2,
204 p_description IN VARCHAR2,
205 p_language IN VARCHAR2,
206 p_source_id IN NUMBER,
207 p_trans_type_id IN NUMBER,
208 p_enabled_flag IN VARCHAR2,
209 p_qual_col1 IN VARCHAR2,
210 p_convert_to_id_flag IN VARCHAR2,
211 p_display_type IN VARCHAR2,
212 p_alias_rule1 IN VARCHAR2,
213 p_op_eql IN VARCHAR2,
214 p_op_like IN VARCHAR2,
215 p_op_between IN VARCHAR2,
216 p_op_common_where IN VARCHAR2,
217 p_qual_relation_factor IN NUMBER,
218 p_comparison_operator IN VARCHAR2,
219 p_low_value_char IN VARCHAR2,
220 p_high_value_char IN VARCHAR2,
221 p_low_value_char_id IN VARCHAR2,
222 p_low_value_number IN VARCHAR2,
223 p_high_value_number IN VARCHAR2,
224 p_interest_type_id IN VARCHAR2,
225 p_primary_interest_code_id IN VARCHAR2,
226 p_sec_interest_code_id IN VARCHAR2,
227 p_value1_id IN VARCHAR2,
228 p_value2_id IN VARCHAR2,
229 p_value3_id IN VARCHAR2,
230 p_value4_id IN VARCHAR2,
231 p_first_char IN VARCHAR2,
232 p_currency_code IN VARCHAR2,
233 p_real_time_select IN VARCHAR2,
234 p_real_time_where IN VARCHAR2,
235 p_real_time_from IN VARCHAR2,
236 p_html_lov_sql1 IN VARCHAR2,
237 p_html_lov_sql2 IN VARCHAR2,
238 p_html_lov_sql3 IN VARCHAR2,
239 p_display_sql1 IN VARCHAR2,
240 p_display_sql2 IN VARCHAR2,
241 p_display_sql3 IN VARCHAR2,
242 p_hierarchy_type IN VARCHAR2,
243 p_equal_flag IN VARCHAR2,
244 p_like_flag IN VARCHAR2,
245 p_between_flag IN VARCHAR2,
246 retcode OUT NOCOPY VARCHAR2,
247 errbuf OUT NOCOPY VARCHAR2) IS
248
249 l_count NUMBER;
250 l_insert_stmt VARCHAR2(2000);
251 l_update_stmt VARCHAR2(2000);
252 l_qual_type_usg_id NUMBER;
253
254 l_user_id NUMBER;
255 l_login_id NUMBER;
256 l_sysdate DATE;
257
258 l_success_flag VARCHAR2(250);
259 l_error_code VARCHAR2(250);
260 BEGIN
261 l_user_id := FND_GLOBAL.USER_ID;
262 l_login_id := FND_GLOBAL.CONC_LOGIN_ID;
263 l_sysdate := sysdate;
264
265 /* Check to see if the unique id is alreday present in jtf_seeded_qual_all_b */
266 SELECT count(*)
267 INTO l_count
268 FROM jtf_seeded_qual_all_b
269 WHERE seeded_qual_id = p_seeded_qual_id;
270
271 IF (l_count > 0) THEN
272 retcode := 2;
273 errbuf := 'Unique ID alreday present in jtf_seeded_qual_all_b';
274 RAISE FND_API.G_EXC_ERROR;
275 END IF;
276
277 /* Check to see if the unique id is alreday present in jtf_qual_usgs_all */
278 SELECT count(*)
279 INTO l_count
280 FROM jtf_qual_usgs_all
281 WHERE qual_usg_id = p_seeded_qual_id;
282
283 IF (l_count > 0) THEN
284 retcode := 2;
285 errbuf := 'Unique ID alreday present in jtf_qual_usgs_all';
286 RAISE FND_API.G_EXC_ERROR;
287 END IF;
288
289 /* get the qual_type_usg_id corr to source and transaction type */
290 BEGIN
291 SELECT qual_type_usg_id
292 INTO l_qual_type_usg_id
293 FROM jtf_qual_type_usgs_all
294 WHERE source_id = p_source_id
295 AND qual_type_id = p_trans_type_id;
296 EXCEPTION
297 WHEN OTHERS THEN
298 retcode := 2;
299 errbuf := 'Error in getting qual_type_usg_id from source_id and trans_type_id';
300 RAISE FND_API.G_EXC_ERROR;
301 END;
302
303 /* get the attribute value insert and update statement */
304 get_attr_val_stmt(
305 p_comparison_operator => p_comparison_operator,
306 p_low_value_char => p_low_value_char,
307 p_high_value_char => p_high_value_char,
308 p_low_value_char_id => p_low_value_char_id,
309 p_low_value_number => p_low_value_number,
310 p_high_value_number => p_high_value_number,
311 p_interest_type_id => p_interest_type_id,
312 p_primary_interest_code_id => p_primary_interest_code_id,
313 p_secondary_interest_code_id => p_sec_interest_code_id,
314 p_value1_id => p_value1_id,
315 p_value2_id => p_value2_id,
316 p_value3_id => p_value3_id,
317 p_value4_id => p_value4_id,
318 p_first_char => p_first_char,
319 p_currency_code => p_currency_code,
320 p_update_stmt => l_update_stmt,
321 p_insert_stmt => l_insert_stmt,
322 retcode => retcode,
323 errbuf => errbuf);
324
325 IF (retcode <> 0) THEN
326 RAISE FND_API.G_EXC_ERROR;
327 END IF;
328
329 /* Check if a qualifier exists with the same name */
330 SELECT count(*)
331 INTO l_count
332 FROM jtf_seeded_qual_all_b
333 WHERE upper(name) = upper(p_name);
334
335 IF (l_count > 0) THEN
336 retcode := 2;
337 errbuf := 'Qualifier exist with the same name';
338 RAISE FND_API.G_EXC_ERROR;
339 END IF;
340
341 INSERT INTO JTF_SEEDED_QUAL_ALL_B (
342 SEEDED_QUAL_ID,
343 LAST_UPDATE_DATE,
344 LAST_UPDATED_BY,
345 CREATION_DATE,
346 CREATED_BY,
347 LAST_UPDATE_LOGIN,
348 NAME,
349 DESCRIPTION,
350 ORG_ID,
351 SECURITY_GROUP_ID )
352 VALUES (
353 p_seeded_qual_id,
354 l_sysdate,
355 l_user_id,
356 l_sysdate,
357 l_user_id,
358 l_login_id,
359 p_name,
360 p_description,
361 null,
362 null);
363
364 INSERT INTO JTF_SEEDED_QUAL_ALL_TL (
365 SEEDED_QUAL_ID,
366 LAST_UPDATE_DATE,
367 LAST_UPDATED_BY,
368 CREATION_DATE,
369 CREATED_BY,
370 LAST_UPDATE_LOGIN,
371 LANGUAGE,
372 SOURCE_LANG,
373 NAME,
374 DESCRIPTION,
375 ORG_ID,
376 SECURITY_GROUP_ID )
377 VALUES (
378 p_seeded_qual_id,
379 l_sysdate,
380 l_user_id,
381 l_sysdate,
382 l_user_id,
383 l_login_id,
384 p_language,
385 p_language,
386 p_name,
387 p_description,
388 null,
389 null);
390
391 INSERT INTO JTF_QUAL_USGS_ALL (
392 QUAL_USG_ID,
393 LAST_UPDATE_DATE,
394 LAST_UPDATED_BY,
395 CREATION_DATE,
396 CREATED_BY,
397 LAST_UPDATE_LOGIN,
398 APPLICATION_SHORT_NAME,
399 SEEDED_QUAL_ID,
400 QUAL_TYPE_USG_ID,
401 ENABLED_FLAG,
402 QUAL_COL1,
403 QUAL_COL1_ALIAS,
404 SEEDED_FLAG,
405 CONVERT_TO_ID_FLAG,
406 DISPLAY_TYPE,
407 ORG_ID,
408 ALIAS_RULE1,
409 OP_EQL,
410 OP_LIKE,
411 OP_BETWEEN,
412 OP_COMMON_WHERE,
413 QUAL_RELATION_FACTOR,
414 OBJECT_VERSION_NUMBER,
415 COMPARISON_OPERATOR,
416 LOW_VALUE_CHAR,
417 HIGH_VALUE_CHAR,
418 LOW_VALUE_CHAR_ID,
419 LOW_VALUE_NUMBER,
420 HIGH_VALUE_NUMBER,
421 INTEREST_TYPE_ID,
422 PRIMARY_INTEREST_CODE_ID,
423 SECONDARY_INTEREST_CODE_ID,
424 VALUE1_ID,
425 VALUE2_ID,
426 VALUE3_ID,
427 VALUE4_ID,
428 FIRST_CHAR,
429 CURRENCY_CODE,
430 REAL_TIME_SELECT,
431 REAL_TIME_WHERE,
432 REAL_TIME_FROM,
433 UPDATE_ATTR_VAL_STMT,
434 INSERT_ATTR_VAL_STMT,
435 HTML_LOV_SQL1,
436 HTML_LOV_SQL2,
437 HTML_LOV_SQL3,
438 DISPLAY_SQL1,
439 DISPLAY_SQL2,
440 DISPLAY_SQL3,
441 HIERARCHY_TYPE,
442 EQUAL_FLAG,
443 LIKE_FLAG,
444 BETWEEN_FLAG )
445 VALUES (
446 p_seeded_qual_id,
447 l_sysdate,
448 l_user_id,
449 l_sysdate,
450 l_user_id,
451 l_login_id,
452 'JTF',
453 p_seeded_qual_id,
454 l_qual_type_usg_id,
455 p_enabled_flag,
456 p_qual_col1,
457 p_qual_col1,
458 'N',
459 p_convert_to_id_flag,
460 p_display_type,
461 -3113,
462 p_alias_rule1,
463 p_op_eql,
464 p_op_like,
465 p_op_between,
466 p_op_common_where,
467 p_qual_relation_factor,
468 null,
469 p_comparison_operator,
470 p_low_value_char,
471 p_high_value_char,
472 p_low_value_char_id,
473 p_low_value_number,
474 p_high_value_number,
475 p_interest_type_id,
476 p_primary_interest_code_id,
477 p_sec_interest_code_id,
478 p_value1_id,
479 p_value2_id,
480 p_value3_id,
481 p_value4_id,
482 p_first_char,
483 p_currency_code,
484 p_real_time_select,
485 p_real_time_where,
486 p_real_time_from,
487 l_update_stmt,
488 l_insert_stmt,
489 p_html_lov_sql1,
490 p_html_lov_sql2,
491 p_html_lov_sql3,
492 p_display_sql1,
493 p_display_sql2,
494 p_display_sql3,
495 p_hierarchy_type,
496 p_equal_flag,
497 p_like_flag,
498 p_between_flag);
499
500 /* if the qualifier is enabled , then add the columns to the denorm tables */
501 IF (p_enabled_flag = 'Y') THEN
502 JTY_MISC_UTILS_PKG.alter_qual_denorm_tables (
503 x_success_flag => l_success_flag,
504 x_err_code => l_error_code,
505 p_qual_usg_id => p_seeded_qual_id,
506 p_comp_op_col => p_comparison_operator,
507 p_low_value_char_col => p_low_value_char,
508 p_high_value_char_col => p_high_value_char,
509 p_low_value_char_id_col => p_low_value_char_id,
510 p_low_value_number_col => p_low_value_number,
511 p_high_value_number_col => p_high_value_number,
512 p_interest_type_id_col => p_interest_type_id,
513 p_primary_int_code_id_col => p_primary_interest_code_id,
514 p_secondary_int_code_id_col => p_sec_interest_code_id,
515 p_value1_id_col => p_value1_id,
516 p_value2_id_col => p_value2_id,
517 p_value3_id_col => p_value3_id,
518 p_value4_id_col => p_value4_id,
519 p_first_char_col => p_first_char,
520 p_cur_code_col => p_currency_code);
521
522 IF (l_success_flag <> 'Y') THEN
523 retcode := 2;
524 errbuf := 'Error adding columns to the denorm value tables';
525 RAISE FND_API.G_EXC_ERROR;
526 END IF;
527 END IF;
528
529 retcode := 0;
530 errbuf := null;
531 EXCEPTION
532 WHEN FND_API.G_EXC_ERROR THEN
533 NULL;
534
535 WHEN OTHERS THEN
536 retcode := 2;
537 errbuf := SQLCODE || ' : ' || SQLERRM;
538 END create_qual;
539 END JTY_CUST_QUAL_PKG;