[Home] [Help]
PACKAGE BODY: APPS.IEX_UWQ_STRAT_ENUMS_PVT
Source
1 PACKAGE BODY IEX_UWQ_STRAT_ENUMS_PVT AS
2 /* $Header: iexenstb.pls 120.21.12010000.4 2008/11/18 10:30:58 pnaveenk ship $ */
3
4 -- Sub-Program Units
5
6 PG_DEBUG NUMBER(2);
7
8 PROCEDURE ENUMERATE_STRAT_NODES
9 (P_RESOURCE_ID IN NUMBER
10 ,P_LANGUAGE IN VARCHAR2
11 ,P_SOURCE_LANG IN VARCHAR2
12 ,P_SEL_ENUM_ID IN NUMBER
13 )
14 AS
15
16 l_node_label VARCHAR2(200);
17 l_ld_list IEU_PUB.EnumeratorDataRecordList;
18
19 l_node_counter NUMBER;
20 l_bind_list IEU_PUB.BindVariableRecordList ;
21 l_Access varchar2(10);
22 l_person_id NUMBER;
23 l_Level varchar2(15);
24 l_check NUMBER;
25
26 CURSOR c_person IS
27 select source_id
28 from jtf_rs_resource_extns
29 where resource_id = p_resource_id;
30
31 CURSOR c_del_new_nodes is
32 select lookup_code, meaning from fnd_lookup_values
33 where lookup_type = 'IEX_UWQ_NODE_STATUS'
34 and lookup_code in ('ACTIVE', 'PENDING') -- added by jypark 01/02/2003 not show 'COMPLETE' node
35 and LANGUAGE = userenv('LANG');
36
37 CURSOR c_node_label(in_lookup_type VARCHAR2,in_lookup_code VARCHAR2) IS
38 SELECT meaning
39 FROM fnd_lookup_values
40 WHERE lookup_type = in_lookup_type
41 AND lookup_code = in_lookup_code
42 AND LANGUAGE = userenv('LANG');
43
44 CURSOR c_sel_enum(in_sel_enum_id NUMBER) IS
45 SELECT work_q_view_for_primary_node, work_q_label_lu_type, work_q_label_lu_code
46 FROM ieu_uwq_sel_enumerators
47 WHERE sel_enum_id = in_sel_enum_id;
48
49 l_sel_enum_rec c_sel_enum%ROWTYPE;
50
51 l_data_source VARCHAR2(1000);
52 l_default_where VARCHAR2(1000);
53 l_security_where VARCHAR2(2000);
54 l_node_where VARCHAR2(2000);
55 l_uwq_where VARCHAR2(1000);
56
57 type tbl_wclause is table of varchar2(500) index by binary_integer;
58
59 l_wclause tbl_wclause;
60 l_str_and VARCHAR2(10);
61 l_str_str VARCHAR2(1000);
62 l_str_bkr VARCHAR2(1000);
63 l_str_bkr_2 VARCHAR2(1000);
64 l_org_id NUMBER;
65 l_Complete_Days VARCHAR2(40);
66 l_bkr_filter VARCHAR2(240);
67
68 l_full_brk VARCHAR2(2000);
69 l_str_or VARCHAR2(10);
70 l_restrict_res_grp varchar2(700);
71 l_restrict_assign_resource varchar2(700);
72
73 L VARCHAR2(240);
74
75 CURSOR C_ORG_ID IS SELECT ORGANIZATION_ID FROM HR_OPERATING_UNITS
76 WHERE MO_GLOBAL.CHECK_ACCESS(ORGANIZATION_ID) = 'Y';
77 l_additional_str varchar2(200);
78 /* Added by gnramasa 25-Apr-2007 Bug 5874874 Display strategy only at that level */
79 l_strategy_level VARCHAR2(30);
80 l_new_resource_ID NUMBER;
81
82 CURSOR c_strategy_level IS
83 SELECT PREFERENCE_VALUE
84 FROM IEX_APP_PREFERENCES_B
85 WHERE PREFERENCE_NAME = 'COLLECTIONS STRATEGY LEVEL';
86 /* Added by gnramasa 25-Apr-2007 Bug 5874874 Display strategy only at that level */
87
88 BEGIN
89
90
91 MO_GLOBAL.INIT('IEX');
92 MO_GLOBAL.SET_POLICY_CONTEXT('M',NULL);
93
94
95 FOR I_ORG IN C_ORG_ID LOOP
96 MO_GLOBAL.SET_POLICY_CONTEXT('S',I_ORG.ORGANIZATION_ID);
97
98 L := IEX_UTILITIES.get_cache_value('GL_CURRENCY'||I_ORG.ORGANIZATION_ID,
99 'SELECT GLSOB.CURRENCY_CODE CURRENCY from GL_SETS_OF_BOOKS GLSOB, AR_SYSTEM_PARAMETERS ARSYS WHERE ARSYS.SET_OF_BOOKS_ID ' ||
100 ' = GLSOB.SET_OF_BOOKS_ID');
101 L := IEX_UTILITIES.get_cache_value('DEFAULT_EXCHANGE_RATE_TYPE'||I_ORG.ORGANIZATION_ID, 'SELECT DEFAULT_EXCHANGE_RATE_TYPE FROM AR_CMGT_SETUP_OPTIONS');
102 END LOOP;
103
104 MO_GLOBAL.SET_POLICY_CONTEXT('M',NULL);
105
106 -- SAVEPOINT start_str_enumeration;
107
108 l_node_counter := 0;
109 l_Access := NVL(FND_PROFILE.VALUE('IEX_CUST_ACCESS'), 'F');
110 l_Level := NVL(FND_PROFILE.VALUE('IEX_ACCESS_LEVEL'),'PARTY');
111
112 l_Complete_Days := NVL(FND_PROFILE.VALUE('IEX_UWQ_COMPLETION_DAYS'), 30);
113 l_bkr_filter := NVL(fnd_profile.value('IEX_BANKRUPTCY_FILTER'), 'Y');
114 l_org_id := TO_NUMBER(oe_profile.value('OE_ORGANIZATION_ID', fnd_profile.value('ORG_ID')));
115
116 l_str_and := ' AND ';
117 l_str_or := ' OR ';
118 l_str_str := ' AND NUMBER_OF_STRATEGIES > 0 ';
119
120 OPEN c_strategy_level;
121 FETCH c_strategy_level INTO l_strategy_level;
122 CLOSE c_strategy_level;
123
124 OPEN c_sel_enum(p_sel_enum_id);
125 FETCH c_sel_enum INTO l_sel_enum_rec;
126 CLOSE c_sel_enum;
127
128 OPEN c_node_label(l_sel_enum_rec.work_q_label_lu_type, l_sel_enum_rec.work_q_label_lu_code);
129 FETCH c_node_label INTO l_node_label;
130 CLOSE c_node_label;
131
132 OPEN c_person;
133 FETCH c_person INTO l_person_id;
134 CLOSE c_person;
135
136 l_new_resource_id := p_Resource_id;
137
138 IF p_sel_enum_id = 13067 THEN
139 l_data_source := 'IEX_CU_STR_UWQ';
140 /* Begin - Added by gnramasa 26-Sep-2008 Bug 7433430 Display strategy only at that level */
141 if l_strategy_level <> 'DELINQUENCY' then
142 l_restrict_assign_resource := ' and ieu_param_pk_col=''PARTY_ID'' ';
143 else
144 l_restrict_assign_resource := ' and ieu_param_pk_col = NULL ';
145 end if;
146 /* End - Added by gnramasa 26-Sep-2008 Bug 7433430 Display strategy only at that level */
147 /* Begin - Added by gnramasa 25-Apr-2007 Bug 5874874 Display strategy only at that level */
148 if l_strategy_level <> 'CUSTOMER' then
149 l_new_Resource_id := -1;
150 l_person_id := -1;
151 end if;
152 /* End - Added by gnramasa 25-Apr-2007 Bug 5874874 Display strategy only at that level */
153 ELSIF p_sel_enum_id = 13068 THEN
154 l_data_source := 'IEX_ACC_STR_UWQ';
155 /* Begin - Added by gnramasa 26-Sep-2008 Bug 7433430 Display strategy only at that level */
156 if l_strategy_level <> 'DELINQUENCY' then
157 l_restrict_assign_resource := ' and ieu_param_pk_col=''CUST_ACCOUNT_ID'' ';
158 else
159 l_restrict_assign_resource := ' and ieu_param_pk_col = NULL ';
160 end if;
161 /* End - Added by gnramasa 26-Sep-2008 Bug 7433430 Display strategy only at that level */
162 /* Begin - Added by gnramasa 25-Apr-2007 Bug 5874874 Display strategy only at that level, destroy the bind value */
163 if l_strategy_level <> 'ACCOUNT' then
164 l_new_Resource_id := -1;
165 l_person_id := -1;
166 end if;
167 /* End - Added by gnramasa 25-Apr-2007 Bug 5874874 Display strategy only at that level destroy the bind value */
168 ELSIF p_sel_enum_id = 13072 THEN
169 l_data_source := 'IEX_BILLTO_STR_UWQ';
170 /* Begin - Added by gnramasa 26-Sep-2008 Bug 7433430 Display strategy only at that level */
171 if l_strategy_level <> 'DELINQUENCY' then
172 l_restrict_assign_resource := ' and ieu_param_pk_col=''CUSTOMER_SITE_USE_ID'' ';
173 else
174 l_restrict_assign_resource := ' and ieu_param_pk_col = NULL ';
175 end if;
176 /* End - Added by gnramasa 26-Sep-2008 Bug 7433430 Display strategy only at that level */
177 /* Begin - Added by gnramasa 25-Apr-2007 Bug 5874874 Display strategy only at that level destroy the bind value*/
178 if l_strategy_level <> 'BILL_TO' then
179 l_new_Resource_id := -1;
180 l_person_id := -1;
181 end if;
182 /* End - Added by gnramasa 25-Apr-2007 Bug 5874874 Display strategy only at that level */
183 ELSIF p_sel_enum_id = 13069 THEN
184 l_data_source := 'IEX_STRATEGIES_UWQ';
185 /* Begin - Added by gnramasa 26-Sep-2008 Bug 7433430 Display strategy only at that level */
186 if l_strategy_level = 'DELINQUENCY' then
187 l_restrict_assign_resource := '';
188 end if;
189 /* End - Added by gnramasa 26-Sep-2008 Bug 7433430 Display strategy only at that level */
190 END IF;
191
192 /*
193 l_default_where := ' RESOURCE_ID = :RESOURCE_ID AND :UWQ_STATUS = :UWQ_STATUS ';
194
195 l_str_bkr := ' AND NOT EXISTS (SELECT 1 FROM iex_bankruptcies bkr WHERE bkr.party_id = ' || l_sel_enum_rec.work_q_view_for_primary_node || '.party_id) ' ;
196
197 l_str_bkr_2 := ' AND NOT EXISTS (SELECT 1 FROM iex_bankruptcies bkr WHERE bkr.party_id = ' || l_sel_enum_rec.work_q_view_for_primary_node || '.customer_id) ' ;
198
199 --Bug4775893. Fix by LKKUMAR on 07-Dec-2005. Start.
200 l_full_brk := ' OR :RESOURCE_ID ' ||
201 ' IN (select iea.alt_resource_id '||
202 ' FROM iex_assignments iea ' ||
203 ' WHERE nvl(iea.deleted_flag,''N'') = ''N'' ' ||
204 ' AND TRUNC(iea.START_DATE) <= TRUNC(SYSDATE) ' ||
205 ' AND TRUNC(NVL(iea.END_DATE,SYSDATE)) >= TRUNC(SYSDATE) ' ||
206 ' AND iea.resource_id = ' || l_sel_enum_rec.work_q_view_for_primary_node ||'.RESOURCE_ID ) ' ;
207
208 l_restrict_assign_resource := ' select iea.alt_resource_id '||
209 ' FROM hz_customer_profiles hp, ar_collectors ac, ' ||
210 ' iex_assignments iea ' ||
211 ' WHERE hp.collector_id = ac.collector_id ' ||
212 ' AND ac.resource_id = iea.alt_resource_id ' ||
213 ' AND iea.alt_employee_id = :PERSON_ID ' ||
214 ' AND TRUNC(iea.START_DATE) <= TRUNC(SYSDATE) ' ||
215 ' AND TRUNC(NVL(iea.END_DATE,SYSDATE)) >= TRUNC(SYSDATE) ' ||
216 ' AND ac.resource_id IS NOT NULL ';
217
218 --Bug4775893. Fix by LKKUMAR on 07-Dec-2005. End.
219
220 l_restrict_res_grp := ' select ac.resource_id '||
221 ' FROM hz_customer_profiles hp, ar_collectors ac ' ||
222 ' WHERE hp.collector_id = ac.collector_id ' ||
223 ' AND ac.employee_id = :PERSON_ID ' ||
224 ' AND ac.resource_type = ''RS_RESOURCE'' ' ||
225 ' AND ac.resource_id IS NOT NULL ' ||
226 ' UNION ALL SELECT jtgrp.resource_id ' ||
227 ' FROM hz_customer_profiles hp, ar_collectors ac , jtf_rs_group_members jtgrp ' ||
228 ' WHERE hp.collector_id = ac.collector_id ' ||
229 ' AND ac.resource_ID = jtgrp.group_id ' ||
230 ' AND ac.resource_type = ''RS_GROUP'' ' ||
231 ' AND ac.resource_id IS NOT NULL ' ||
232 ' AND NVL(jtgrp.delete_flag,''N'') = ''N'' ' ||
233 ' AND jtgrp.resource_id = :RESOURCE_ID ' ||
234 ' AND ' || l_sel_enum_rec.work_q_view_for_primary_node ||
235 '.resource_id = :RESOURCE_ID ' ||
236 ' AND jtgrp.PERSON_ID = :PERSON_ID ';
237 */
238 /*
239 IF( p_sel_enum_id IN (13067,13068,13072) and l_level = 'PARTY') THEN
240 l_additional_str := ' AND hp.party_id = ' || l_sel_enum_rec.work_q_view_for_primary_node || '.party_id';
241 ELSIF (p_sel_enum_id IN (13068,13072) and l_level = 'ACCOUNT') THEN
242 l_additional_str := ' AND hp.cust_account_id = ' || l_sel_enum_rec.work_q_view_for_primary_node || '.cust_account_id';
243 ELSIF (p_sel_enum_id = 13072 and l_level = 'BILLTO') THEN
244 l_additional_str := ' AND hp.site_use_id = ' || l_sel_enum_rec.work_q_view_for_primary_node || '.site_use_id';
245 END IF;
246 */
247 l_default_where := ' :UWQ_STATUS = :UWQ_STATUS ';
248
249 IF p_sel_enum_id = 13069 THEN
250 l_str_bkr := ' AND NOT EXISTS (SELECT 1 FROM iex_bankruptcies bkr WHERE bkr.party_id = ' || l_sel_enum_rec.work_q_view_for_primary_node || '.customer_id) ' ;
251 ELSE
252 l_str_bkr := ' AND NOT EXISTS (SELECT 1 FROM iex_bankruptcies bkr WHERE bkr.party_id = ' || l_sel_enum_rec.work_q_view_for_primary_node || '.party_id) ' ;
253 END IF;
254
255 --Start bug 6908307 gnramasa 13th June 08
256
257 -- IF (l_Access = 'T') THEN commented for bug#7499019 by PNAVEENK on 18-Nov-2008
258 SELECT count(*) into l_check from iex_assignments where
259 alt_resource_id = p_RESOURCE_ID
260 AND TRUNC(START_DATE) <= TRUNC(SYSDATE)
261 AND TRUNC(NVL(END_DATE,SYSDATE)) >= TRUNC(SYSDATE)
262 AND NVL(DELETED_FLAG,'N') = 'N';
263
264
265 If (l_check > 0) then
266
267 -- l_restrict_assign_resource := l_restrict_assign_resource || ' and resource_id in (select resource_id from ar_collectors where '
268 -- || ' resource_type = ''RS_RESOURCE'' and resource_id = :RESOURCE_ID ';
269 l_restrict_assign_resource := ' and resource_id in (select :RESOURCE_ID+0 from dual '; --Added for bug#7499019 by PNAVEENK
270 /* l_security_where := l_sel_enum_rec.work_q_view_for_primary_node || '.resource_id in ( '
271 || l_restrict_res_grp || ' UNION ALL ' || l_restrict_assign_resource || ' ) ' ;
272 */
273 Else
274 l_restrict_assign_resource := ' and resource_id = :RESOURCE_ID ';
275 /* l_security_where := l_sel_enum_rec.work_q_view_for_primary_node || '.resource_id in ( '
276 || l_restrict_res_grp || ' ) ' ;
277 */
278 End If;
279 -- ELSE
280 -- l_restrict_assign_resource := l_restrict_assign_resource || ' and :RESOURCE_ID = :RESOURCE_ID ';
281 -- END IF;
282 --End bug 6908307 gnramasa 13th June 08
283
284 l_ld_list(l_node_counter).NODE_LABEL := l_node_label;
285 l_ld_list(l_node_counter).VIEW_NAME := l_sel_enum_rec.work_q_view_for_primary_node;
286 l_ld_list(l_node_counter).RES_CAT_ENUM_FLAG := 'N';
287 l_ld_list(l_node_counter).DATA_SOURCE := l_data_source;
288
289 l_bind_list(1).bind_var_name := ':UWQ_STATUS' ;
290 l_bind_list(1).bind_var_value := 'ALL';
291 l_bind_list(1).bind_var_data_type := 'CHAR' ;
292
293 l_bind_list(2).bind_var_name := ':RESOURCE_ID';
294 --l_bind_list(2).bind_var_value := p_resource_id;
295 l_bind_list(2).bind_var_value := l_new_resource_id;
296 l_bind_list(2).bind_var_data_type := 'NUMBER' ;
297
298 /*
299 IF ( l_access in ('F', 'P')) THEN
300 IF p_sel_enum_id = 13069 THEN
301 IF l_bkr_filter = 'Y' THEN
302 l_ld_list(l_node_counter).WHERE_CLAUSE := '( ' || l_default_where || l_full_brk || ' ) '|| l_str_bkr_2;
303 ELSE
304 l_ld_list(l_node_counter).WHERE_CLAUSE := l_default_where || l_full_brk;
305 END IF;
306 ELSE
307 IF l_bkr_filter = 'Y' THEN
308 l_ld_list(l_node_counter).WHERE_CLAUSE := '( ' || l_default_where || l_full_brk || ' ) ' || l_str_str || l_str_bkr;
309 ELSE
310 l_ld_list(l_node_counter).WHERE_CLAUSE := l_default_where || l_full_brk || l_str_str ;
311 END IF;
312 END IF;
313
314 l_ld_list(l_node_counter).BIND_VARS := IEU_PUB.SET_BIND_VAR_DATA(l_bind_list) ;
315
316 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
317 iex_debug_pub.LogMessage('ENUMERATE_STRATEGY_NODES: full Mode: main final where clause: ' || l_ld_list(l_node_counter).WHERE_CLAUSE);
318 END IF;
319
320 ELSE
321 OPEN c_person;
322 FETCH c_person INTO l_person_id;
323 CLOSE c_person;
324
325 l_bind_list(3).bind_var_name := ':PERSON_ID' ;
326 l_bind_list(3).bind_var_value := l_person_id;
327 l_bind_list(3).bind_var_data_type := 'NUMBER' ;
328
329 IF p_sel_enum_id = 13069 THEN
330 IF l_bkr_filter = 'Y' THEN
331 l_ld_list(l_node_counter).WHERE_CLAUSE := '( ' || l_default_where || l_full_brk || l_str_or
332 || l_security_where || ' ) ' || l_str_bkr_2;
333 ELSE
334 l_ld_list(l_node_counter).WHERE_CLAUSE := l_default_where || l_str_or || l_security_where || l_full_brk;
335 END IF;
336 ELSE
337 IF l_bkr_filter = 'Y' THEN
338 l_ld_list(l_node_counter).WHERE_CLAUSE := ' ( ' || l_default_where || l_str_or
339 || l_security_where || l_str_str || l_full_brk || ' ) ' || l_str_bkr ;
340 ELSE
341 l_ld_list(l_node_counter).WHERE_CLAUSE := l_default_where || l_str_or || l_security_where
342 || l_str_str || l_full_brk;
343 END IF;
344 END IF;
345 */
346 if l_check>0 then
347
348 l_restrict_assign_resource := l_restrict_assign_resource ||
349 ' union all (SELECT iea.resource_id FROM iex_assignments iea where '||
350 ' iea.alt_employee_id = :PERSON_ID '||
351 ' AND TRUNC(iea.START_DATE) <= TRUNC(SYSDATE) '||
352 ' AND TRUNC(NVL(iea.END_DATE,SYSDATE)) >= TRUNC(SYSDATE) '||
353 ' AND NVL(iea.DELETED_FLAG,''N'') = ''N'' ))';
354 -- ' and ac.resource_id=iea.resource_id '|| -- commented for bug#7499019 by PNAVEENK
355 -- ' and ac.resource_type in (''RS_RESOURCE'',''RS_GROUP''))) ';
356
357 l_bind_list(3).bind_var_name := ':PERSON_ID' ;
358 l_bind_list(3).bind_var_value := l_person_id;
359 l_bind_list(3).bind_var_data_type := 'NUMBER' ;
360
361 end if;
362
363 IF l_bkr_filter = 'Y' THEN
364 l_ld_list(l_node_counter).WHERE_CLAUSE := l_default_where || l_restrict_assign_resource || l_str_bkr;
365 ELSE
366 l_ld_list(l_node_counter).WHERE_CLAUSE := l_default_where || l_restrict_assign_resource;
367 END IF;
368
369 l_ld_list(l_node_counter).BIND_VARS := IEU_PUB.SET_BIND_VAR_DATA(l_bind_list) ;
370
371 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
372 iex_debug_pub.LogMessage('ENUMERATE_STRATEGY_NODES: restricted Mode: main final where clause: ' || l_ld_list(l_node_counter).WHERE_CLAUSE);
373 END IF;
374
375 --END IF;
376
377 l_ld_list(l_node_counter).MEDIA_TYPE_ID := '';
378 l_ld_list(l_node_counter).NODE_TYPE := 0;
379 l_ld_list(l_node_counter).HIDE_IF_EMPTY := '';
380 l_ld_list(l_node_counter).NODE_DEPTH := 1;
381
382
383 l_node_counter := l_node_counter + 1;
384
385 IEU_PUB.ADD_UWQ_NODE_DATA
386 (P_RESOURCE_ID,
387 P_SEL_ENUM_ID,
388 l_ld_list
389 );
390
391 EXCEPTION
392 WHEN OTHERS THEN
393 -- ROLLBACK TO start_str_enumeration;
394 --Begin - Bug#5344878 - Andre Araujo - Need to log exceptions
395 if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then
396 FND_LOG.STRING(FND_LOG.LEVEL_UNEXPECTED, 'iex', 'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM );
397 End if;
398 --End - Bug#5344878 - Andre Araujo - Need to log exceptions
399 RAISE;
400
401 END ENUMERATE_STRAT_NODES;
402
403 BEGIN
404 PG_DEBUG := TO_NUMBER(NVL(FND_PROFILE.value('IEX_DEBUG_LEVEL'), '20'));
405 -- PL/SQL Block
406 END IEX_UWQ_STRAT_ENUMS_PVT;