[Home] [Help]
PACKAGE BODY: APPS.BIL_BI_SALES_MGMT_RPTS_PKG
Source
1 PACKAGE BODY BIL_BI_SALES_MGMT_RPTS_PKG AS
2 /* $Header: bilbssb.pls 120.16 2006/01/13 04:18:02 hrpandey noship $ */
3
4 g_pkg VARCHAR2(100);
5 g_sch_name VARCHAR2(100);
6
7 /*******************************************************************************
8 * Name : Sales Results vs Forecast
9 * Author : Prasanna Patil
10 * Date : July 27, 2003
11 * Purpose : Sales Managment Sumry Sales Intelligence report and charts.
12 *
13 * Copyright (c) 2002 Oracle Corporation
14 *
15 * Parameters
16 * p_page_parameter_tbl PL/SQL table containing dimension parameters
17 * x_custom_sql string containing sql query
18 * x_custom_attr PL/SQL table containing our bind vars
19 *
20 * Date Author Description
21 * ---- ------ -----------
22 * 07/21/03 ppatil Intial Version
23 *
24 * 17-Mar-2004 krsundar Fixed issues pertaining to forecast measure, view by product category
25 * 25-Mar-2004 krsundar Drill and pivot fix
26 * 26 Nov 2004 hrpandey Drill Down to Oppty Line Detail report
27 ******************************************************************************/
28 PROCEDURE BIL_BI_SALES_MGMT_SUMRY(p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL
29 ,x_custom_sql OUT NOCOPY VARCHAR2
30 ,x_custom_attr OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
31 AS
32
33 l_page_period_type VARCHAR2(100);
34 l_period_type VARCHAR2(200);
35 l_sg_id VARCHAR2(200);
36 l_conv_rate_selected VARCHAR2(200);
37 l_fst_crdt_type VARCHAR2(100);
38 l_fii_struct VARCHAR2(100);
39 l_comp_type VARCHAR2(20);
40 l_bitand_id VARCHAR2(10);
41 l_calendar_id VARCHAR2(10);
42 l_viewby VARCHAR2(100);
43 l_currency VARCHAR2(50);
44 l_sql_stmnt1 VARCHAR2(5000);
45 l_sql_stmnt2 VARCHAR2(5000);
46 l_sql_stmnt3 VARCHAR2(5000);
47 l_sql_stmnt4 VARCHAR2(5000);
48 l_outer_select VARCHAR2(5000);
49 l_insert_stmnt VARCHAR2(5000);
50 l_inner_select VARCHAR2(5000);
51 l_sql_error_desc VARCHAR2(8000);
52 l_where_clause1 VARCHAR2(1000);
53 l_where_clause2 VARCHAR2(1000);
54 l_where_clause3 VARCHAR2(1000);
55 l_where_clause4 VARCHAR2(1000);
56 l_where_clause5 VARCHAR2(1000);
57 l_where_clause6 VARCHAR2(1000);
58 l_product_where_clause VARCHAR2(1000);
59 l_product_where_clause1 VARCHAR2(1000);
60 l_product_where_clause2 VARCHAR2(1000);
61 l_from1 VARCHAR2(500);
62 l_from2 VARCHAR2(500);
63 l_from3 VARCHAR2(500);
64 l_url_str VARCHAR2(1000);
65 l_cat_assign VARCHAR2(50);
66 l_resource_id VARCHAR2(20);
67 l_null_rem_clause VARCHAR2(1000);
68 l_prodcat_id VARCHAR2(50);
69 l_denorm VARCHAR2(50);
70 l_opty_denorm VARCHAR2(200);
71 l_sumry1 VARCHAR2(50);
72 l_sumry2 VARCHAR2(50);
73 l_sumry3 VARCHAR2(50);
74 l_cat_url VARCHAR2(500);
75 l_netBooked_URL VARCHAR2(1000);
76 l_Revenue_URL VARCHAR2(1000);
77 l_curr_page_time_id NUMBER;
78 l_prev_page_time_id NUMBER;
79 l_sg_id_num NUMBER;
80 l_record_type_id NUMBER;
81 l_productcat_id NUMBER;
82 l_bind_ctr NUMBER;
83 l_curr_as_of_date DATE;
84 l_prev_date DATE;
85 l_bis_sysdate DATE;
86 l_custom_rec BIS_QUERY_ATTRIBUTES;
87 l_userCurrency BOOLEAN;
88 l_proc VARCHAR2(100);
89 l_rpt_str VARCHAR2(80);
90 l_parameter_valid BOOLEAN;
91 l_region_id VARCHAR2(100);
92 l_assign_cat BOOLEAN;
93 l_dummy_cnt INTEGER;
94 l_yes VARCHAR2(1);
95 l_parent_sg_id_num NUMBER;
96 l_unassigned_value VARCHAR2(1000);
97 l_currency_suffix VARCHAR2(5);
98 l_isc_currency_suffix VARCHAR2(5);
99 l_drill_link varchar2(4000);
100
101 l_ind NUMBER;
102 l_str VARCHAR2(4000);
103 l_len NUMBER;
104
105 BEGIN
106
107 g_pkg := 'bil.patch.115.sql.BIL_BI_SALES_MGMT_RPTS_PKG.';
108 l_proc := 'BIL_BI_SALES_MGMT_SUMRY.';
109 l_rpt_str := 'BIL_BI_SLSMGMT_R';
110 l_parameter_valid := FALSE;
111 l_region_id := 'BIL_BI_SALES_MGMT_SUMRY';
112 l_yes := 'Y';
113 g_sch_name := 'BIL';
114
115
116 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
117
118 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_PROCEDURE,
119 MODULE => g_pkg || l_proc || 'begin',
120 MESSAGE => 'Start of Procedure '|| l_proc);
121
122 END IF;
123
124
125 BIL_BI_UTIL_PKG.GET_PAGE_PARAMS(p_page_parameter_tbl => p_page_parameter_tbl
126 ,p_region_id => l_region_id
127 ,x_period_type => l_period_type
128 ,x_conv_rate_selected => l_conv_rate_selected
129 ,x_sg_id => l_sg_id
130 ,x_parent_sg_id => l_parent_sg_id_num
131 ,x_resource_id => l_resource_id
132 ,x_prodcat_id => l_prodcat_id
133 ,x_curr_page_time_id => l_curr_page_time_id
134 ,x_prev_page_time_id => l_prev_page_time_id
135 ,x_comp_type => l_comp_type
136 ,x_parameter_valid => l_parameter_valid
137 ,x_as_of_date => l_curr_as_of_date
138 ,x_page_period_type => l_page_period_type
139 ,x_prior_as_of_date => l_prev_date
140 ,x_record_type_id => l_record_type_id
141 ,x_viewby => l_viewby );
142
143 IF l_parameter_valid THEN
144
145 BIL_BI_UTIL_PKG.GET_FORECAST_PROFILES(x_FstCrdtType => l_fst_crdt_type);
146
147 l_sg_id_num := TO_NUMBER(REPLACE(l_sg_id, ''''));
148 l_prodcat_id := TO_NUMBER(REPLACE(l_prodcat_id,''''));
149
150 BIL_BI_UTIL_PKG.GET_GLOBAL_CONTS(x_bitand_id => l_bitand_id,
151 x_calendar_id => l_calendar_id,
152 x_curr_date => l_bis_sysdate,
153 x_fii_struct => l_fii_struct);
154
155 IF l_conv_rate_selected = 0 THEN
156 l_currency_suffix := '_s';
157 l_isc_currency_suffix := '1';
158 ELSE
159 l_currency_suffix := '';
160 l_isc_currency_suffix := '';
161 END IF;
162
163 IF l_prodcat_id IS NULL THEN
164 l_prodcat_id := 'All';
165 END IF;
166
167
168 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
169
170
171 l_sql_error_desc := 'l_viewby => '|| l_viewby||', '||
172 'l_curr_page_time_id => '|| l_curr_page_time_id ||', ' ||
173 'l_prev_page_time_id => '|| l_prev_page_time_id ||', ' ||
174 'l_curr_as_of_date => '|| l_curr_as_of_date ||', ' ||
175 'l_prev_date => '|| l_prev_date ||', ' ||
176 'l_conv_rate_selected => '|| l_conv_rate_selected ||', ' ||
177 'l_bitand_id => '|| l_bitand_id ||', ' ||
178 'l_period_type => '|| l_period_type ||', ' ||
179 'l_sg_id => '|| l_sg_id ||', ' ||
180 'l_resource_id => '|| l_resource_id ||', ' ||
181 'l_bis_sysdate => '|| l_bis_sysdate ||', ' ||
182 'l_fst_crdt_type => '|| l_fst_crdt_type ||', '||
183 'l_prodcat_id => '|| l_prodcat_id ||', '||
184 'l_record_type_id => '|| l_record_type_id ||', '||
185 'l_prodcat_id => '|| l_prodcat_id;
186
187
188 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
189 MODULE => g_pkg || l_proc,
190 MESSAGE => 'Binds =>'||l_sql_error_desc);
191
192 END IF;
193
194
195 l_netBooked_URL := 'pFunctionName=ISC_DBI_NET_BOOK_FULF&pParamIds=Y&VIEW_BY='||l_viewby||'&VIEW_BY_NAME=VIEW_BY_ID';
196 l_Revenue_URL := 'pFunctionName=FII_AR_SG_PROD_REV&pParamIds=Y&VIEW_BY='||l_viewby||'&VIEW_BY_NAME=VIEW_BY_ID';
197
198
199 ---- Changes for Drill Links to opty Line Detail Report
200
201
202 -- Get the Drill Link to the Opty Line Detail Report
203
204 l_drill_link := bil_bi_util_pkg.get_drill_links( p_view_by => l_viewby,
205 p_salesgroup_id => l_sg_id,
206 p_resource_id => l_resource_id );
207
208
209
210 l_outer_select := 'SELECT VIEWBY ';
211 IF 'ORGANIZATION+JTF_ORG_SALES_GROUP' = l_viewby THEN
212 l_outer_select := l_outer_select ||',DECODE(BIL_URL1,NULL,VIEWBYID||''.''||:l_sg_id_num,VIEWBYID) VIEWBYID ';
213 ELSE
214 l_outer_select := l_outer_select ||',VIEWBYID ';
215 END IF;
216 l_outer_select := l_outer_select ||',(BIL_MEASURE5/DECODE(BIL_MEASURE2,0,NULL,BIL_MEASURE2)) * 100 BIL_MEASURE1 '||
217 ',BIL_MEASURE2 '||
218 ',BIL_MEASURE3 '||
219 ',(BIL_MEASURE2-BIL_MEASURE3)/ABS(DECODE(BIL_MEASURE3,0,NULL,BIL_MEASURE3))*100 BIL_MEASURE4 '||
220 ',BIL_MEASURE5 '||
221 ',BIL_MEASURE6 '||
222 ',(BIL_MEASURE5-BIL_MEASURE6)/ABS(DECODE(BIL_MEASURE6,0,NULL,BIL_MEASURE6))*100 BIL_MEASURE7 '||
223 ',DECODE(BIL_MEASURE8,0,NULL,BIL_MEASURE8) BIL_MEASURE8 '||
224 ',BIL_MEASURE9 '||
225 ',(BIL_MEASURE8-BIL_MEASURE9)/ABS(DECODE(BIL_MEASURE9, 0, NULL, BIL_MEASURE9))*100 BIL_MEASURE10 '||
226 ',DECODE(BIL_MEASURE14,0,NULL,BIL_MEASURE14) BIL_MEASURE14 '||
227 ',BIL_MEASURE15 '||
228 ',(BIL_MEASURE14-BIL_MEASURE15)/ABS(DECODE(BIL_MEASURE15, 0, NULL, BIL_MEASURE15))*100 BIL_MEASURE16 '||
229 ',(BIL_MEASURE14/(DECODE(BIL_MEASURE2,0,NULL,BIL_MEASURE2))*100) BIL_MEASURE17 '||
230 ',(SUM(BIL_MEASURE5) OVER()/DECODE(SUM(BIL_MEASURE2) OVER(),0,NULL,SUM(BIL_MEASURE2) OVER())) * 100 BIL_MEASURE24 '||
231 ',SUM(BIL_MEASURE2) OVER() BIL_MEASURE25 '||
232 ',SUM(BIL_MEASURE3) OVER() BIL_MEASURE26'||
233 ',(SUM(BIL_MEASURE2) OVER() - SUM(BIL_MEASURE3) OVER())/ABS(DECODE(SUM(BIL_MEASURE3) OVER(), 0, NULL, '||
234 ' SUM(BIL_MEASURE3) OVER()))*100 BIL_MEASURE27 '||
235 ',SUM(BIL_MEASURE5) OVER() BIL_MEASURE28 '||
236 ',SUM(BIL_MEASURE6) OVER() BIL_MEASURE29 '||
237 ',(SUM(BIL_MEASURE5) OVER() - SUM(BIL_MEASURE6) OVER())/ABS(DECODE(SUM(BIL_MEASURE6) OVER(), 0, NULL, '||
238 ' SUM(BIL_MEASURE6) OVER()))*100 BIL_MEASURE30 '||
239 ',SUM(DECODE(BIL_MEASURE8,0,NULL,BIL_MEASURE8)) OVER() BIL_MEASURE31 '||
240 ',SUM(BIL_MEASURE9) OVER() BIL_MEASURE32 '||
241 ',(SUM(BIL_MEASURE8) OVER() - SUM(BIL_MEASURE9) OVER())/ABS(DECODE(SUM(BIL_MEASURE9) OVER(), 0, NULL, '||
242 ' SUM(BIL_MEASURE9) OVER()))*100 BIL_MEASURE33 '||
243 ',SUM(DECODE(BIL_MEASURE14,0,NULL,BIL_MEASURE14)) OVER() BIL_MEASURE37 '||
244 ',SUM(BIL_MEASURE15) OVER() BIL_MEASURE38 '||
245 ',(SUM(BIL_MEASURE14) OVER() - SUM(BIL_MEASURE15) OVER())/ABS(DECODE(SUM(BIL_MEASURE15) OVER(), 0, NULL '||
246 ' , SUM(BIL_MEASURE15) OVER()))*100 BIL_MEASURE39 '||
247 ',(SUM(BIL_MEASURE14) OVER()/(DECODE(SUM(BIL_MEASURE2) OVER(),0,NULL,SUM(BIL_MEASURE2) OVER())))*100 BIL_MEASURE40 '||
248 ',BIL_URL1 '||
249 ',BIL_URL2 '||
250 ','''||l_netBooked_URL||''' BIL_URL3 ' ||
251 ','''||l_Revenue_URL||''' BIL_URL4
252 ,DECODE('''||l_viewby||''',''ORGANIZATION+JTF_ORG_SALES_GROUP'',
253 DECODE(BIL_URL2,NULL,NULL,BIL_URL2||'||'''BIL_DIMENSION1=WON'''||'),
254 DECODE(BIL_URL1,NULL,NULL,BIL_URL1||'||'''BIL_DIMENSION1=WON'''||'))
255 BIL_URL5
256
257 ';
258
259 --Opportunity amounts for sales groups and sales reps
260
261 l_sql_stmnt1 := 'NULL BIL_MEASURE2,
262 NULL BIL_MEASURE3,
263 SUM(CASE WHEN cal.report_date=:l_curr_as_of_date
264 THEN sumry.won_opty_amt'||l_currency_suffix||'
265 ELSE NULL END) BIL_MEASURE5,
266 SUM(CASE WHEN cal.report_date =:l_prev_date
267 THEN sumry.won_opty_amt'||l_currency_suffix||'
268 ELSE NULL END) BIL_MEASURE6,
269 NULL BIL_MEASURE8,
270 NULL BIL_MEASURE9,
271 NULL BIL_MEASURE14,
272 NULL BIL_MEASURE15 ';
273
274
275 l_where_clause1 := ' WHERE sumry.effective_time_id = cal.time_id
276 AND sumry.effective_period_type_id = cal.period_type_id
277 AND BITAND(cal.record_type_id, :l_record_type_id)= :l_record_type_id
278 AND sumry.parent_sales_group_id = :l_sg_id_num
279 AND cal.xtd_flag = ''Y''
280 AND cal.report_date IN (:l_curr_as_of_date, :l_prev_date) ';
281
282 l_where_clause4:= ' WHERE sumry.effective_time_id = cal.time_id
283 AND sumry.effective_period_type_id = cal.period_type_id
284 AND BITAND(cal.record_type_id, :l_record_type_id)= :l_record_type_id
285 AND sumry.sales_group_id = :l_sg_id_num ';
286
287 if(l_resource_id is not null) then
288 l_where_clause4:= l_where_clause4 ||
289 ' AND sumry.salesrep_id = :l_resource_id AND sumry.parent_sales_group_id = :l_sg_id_num';
290 else
291 l_where_clause4:=l_where_clause4 ||
292 ' AND sumry.salesrep_id IS NULL ';
293 if l_parent_sg_id_num IS NULL then
294 l_where_clause4:=l_where_clause4 || ' AND sumry.parent_sales_group_id IS NULL ';
298 end if;
295 else
296 l_where_clause4:=l_where_clause4 || ' AND sumry.parent_sales_group_id = :l_parent_sg_id_num ';
297 end if;
299
300 l_where_clause4 := l_where_clause4 ||
301 ' AND cal.xtd_flag = ''Y''
302 AND cal.report_date IN (:l_curr_as_of_date, :l_prev_date) ';
303
304 --Forecast amount by sales group and sales rep
305
306 l_sql_stmnt2 := 'SUM(CASE WHEN sumry.effective_time_id = :l_curr_page_time_id
307 AND cal.report_date=:l_curr_as_of_date
308 THEN sumry.forecast_amt'||l_currency_suffix||'
309 ELSE NULL
310 END) BIL_MEASURE2,
311 SUM(CASE WHEN sumry.effective_time_id = :l_prev_page_time_id
312 AND cal.report_date =:l_prev_date
313 THEN sumry.forecast_amt'||l_currency_suffix||'
314 ELSE NULL
315 END) BIL_MEASURE3,
316 NULL BIL_MEASURE5,
317 NULL BIL_MEASURE6,
318 NULL BIL_MEASURE8,
319 NULL BIL_MEASURE9,
320 NULL BIL_MEASURE14,
321 NULL BIL_MEASURE15 ';
322
323 l_sql_stmnt4 := 'SUM(CASE WHEN sumry.effective_time_id = :l_curr_page_time_id AND cal.report_date=:l_curr_as_of_date
324 THEN DECODE(sumry.salesrep_id,NULL,sumry.forecast_amt_sub'||l_currency_suffix||'
325 ,sumry.forecast_amt'||l_currency_suffix||')
326 ELSE NULL
327 END) BIL_MEASURE2,
328 SUM(CASE WHEN sumry.effective_time_id = :l_prev_page_time_id AND cal.report_date =:l_prev_date
329 THEN DECODE(sumry.salesrep_id,NULL,sumry.forecast_amt_sub'||l_currency_suffix||'
330 ,sumry.forecast_amt'||l_currency_suffix||')
331 ELSE NULL
332 END) BIL_MEASURE3,
333 NULL BIL_MEASURE5,
334 NULL BIL_MEASURE6,
335 NULL BIL_MEASURE8,
336 NULL BIL_MEASURE9,
337 NULL BIL_MEASURE14,
338 NULL BIL_MEASURE15 ';
339
340
341 l_where_clause2 := ' WHERE sumry.txn_time_id = cal.time_id
342 AND sumry.txn_period_type_id = cal.period_type_id
343 AND BITAND(cal.record_type_id, :l_bitand_id)= :l_bitand_id
344 AND sumry.effective_period_type_id = :l_period_type
345 AND sumry.parent_sales_group_id = :l_sg_id_num
346 AND NVL(sumry.credit_type_id, :l_fst_crdt_type) = :l_fst_crdt_type
347 AND cal.report_date IN (:l_curr_as_of_date, :l_prev_date)
348 AND cal.xtd_flag = ''Y''
349 AND sumry.effective_time_id IN (:l_curr_page_time_id, :l_prev_page_time_id) ';
350
351 l_where_clause5 := ' WHERE sumry.txn_time_id = cal.time_id
352 AND sumry.txn_period_type_id = cal.period_type_id
353 AND BITAND(cal.record_type_id, :l_bitand_id)= :l_bitand_id
354 AND sumry.effective_period_type_id = :l_period_type
355 AND sumry.sales_group_id = :l_sg_id_num ';
356
357 if(l_resource_id is not null) then
358 l_where_clause5:= l_where_clause5 ||
359 ' AND sumry.salesrep_id = :l_resource_id AND sumry.parent_sales_group_id = :l_sg_id_num';
360 else
361 l_where_clause5:=l_where_clause5 ||
362 ' AND sumry.salesrep_id IS NULL ';
363 if l_parent_sg_id_num IS NULL then
364 l_where_clause5:=l_where_clause5 || ' AND sumry.parent_sales_group_id IS NULL ';
365 else
366 l_where_clause5:=l_where_clause5 || ' AND sumry.parent_sales_group_id = :l_parent_sg_id_num ';
367 end if;
368 end if;
369
370 l_where_clause5 := l_where_clause5 ||
371 ' AND NVL(sumry.credit_type_id, :l_fst_crdt_type) = :l_fst_crdt_type
372 AND cal.report_date IN (:l_curr_as_of_date, :l_prev_date)
373 AND cal.xtd_flag = ''Y''
374 AND sumry.effective_time_id IN (:l_curr_page_time_id, :l_prev_page_time_id) ';
375
376 --Booked and recogrnized by sales group and sales rep
377
378 l_sql_stmnt3 := 'NULL BIL_MEASURE2,
379 NULL BIL_MEASURE3,
380 NULL BIL_MEASURE5,
381 NULL BIL_MEASURE6,
382 SUM(CASE WHEN cal.report_date=:l_curr_as_of_date THEN
383 (sumry.net_booked_amt_g'||l_isc_currency_suffix||')
384 ELSE NULL
385 END) BIL_MEASURE8,
386 SUM(CASE WHEN cal.report_date =:l_prev_date
390 SUM(CASE WHEN cal.report_date=:l_curr_as_of_date THEN
387 THEN net_booked_amt_g'||l_isc_currency_suffix||'
388 ELSE NULL
389 END) BIL_MEASURE9,
391 (sumry.recognized_amt_g'||l_isc_currency_suffix||')
392 ELSE NULL
393 END) BIL_MEASURE14,
394 SUM(CASE WHEN cal.report_date =:l_prev_date
395 THEN sumry.recognized_amt_g'||l_isc_currency_suffix||'
396 ELSE NULL
397 END) BIL_MEASURE15 ';
398 --Removed sumry.cat_top_node_flag =''Y'' for bug 3640113
399
400 l_where_clause3 := ' WHERE sumry.parent_grp_id = :l_sg_id_num
401 AND sumry.grp_marker <> ''TOP GROUP''
402 AND sumry.time_id = cal.time_id
403 AND cal.report_date in (:l_curr_as_of_date, :l_prev_date)
404 AND cal.period_type_id = sumry.period_type_id
405 AND cal.xtd_flag = ''Y''
406 AND BITAND(cal.record_type_id,:l_record_type_id) = :l_record_type_id';
407
408 l_where_clause6 := ' WHERE sumry.sales_grp_id = :l_sg_id_num ';
409 if(l_resource_id is not null) then
410 l_where_clause6:= l_where_clause6 ||
411 ' AND sumry.resource_id = :l_resource_id AND sumry.parent_grp_id = :l_sg_id_num';
412 else
413 l_where_clause6:=l_where_clause6 ||
414 ' AND sumry.resource_id IS NULL ';
415 if l_parent_sg_id_num IS NULL then
416 l_where_clause6:=l_where_clause6 || ' AND sumry.parent_grp_id = sumry.sales_grp_id ';
417 else
418 l_where_clause6:=l_where_clause6 || ' AND sumry.parent_grp_id = :l_parent_sg_id_num ';
419 end if;
420 end if;
421
422 l_where_clause6 := l_where_clause6 ||
423 ' AND sumry.time_id = cal.time_id
424 AND cal.report_date in (:l_curr_as_of_date, :l_prev_date)
425 AND cal.period_type_id = sumry.period_type_id
426 AND cal.xtd_flag = ''Y''
427 AND BITAND(cal.record_type_id,:l_record_type_id) = :l_record_type_id';
428
429 l_insert_stmnt := 'INSERT INTO BIL_BI_RPT_TMP1 (VIEWBY, VIEWBYID, SORTORDER,BIL_MEASURE2,BIL_MEASURE3,
430 BIL_MEASURE5,BIL_MEASURE6,BIL_MEASURE8, BIL_MEASURE9,
431 BIL_MEASURE14,BIL_MEASURE15, BIL_URL1, BIL_URL2)';
432
433 l_inner_select := ' SELECT VIEWBY,VIEWBYID,SORTORDER,SUM(BIL_MEASURE2) BIL_MEASURE2,SUM(BIL_MEASURE3) BIL_MEASURE3
434 ,SUM(BIL_MEASURE5) BIL_MEASURE5,SUM(BIL_MEASURE6) BIL_MEASURE6
435 ,SUM(BIL_MEASURE8) BIL_MEASURE8,SUM(BIL_MEASURE9) BIL_MEASURE9
436 ,SUM(BIL_MEASURE14) BIL_MEASURE14,SUM(BIL_MEASURE15) BIL_MEASURE15 ';
437
438 execute immediate 'TRUNCATE TABLE '||g_sch_name||'.'||'BIL_BI_RPT_TMP1';
439
440
441 --l_denorm is used in the forecast and ISC query, product where clause
442 --is ignored since it is assigned locally.
443 BIL_BI_UTIL_PKG.GET_PRODUCT_WHERE_CLAUSE(p_viewby => l_viewby,
444 p_prodcat => l_prodcat_id,
445 x_denorm => l_denorm,
446 x_where_clause => l_product_where_clause);
447
448 --reusing the local var for product where clause
449 BIL_BI_UTIL_PKG.get_PC_NoRollup_Where_Clause(p_viewby => l_viewby,
450 p_prodcat => l_prodcat_id,
451 x_denorm => l_opty_denorm,
452 x_where_clause => l_product_where_clause);
453
454 l_null_rem_clause := ' WHERE NOT ((BIL_MEASURE2 IS NULL OR BIL_MEASURE2 = 0)
455 AND (BIL_MEASURE5 IS NULL OR BIL_MEASURE5 = 0)
456 AND (BIL_MEASURE8 IS NULL OR BIL_MEASURE8 = 0)
457 AND (BIL_MEASURE14 IS NULL OR BIL_MEASURE14 = 0)) ';
458
459 CASE l_viewby
460 WHEN 'ORGANIZATION+JTF_ORG_SALES_GROUP' THEN
461 l_url_str := 'pFunctionName=BIL_BI_SLSMGMT_R&pParamIds=Y&VIEW_BY='||l_viewby||'&VIEW_BY_NAME=VIEW_BY_ID';
462 l_inner_select := l_inner_select ||',BIL_URL1, NULL BIL_URL2 FROM (';
463
464 IF l_prodcat_id = 'All' THEN
465 l_sumry1 := 'BIL_BI_OPTY_G_MV';
466 l_sumry2 := 'BIL_BI_FST_G_MV';
467 --used for forecast
468 l_product_where_clause1 := ' ';
469 --used for booked and recognized
470 l_product_where_clause2 := ' AND sumry.cat_top_node_flag = ''Y'' ';
471 ELSE
472 l_sumry1 := 'BIL_BI_OPTY_PG_MV';
473 l_sumry2 := 'BIL_BI_FST_PG_MV';
474 --used for forecast
478
475 l_product_where_clause1 := ' AND sumry.product_category_id = :l_prodcat ';
476 --used for booked and recognized
477 l_product_where_clause2:= ' AND sumry.item_category_id = :l_prodcat ';
479 END IF;
480
481 l_sumry3 := 'ISC_DBI_SCR_002_MV';
482
483
484 l_from1 := ' FROM '||l_sumry1||' sumry, '||l_fii_struct ||' cal ';
485 l_from2 := ' FROM '||l_sumry2||' sumry, '||l_fii_struct ||' cal ';
486 l_from3 := ' FROM '||l_sumry3||' sumry, '||l_fii_struct ||' cal ';
487
488 x_custom_sql := 'SELECT decode(sumry.salesrep_id, NULL, grptl.group_name,
489 restl.resource_name) VIEWBY,
490 decode(sumry.salesrep_id, NULL, sumry.sales_group_id,
491 sumry.salesrep_id) VIEWBYID,
492 SORTORDER,BIL_MEASURE2,BIL_MEASURE3,BIL_MEASURE5,BIL_MEASURE6,
493 BIL_MEASURE8,BIL_MEASURE9,BIL_MEASURE14,BIL_MEASURE15 ,
494 BIL_URL1,
495 DECODE(sumry.salesrep_id, NULL, NULL,'''||l_drill_link||''') BIL_URL2
496 FROM (
497 SELECT /*+ NO_MERGE */ salesrep_id, sales_group_id,
498 SORTORDER,SUM(BIL_MEASURE2) BIL_MEASURE2,SUM(BIL_MEASURE3) BIL_MEASURE3
499 ,SUM(BIL_MEASURE5) BIL_MEASURE5,SUM(BIL_MEASURE6) BIL_MEASURE6
500 ,SUM(BIL_MEASURE8) BIL_MEASURE8,SUM(BIL_MEASURE9) BIL_MEASURE9
501 ,SUM(BIL_MEASURE14) BIL_MEASURE14,SUM(BIL_MEASURE15) BIL_MEASURE15
502 ,BIL_URL1
503 ,NULL BIL_URL2
504 FROM (';
505
506 --Oppty by sales group and sales rep
507 x_custom_sql := x_custom_sql ||'SELECT /*+ leading (cal) */ sumry.salesrep_id, sumry.sales_group_id
508 ,(CASE WHEN sumry.salesrep_id IS NULL THEN 1 ELSE 2 END) SORTORDER
509 ,'||l_sql_stmnt1||
510 ',(CASE WHEN sumry.salesrep_id IS NULL THEN '''||l_url_str||''' ELSE NULL END) BIL_URL1
511 ,NULL BIL_URL2
512 '||l_from1||'
513 '||l_opty_denorm||'
514 '||l_where_clause1||'
515 '||l_product_where_clause;
516 IF l_resource_id IS NOT NULL THEN
517 x_custom_sql := x_custom_sql||' AND sumry.salesrep_id = :l_resource_id';
518 END IF;
519
520 x_custom_sql := x_custom_sql||'
521 GROUP BY (CASE WHEN sumry.salesrep_id IS NULL THEN 1 ELSE 2 END)
522 ,sumry.salesrep_id , sumry.sales_group_id
523 ,(CASE WHEN sumry.salesrep_id IS NULL THEN '''||l_url_str||''' ELSE NULL END) ';
524
525 -- Forecast by sales group and sales rep
526 x_custom_sql := x_custom_sql ||
527 ' UNION ALL
528 SELECT /*+ leading (cal) */ sumry.salesrep_id, sumry.sales_group_id
529 ,(CASE WHEN sumry.salesrep_id IS NULL THEN 1 ELSE 2 END) SORTORDER
530 ,'||l_sql_stmnt2||
531 ',(CASE WHEN sumry.salesrep_id IS NULL THEN '''||l_url_str||''' ELSE NULL END) BIL_URL1
532 ,NULL BIL_URL2
533 '||l_from2||'
534 '||l_denorm||'
535 '||l_where_clause2||'
536 '||l_product_where_clause1;
537 IF l_resource_id IS NOT NULL THEN
538 x_custom_sql := x_custom_sql||' AND sumry.salesrep_id = :l_resource_id';
539 END IF;
540
541 x_custom_sql := x_custom_sql||'
542 GROUP BY (CASE WHEN sumry.salesrep_id IS NULL THEN 1 ELSE 2 END)
543 ,sumry.salesrep_id, sumry.sales_group_id
544 ,(CASE WHEN sumry.salesrep_id IS NULL THEN '''||l_url_str||''' ELSE NULL END) ';
545
546 --booked and recognized by sales group and sales rep
547 x_custom_sql := x_custom_sql ||
548 ' UNION ALL
549 SELECT /*+ leading (cal) */ sumry.resource_id salesrep_id,sumry.sales_grp_id sales_group_id
550 ,(CASE WHEN sumry.resource_id IS NULL THEN 1 ELSE 2 END) SORTORDER
551 ,'||l_sql_stmnt3||
552 ',(CASE WHEN sumry.resource_id IS NULL THEN '''||l_url_str||''' ELSE NULL END) BIL_URL1
553 ,NULL BIL_URL2
554 '||l_from3||'
555 '||l_denorm||'
556 '||l_where_clause3||'
557 '||l_product_where_clause2;
558 IF l_resource_id IS NOT NULL THEN
559 x_custom_sql := x_custom_sql||' AND sumry.resource_id = :l_resource_id';
560 END IF;
561
565 ,(CASE WHEN sumry.resource_id IS NULL THEN '''||l_url_str||''' ELSE NULL END) ';
562 x_custom_sql := x_custom_sql||'
563 GROUP BY (CASE WHEN sumry.resource_id IS NULL THEN 1 ELSE 2 END)
564 , sumry.resource_id, sumry.sales_grp_id
566
567 x_custom_sql := x_custom_sql ||' ) group by salesrep_id, sales_group_id,
568 sortorder, BIL_URL1
569 ) sumry, jtf_rs_groups_tl grptl,jtf_rs_resource_extns_tl restl
570 where grptl.group_id = sumry.sales_group_id
571 AND grptl.language = USERENV(''LANG'')
572 AND restl.language(+) = USERENV(''LANG'')
573 AND restl.resource_id(+) = sumry.salesrep_id ';
574
575
576 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
577 l_ind :=1;
578 l_len:= length(x_custom_sql);
579
580 WHILE l_ind <= l_len LOOP
581 l_str:= substr(x_custom_sql, l_ind, 4000);
582
583 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
584 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
585 MESSAGE => l_str);
586
587 l_ind := l_ind + 4000;
588
589 END LOOP;
590 END IF;
591
592
593 IF l_resource_id IS NULL THEN
594 IF l_prodcat_id = 'All' THEN
595 EXECUTE IMMEDIATE l_insert_stmnt || x_custom_sql
596 USING l_curr_as_of_date
597 , l_prev_date, l_record_type_id, l_record_type_id
598 , l_sg_id_num, l_curr_as_of_date, l_prev_date --Opp
599
600 , l_curr_page_time_id, l_curr_as_of_date
601 , l_prev_page_time_id, l_prev_date, l_bitand_id
602 , l_bitand_id,l_period_type, l_sg_id_num
603 , l_fst_crdt_type, l_fst_crdt_type
604 , l_curr_as_of_date, l_prev_date
605 , l_curr_page_time_id, l_prev_page_time_id --Frcst
606
607 , l_curr_as_of_date, l_prev_date
608 , l_curr_as_of_date, l_prev_date
609 , l_sg_id_num, l_curr_as_of_date
610 , l_prev_date, l_record_type_id, l_record_type_id;
611
612 ELSE
613 EXECUTE IMMEDIATE l_insert_stmnt || x_custom_sql
614 USING l_curr_as_of_date
615 , l_prev_date, l_record_type_id, l_record_type_id
616 , l_sg_id_num, l_curr_as_of_date
617 , l_prev_date, l_prodcat_id --Opp
618
619 , l_curr_page_time_id, l_curr_as_of_date, l_prev_page_time_id
620 , l_prev_date, l_bitand_id,l_bitand_id, l_period_type, l_sg_id_num
621 , l_fst_crdt_type, l_fst_crdt_type, l_curr_as_of_date
622 , l_prev_date, l_curr_page_time_id, l_prev_page_time_id, l_prodcat_id --Frcst
623
624 , l_curr_as_of_date, l_prev_date
625 , l_curr_as_of_date, l_prev_date
626 , l_sg_id_num, l_curr_as_of_date
627 , l_prev_date, l_record_type_id,l_record_type_id,l_prodcat_id;
628 END IF;
629 ELSE
630 IF l_prodcat_id = 'All' THEN
631 EXECUTE IMMEDIATE l_insert_stmnt || x_custom_sql
632 USING l_curr_as_of_date, l_prev_date
633 , l_record_type_id, l_record_type_id,l_sg_id_num, l_curr_as_of_date
634 , l_prev_date,l_resource_id --Opp
635
636 , l_curr_page_time_id, l_curr_as_of_date, l_prev_page_time_id
637 , l_prev_date, l_bitand_id, l_bitand_id,l_period_type, l_sg_id_num
638 , l_fst_crdt_type, l_fst_crdt_type, l_curr_as_of_date
639 , l_prev_date, l_curr_page_time_id, l_prev_page_time_id,l_resource_id --Frcst
640
641 , l_curr_as_of_date, l_prev_date
642 , l_curr_as_of_date, l_prev_date
643 , l_sg_id_num, l_curr_as_of_date
644 , l_prev_date, l_record_type_id, l_record_type_id,l_resource_id;
645
646 ELSE
647 EXECUTE IMMEDIATE l_insert_stmnt || x_custom_sql
648 USING l_curr_as_of_date, l_prev_date
649 , l_record_type_id, l_record_type_id, l_sg_id_num, l_curr_as_of_date
650 , l_prev_date, l_prodcat_id,l_resource_id --Opp
651
652 , l_curr_page_time_id, l_curr_as_of_date, l_prev_page_time_id
653 , l_prev_date, l_bitand_id,l_bitand_id, l_period_type, l_sg_id_num
654 , l_fst_crdt_type, l_fst_crdt_type, l_curr_as_of_date
658 , l_curr_as_of_date, l_prev_date
655 , l_prev_date, l_curr_page_time_id, l_prev_page_time_id, l_prodcat_id,l_resource_id --Frcst
656
657 , l_curr_as_of_date, l_prev_date
659 , l_sg_id_num, l_curr_as_of_date
660 , l_prev_date, l_record_type_id,l_record_type_id,l_prodcat_id,l_resource_id;
661 END IF;
662 END IF;
663
664 COMMIT;
665
666 x_custom_sql := ' SELECT * FROM ('|| l_outer_select ||' FROM
667 (SELECT VIEWBY,VIEWBYID,SORTORDER,SUM(BIL_MEASURE2) BIL_MEASURE2,
668 SUM(BIL_MEASURE3) BIL_MEASURE3
669 ,SUM(BIL_MEASURE5) BIL_MEASURE5,SUM(BIL_MEASURE6) BIL_MEASURE6
670 ,SUM(BIL_MEASURE8) BIL_MEASURE8,SUM(BIL_MEASURE9) BIL_MEASURE9
671 ,SUM(BIL_MEASURE14) BIL_MEASURE14,SUM(BIL_MEASURE15) BIL_MEASURE15, BIL_URL1, BIL_URL2 FROM BIL_BI_RPT_TMP1
672 GROUP BY VIEWBY, VIEWBYID, SORTORDER, BIL_URL1, BIL_URL2) ORDER BY SORTORDER,UPPER(VIEWBY))'|| l_null_rem_clause;
673
674
675 WHEN 'ITEM+ENI_ITEM_VBH_CAT' THEN
676
677 l_cat_assign := bil_bi_util_pkg.getLookupMeaning(p_lookuptype => 'BIL_BI_LOOKUPS'
678 ,p_lookupcode => 'ASSIGN_CATEG');
679
680 l_cat_url := 'pFunctionName=BIL_BI_SLSMGMT_R&pParamIds=Y&VIEW_BY='||l_viewby||'&VIEW_BY_NAME=VIEW_BY_ID';
681 l_inner_select := l_inner_select ||
682 ',DECODE(VIEWBY,'''||l_cat_assign||''',NULL,'''||l_drill_link||''') BIL_URL1 '||
683 ',BIL_URL2 FROM ';
684
685 IF (l_prodcat_id = 'All') THEN
686
687 l_product_where_clause1 := ' AND pcd.top_node_flag = ''Y'' '||
688 ' AND sumry.product_category_id = pcd.id '||
689 ' AND sumry.product_category_id = pcd.parent_id '||
690 ' AND sumry.product_category_id = pcd.child_id ';
691
692 --change following as per Surbhi's proposal?
693
694 l_product_where_clause2 := ' AND pcd.top_node_flag = ''Y''
695 AND pcd.parent_id = sumry.item_category_id
696 AND pcd.child_id = sumry.item_category_id
697 AND sumry.item_category_id = pcd.id
698 AND sumry.cat_top_node_flag = ''Y'' ';
699
700
701 ELSE
702
703 l_product_where_clause1 := ' AND sumry.product_category_id = pcd.child_id '||
704 ' AND pcd.parent_id=:l_prodcat_id AND pcd.child_id = pcd.id AND '||
705 ' NOT((assign_to_cat = 0 AND pcd.child_id = pcd.parent_id)) ' ;
706
707 l_product_where_clause2 := ' AND pcd.parent_id = :l_prodcat
708 AND pcd.id = pcd.child_id
709 AND sumry.item_category_id = pcd.child_id
710 AND sumry.item_category_id = pcd.id
711 AND ((pcd.child_id <> pcd.parent_id AND pcd.leaf_node_flag = ''N'')
712 OR pcd.leaf_node_flag = ''Y'') ';
713 END IF;
714
715
716 l_sumry1 := 'BIL_BI_OPTY_PG_MV';
717 l_sumry2 := 'BIL_BI_FST_PG_MV';
718 l_sumry3 := 'ISC_DBI_SCR_002_MV';
719
720 l_from1 := ' FROM '|| l_sumry1 ||' sumry, '|| l_fii_struct ||' cal ';
721 l_from2 := ' FROM '|| l_sumry2 ||' sumry, '|| l_fii_struct ||' cal ';
722 l_from3 := l_fii_struct ||' cal, '|| l_sumry3 ||' sumry ';
723
724 IF l_prodcat_id = 'All' THEN
725
726 l_unassigned_value:= bil_bi_util_pkg.GET_UNASSIGNED_PC;
727
728 --Opportunity by prod cat
729 x_custom_sql := l_inner_select ||
730
731 ' (select decode(opty.viewbyid, -1,:l_unassigned_value,
732 mtl.DESCRIPTION || '' ('' || mtl.CATEGORY_CONCAT_SEGS ||'')'') VIEWBY, VIEWBYID, SORTORDER,BIL_MEASURE2,
733 BIL_MEASURE3,
734 BIL_MEASURE5,
735 BIL_MEASURE6,
736 BIL_MEASURE8,
737 BIL_MEASURE9,
738 BIL_MEASURE14,
739 BIL_MEASURE15,
740 NULL BIL_URL1,
741 DECODE(opty.viewbyid,''-1'',NULL,'''||l_cat_url||''') BIL_URL2 '||
742 ' from (
743 SELECT /*+ leading (cal) */
744 pcd.parent_id VIEWBYID
745 ,1 SORTORDER
746 ,'||l_sql_stmnt1||
747 l_from1 ||' '||l_opty_denorm||' '|| l_where_clause4 ||
751 mtl_categories_v mtl '||
748 ' '||l_product_where_clause||'
749 GROUP BY pcd.parent_id
750 ) opty,
752 ' WHERE mtl.category_id (+) = opty.viewbyid';
753
754
755 --Forecast by prod cat
756 x_custom_sql := x_custom_sql ||' UNION ALL
757 SELECT /*+ leading (cal) */ pcd.value VIEWBY
758 ,pcd.id VIEWBYID
759 ,1 SORTORDER
760 ,'||l_sql_stmnt4||
761 ',NULL BIL_URL1
762 ,DECODE(pcd.id, ''-1'',NULL, '''||l_cat_url||''') BIL_URL2 '||
763 l_from2 ||' '|| l_denorm ||' '|| l_where_clause5 ||' '|| l_product_where_clause1
764 ||' GROUP BY pcd.value, pcd.id';
765
766 --Booked and recognized by prod cat
767 x_custom_sql := x_custom_sql ||' UNION ALL
768 SELECT /*+ leading (cal) */ pcd.value VIEWBY
769 ,pcd.id VIEWBYID
770 ,1 SORTORDER
771 ,'||l_sql_stmnt3||
772 ',NULL BIL_URL1
773 ,DECODE(pcd.id, ''-1'',NULL, '''||l_cat_url||''') BIL_URL2
774 FROM '||
775 l_from3 ||' '|| l_denorm ||' '|| l_where_clause6 ||' '|| l_product_where_clause2
776 ||' GROUP BY pcd.value, pcd.id';
777
778 x_custom_sql := x_custom_sql ||') GROUP BY SORTORDER,VIEWBYID,VIEWBY,BIL_URL1,BIL_URL2 ORDER BY SORTORDER, VIEWBY';
779
780
781 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
782 l_ind :=1;
783 l_len:= length(x_custom_sql);
784
785 WHILE l_ind <= l_len LOOP
786 l_str:= substr(x_custom_sql, l_ind, 4000);
787
788 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
789 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
790 MESSAGE => l_str);
791
792 l_ind := l_ind + 4000;
793
794 END LOOP;
795 END IF;
796
797
798 if(l_resource_id is not null) then
799 EXECUTE IMMEDIATE l_insert_stmnt||x_custom_sql
800 USING l_unassigned_value, l_curr_as_of_date,l_prev_date
801 ,l_record_type_id, l_record_type_id
802 ,l_sg_id_num,l_resource_id,l_sg_id_num,l_curr_as_of_date
803 ,l_prev_date,'Y' --Opp
804
805 ,l_curr_page_time_id, l_curr_as_of_date, l_prev_page_time_id
806 ,l_prev_date,l_bitand_id, l_bitand_id,l_period_type
807 ,l_sg_id_num,l_resource_id,l_sg_id_num
808 ,l_fst_crdt_type, l_fst_crdt_type, l_curr_as_of_date
809 ,l_prev_date, l_curr_page_time_id, l_prev_page_time_id --Forecast
810
811 ,l_curr_as_of_date, l_prev_date
812 ,l_curr_as_of_date, l_prev_date
813 ,l_sg_id_num,l_resource_id,l_sg_id_num,l_curr_as_of_date
814 ,l_prev_date,l_record_type_id,l_record_type_id;
815 COMMIT;
816 else
817 if (l_parent_sg_id_num is not null) then
818 EXECUTE IMMEDIATE l_insert_stmnt||x_custom_sql
819 USING l_unassigned_value, l_curr_as_of_date,l_prev_date
820 ,l_record_type_id, l_record_type_id
821 ,l_sg_id_num,l_parent_sg_id_num,l_curr_as_of_date
822 ,l_prev_date,'Y' --Opp
823
824 ,l_curr_page_time_id, l_curr_as_of_date, l_prev_page_time_id
825 ,l_prev_date, l_bitand_id, l_bitand_id,l_period_type
826 ,l_sg_id_num,l_parent_sg_id_num ,l_fst_crdt_type, l_fst_crdt_type, l_curr_as_of_date
827 ,l_prev_date, l_curr_page_time_id, l_prev_page_time_id --Forecast
828
829 ,l_curr_as_of_date, l_prev_date
830 ,l_curr_as_of_date, l_prev_date
831 ,l_sg_id_num,l_parent_sg_id_num,l_curr_as_of_date
832 ,l_prev_date,l_record_type_id,l_record_type_id;
833
834 COMMIT;
835 else
836 EXECUTE IMMEDIATE l_insert_stmnt||x_custom_sql
837 USING l_unassigned_value, l_curr_as_of_date,l_prev_date
838 ,l_record_type_id, l_record_type_id
839 ,l_sg_id_num,l_curr_as_of_date
840 ,l_prev_date,'Y' --Opp
841
842 ,l_curr_page_time_id, l_curr_as_of_date, l_prev_page_time_id
846
843 ,l_prev_date, l_bitand_id, l_bitand_id,l_period_type
844 ,l_sg_id_num,l_fst_crdt_type, l_fst_crdt_type, l_curr_as_of_date
845 ,l_prev_date, l_curr_page_time_id, l_prev_page_time_id --Forecast
847 ,l_curr_as_of_date, l_prev_date
848 ,l_curr_as_of_date, l_prev_date
849 ,l_sg_id_num,l_curr_as_of_date
850 ,l_prev_date,l_record_type_id,l_record_type_id;
851 COMMIT;
852 end if;
853 end if;
854
855 x_custom_sql := ' SELECT * FROM ('|| l_outer_select ||' FROM
856 (SELECT VIEWBY,VIEWBYID,SORTORDER,SUM(BIL_MEASURE2) BIL_MEASURE2,
857 SUM(BIL_MEASURE3) BIL_MEASURE3
858 ,SUM(BIL_MEASURE5) BIL_MEASURE5,SUM(BIL_MEASURE6) BIL_MEASURE6
859 ,SUM(BIL_MEASURE8) BIL_MEASURE8,SUM(BIL_MEASURE9) BIL_MEASURE9
860 ,SUM(BIL_MEASURE14) BIL_MEASURE14,SUM(BIL_MEASURE15) BIL_MEASURE15, BIL_URL1, BIL_URL2 FROM BIL_BI_RPT_TMP1
861 GROUP BY VIEWBY, VIEWBYID, SORTORDER, BIL_URL1, BIL_URL2) ORDER BY SORTORDER,UPPER(VIEWBY))'|| l_null_rem_clause;
862
863
864 ELSE -- prodcat selected
865
866 -- l_cat_assign := bil_bi_util_pkg.getLookupMeaning(p_lookuptype => 'BIL_BI_LOOKUPS'
867 -- ,p_lookupcode => 'ASSIGN_CATEG');
868
869
870 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
871
872 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
873 MODULE => g_pkg ||l_proc || ' Product cat is not all ',
874 MESSAGE => 'Product cat '||l_prodcat_id);
875
876 END IF;
877
878
879 --forecast with prodcat selected
880 x_custom_sql := l_inner_select;
881 x_custom_sql := x_custom_sql||
882 ' (SELECT /*+ leading (cal) */ decode(pcd.parent_id,pcd.child_id,'||
883 ' decode(sumry.assign_to_cat,0,pcd.value,:l_cat_assign), '||
884 ' pcd.value) VIEWBY '||
885 ',pcd.id VIEWBYID'||
886 ', decode(pcd.parent_id,pcd.id, 1, 2) sortorder,'
887 ||l_sql_stmnt4||
888 ' , NULL BIL_URL1
889 ,DECODE(pcd.parent_id, pcd.child_id, NULL, '''||l_cat_url||''') BIL_URL2 '||
890 l_from2 ||' '|| l_denorm || l_where_clause5 || l_product_where_clause1||
891 ' GROUP BY decode(pcd.parent_id,pcd.child_id,'||
892 ' decode(sumry.assign_to_cat,0,pcd.value,:l_cat_assign), '||
893 ' pcd.value),pcd.id,decode(pcd.parent_id,pcd.id, 1, 2),
894 DECODE(pcd.parent_id, pcd.child_id, NULL, '''||l_cat_url||''') ';
895
896 x_custom_sql := x_custom_sql ||') GROUP BY SORTORDER,VIEWBYID,VIEWBY,BIL_URL1,BIL_URL2 ';
897
898
899 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
900 l_ind :=1;
901 l_len:= length(x_custom_sql);
902
903 WHILE l_ind <= l_len LOOP
904 l_str:= substr(x_custom_sql, l_ind, 4000);
905
906 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
907 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
908 MESSAGE => l_str);
909
910 l_ind := l_ind + 4000;
911
912 END LOOP;
913 END IF;
914
915
916 if(l_resource_id is not null) then
917 EXECUTE IMMEDIATE l_insert_stmnt||x_custom_sql
918 USING l_cat_assign,l_curr_page_time_id, l_curr_as_of_date
919 , l_prev_page_time_id, l_prev_date
920 , l_bitand_id, l_bitand_id, l_period_type
921 , l_sg_id_num,l_resource_id,l_sg_id_num,l_fst_crdt_type, l_fst_crdt_type, l_curr_as_of_date
922 , l_prev_date, l_curr_page_time_id, l_prev_page_time_id
923 , l_prodcat_id,l_cat_assign --Frcst
924 ;
925 COMMIT;
926 else
927 if (l_parent_sg_id_num is not null) then
928 EXECUTE IMMEDIATE l_insert_stmnt||x_custom_sql
929 USING l_cat_assign,l_curr_page_time_id, l_curr_as_of_date
930 , l_prev_page_time_id, l_prev_date
931 , l_bitand_id, l_bitand_id, l_period_type
932 , l_sg_id_num,l_parent_sg_id_num, l_fst_crdt_type, l_fst_crdt_type, l_curr_as_of_date
933 , l_prev_date, l_curr_page_time_id, l_prev_page_time_id
934 , l_prodcat_id,l_cat_assign --Frcst
935 ;
936 COMMIT;
937 else
938 EXECUTE IMMEDIATE l_insert_stmnt||x_custom_sql
942 ,l_sg_id_num,l_fst_crdt_type, l_fst_crdt_type, l_curr_as_of_date
939 USING l_cat_assign,l_curr_page_time_id, l_curr_as_of_date
940 , l_prev_page_time_id, l_prev_date
941 , l_bitand_id, l_bitand_id, l_period_type
943 , l_prev_date, l_curr_page_time_id, l_prev_page_time_id
944 , l_prodcat_id,l_cat_assign --Frcst
945 ;
946 COMMIT;
947 end if;
948 end if;
949
950 --Oppty with prodcat selected
951 x_custom_sql := l_inner_select;
952 x_custom_sql := x_custom_sql ||' (SELECT /*+ leading (cal) */
953 DECODE(pcd.parent_id, pcd.id, decode(sumry.item_id, ''-1'', :l_cat_assign, pcd.value), pcd.value) VIEWBY
954 ,pcd.id VIEWBYID
955 ,DECODE(pcd.parent_id, pcd.id, decode(sumry.item_id, ''-1'', 1, 2), 2) SORTORDER '||
956 ','||l_sql_stmnt1||
957 ',NULL BIL_URL1
958 ,DECODE(pcd.parent_id, pcd.id, NULL, '''||l_cat_url||''') BIL_URL2 '||
959 l_from1 ||' '|| l_opty_denorm ||' '|| l_where_clause4 ||' '|| l_product_where_clause||
960 ' GROUP BY DECODE(pcd.parent_id, pcd.id, decode(sumry.item_id, ''-1'', :l_cat_assign, pcd.value), pcd.value),pcd.id,
961 DECODE(pcd.parent_id, pcd.id, decode(sumry.item_id, ''-1'', 1, 2), 2),
962 DECODE(pcd.parent_id, pcd.id, NULL, '''||l_cat_url||''')';
963
964 --Booked and recognized with prodcat selected
965 x_custom_sql := x_custom_sql ||
966 ' UNION ALL
967 SELECT pcd.value VIEWBY
968 ,pcd.id VIEWBYID
969 ,2 SORTORDER,'||l_sql_stmnt3||
970 ',NULL BIL_URL1
971 ,DECODE(pcd.parent_id, pcd.id, NULL, '''||l_cat_url||''') BIL_URL2
972 FROM ENI_ITEM_PROD_CAT_LOOKUP_V pcd, ' || l_from3 ||' '|| l_where_clause6 ||' '|| l_product_where_clause2
973 ||' GROUP BY 2,
974 pcd.value,pcd.id,DECODE(pcd.parent_id, pcd.id, NULL, '''||l_cat_url||''') ';
975
976 x_custom_sql := x_custom_sql ||') GROUP BY SORTORDER,VIEWBYID,VIEWBY,BIL_URL1,BIL_URL2 ';
977
978
979 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
980 l_ind :=1;
981 l_len:= length(x_custom_sql);
982
983 WHILE l_ind <= l_len LOOP
984 l_str:= substr(x_custom_sql, l_ind, 4000);
985
986 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
987 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
988 MESSAGE => l_str);
989
990 l_ind := l_ind + 4000;
991
992 END LOOP;
993 END IF;
994
995 if(l_resource_id is not null) then
996 EXECUTE IMMEDIATE l_insert_stmnt||x_custom_sql
997 USING l_cat_assign,l_curr_as_of_date, l_prev_date
998 , l_record_type_id, l_record_type_id
999 , l_sg_id_num,l_resource_id,l_sg_id_num, l_curr_as_of_date
1000 , l_prev_date,l_prodcat_id,l_cat_assign --Oppty
1001
1002 , l_curr_as_of_date, l_prev_date
1003 , l_curr_as_of_date, l_prev_date
1004 , l_sg_id_num,l_resource_id,l_sg_id_num
1005 ,l_curr_as_of_date
1006 , l_prev_date, l_record_type_id, l_record_type_id,l_prodcat_id;
1007 COMMIT;
1008 else
1009 if (l_parent_sg_id_num is not null) then
1010 EXECUTE IMMEDIATE l_insert_stmnt||x_custom_sql
1011 USING l_cat_assign, l_curr_as_of_date, l_prev_date
1012 , l_record_type_id, l_record_type_id
1013 , l_sg_id_num,l_parent_sg_id_num, l_curr_as_of_date
1014 , l_prev_date,l_prodcat_id,l_cat_assign --Oppty
1015
1016 , l_curr_as_of_date, l_prev_date
1017 , l_curr_as_of_date, l_prev_date
1018 , l_sg_id_num,l_parent_sg_id_num
1019 , l_curr_as_of_date
1020 , l_prev_date, l_record_type_id, l_record_type_id,l_prodcat_id;
1021 COMMIT;
1022 else
1023 EXECUTE IMMEDIATE l_insert_stmnt||x_custom_sql
1024 USING l_cat_assign, l_curr_as_of_date, l_prev_date
1025 , l_record_type_id, l_record_type_id
1026 , l_sg_id_num,l_curr_as_of_date
1027 , l_prev_date,l_prodcat_id,l_cat_assign --Oppty
1028
1032 , l_prev_date, l_record_type_id, l_record_type_id,l_prodcat_id;
1029 , l_curr_as_of_date, l_prev_date
1030 , l_curr_as_of_date, l_prev_date
1031 , l_sg_id_num,l_curr_as_of_date
1033
1034
1035 COMMIT;
1036 end if;
1037 end if;
1038
1039
1040 IF bil_bi_util_pkg.isleafnode(l_prodcat_id) THEN
1041 x_custom_sql := 'SELECT * FROM ('|| l_outer_select ||
1042 ' FROM ('||
1043 ' SELECT VIEWBY, VIEWBYID, sortorder,BIL_MEASURE2,
1044 BIL_MEASURE3, BIL_MEASURE5,BIL_MEASURE6,
1045 BIL_MEASURE8, BIL_MEASURE9, '||
1046 'BIL_MEASURE14,BIL_MEASURE15, BIL_URL1, BIL_URL2 '||
1047 ' FROM BIL_BI_RPT_TMP1 '||
1048 ' WHERE SORTORDER = 1 '||
1049 ' UNION ALL '||
1050 ' SELECT VIEWBY, VIEWBYID, ''2'' SORTORDER, BIL_MEASURE2,
1051 BIL_MEASURE3, BIL_MEASURE5,BIL_MEASURE6,
1052 BIL_MEASURE8, BIL_MEASURE9, '||
1053 'BIL_MEASURE14,BIL_MEASURE15, '||
1054 'DECODE(viewby,'''||l_cat_assign||''',NULL,'''||l_drill_link||''') BIL_URL1, ' ||
1055 ' NULL BIL_URL2 '||
1056 ' FROM ('||
1057 ' SELECT SUM(RN) RN, MAX(VIEWBY) VIEWBY, MAX(VIEWBYID) VIEWBYID, '||
1058 ' SUM(BIL_MEASURE2) BIL_MEASURE2, SUM(BIL_MEASURE3) BIL_MEASURE3, '||
1059 ' SUM(BIL_MEASURE5) BIL_MEASURE5, SUM(BIL_MEASURE6) BIL_MEASURE6, '||
1060 ' SUM(BIL_MEASURE8) BIL_MEASURE8, SUM(BIL_MEASURE9) BIL_MEASURE9, '||
1061 ' SUM(BIL_MEASURE14) BIL_MEASURE14, SUM(BIL_MEASURE15) BIL_MEASURE15 '||
1062 ' FROM ('||
1063 ' SELECT ROWNUM RN, VIEWBY, VIEWBYID, TRUNC(BIL_MEASURE2,3) BIL_MEASURE2,'||
1064 ' TRUNC(BIL_MEASURE3,3) BIL_MEASURE3, BIL_MEASURE5, BIL_MEASURE6,TRUNC(BIL_MEASURE8,3) BIL_MEASURE8, '||
1065 ' TRUNC(BIL_MEASURE9,3) BIL_MEASURE9, TRUNC(BIL_MEASURE14,3) BIL_MEASURE14, TRUNC(BIL_MEASURE15,3) BIL_MEASURE15 '||
1066 ' FROM BIL_BI_RPT_TMP1 '||
1067 ' WHERE SORTORDER <> 1 '||
1068 ' UNION ALL '||
1069 ' SELECT -ROWNUM RN, NULL VIEWBY, VIEWBYID, NULL BIL_MEASURE2,'||
1070 ' NULL BIL_MEASURE3, NULL BIL_MEASURE5, NULL BIL_MEASURE6,-TRUNC(BIL_MEASURE8,3) BIL_MEASURE8, '||
1071 ' -TRUNC(BIL_MEASURE9,3) BIL_MEASURE9, -TRUNC(BIL_MEASURE14,3) BIL_MEASURE14, -TRUNC(BIL_MEASURE15,3) BIL_MEASURE15 '||
1072 ' FROM BIL_BI_RPT_TMP1 '||
1073 ' WHERE SORTORDER = 1 '||
1074 ' ) '||
1075 ' ) '||
1076 ' WHERE NOT(RN = 0 AND BIL_MEASURE2 = 0 AND BIL_MEASURE3 = 0 '||
1077 ' AND BIL_MEASURE5 = 0 AND BIL_MEASURE6 = 0 AND BIL_MEASURE8 = 0'||
1078 ' AND BIL_MEASURE9 = 0 AND BIL_MEASURE14 = 0 AND BIL_MEASURE15 = 0 ) '||
1079 ' ) ORDER BY SORTORDER, UPPER(VIEWBY)'||
1080 ') '|| l_null_rem_clause;
1081
1082 ELSE
1083 x_custom_sql := ' SELECT * FROM ('|| l_outer_select ||' FROM
1084 (SELECT VIEWBY,VIEWBYID,SORTORDER,SUM(BIL_MEASURE2) BIL_MEASURE2,
1085 SUM(BIL_MEASURE3) BIL_MEASURE3
1086 ,SUM(BIL_MEASURE5) BIL_MEASURE5,SUM(BIL_MEASURE6) BIL_MEASURE6
1087 ,SUM(BIL_MEASURE8) BIL_MEASURE8,SUM(BIL_MEASURE9) BIL_MEASURE9
1088 ,SUM(BIL_MEASURE14) BIL_MEASURE14,SUM(BIL_MEASURE15) BIL_MEASURE15, BIL_URL1, BIL_URL2 FROM BIL_BI_RPT_TMP1
1089 GROUP BY VIEWBY, VIEWBYID, SORTORDER, BIL_URL1, BIL_URL2) ORDER BY SORTORDER,UPPER(VIEWBY))'|| l_null_rem_clause;
1090
1091
1092 END IF;
1093
1094 END IF; -- End category selected check
1095 END CASE;
1096
1097
1098 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
1099 l_ind :=1;
1100 l_len:= length(x_custom_sql);
1104
1101
1102 WHILE l_ind <= l_len LOOP
1103 l_str:= substr(x_custom_sql, l_ind, 4000);
1105 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
1106 MODULE => g_pkg || l_proc ||'.'|| 'Final Query to PMV ',
1107 MESSAGE => l_str);
1108
1109 l_ind := l_ind + 4000;
1110
1111 END LOOP;
1112 END IF;
1113
1114
1115 x_custom_attr := BIS_QUERY_ATTRIBUTES_TBL();
1116 l_custom_rec := BIS_PMV_PARAMETERS_PUB.INITIALIZE_QUERY_TYPE;
1117
1118 l_bind_ctr := 1;
1119 l_custom_rec.attribute_name :=':l_sg_id_num';
1120 l_custom_rec.attribute_value := l_sg_id_num;
1121 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
1122 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
1123 x_custom_attr.Extend();
1124 x_custom_attr(l_bind_ctr) := l_custom_rec;
1125
1126 ELSE --No valid parameters
1127 BIL_BI_UTIL_PKG.get_default_query(p_regionname => l_region_id
1128 ,x_sqlstr => x_custom_sql);
1129
1130 END IF;
1131
1132
1133 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
1134
1135 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_PROCEDURE,
1136 MODULE => g_pkg || l_proc || 'End',
1137 MESSAGE => 'End of Procedure '||l_proc);
1138
1139 END IF;
1140
1141 EXCEPTION
1142 WHEN OTHERS THEN
1143
1144 IF FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
1145
1146 fnd_message.set_name('FND','SQL_PLSQL_ERROR');
1147 fnd_message.set_token('ERROR' ,SQLCODE);
1148 fnd_message.set_token('REASON',SQLERRM);
1149
1150 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_UNEXPECTED,
1151 MODULE => g_pkg || l_proc || 'proc_error',
1152 MESSAGE => fnd_message.get );
1153
1154 END IF;
1155
1156 RAISE;
1157
1158 END BIL_BI_SALES_MGMT_SUMRY;
1159
1160
1161
1162
1163 /*******************************************************************************
1164 * Name : Procedure BIL_BI_OPPTY_OVERVIEW
1165 * Author : W.Mirza
1166 * Date : August 16, 2002
1167 * Purpose : Opportunity Overview Sales Intelligence report and charts.
1168 *
1169 * Copyright (c) 2002 Oracle Corporation
1170 *
1171 * Parameters
1172 * p_page_parameter_tbl PL/SQL table containing dimension parameters
1173 * p_bis_map_tbl PL/SQL table containing sql query
1174 *
1175 *
1176 * Date Author Description
1177 * ---- ------ -----------
1178 * 08/16/02 wmirza Initial version
1179 * 10/14/02 wmirza Added date check to CASE stmts in query.
1180 * 10/27/02 spraturi Converted procedure to use temporary tables.
1181 * 11/15/02 wmirza Added debug blocks and NOCOPY hint.
1182 *
1183 * 09/08/03 oanandam DBI 6.1 Initial Version
1184 * 09/02/04 ppatil DBI 7.0 Initial Version
1185 * 11/02/04 ppatil Open Count Related changes.
1186 * 26 Nov 2004 hrpandey Drill Down to Oppty Line Detail report
1187 ******************************************************************************/
1188 PROCEDURE BIL_BI_OPPTY_OVERVIEW( p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL
1189 ,x_custom_sql OUT NOCOPY VARCHAR2
1190 ,x_custom_attr OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL )
1191 IS
1192
1193 l_period_type VARCHAR2(50);
1194 l_sg_id VARCHAR2(50);
1195 l_resource_id VARCHAR2(50);
1196 l_conv_rate_selected VARCHAR2(50);
1197 l_curr_page_time_id NUMBER;
1198 l_prev_page_time_id NUMBER;
1199 l_custom_rec BIS_QUERY_ATTRIBUTES;
1200 l_region_id VARCHAR2(50);
1201 l_comp_type VARCHAR2(50);
1202 l_parameter_valid BOOLEAN;
1203 l_bitand_id VARCHAR2(50);
1204 l_calendar_id VARCHAR2(50);
1205 l_curr_as_of_date DATE;
1206 l_prev_date DATE;
1207 l_page_period_type VARCHAR2(50);
1208 l_bis_sysdate DATE;
1209 l_fii_struct VARCHAR2(50);
1210 l_record_type_id NUMBER;
1211 l_sql_error_msg VARCHAR2(1000);
1212 l_sql_error_desc VARCHAR2(5000);
1213 l_sg_id_num NUMBER;
1214 l_fst_category VARCHAR2(50);
1215 l_fst_crdt_type VARCHAR2(50);
1216 l_debug_mode VARCHAR2(50);
1217 l_rpt_str VARCHAR2(80);
1218 l_viewby VARCHAR2(80) ;
1219 l_bind_ctr NUMBER;
1220 l_inner_where_clause VARCHAR2(1000);
1221 l_inner_where_clause1 VARCHAR2(1000);
1222 l_inner_where_clause2 VARCHAR2(1000);
1223 l_inner_where_clause3 VARCHAR2(1000);
1224 l_null_rem_where_clause VARCHAR2(4000);
1225 l_outer_select VARCHAR2(8000);
1226 l_inner_select VARCHAR2(8000);
1227 l_inner_select1 VARCHAR2(8000);
1231 l_custom_sql VARCHAR2(32000);
1228 l_inner_select2 VARCHAR2(8000);
1229 l_inner_select3 VARCHAR2(8000);
1230
1232 l_custom_sql1 VARCHAR2(32000);
1233 l_using VARCHAR2(10000);
1234 l_insert_stmnt VARCHAR2(8000);
1235 l_prodcat_id VARCHAR2(20);
1236 l_productcat_id VARCHAR2(20);
1237 l_product_where_clause VARCHAR2(1000);
1238
1239 l_sumry VARCHAR2(50);
1240 l_denorm VARCHAR2(100);
1241 l_url VARCHAR2(1000);
1242 l_cat_assign VARCHAR2(1000);
1243 l_productcat_cl VARCHAR2(500);
1244 l_product_cl VARCHAR2(500);
1245 l_cat_url VARCHAR2(500);
1246 l_prod_url VARCHAR2(500);
1247 l_sumry1 VARCHAR2(50);
1248 l_sumry2 VARCHAR2(50);
1249 l_url_str VARCHAR2(1000);
1250 l_cat_denorm VARCHAR2(50);
1251 l_from1 VARCHAR2(1000);
1252 l_from2 VARCHAR2(1000);
1253
1254 l_item VARCHAR2(100);
1255 l_snap_date DATE;
1256 l_proc VARCHAR2(100);
1257
1258 l_parent_sales_group_id NUMBER;
1259 l_yes VARCHAR2(1);
1260 l_parent_sls_grp_where_clause VARCHAR2(1000);
1261
1262 l_unassigned_value VARCHAR2(50);
1263 l_select VARCHAR2(4000);
1264 l_pc_sel VARCHAR2(500);
1265 l_pc_grp_by VARCHAR2(500);
1266 l_currency_suffix VARCHAR2(5);
1267 l_drill_link varchar2(4000);
1268
1269 l_ind NUMBER;
1270 l_str VARCHAR2(4000);
1271 l_len NUMBER;
1272
1273 l_prev_amt VARCHAR2(1000);
1274 l_column_type VARCHAR2(1000);
1275 l_snapshot_date DATE;
1276 l_open_mv_new VARCHAR2(1000);
1277 l_open_mv_new1 VARCHAR2(1000);
1278 l_prev_snap_date DATE;
1279 l_pipe_select1 varchar2(4000);
1280 l_pipe_select2 varchar2(4000);
1281 l_pipe_select3 varchar2(4000);
1282 l_inner_where_pipe varchar2(4000);
1283
1284
1285 BEGIN
1286 g_pkg := 'bil.patch.115.sql.BIL_BI_SALES_MGMT_RPTS_PKG.';
1287 l_region_id:= 'BIL_BI_OPPTY_OVERVIEW';
1288 l_parameter_valid:= FALSE;
1289 l_proc := 'BIL_BI_OPPTY_OVERVIEW.';
1290 l_yes := 'Y';
1291 g_sch_name := 'BIL';
1292
1293
1294 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
1295
1296 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_PROCEDURE,
1297 MODULE => g_pkg || l_proc || 'begin',
1298 MESSAGE => 'Start of Procedure '|| l_proc);
1299
1300 END IF;
1301
1302
1303 x_custom_attr := BIS_QUERY_ATTRIBUTES_TBL();
1304 l_custom_rec := BIS_PMV_PARAMETERS_PUB.INITIALIZE_QUERY_TYPE;
1305 BIL_BI_UTIL_PKG.GET_PAGE_PARAMS(p_page_parameter_tbl => p_page_parameter_tbl
1306 ,p_region_id => l_region_id
1307 ,x_period_type => l_period_type
1308 ,x_conv_rate_selected => l_conv_rate_selected
1309 ,x_sg_id => l_sg_id
1310 ,x_parent_sg_id => l_parent_sales_group_id
1311 ,x_resource_id => l_resource_id
1312 ,x_prodcat_id => l_prodcat_id
1313 ,x_curr_page_time_id => l_curr_page_time_id
1314 ,x_prev_page_time_id => l_prev_page_time_id
1315 ,x_comp_type => l_comp_type
1316 ,x_parameter_valid => l_parameter_valid
1317 ,x_as_of_date => l_curr_as_of_date
1318 ,x_page_period_type => l_page_period_type
1319 ,x_prior_as_of_date => l_prev_date
1320 ,x_record_type_id => l_record_type_id
1321 ,x_viewby => l_viewby );
1322
1323 /*
1324 bil_bi_util_pkg.get_latest_snap_date(p_page_parameter_tbl => p_page_parameter_tbl
1325 ,p_as_of_date => l_curr_as_of_date
1326 ,p_period_type => NULL
1327 ,x_snapshot_date => l_snap_date);
1328 */
1329
1330
1331 IF l_parameter_valid THEN
1332 --retrieve 'Item unassigned' message here. We should be retireving from Message dicts?
1333 l_cat_assign:=FND_MESSAGE.GET_STRING('BIL', 'BIL_BI_ASSIGN_CATEGORY');
1334
1335
1336 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
1337
1338 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
1339 MODULE => g_pkg || l_proc,
1340 MESSAGE => ' l_cat_assign is '||l_cat_assign );
1341
1342
1343 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
1347
1344 MODULE => g_pkg || l_proc,
1345 MESSAGE => 'Prod cat is '||nvl(l_prodcat_id, 0)||' Product is'||
1346 ' Lang '||USERENV('LANG'));
1348 END IF;
1349
1350
1351 IF l_conv_rate_selected = 0 THEN
1352 l_currency_suffix := '_s';
1353 ELSE
1354 l_currency_suffix := '';
1355 END IF;
1356
1357 --Not sure what PMV returns for 'All', as of now it returns NULL, so convert it to 'All'.
1358 IF l_prodcat_id IS NULL THEN
1359 l_prodcat_id := 'All';
1360 END IF;
1361 BIL_BI_UTIL_PKG.GET_GLOBAL_CONTS( x_bitand_id => l_bitand_id
1362 ,x_calendar_id => l_calendar_id
1363 ,x_curr_date => l_bis_sysdate
1364 ,x_fii_struct => l_fii_struct );
1365
1366
1367 l_sg_id_num := TO_NUMBER(REPLACE(l_sg_id, ''''));
1368 l_bitand_id := TO_NUMBER(REPLACE(l_bitand_id, ''''));
1369 l_calendar_id := TO_NUMBER(REPLACE(l_calendar_id, ''''));
1370 l_period_type := TO_NUMBER(REPLACE(l_period_type , ''''));
1371 l_prodcat_id := replace(l_prodcat_id,'''','');
1372
1373 l_rpt_str:='BIL_BI_OPOVER_R';
1374
1375
1376 -- Get the Drill Link to the Opty Line Detail Report
1377
1378 l_drill_link := bil_bi_util_pkg.get_drill_links( p_view_by => l_viewby,
1379 p_salesgroup_id => l_sg_id,
1380 p_resource_id => l_resource_id );
1381
1382 /* Get the Prefix for the Open amt based upon Period Type and Compare To Params */
1383
1384
1385 l_prev_amt := BIL_BI_UTIL_PKG.GET_PIPE_COL_NAMES(
1386 p_period_type => l_page_period_type ,
1387 p_compare_to => l_comp_type,
1388 p_column_type => 'O',
1389 p_curr_suffix => l_currency_suffix
1390 );
1391
1392
1393 /* Use the BIL_BI_UTIL_PKG.GET_PIPE_MV proc to get the MV name and snap date for Pipeline/Open Amts. */
1394
1395
1396 BIL_BI_UTIL_PKG.GET_PIPE_MV(
1397 p_asof_date => l_curr_as_of_date ,
1398 p_period_type => l_page_period_type ,
1399 p_compare_to => l_comp_type ,
1400 p_prev_date => l_prev_date,
1401 p_page_parameter_tbl => p_page_parameter_tbl,
1402 x_pipe_mv => l_open_mv_new ,
1403 x_snapshot_date => l_snapshot_date ,
1404 x_prev_snap_date => l_prev_snap_date
1405 );
1406
1407
1408 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
1409
1410 l_sql_error_desc := 'l_viewby => '|| l_viewby||', '||
1411 'l_curr_page_time_id => '|| l_curr_page_time_id ||', ' ||
1412 'l_prev_page_time_id => '|| l_prev_page_time_id ||', ' ||
1413 'l_curr_as_of_date => '|| l_curr_as_of_date ||', ' ||
1414 'l_prev_date => '|| l_prev_date ||', ' ||
1415 'l_conv_rate_selected => '|| l_conv_rate_selected ||', ' ||
1416 'l_bitand_id => '|| l_bitand_id ||', ' ||
1417 'l_period_type => '|| l_period_type ||', ' ||
1418 'l_sg_id => '|| l_sg_id ||', ' ||
1419 'l_resource_id => '|| l_resource_id ||', ' ||
1420 'l_bis_sysdate => '|| l_bis_sysdate ||', ' ||
1421 'l_record_type_id => '|| l_record_type_id ||', ' ||
1422 'l_calendar_id => '|| l_calendar_id;
1423
1424
1425 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
1426 MODULE => g_pkg || l_proc,
1427 MESSAGE => 'Parameters =>'||l_sql_error_desc);
1428
1429 END IF;
1430
1431
1432
1433
1434
1435 --
1436 /*** Query column mapping ***********************************************************************
1437 * Internal Name Grand Total Region Item Name
1438 * BIL_MEASURE1 BIL_MEASURE35 Total Opportunity Count
1439 * BIL_MEASURE2 BIL_MEASURE36 Total Opportunity
1440 * BIL_MEASURE3 BIL_MEASURE37 Prior Total Opportunity
1441 * BIL_MEASURE4 BIL_MEASURE38 Total Opportunity Change
1442 * BIL_MEASURE5 BIL_MEASURE39 Won Count
1443 * BIL_MEASURE6 BIL_MEASURE40 Won
1444 * BIL_MEASURE7 BIL_MEASURE41 Prior Won / KPI Prior Won
1445 * BIL_MEASURE8 BIL_MEASURE42 Won Change
1446 * BIL_MEASURE9 BIL_MEASURE43 Lost Count
1447 * BIL_MEASURE10 BIL_MEASURE44 Lost
1448 * BIL_MEASURE11 BIL_MEASURE45 Prior Lost / KPI Prior Lost
1449 * BIL_MEASURE12 BIL_MEASURE46 Lost Change
1450 * BIL_MEASURE13 BIL_MEASURE47 Open Count
1451 * BIL_MEASURE14 BIL_MEASURE48 Open
1452 * BIL_MEASURE15 BIL_MEASURE49 Prior Open / KPI Prior Open
1453 * BIL_MEASURE16 BIL_MEASURE50 Open Change
1454 * BIL_MEASURE17 BIL_MEASURE51 New Count
1455 * BIL_MEASURE18 BIL_MEASURE52 New
1456 * BIL_MEASURE19 BIL_MEASURE53 Prior New
1457 * BIL_MEASURE20 BIL_MEASURE54 New Change
1458 * BIL_MEASURE21 BIL_MEASURE55 No Opportunity Count
1459 * BIL_MEASURE22 BIL_MEASURE56 No Opportunity
1460 * BIL_MEASURE23 BIL_MEASURE57 Prior No Opportunity / KPI Prior No
1464 * BIL_MEASURE26 BIL_MEASURE60 Loss %
1461 * BIL_MEASURE24 BIL_MEASURE58 No Opportunity Change
1462 * BIL_MEASURE25 BIL_MEASURE59 Won %
1463 * BIL_MEASURE74 BIL_MEASURE76 Won% Prior
1465 * BIL_MEASURE27 BIL_MEASURE61 Open %
1466 * BIL_MEASURE28 BIL_MEASURE62 Win/Loss Ratio
1467 * BIL_MEASURE34 BIL_MEASURE68 KPI Prior Win/Loss Ratio
1468 * BIL_URL1 Sales Group URL
1469 * BIL_URL2 Product Category URL
1470 * BIL_TITLE1 Won, Lost, Open Opportunity Value
1471 * BIL_TITLE2 Won, Lost, Open % of Total
1472 * BIL_TITLE3 Won, Lost, Open Opportunity Count
1473 * BIL_URL3 URL to Drill to the Opty Line Detail rep from Won Column
1474 * BIL_URL4 URL to Drill to the Opty Line Detail rep from Lost Column
1475 * BIL_URL5 URL to Drill to the Opty Line Detail rep from Open Column
1476 * BIL_URL6 URL to Drill to the Opty Line Detail rep from No Opportunity Column
1477 **************************************************************************************************/
1478
1479 l_outer_select:= 'SELECT VIEWBY
1480 ,VIEWBYID
1481 , BIL_MEASURE2
1482 , BIL_MEASURE3
1483 ,(((BIL_MEASURE2 - BIL_MEASURE3) / ABS(DECODE(BIL_MEASURE3, 0, NULL, BIL_MEASURE3))) * 100) BIL_MEASURE4
1484 ,BIL_MEASURE6
1485 ,BIL_MEASURE7
1486 ,(((BIL_MEASURE6 - BIL_MEASURE7) / ABS(DECODE(BIL_MEASURE7, 0, NULL, BIL_MEASURE7))) * 100) BIL_MEASURE8
1487 ,BIL_MEASURE10
1488 ,BIL_MEASURE11
1489 ,(((BIL_MEASURE10 - BIL_MEASURE11) / ABS(DECODE(BIL_MEASURE11, 0, NULL, BIL_MEASURE11))) * 100) BIL_MEASURE12
1490 ,BIL_MEASURE14
1491 ,BIL_MEASURE15
1492 ,(((BIL_MEASURE14 - BIL_MEASURE15) / ABS(DECODE(BIL_MEASURE15, 0, NULL, BIL_MEASURE15))) * 100) BIL_MEASURE16
1493 ,BIL_MEASURE18
1494 ,BIL_MEASURE19
1495 ,(((BIL_MEASURE18 - BIL_MEASURE19) / ABS(DECODE(BIL_MEASURE19, 0, NULL, BIL_MEASURE19))) * 100) BIL_MEASURE20
1496 ,BIL_MEASURE22
1497 ,BIL_MEASURE23
1498 ,(((BIL_MEASURE22 - BIL_MEASURE23) / ABS(DECODE(BIL_MEASURE23, 0, NULL, BIL_MEASURE23))) * 100) BIL_MEASURE24
1499 ,(((BIL_MEASURE6) / DECODE(BIL_MEASURE2, 0, NULL, BIL_MEASURE2)) * 100) BIL_MEASURE25
1500 ,(((BIL_MEASURE7) / DECODE(BIL_MEASURE3, 0, NULL, BIL_MEASURE3)) * 100) BIL_MEASURE74
1501 ,(((BIL_MEASURE10) / DECODE(BIL_MEASURE2, 0, NULL, BIL_MEASURE2)) * 100) BIL_MEASURE26
1502 ,(((BIL_MEASURE14) / DECODE(BIL_MEASURE2, 0, NULL, BIL_MEASURE2)) * 100) BIL_MEASURE27
1503 ,(BIL_MEASURE6 / DECODE(BIL_MEASURE10, 0, NULL, BIL_MEASURE10)) BIL_MEASURE28
1504 ,(BIL_MEASURE7 / DECODE(BIL_MEASURE11, 0, NULL, BIL_MEASURE11)) BIL_MEASURE34
1505 ,(SUM(BIL_MEASURE2) OVER()) BIL_MEASURE36
1506 ,(SUM(BIL_MEASURE3) OVER()) BIL_MEASURE37
1507 ,(((( SUM(BIL_MEASURE2) OVER() ) - ( SUM(BIL_MEASURE3) OVER() )) / ABS(DECODE(SUM(BIL_MEASURE3) OVER(), 0, NULL, SUM(BIL_MEASURE3)OVER()))) * 100) BIL_MEASURE38
1508 ,SUM(BIL_MEASURE6) OVER() BIL_MEASURE40
1509 ,SUM(BIL_MEASURE7) OVER() BIL_MEASURE41
1510 ,(((( SUM(BIL_MEASURE6) OVER() ) - ( SUM(BIL_MEASURE7) OVER() )) / ABS(DECODE(SUM(BIL_MEASURE7) OVER(), 0, NULL, SUM(BIL_MEASURE7) OVER()) )) * 100) BIL_MEASURE42
1511 ,(SUM(BIL_MEASURE10) OVER()) BIL_MEASURE44
1512 ,(SUM(BIL_MEASURE11) OVER()) BIL_MEASURE45
1513 ,(((( SUM(BIL_MEASURE10) OVER() ) - ( SUM(BIL_MEASURE11) OVER() )) / ABS(DECODE(SUM(BIL_MEASURE11) OVER(), 0, NULL, SUM(BIL_MEASURE11) OVER()) )) * 100) BIL_MEASURE46
1514 ,(SUM(BIL_MEASURE14) OVER()) BIL_MEASURE48
1515 ,(SUM(BIL_MEASURE15) OVER()) BIL_MEASURE49
1516 ,(((( SUM(BIL_MEASURE14) OVER() ) - ( SUM(BIL_MEASURE15) OVER() )) / ABS(DECODE(SUM(BIL_MEASURE15) OVER(), 0, NULL, SUM(BIL_MEASURE15) OVER()) )) * 100) BIL_MEASURE50
1517 ,(SUM(BIL_MEASURE18) OVER()) BIL_MEASURE52
1518 ,(SUM(BIL_MEASURE19) OVER()) BIL_MEASURE53
1519 ,(((( SUM(BIL_MEASURE18) OVER() ) - ( SUM(BIL_MEASURE19) OVER() )) / ABS(DECODE(SUM(BIL_MEASURE19) OVER(), 0, NULL, SUM(BIL_MEASURE19) OVER()) )) * 100) BIL_MEASURE54
1520 ,(SUM(BIL_MEASURE22) OVER()) BIL_MEASURE56
1521 ,(SUM(BIL_MEASURE23) OVER()) BIL_MEASURE57
1522 ,(((( SUM(BIL_MEASURE22) OVER() ) - ( SUM(BIL_MEASURE23) OVER() )) / ABS(DECODE(SUM(BIL_MEASURE23) OVER(), 0, NULL, SUM(BIL_MEASURE23) OVER()) )) * 100) BIL_MEASURE58
1523 ,( SUM(BIL_MEASURE6) OVER() / (DECODE(SUM(BIL_MEASURE2) OVER(), 0, NULL, SUM(BIL_MEASURE2) OVER())) * 100 ) BIL_MEASURE59
1524 ,( SUM(BIL_MEASURE7) OVER() / (DECODE(SUM(BIL_MEASURE3) OVER(), 0, NULL, SUM(BIL_MEASURE3) OVER())) * 100 )
1525 BIL_MEASURE76
1526 ,( SUM(BIL_MEASURE10) OVER() / (DECODE(SUM(BIL_MEASURE2) OVER(), 0, NULL, SUM(BIL_MEASURE2) OVER())) * 100 ) BIL_MEASURE60
1527 ,(SUM(BIL_MEASURE14) OVER() / (DECODE(SUM(BIL_MEASURE2) OVER(), 0, NULL, SUM(BIL_MEASURE2) OVER())) *100 ) BIL_MEASURE61
1528 ,( SUM(BIL_MEASURE6) OVER() / (DECODE(SUM(BIL_MEASURE10) OVER(), 0, NULL, SUM(BIL_MEASURE10) OVER()) ) ) BIL_MEASURE62
1529 ,( SUM(BIL_MEASURE7) OVER() / (DECODE(SUM(BIL_MEASURE11) OVER(), 0, NULL, SUM(BIL_MEASURE11) OVER()) ) ) BIL_MEASURE68 '||
1530 ' ,BIL_URL1
1531 , BIL_URL2
1532 ,DECODE('''||l_viewby||''',''ORGANIZATION+JTF_ORG_SALES_GROUP'',
1533 DECODE(BIL_URL2,NULL,NULL,BIL_URL2||'||'''BIL_DIMENSION1=WON'''||'),
1534 DECODE(BIL_URL1,NULL,NULL,BIL_URL1||'||'''BIL_DIMENSION1=WON'''||'))
1535 BIL_URL3
1536 ,DECODE('''||l_viewby||''',''ORGANIZATION+JTF_ORG_SALES_GROUP'',
1537 DECODE(BIL_URL2,NULL,NULL,BIL_URL2||'||'''BIL_DIMENSION1=LOST'''||'),
1538 DECODE(BIL_URL1,NULL,NULL,BIL_URL1||'||'''BIL_DIMENSION1=LOST'''||'))
1539 BIL_URL4
1540 ,DECODE('''||l_curr_as_of_date||''',TRUNC(SYSDATE),
1544 NULL) BIL_URL5
1541 DECODE('''||l_viewby||''',''ORGANIZATION+JTF_ORG_SALES_GROUP'',
1542 DECODE(BIL_URL2,NULL,NULL,BIL_URL2||'||'''BIL_DIMENSION1=OPEN'''||'),
1543 DECODE(BIL_URL1,NULL,NULL,BIL_URL1||'||'''BIL_DIMENSION1=OPEN'''||')),
1545 ,DECODE('''||l_viewby||''',''ORGANIZATION+JTF_ORG_SALES_GROUP'',
1546 DECODE(BIL_URL2,NULL,NULL,BIL_URL2||'||'''BIL_DIMENSION1=NO OPPORTUNITY'''||'),
1547 DECODE(BIL_URL1,NULL,NULL,BIL_URL1||'||'''BIL_DIMENSION1=NO OPPORTUNITY'''||') )
1548 BIL_URL6 ';
1549
1550
1551 l_insert_stmnt := 'INSERT INTO BIL_BI_RPT_TMP1 (VIEWBY, VIEWBYID, SORTORDER, BIL_MEASURE2,'||
1552 'BIL_MEASURE3, '||
1553 'BIL_MEASURE6,BIL_MEASURE7, BIL_MEASURE10, BIL_MEASURE11, '||
1554 'BIL_MEASURE14,BIL_MEASURE15,BIL_MEASURE18,BIL_MEASURE19, '||
1555 'BIL_MEASURE22,BIL_MEASURE23,BIL_URL1, BIL_URL2)';
1556
1557 l_inner_select:=' select VIEWBY '||
1558 ' ,VIEWBYID '||
1559 ' ,SORTORDER '||
1560 ' ,(CASE '||
1561 ' WHEN NOT(SUM(BIL_MEASURE2) IS NULL AND SUM(BIL_MEASURE14) IS NULL) '||
1562 ' THEN '||
1563 ' NVL(SUM(BIL_MEASURE2),0) + NVL(SUM(BIL_MEASURE14),0) '||
1564 ' ELSE NULL '||
1565 ' END) BIL_MEASURE2 '||
1566 ' ,(CASE '||
1567 ' WHEN NOT(SUM(BIL_MEASURE3) IS NULL AND SUM(BIL_MEASURE15) IS NULL) '||
1568 ' THEN '||
1569 ' NVL(SUM(BIL_MEASURE3),0) + NVL(SUM(BIL_MEASURE15),0) '||
1570 ' ELSE NULL '||
1571 ' END) BIL_MEASURE3 '||
1572 ' ,SUM(BIL_MEASURE6) BIL_MEASURE6 '||
1573 ' ,SUM(BIL_MEASURE7) BIL_MEASURE7 '||
1574 ' ,SUM(BIL_MEASURE10) BIL_MEASURE10 '||
1575 ' ,SUM(BIL_MEASURE11) BIL_MEASURE11 '||
1576 ' ,SUM(BIL_MEASURE14) BIL_MEASURE14 '||
1577 ' ,SUM(BIL_MEASURE15) BIL_MEASURE15 '||
1578 ' ,SUM(BIL_MEASURE18) BIL_MEASURE18 '||
1579 ' ,SUM(BIL_MEASURE19) BIL_MEASURE19 '||
1580 ' ,SUM(BIL_MEASURE22) BIL_MEASURE22 '||
1581 ' ,SUM(BIL_MEASURE23) BIL_MEASURE23 '||
1582 ' ,BIL_URL1 '||
1583 ' ,BIL_URL2 '||
1584 ' from ';
1585
1586 l_inner_select1:=
1587 ' (CASE WHEN cal.report_date =:l_curr_as_of_date '||
1588 ' THEN '||
1589 ' (CASE '||
1590 ' WHEN NOT(sumry.won_opty_amt'||l_currency_suffix||' IS NULL
1591 AND sumry.lost_opty_amt'||l_currency_suffix||' IS NULL AND '||
1592 ' sumry.no_opty_amt'||l_currency_suffix||' IS NULL) '||
1593 ' THEN '||
1594 ' (NVL(sumry.won_opty_amt'||l_currency_suffix||',0) + '||
1595 ' NVL(sumry.lost_opty_amt'||l_currency_suffix||',0) + '||
1596 ' NVL(sumry.no_opty_amt'||l_currency_suffix||',0) '||
1597 ' ) '||
1598 ' ELSE NULL '||
1599 ' END) '||
1600 ' ELSE NULL '||
1601 ' END) BIL_MEASURE2 '||
1602 ' , (CASE WHEN cal.report_date =:l_prev_date '||
1603 ' THEN '||
1604 ' (CASE '||
1605 ' WHEN NOT(sumry.won_opty_amt'||l_currency_suffix||' IS NULL
1606 AND sumry.lost_opty_amt'||l_currency_suffix||' IS NULL '||
1607 ' AND sumry.no_opty_amt'||l_currency_suffix||' IS NULL) '||
1608 ' THEN '||
1609 ' (NVL(sumry.won_opty_amt'||l_currency_suffix||',0) + '||
1610 ' NVL(sumry.lost_opty_amt'||l_currency_suffix||',0) + '||
1611 ' NVL(sumry.no_opty_amt'||l_currency_suffix||',0) '||
1612 ' ) '||
1613 ' ELSE NULL '||
1614 ' END) '||
1615 ' ELSE NULL '||
1616 ' END) BIL_MEASURE3 '||
1617 ' , (CASE WHEN cal.report_date =:l_curr_as_of_date '||
1618 ' THEN sumry.won_opty_amt'||l_currency_suffix||' '||
1619 ' ELSE NULL '||
1620 ' END) BIL_MEASURE6 '||
1621 ' , (CASE WHEN cal.report_date =:l_prev_date '||
1622 ' THEN sumry.won_opty_amt'||l_currency_suffix||' '||
1623 ' ELSE NULL '||
1624 ' END) BIL_MEASURE7 '||
1625 ' , (CASE WHEN cal.report_date =:l_curr_as_of_date '||
1626 ' THEN sumry.lost_opty_amt'||l_currency_suffix||' '||
1627 ' ELSE NULL '||
1628 ' END) BIL_MEASURE10 '||
1629 ' , (CASE WHEN cal.report_date =:l_prev_date '||
1630 ' THEN sumry.lost_opty_amt'||l_currency_suffix||' '||
1631 ' ELSE NULL '||
1632 ' END) BIL_MEASURE11 '||
1633 ' , NULL BIL_MEASURE14 '||
1634 ' , NULL BIL_MEASURE15 '||
1635 ' , (CASE WHEN cal.report_date =:l_curr_as_of_date '||
1636 ' THEN sumry.new_opty_amt'||l_currency_suffix||' '||
1637 ' ELSE NULL '||
1638 ' END) BIL_MEASURE18 '||
1639 ' , (CASE WHEN cal.report_date =:l_prev_date '||
1640 ' THEN sumry.new_opty_amt'||l_currency_suffix||' '||
1641 ' ELSE NULL '||
1642 ' END) BIL_MEASURE19 '||
1643 ' , (CASE WHEN cal.report_date =:l_curr_as_of_date '||
1644 ' THEN sumry.no_opty_amt'||l_currency_suffix||' '||
1645 ' ELSE NULL '||
1646 ' END) BIL_MEASURE22 '||
1650 ' END) BIL_MEASURE23';
1647 ' , (CASE WHEN cal.report_date =:l_prev_date '||
1648 ' THEN sumry.no_opty_amt'||l_currency_suffix||' '||
1649 ' ELSE NULL '||
1651
1652
1653 l_inner_where_clause := ' sumry.effective_time_id = cal.time_id '||
1654 ' AND sumry.effective_period_type_id = cal.period_type_id '||
1655 ' AND bitand(cal.record_type_id, :l_record_type_id)= :l_record_type_id '||
1656 ' AND cal.report_date IN (:l_curr_as_of_date, :l_prev_date) '||
1657 'AND sumry.parent_sales_group_id = :l_sg_id_num ';
1658 IF l_parent_sales_group_id IS NULL THEN
1659 IF l_resource_id IS NULL THEN
1660 l_inner_where_clause1 := ' sumry.effective_time_id = cal.time_id '||
1661 ' AND sumry.effective_period_type_id = cal.period_type_id '||
1662 ' AND bitand(cal.record_type_id, :l_record_type_id)= :l_record_type_id'||
1663 ' AND cal.report_date IN (:l_curr_as_of_date, :l_prev_date)'||
1664 ' AND sumry.parent_sales_group_id IS NULL '||
1665 ' AND sumry.sales_group_id = :l_sg_id_num ';
1666 ELSE
1667 l_inner_where_clause1 := ' sumry.effective_time_id = cal.time_id '||
1668 ' AND sumry.effective_period_type_id = cal.period_type_id '||
1669 ' AND bitand(cal.record_type_id, :l_record_type_id)= :l_record_type_id'||
1670 ' AND cal.report_date IN (:l_curr_as_of_date, :l_prev_date)'||
1671 ' AND sumry.parent_sales_group_id = sumry.sales_group_id '||
1672 ' AND sumry.sales_group_id = :l_sg_id_num ';
1673
1674 END IF;
1675 ELSE
1676 IF l_resource_id IS NULL THEN
1677 l_inner_where_clause1 := ' sumry.effective_time_id = cal.time_id '||
1678 ' AND sumry.effective_period_type_id = cal.period_type_id '||
1679 ' AND bitand(cal.record_type_id, :l_record_type_id)= :l_record_type_id'||
1680 ' AND cal.report_date IN (:l_curr_as_of_date, :l_prev_date)'||
1681 ' AND sumry.parent_sales_group_id = :l_parent_sales_group_id '||
1682 ' AND sumry.sales_group_id = :l_sg_id_num ';
1683 ELSE
1684 l_inner_where_clause1 := ' sumry.effective_time_id = cal.time_id '||
1685 ' AND sumry.effective_period_type_id = cal.period_type_id '||
1686 ' AND bitand(cal.record_type_id, :l_record_type_id)= :l_record_type_id'||
1687 ' AND cal.report_date IN (:l_curr_as_of_date, :l_prev_date)'||
1688 ' AND sumry.parent_sales_group_id = :l_sg_id_num '||
1689 ' AND sumry.sales_group_id = :l_sg_id_num ';
1690 END IF;
1691 END IF;
1692
1693
1694
1695 /*
1696 l_inner_select3:= ' NULL BIL_MEASURE2 '||
1697 ' ,NULL BIL_MEASURE3 '||
1698 ' ,NULL BIL_MEASURE6 '||
1699 ' ,NULL BIL_MEASURE7 '||
1700 ' ,NULL BIL_MEASURE10 '||
1701 ' ,NULL BIL_MEASURE11 '||
1702 ' ,(CASE WHEN sumry.snap_date =:l_snap_date THEN '||
1703 ' decode(:l_period_type, '||
1704 ' 128,open_amt_year'||l_currency_suffix||', '||
1705 ' 64,open_amt_quarter'||l_currency_suffix||', '||
1706 ' 32,open_amt_period'||l_currency_suffix||', '||
1707 ' 16,open_amt_week'||l_currency_suffix||' '||
1708 ' ) '||
1709 ' ELSE NULL '||
1710 ' END) BIL_MEASURE14 '||
1711 ' ,(CASE WHEN sumry.snap_date =:l_prev_date THEN '||
1712 ' decode(:l_period_type, '||
1713 ' 128,open_amt_year'||l_currency_suffix||', '||
1714 ' 64,open_amt_quarter'||l_currency_suffix||', '||
1715 ' 32,open_amt_period'||l_currency_suffix||', '||
1716 ' 16,open_amt_week'||l_currency_suffix||' '||
1717 ' ) '||
1718 ' ELSE NULL '||
1719 ' END) BIL_MEASURE15 '||
1720 ' ,NULL BIL_MEASURE18 '||
1721 ' ,NULL BIL_MEASURE19 '||
1722 ' ,NULL BIL_MEASURE22 '||
1723 ' ,NULL BIL_MEASURE23';
1724 */
1725
1726 IF (l_open_mv_new = 'BIL_BI_PIPE_G_MV') THEN
1727 l_inner_where_pipe := ' sumry.snap_date in (:l_snapshot_date, :l_prev_snap_date) ';
1728 ELSE
1729 l_inner_where_pipe := ' sumry.snap_date in (:l_snapshot_date) ';
1730 END IF;
1731
1732
1733 -- l_inner_select3:=
1734
1735
1736 l_pipe_select1 := ' NULL BIL_MEASURE2 '||
1737 ' ,NULL BIL_MEASURE3 '||
1738 ' ,NULL BIL_MEASURE6 '||
1739 ' ,NULL BIL_MEASURE7 '||
1740 ' ,NULL BIL_MEASURE10 '||
1741 ' ,NULL BIL_MEASURE11 '||
1742 ' ,(CASE WHEN sumry.snap_date =:l_snapshot_date THEN '||
1743 ' decode(:l_period_type, '||
1744 ' 128,open_amt_year'||l_currency_suffix||', '||
1745 ' 64,open_amt_quarter'||l_currency_suffix||', '||
1746 ' 32,open_amt_period'||l_currency_suffix||', '||
1747 ' 16,open_amt_week'||l_currency_suffix||' '||
1748 ' ) '||
1749 ' ELSE NULL '||
1750 ' END) BIL_MEASURE14 ';
1751
1752
1753 IF (l_open_mv_new = 'BIL_BI_PIPE_G_MV') THEN
1754 l_pipe_select2 := ' ,(CASE WHEN sumry.snap_date =:l_prev_snap_date THEN '||
1755 ' decode(:l_period_type, '||
1759 ' 16,open_amt_week'||l_currency_suffix||' '||
1756 ' 128,open_amt_year'||l_currency_suffix||', '||
1757 ' 64,open_amt_quarter'||l_currency_suffix||', '||
1758 ' 32,open_amt_period'||l_currency_suffix||', '||
1760 ' ) '||
1761 ' ELSE NULL '||
1762 ' END) BIL_MEASURE15 ';
1763 ELSE
1764 l_pipe_select2 := ' ,(CASE WHEN sumry.snap_date =:l_snapshot_date THEN '||
1765 ''||l_prev_amt||' '||
1766 ' ELSE NULL '||
1767 ' END) BIL_MEASURE15 ';
1768 END IF;
1769
1770 l_pipe_select3 := ' ,NULL BIL_MEASURE18 '||
1771 ' ,NULL BIL_MEASURE19 '||
1772 ' ,NULL BIL_MEASURE22 '||
1773 ' ,NULL BIL_MEASURE23';
1774
1775
1776 l_inner_select3:= l_pipe_select1 || l_pipe_select2 || l_pipe_select3;
1777
1778
1779 l_inner_where_clause2:= l_inner_where_pipe ||
1780 ' AND sumry.parent_sales_group_id = :l_sg_id_num ';
1781
1782
1783 /*
1784 l_inner_where_clause2:= ' sumry.snap_date in (:l_snap_date, :l_prev_date) '||
1785 ' AND sumry.parent_sales_group_id = :l_sg_id_num ';
1786 */
1787
1788 IF l_parent_sales_group_id IS NULL THEN
1789 IF l_resource_id IS NULL THEN
1790 l_inner_where_clause3:= l_inner_where_pipe ||
1791 ' AND sumry.parent_sales_group_id IS NULL '||
1792 ' AND sumry.sales_group_id = :l_sg_id_num '||
1793 ' AND sumry.grp_total_flag = 0 ';
1794 ELSE
1795 l_inner_where_clause3:= l_inner_where_pipe ||
1796 ' AND sumry.parent_sales_group_id = sumry.sales_group_id '||
1797 ' AND sumry.sales_group_id = :l_sg_id_num '||
1798 ' AND sumry.grp_total_flag = 0 ';
1799 END IF;
1800 ELSE
1801 IF l_resource_id IS NULL THEN
1802 l_inner_where_clause3:= l_inner_where_pipe ||
1803 ' AND sumry.parent_sales_group_id = :l_parent_sales_group_id '||
1804 ' AND sumry.sales_group_id = :l_sg_id_num '||
1805 ' AND sumry.grp_total_flag = 0 ';
1806 ELSE
1807 l_inner_where_clause3:= l_inner_where_pipe ||
1808 ' AND sumry.parent_sales_group_id = :l_sg_id_num '||
1809 ' AND sumry.sales_group_id = :l_sg_id_num '||
1810 ' AND sumry.grp_total_flag = 0 ';
1811 END IF;
1812 END IF;
1813
1814 l_null_rem_where_clause := ' (BIL_MEASURE2 IS NULL OR BIL_MEASURE2 = 0) '||
1815 ' AND (BIL_MEASURE6 IS NULL OR BIL_MEASURE6 = 0) '||
1816 ' AND (BIL_MEASURE10 IS NULL OR BIL_MEASURE10 = 0) '||
1817 ' AND (BIL_MEASURE14 IS NULL OR BIL_MEASURE14 = 0) '||
1818 ' AND (BIL_MEASURE18 IS NULL OR BIL_MEASURE18 = 0)'||
1819 ' AND (BIL_MEASURE22 IS NULL OR BIL_MEASURE22 = 0)';
1820
1821
1822
1823 l_select := ' SELECT '||
1824 ' sumry.sales_group_id sales_group_id '||
1825 ' ,sumry.salesrep_id salesrep_id '||
1826 ' ,SUM(sumry.BIL_MEASURE2) BIL_MEASURE2 '||
1827 ' ,SUM(sumry.BIL_MEASURE3) BIL_MEASURE3 '||
1828 ' ,SUM(sumry.BIL_MEASURE6) BIL_MEASURE6 '||
1829 ' ,SUM(sumry.BIL_MEASURE7) BIL_MEASURE7 '||
1830 ' ,SUM(sumry.BIL_MEASURE10) BIL_MEASURE10 '||
1831 ' ,SUM(sumry.BIL_MEASURE11) BIL_MEASURE11 '||
1832 ' ,SUM(sumry.BIL_MEASURE14) BIL_MEASURE14 '||
1833 ' ,SUM(sumry.BIL_MEASURE15) BIL_MEASURE15 '||
1834 ' ,SUM(sumry.BIL_MEASURE18) BIL_MEASURE18 '||
1835 ' ,SUM(sumry.BIL_MEASURE19) BIL_MEASURE19 '||
1836 ' ,SUM(sumry.BIL_MEASURE22) BIL_MEASURE22 '||
1837 ' ,SUM(sumry.BIL_MEASURE23) BIL_MEASURE23 '||
1838 ' ,BIL_URL1 '||
1839 ' ,BIL_URL2 ';
1840
1841 execute immediate 'TRUNCATE TABLE '||g_sch_name||'.'||'BIL_BI_RPT_TMP1';
1842
1843 BIL_BI_UTIL_PKG.get_PC_NoRollup_Where_Clause(
1844 p_prodcat => l_prodcat_id,
1848 CASE l_viewby
1845 p_viewby => l_viewby,
1846 x_denorm => l_denorm,
1847 x_where_clause => l_product_where_clause);
1849 WHEN 'ORGANIZATION+JTF_ORG_SALES_GROUP' THEN
1850
1851 l_url_str:='pFunctionName=BIL_BI_OPOVER_R&pParamIds=Y&VIEW_BY='||l_viewby||'&VIEW_BY_NAME=VIEW_BY_ID';
1852
1853
1854 IF l_prodcat_id = 'All' THEN
1855 l_sumry1 := 'BIL_BI_OPTY_G_MV';
1856 -- l_sumry2 := 'BIL_BI_PIPE_G_MV';
1857 l_sumry2 := l_open_mv_new ;
1858 l_from1 := ' FROM '||l_fii_struct ||' cal, '||l_sumry1||' sumry '||l_denorm;
1859 l_from2 := ' FROM '||l_sumry2||' sumry ';
1860
1861 l_inner_where_clause2 := l_inner_where_clause2||' AND sumry.grp_total_flag = 1 ';
1862
1863 ELSE
1864 l_sumry1 := 'BIL_BI_OPTY_PG_MV';
1865 -- l_sumry2 := 'BIL_BI_PIPE_G_MV';
1866 l_sumry2 := l_open_mv_new ;
1867 l_from1 := ' FROM '||l_fii_struct ||' cal, '||l_sumry1||' sumry ';
1868 l_from2 := ' FROM '||l_sumry2||' sumry ';
1869
1870 l_inner_where_clause2 := l_inner_where_clause2||' AND sumry.grp_total_flag = 0 ';
1871 l_pc_sel := 'sumry.product_category_id product_category_id, ';
1872 l_pc_grp_by := ',sumry.product_category_id ';
1873
1874 END IF;
1875
1876 /*
1877 * 1. Need jtf_rs_grp_relations table to get the parent sales group
1878 * 2. In the case of sales reps, sales group and parent sales group are the same ,
1879 * so filtering on sales group directly
1880 */
1881
1882 IF l_resource_id IS NULL THEN
1883 l_custom_sql :=l_insert_stmnt || l_inner_select ||
1884 ' ('||
1885 ' SELECT /*+ NO_MERGE(tmp1) */ '||
1886 ' DECODE(tmp1.salesrep_id, NULL, grptl.group_name,restl.resource_name) VIEWBY '||
1887 ' ,DECODE(tmp1.salesrep_id, NULL, to_char(tmp1.sales_group_id), '||
1888 ' tmp1.salesrep_id||''.''||tmp1.sales_group_id) VIEWBYID '||
1889 ' ,DECODE(tmp1.salesrep_id, NULL, 1, 2) sortorder '||
1890 ' ,SUM(tmp1.BIL_MEASURE2) BIL_MEASURE2 '||
1891 ' ,SUM(tmp1.BIL_MEASURE3) BIL_MEASURE3 '||
1892 ' ,SUM(tmp1.BIL_MEASURE6) BIL_MEASURE6 '||
1893 ' ,SUM(tmp1.BIL_MEASURE7) BIL_MEASURE7 '||
1894 ' ,SUM(tmp1.BIL_MEASURE10) BIL_MEASURE10 '||
1895 ' ,SUM(tmp1.BIL_MEASURE11) BIL_MEASURE11 '||
1896 ' ,SUM(tmp1.BIL_MEASURE14) BIL_MEASURE14 '||
1897 ' ,SUM(tmp1.BIL_MEASURE15) BIL_MEASURE15 '||
1898 ' ,SUM(tmp1.BIL_MEASURE18) BIL_MEASURE18 '||
1899 ' ,SUM(tmp1.BIL_MEASURE19) BIL_MEASURE19 '||
1900 ' ,SUM(tmp1.BIL_MEASURE22) BIL_MEASURE22 '||
1901 ' ,SUM(tmp1.BIL_MEASURE23) BIL_MEASURE23 '||
1902 ' ,DECODE(tmp1.salesrep_id, NULL, BIL_URL1, NULL) BIL_URL1 '||
1903 ' ,DECODE(tmp1.salesrep_id, NULL, NULL,'''||l_drill_link||''') BIL_URL2 '||
1904 ' FROM ('||
1908 l_pc_sel||' '||
1905 l_select||
1906 ' FROM ('||
1907 'SELECT /*+ LEADING(cal) */ '||
1909 l_inner_select1||
1910 ',sumry.sales_group_id sales_group_id '||
1911 ',sumry.salesrep_id salesrep_id '||
1912 ','''||l_url_str||''' BIL_URL1 '||
1913 ',null BIL_URL2 '|| l_from1 ||
1914 ' WHERE cal.xtd_flag=:l_yes AND '
1915 ||l_inner_where_clause||' ';
1916
1917 l_custom_sql := l_custom_sql||
1918 ' UNION ALL '||
1919 'SELECT '||
1920 l_pc_sel||' '||
1921 l_inner_select3||
1922 ',sumry.sales_group_id sales_group_id '||
1923 ',sumry.salesrep_id salesrep_id '||
1924 ','''||l_url_str||''' BIL_URL1 '||
1925 ',null BIL_URL2 '||
1926 l_from2 ||
1927 ' WHERE '||l_inner_where_clause2||' ';
1928
1929 l_custom_sql := l_custom_sql||
1930 ') sumry '||l_denorm||
1931 ' WHERE 1=1 '||l_product_where_clause||
1932 ' GROUP BY sales_group_id, salesrep_id '||l_pc_grp_by||', BIL_URL1, BIL_URL2'||
1933 ') tmp1 '||
1934 ' ,jtf_rs_groups_tl grptl'||
1935 ' ,jtf_rs_resource_extns_tl restl'||
1936 ' WHERE grptl.group_id = tmp1.sales_group_id'||
1937 ' AND grptl.language = USERENV(''LANG'')'||
1938 ' AND restl.resource_id(+) = tmp1.salesrep_id'||
1939 ' AND restl.language(+) = USERENV(''LANG'') '||
1940 ' GROUP BY DECODE(tmp1.salesrep_id, NULL, grptl.group_name,restl.resource_name),'||
1941 ' DECODE(tmp1.salesrep_id, NULL, to_char(tmp1.sales_group_id), '||
1942 ' tmp1.salesrep_id||''.''||tmp1.sales_group_id), '||
1943 ' DECODE(tmp1.salesrep_id, NULL, 1, 2), '||
1944 ' DECODE(tmp1.salesrep_id, NULL, BIL_URL1, NULL), '||
1945 ' DECODE(tmp1.salesrep_id, NULL, NULL,'''||l_drill_link||''') '||
1946 ') GROUP BY VIEWBY, VIEWBYID, SORTORDER, BIL_URL1,BIL_URL2';
1947 ELSE
1948 l_custom_sql :=l_insert_stmnt || l_inner_select ||
1949 ' ('||
1950 ' SELECT /*+ NO_MERGE(tmp1) */ '||
1951 ' resource_name VIEWBY '||
1952 ' ,tmp1.salesrep_id||''.''||tmp1.sales_group_id VIEWBYID '||
1953 ' ,tmp1.sortorder sortorder '||
1954 ' ,SUM(tmp1.BIL_MEASURE2) BIL_MEASURE2 '||
1955 ' ,SUM(tmp1.BIL_MEASURE3) BIL_MEASURE3 '||
1956 ' ,SUM(tmp1.BIL_MEASURE6) BIL_MEASURE6 '||
1957 ' ,SUM(tmp1.BIL_MEASURE7) BIL_MEASURE7 '||
1958 ' ,SUM(tmp1.BIL_MEASURE10) BIL_MEASURE10 '||
1959 ' ,SUM(tmp1.BIL_MEASURE11) BIL_MEASURE11 '||
1960 ' ,SUM(tmp1.BIL_MEASURE14) BIL_MEASURE14 '||
1961 ' ,SUM(tmp1.BIL_MEASURE15) BIL_MEASURE15 '||
1962 ' ,SUM(tmp1.BIL_MEASURE18) BIL_MEASURE18 '||
1963 ' ,SUM(tmp1.BIL_MEASURE19) BIL_MEASURE19 '||
1964 ' ,SUM(tmp1.BIL_MEASURE22) BIL_MEASURE22 '||
1965 ' ,SUM(tmp1.BIL_MEASURE23) BIL_MEASURE23 '||
1966 ' ,DECODE(tmp1.salesrep_id, NULL, BIL_URL1, NULL) BIL_URL1 '||
1967 ' ,'''||l_drill_link||''' BIL_URL2 '||
1968 ' FROM ('||
1969 l_select||',sortorder '||
1970 ' FROM ('||
1971 'SELECT /*+ LEADING(cal) */ '||
1972 l_pc_sel||
1973 '1 sortorder, '||
1974 l_inner_select1||
1975 ',sumry.sales_group_id '||
1976 ',sumry.salesrep_id salesrep_id '||
1977 ','''||l_url_str||''' BIL_URL1 '||
1978 ',null BIL_URL2 '|| l_from1 ||
1979 ' WHERE cal.xtd_flag=:l_yes AND '
1980 ||l_inner_where_clause;
1981
1982 l_custom_sql := l_custom_sql||
1983 ' UNION ALL '||
1984 'SELECT '||l_pc_sel||' 1 sortorder, '||
1985 l_inner_select3||
1989 ',null BIL_URL2 '||
1986 ',sumry.sales_group_id sales_group_id '||
1987 ',sumry.salesrep_id salesrep_id '||
1988 ','''||l_url_str||''' BIL_URL1 '||
1990 l_from2 ||
1991 ' WHERE '||l_inner_where_clause2;
1992
1993 l_custom_sql := l_custom_sql||
1994 ') sumry '||l_denorm||' '||
1995 ' WHERE 1=1 '||l_product_where_clause||
1996 ' GROUP BY sumry.sales_group_id, sumry.salesrep_id '||l_pc_grp_by||
1997 ', sumry.sortorder, BIL_URL1, BIL_URL2 '||
1998 ') tmp1 '||
1999 ' ,jtf_rs_resource_extns_tl restl'||
2000 ' WHERE restl.resource_id = tmp1.salesrep_id'||
2001 ' AND restl.language = USERENV(''LANG'') '||
2002 ' AND tmp1.salesrep_id = :l_resource_id '||
2003 ' GROUP BY restl.resource_name,'||
2004 ' tmp1.salesrep_id||''.''||tmp1.sales_group_id, '||
2005 ' tmp1.sortorder, '||
2006 ' DECODE(tmp1.salesrep_id, NULL, BIL_URL1, NULL), BIL_URL2 '||
2007 ') GROUP BY VIEWBY, VIEWBYID, SORTORDER, BIL_URL1,BIL_URL2';
2008 END IF;
2009
2010
2011
2012 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
2013 l_ind :=1;
2014 l_len:= length(l_custom_sql);
2015
2016 WHILE l_ind <= l_len LOOP
2017 l_str:= substr(l_custom_sql, l_ind, 4000);
2018
2019 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
2020 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
2021 MESSAGE => l_str);
2022
2023 l_ind := l_ind + 4000;
2024
2025 END LOOP;
2026 END IF;
2027
2028
2029 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
2030
2031 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
2032 MODULE => g_pkg || l_proc,
2033 MESSAGE => 'length of query l_custom_sql is '|| length(l_custom_sql));
2034
2035 END IF;
2036
2037 IF l_prodcat_id = 'All' THEN
2038 IF l_resource_id IS NULL THEN
2039
2040 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
2041 EXECUTE IMMEDIATE l_custom_sql
2042 USING
2043 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2044 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2045 l_curr_as_of_date,l_prev_date,l_yes,l_record_type_id,
2046 l_record_type_id,l_curr_as_of_date, l_prev_date,l_sg_id_num,
2047 l_snapshot_date,l_period_type,
2048 l_snapshot_date,
2049 l_snapshot_date,
2050 l_sg_id_num;
2051 ELSE
2052 EXECUTE IMMEDIATE l_custom_sql
2053 USING
2054 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2055 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2056 l_curr_as_of_date,l_prev_date,l_yes,l_record_type_id,
2057 l_record_type_id,l_curr_as_of_date, l_prev_date,l_sg_id_num,
2058 l_snapshot_date,l_period_type,
2059 l_prev_snap_date,l_period_type,
2060 l_snapshot_date, l_prev_snap_date,
2061 l_sg_id_num;
2062 END IF;
2063
2064 ELSE
2065
2066 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
2067
2068 EXECUTE IMMEDIATE l_custom_sql
2069 USING
2070 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2071 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2072 l_curr_as_of_date,l_prev_date,l_yes,l_record_type_id,
2073 l_record_type_id,l_curr_as_of_date, l_prev_date,l_sg_id_num,
2074 l_snapshot_date,l_period_type,
2075 l_snapshot_date,
2076 l_snapshot_date,
2077 l_sg_id_num,l_resource_id;
2078 ELSE
2079 EXECUTE IMMEDIATE l_custom_sql
2080 USING
2081 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2082 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2083 l_curr_as_of_date,l_prev_date,l_yes,l_record_type_id,
2084 l_record_type_id,l_curr_as_of_date, l_prev_date,l_sg_id_num,
2085 l_snapshot_date,l_period_type,
2086 l_prev_snap_date,l_period_type,
2087 l_snapshot_date, l_prev_snap_date,
2088 l_sg_id_num,l_resource_id;
2089 END IF;
2090 END IF;
2091 ELSIF l_prodcat_id <> 'All' THEN
2092 IF l_resource_id IS NULL THEN
2093
2094
2095 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
2096
2097 EXECUTE IMMEDIATE l_custom_sql
2098 USING
2099 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2100 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2104 l_snapshot_date,
2101 l_curr_as_of_date,l_prev_date,l_yes,l_record_type_id,
2102 l_record_type_id,l_curr_as_of_date, l_prev_date,l_sg_id_num,
2103 l_snapshot_date,l_period_type,
2105 l_snapshot_date,
2106 l_sg_id_num,l_prodcat_id;
2107
2108 ELSE
2109 EXECUTE IMMEDIATE l_custom_sql
2110 USING
2111 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2112 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2113 l_curr_as_of_date,l_prev_date,l_yes,l_record_type_id,
2114 l_record_type_id,l_curr_as_of_date, l_prev_date,l_sg_id_num,
2115 l_snapshot_date,l_period_type,
2116 l_prev_snap_date,l_period_type,
2117 l_snapshot_date, l_prev_snap_date,
2118 l_sg_id_num,l_prodcat_id;
2119 END IF;
2120
2121 ELSE
2122
2123 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
2124
2125 EXECUTE IMMEDIATE l_custom_sql
2126 USING
2127 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2128 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2129 l_curr_as_of_date,l_prev_date,l_yes,l_record_type_id,
2130 l_record_type_id,l_curr_as_of_date, l_prev_date,l_sg_id_num,
2131 l_snapshot_date,l_period_type,
2132 l_snapshot_date,
2133 l_snapshot_date,
2134 l_sg_id_num,l_prodcat_id,
2135 l_resource_id;
2136 ELSE
2137 EXECUTE IMMEDIATE l_custom_sql
2138 USING
2139 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2140 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2141 l_curr_as_of_date,l_prev_date,l_yes,l_record_type_id,
2142 l_record_type_id,l_curr_as_of_date, l_prev_date,l_sg_id_num,
2143 l_snapshot_date,l_period_type,
2144 l_prev_snap_date,l_period_type,
2145 l_snapshot_date, l_prev_snap_date,
2146 l_sg_id_num,l_prodcat_id,
2147 l_resource_id;
2148 END IF;
2149
2150 END IF;
2151 END IF;
2152
2153 COMMIT;
2154 x_custom_sql := ' SELECT * FROM ( '||
2155 l_outer_select||' FROM BIL_BI_RPT_TMP1 '||
2156 ' ORDER BY SORTORDER, UPPER(VIEWBY) '||
2157 ' ) WHERE NOT('||l_null_rem_where_clause||')';
2158 --view by Product category
2159 WHEN 'ITEM+ENI_ITEM_VBH_CAT' THEN
2160
2161 l_sumry := ' BIL_BI_OPTY_PG_MV';
2162 -- l_sumry1 := ' BIL_BI_PIPE_G_MV';
2163 l_sumry1 := l_open_mv_new ;
2164 IF 'All' = l_prodcat_id THEN
2165 l_from1 := ' FROM '||l_fii_struct ||' cal, '||l_sumry||' sumry ';
2166 l_from2 := ' FROM '||l_sumry1||' sumry ';
2167 ELSE
2168 l_from1 := ' FROM '||l_fii_struct ||' cal, '||l_sumry||' sumry '||l_denorm||' ';
2169 l_from2 := ' FROM '||l_sumry1||' sumry '||l_denorm||' ';
2170 END IF;
2171 -- l_from3 := ' FROM '||l_sumry||' sumry '||l_denorm;
2172 l_productcat_id := l_prodcat_id;
2173
2174 /* Basically the only case when a parent_id = id (immediate child id) will be if we have selected a
2175 self node (see the new code in the l_product_where). So the first time we show a leaf category (C)
2176 it will be when we select its parent (A),so we show Assigned to Category for the parent (A), plus
2177 that categorys children - category (C). In that case parent_id <> child_id for category C, so we
2178 assign l_cat_url. When we click on it, we re-run the query. Now we get Assigned to category for
2179 category C, and in the second part of the union all we select self (see the new code in
2180 product where clause). So now parent_id=id, and we can assign l_prod_url to switch the view by to
2181 product
2182 */
2183
2184 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
2185
2186 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
2187 MODULE => g_pkg || l_proc || ' Prod cat view by ',
2188 MESSAGE => 'Product where clause '||l_product_where_clause);
2189
2190 END IF;
2191
2192
2193 l_cat_url := 'pFunctionName='||l_rpt_str||'&pParamIds=Y&VIEW_BY='||l_viewby||'&VIEW_BY_NAME=VIEW_BY_ID';
2194 /* Product category 'All' is chosen, so need to display only categories, need not display
2195 * assigned to category
2196 */
2197
2198 IF 'All' = l_prodcat_id THEN
2199
2200 IF l_resource_id is NULL THEN
2201 l_custom_sql :=l_insert_stmnt || l_inner_select ||
2202 '('||
2203 ' SELECT /*+ LEADING(cal) */ null VIEWBY ,'||
2204 '1 sortorder, '||
2205 l_inner_select1||
2206 ',sumry.product_category_id VIEWBYID'||
2210 ' WHERE cal.xtd_flag = :l_yes AND '||l_inner_where_clause1||
2207 ',NULL BIL_URL1'||
2208 ',NULL BIL_URL2 '||
2209 l_from1 ||
2211 ' AND sumry.salesrep_id IS NULL ';
2212
2213 l_custom_sql := l_custom_sql||
2214 ' UNION ALL '||
2215 ' SELECT null VIEWBY ,'||
2216 '1 sortorder, '||
2217 l_inner_select3||
2218 ',sumry.product_category_id VIEWBYID'||
2219 ',NULL BIL_URL1'||
2220 ',NULL BIL_URL2 '||
2221 l_from2 ||
2222 ' WHERE '||l_inner_where_clause3||
2223 ' AND sumry.salesrep_id IS NULL ';
2224
2225 l_custom_sql := l_custom_sql||
2226 ' ) GROUP BY VIEWBY, VIEWBYID, SORTORDER, BIL_URL1, BIL_URL2 ';
2227
2228 ELSE -- salesrep is selected
2229 l_custom_sql :=l_insert_stmnt || l_inner_select ||
2230 '('||
2231 ' SELECT /*+ LEADING(cal) */ null VIEWBY ,'||
2232 '1 sortorder, '||
2233 l_inner_select1||
2234 ',sumry.product_category_id VIEWBYID'||
2235 ',NULL BIL_URL1'||
2236 ',NULL BIL_URL2 '||
2237 l_from1 ||
2238 ' WHERE cal.xtd_flag = :l_yes AND '||l_inner_where_clause1||
2239
2240 ' AND sumry.salesrep_id = :l_resource_id ';
2241
2242 l_custom_sql := l_custom_sql||
2243 ' UNION ALL '||
2244 ' SELECT null VIEWBY ,'||
2245 '1 sortorder, '||
2246 l_inner_select3||
2247 ',sumry.product_category_id VIEWBYID'||
2248 ',NULL BIL_URL1'||
2249 ',NULL BIL_URL2 '||
2250 l_from2 ||
2251 ' WHERE '||l_inner_where_clause3||
2252
2253 ' AND sumry.salesrep_id = :l_resource_id ';
2254
2255 l_custom_sql := l_custom_sql||
2256 ' ) GROUP BY VIEWBY, VIEWBYID, SORTORDER, BIL_URL1, BIL_URL2 ';
2257
2258 END IF;
2259 l_sql_error_desc := '';
2260
2261
2262 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
2263 l_ind :=1;
2264 l_len:= length(l_custom_sql);
2265
2266 WHILE l_ind <= l_len LOOP
2267 l_str:= substr(l_custom_sql, l_ind, 4000);
2268
2269 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
2270 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
2271 MESSAGE => l_str);
2272
2273 l_ind := l_ind + 4000;
2274
2275 END LOOP;
2276 END IF;
2277
2278
2279
2280 IF l_parent_sales_group_id IS NULL THEN
2281 IF l_resource_id IS NULL THEN
2282
2283 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
2284 EXECUTE IMMEDIATE l_custom_sql
2285 USING
2286 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2287 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2288 l_curr_as_of_date,l_prev_date,l_yes,
2289 l_record_type_id,l_record_type_id,
2290 l_curr_as_of_date, l_prev_date,l_sg_id_num,
2291 l_snapshot_date,l_period_type,
2292 l_snapshot_date,
2293 l_snapshot_date,
2294 l_sg_id_num;
2295 ELSE
2296 EXECUTE IMMEDIATE l_custom_sql
2297 USING
2298 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2299 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2300 l_curr_as_of_date,l_prev_date,l_yes,
2301 l_record_type_id,l_record_type_id,
2302 l_curr_as_of_date, l_prev_date,l_sg_id_num,
2303 l_snapshot_date,l_period_type,
2304 l_prev_snap_date,l_period_type,
2305 l_snapshot_date, l_prev_snap_date,
2306 l_sg_id_num;
2307 END IF;
2308
2309 ELSE
2310
2311 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
2312 EXECUTE IMMEDIATE l_custom_sql
2313 USING
2314 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2315 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2316 l_curr_as_of_date,l_prev_date,l_yes,
2317 l_record_type_id,l_record_type_id,
2318 l_curr_as_of_date, l_prev_date,
2322 l_snapshot_date,
2319 l_sg_id_num,l_resource_id,
2320 l_snapshot_date,l_period_type,
2321 l_snapshot_date,
2323 l_sg_id_num,l_resource_id;
2324
2325 ELSE
2326
2327 EXECUTE IMMEDIATE l_custom_sql
2328 USING
2329 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2330 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2331 l_curr_as_of_date,l_prev_date,l_yes,
2332 l_record_type_id,l_record_type_id,
2333 l_curr_as_of_date, l_prev_date,
2334 l_sg_id_num,l_resource_id,
2335 l_snapshot_date,l_period_type,
2336 l_prev_snap_date,l_period_type,
2337 l_snapshot_date, l_prev_snap_date,
2338 l_sg_id_num,l_resource_id;
2339 END IF;
2340 END IF;
2341 ELSE -- parent_sales_group_is is not null
2342 IF l_resource_id IS NULL THEN
2343
2344 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
2345
2346 EXECUTE IMMEDIATE l_custom_sql
2347 USING
2348 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2349 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2350 l_curr_as_of_date,l_prev_date,l_yes,
2351 l_record_type_id,l_record_type_id,
2352 l_curr_as_of_date, l_prev_date,
2353 l_parent_sales_group_id,
2354 l_sg_id_num,
2355 l_snapshot_date,l_period_type,
2356 l_snapshot_date,
2357 l_snapshot_date,
2358 l_parent_sales_group_id, l_sg_id_num;
2359 ELSE
2360 EXECUTE IMMEDIATE l_custom_sql
2361 USING
2362 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2363 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2364 l_curr_as_of_date,l_prev_date,l_yes,
2365 l_record_type_id,l_record_type_id,
2366 l_curr_as_of_date, l_prev_date,
2367 l_parent_sales_group_id,
2368 l_sg_id_num,
2369 l_snapshot_date,l_period_type,
2370 l_prev_snap_date,l_period_type,
2371 l_snapshot_date, l_prev_snap_date,
2372 l_parent_sales_group_id, l_sg_id_num;
2373 END IF;
2374
2375 ELSE
2376
2377 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
2378 EXECUTE IMMEDIATE l_custom_sql
2379 USING
2380 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2381 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2382 l_curr_as_of_date,l_prev_date,l_yes,
2383 l_record_type_id,l_record_type_id,
2384 l_curr_as_of_date, l_prev_date,
2385 l_sg_id_num,l_sg_id_num,l_resource_id,
2386 l_snapshot_date,l_period_type,
2387 l_snapshot_date,
2388 l_snapshot_date,
2389 l_sg_id_num,l_sg_id_num, l_resource_id;
2390 ELSE
2391 EXECUTE IMMEDIATE l_custom_sql
2392 USING
2393 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2394 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2395 l_curr_as_of_date,l_prev_date,l_yes,
2396 l_record_type_id,l_record_type_id,
2397 l_curr_as_of_date, l_prev_date,
2398 l_sg_id_num,l_sg_id_num,l_resource_id,
2399 l_snapshot_date,l_period_type,
2400 l_prev_snap_date,l_period_type,
2401 l_snapshot_date, l_prev_snap_date,
2402 l_sg_id_num,l_sg_id_num, l_resource_id;
2403 END IF;
2404 END IF;
2405 END IF;
2406
2407 l_unassigned_value:= bil_bi_util_pkg.GET_UNASSIGNED_PC;
2408
2409 x_custom_sql :=
2410 ' SELECT * FROM ('||
2411 l_outer_select||' FROM
2412 (SELECT VIEWBY, VIEWBYID,SUM(BIL_MEASURE2) BIL_MEASURE2,
2413 SUM(BIL_MEASURE3) BIL_MEASURE3, SUM(BIL_MEASURE6) BIL_MEASURE6,
2414 SUM(BIL_MEASURE7) BIL_MEASURE7, SUM(BIL_MEASURE10) BIL_MEASURE10,
2415 SUM(BIL_MEASURE11) BIL_MEASURE11, SUM(BIL_MEASURE14) BIL_MEASURE14,
2416 SUM(BIL_MEASURE15) BIL_MEASURE15, SUM(BIL_MEASURE18) BIL_MEASURE18,
2417 SUM(BIL_MEASURE19) BIL_MEASURE19, SUM(BIL_MEASURE22) BIL_MEASURE22,
2418 SUM(BIL_MEASURE23) BIL_MEASURE23, '''||l_drill_link||''' BIL_URL1, BIL_URL2
2419 FROM
2420 (SELECT decode(opty.viewbyid, -1,:l_unassigned_value,
2421 mtl.DESCRIPTION || '' ('' || mtl.CATEGORY_CONCAT_SEGS ||'')'') VIEWBY,
2422 VIEWBYID, product_category_id,
2423 SORTORDER, BIL_MEASURE2,'||
2424 'BIL_MEASURE3, '||
2425 'BIL_MEASURE6,BIL_MEASURE7, BIL_MEASURE10, BIL_MEASURE11, '||
2426 'BIL_MEASURE14,BIL_MEASURE15,BIL_MEASURE18,BIL_MEASURE19, '||
2427 'BIL_MEASURE22,BIL_MEASURE23
2428 ,NULL BIL_URL1
2429 ,DECODE(opty.viewbyid,''-1'',NULL,'''||l_cat_url||''') BIL_URL2 '||
2430 ' FROM
2431 (select pcd.parent_id VIEWBYID, product_category_id,
2432 SORTORDER, BIL_MEASURE2,'||
2433 'BIL_MEASURE3, '||
2434 'BIL_MEASURE6,BIL_MEASURE7, BIL_MEASURE10, BIL_MEASURE11, '||
2435 'BIL_MEASURE14,BIL_MEASURE15,BIL_MEASURE18,BIL_MEASURE19, '||
2436 'BIL_MEASURE22,BIL_MEASURE23
2440 'BIL_MEASURE6,BIL_MEASURE7, BIL_MEASURE10, BIL_MEASURE11, '||
2437 from (select VIEWBYID, VIEWBYID product_category_id,
2438 SORTORDER, BIL_MEASURE2,'||
2439 'BIL_MEASURE3, '||
2441 'BIL_MEASURE14,BIL_MEASURE15,BIL_MEASURE18,BIL_MEASURE19, '||
2442 'BIL_MEASURE22,BIL_MEASURE23 FROM BIL_BI_RPT_TMP1) sumry '||l_denorm||' where
2443 sortorder = 1 '||l_product_where_clause||
2444 ') OPTY, mtl_categories_v mtl '||
2445 ' WHERE mtl.category_id (+) = opty.viewbyid '
2446 ||
2447 ') GROUP BY VIEWBY, VIEWBYID, '''||l_drill_link||''', BIL_URL2
2448 ) '||
2449 ' ) WHERE NOT('||l_null_rem_where_clause||') ORDER BY UPPER(VIEWBY)';
2450
2451 ELSE --drill down on specific product category
2452 /* The first part of the union all gets the 'Assigned to Category' row
2453 * for the category selected, (which used to be called unassigned) the second part of
2454 * the union all gets the children categories
2455 */
2456 IF l_resource_id is NULL THEN
2457 l_custom_sql := l_inner_select ||
2458 '('||
2459 ' SELECT /*+ LEADING(cal) */ decode(pcd.parent_id, pcd.id, decode(sumry.item_id, ''-1'', :l_cat_assign, pcd.value), pcd.value) VIEWBY ,'||
2460 ' decode(pcd.parent_id, pcd.id, decode(sumry.item_id, ''-1'',1, 2),2) SORTORDER, '||
2461 l_inner_select1||
2462 ',pcd.id VIEWBYID'||
2463 ',NULL BIL_URL1'||
2464 ',decode(pcd.parent_id, pcd.id, NULL, '||
2465 ' '''||l_cat_url||''')'||
2466 ' BIL_URL2 '||
2467 l_from1 ||
2468 ' WHERE cal.xtd_flag = :l_yes AND '||l_inner_where_clause1||
2469 ' AND sumry.salesrep_id IS NULL '||
2470 ' '||l_product_where_clause||' ';
2471
2472
2473 l_custom_sql := l_custom_sql||
2474 'UNION ALL '||
2475 ' SELECT decode(pcd.parent_id, pcd.id, decode(sumry.item_id, ''-1'', :l_cat_assign, pcd.value), pcd.value) VIEWBY ,'||
2476 ' decode(pcd.parent_id, pcd.id, decode(sumry.item_id, ''-1'',1, 2),2) SORTORDER, '||
2477 l_inner_select3||
2478 ',pcd.id VIEWBYID'||
2479 ',NULL BIL_URL1'||
2480 ',DECODE(pcd.parent_id, pcd.id, NULL, '''||l_cat_url||''') BIL_URL2 '||
2481 l_from2 ||
2482 ' WHERE '||l_inner_where_clause3||
2483 ' AND sumry.salesrep_id IS NULL '||
2484 ' '||l_product_where_clause;
2485
2486 l_custom_sql := l_custom_sql||
2487 ' ) GROUP BY VIEWBY, VIEWBYID, SORTORDER, BIL_URL1,BIL_URL2 ';
2488 ELSE -- resource id is not null
2489 l_custom_sql := l_inner_select ||
2490 '('||
2491 ' SELECT /*+ LEADING(cal) */ decode(pcd.parent_id, pcd.id, decode(sumry.item_id, ''-1'', :l_cat_assign, pcd.value), pcd.value) VIEWBY ,'||
2492 ' decode(pcd.parent_id, pcd.id, decode(sumry.item_id, ''-1'',1, 2),2) SORTORDER, '||
2493 l_inner_select1||
2494 ',pcd.id VIEWBYID'||
2495 ',decode(sumry.item_id, ''-1'', decode(pcd.parent_id, pcd.id,NULL,'''||l_drill_link||'''),'''||l_drill_link||''') BIL_URL1'||
2496
2497 ',decode(pcd.parent_id, pcd.id, NULL, '''||l_cat_url||''')'||
2498 ' BIL_URL2 '||
2499 l_from1 ||
2500 ' WHERE cal.xtd_flag = :l_yes AND '||l_inner_where_clause1||
2501 ' AND sumry.salesrep_id = :l_resource_id '||
2502 ' '||l_product_where_clause||' ';
2503
2504 l_custom_sql := l_custom_sql||
2505 ' UNION ALL '||
2506 ' SELECT decode(pcd.parent_id, pcd.id, decode(sumry.item_id, ''-1'', :l_cat_assign, pcd.value), pcd.value) VIEWBY ,'||
2507 ' decode(pcd.parent_id, pcd.id, decode(sumry.item_id, ''-1'',1, 2),2) SORTORDER, '||
2508 l_inner_select3||
2509 ',pcd.id VIEWBYID'||
2510 ',decode(sumry.item_id, ''-1'', decode(pcd.parent_id, pcd.id,NULL,'''||l_drill_link||'''),'''||l_drill_link||''') BIL_URL1'||
2511 ',DECODE(pcd.parent_id, pcd.id, NULL, '''||l_cat_url||''') BIL_URL2 '||
2512 l_from2 ||
2513 ' WHERE '||l_inner_where_clause3||
2514 ' AND sumry.salesrep_id = :l_resource_id '||
2515 ' '||l_product_where_clause||' ';
2516
2517
2521
2518 l_custom_sql :=l_custom_sql||
2519 ' ) GROUP BY VIEWBY, VIEWBYID, SORTORDER, BIL_URL1,BIL_URL2 ';
2520 END IF;
2522 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
2523 l_ind :=1;
2524 l_len:= length(l_custom_sql);
2525
2526 WHILE l_ind <= l_len LOOP
2527 l_str:= substr(l_custom_sql, l_ind, 4000);
2528
2529 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
2530 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
2531 MESSAGE => l_str);
2532
2533 l_ind := l_ind + 4000;
2534
2535 END LOOP;
2536 END IF;
2537
2538
2539 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
2540
2541 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
2542 MODULE => g_pkg || l_proc,
2543 MESSAGE => 'length of query l_custom_sql is '|| length(l_custom_sql));
2544
2545 END IF;
2546
2547
2548 IF l_parent_sales_group_id IS NULL THEN
2549 IF l_resource_id IS NULL THEN
2550
2551 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
2552 EXECUTE IMMEDIATE l_insert_stmnt || l_custom_sql
2553 USING l_cat_assign,
2554 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2555 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2556 l_curr_as_of_date,l_prev_date,l_yes,
2557 l_record_type_id,l_record_type_id,
2558 l_curr_as_of_date, l_prev_date,
2559 l_sg_id_num,l_prodcat_id,
2560 l_cat_assign,
2561 l_snapshot_date,l_period_type,
2562 l_snapshot_date,
2563 l_snapshot_date,
2564 l_sg_id_num,l_prodcat_id;
2565 ELSE
2566 EXECUTE IMMEDIATE l_insert_stmnt || l_custom_sql
2567 USING l_cat_assign,
2568 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2569 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2570 l_curr_as_of_date,l_prev_date,l_yes,
2571 l_record_type_id,l_record_type_id,
2572 l_curr_as_of_date, l_prev_date,
2573 l_sg_id_num,l_prodcat_id,
2574 l_cat_assign,
2575 l_snapshot_date,l_period_type,
2576 l_prev_snap_date,l_period_type,
2577 l_snapshot_date, l_prev_snap_date,
2578 l_sg_id_num,l_prodcat_id;
2579 END IF;
2580
2581 ELSE
2582
2583 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
2584 EXECUTE IMMEDIATE l_insert_stmnt || l_custom_sql
2585 USING l_cat_assign,
2586 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2587 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2588 l_curr_as_of_date,l_prev_date,l_yes,
2589 l_record_type_id,l_record_type_id,
2593 l_cat_assign,
2590 l_curr_as_of_date, l_prev_date,
2591 l_sg_id_num,l_resource_id,
2592 l_prodcat_id,
2594 l_snapshot_date,l_period_type,
2595 l_snapshot_date,
2596 l_snapshot_date,
2597 l_sg_id_num,l_resource_id,
2598 l_prodcat_id;
2599 ELSE
2600 EXECUTE IMMEDIATE l_insert_stmnt || l_custom_sql
2601 USING l_cat_assign,
2602 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2603 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2604 l_curr_as_of_date,l_prev_date,l_yes,
2605 l_record_type_id,l_record_type_id,
2606 l_curr_as_of_date, l_prev_date,
2607 l_sg_id_num,l_resource_id,
2608 l_prodcat_id,
2609 l_cat_assign,
2610 l_snapshot_date,l_period_type,
2611 l_prev_snap_date,l_period_type,
2612 l_snapshot_date, l_prev_snap_date,
2613 l_sg_id_num,l_resource_id,
2614 l_prodcat_id;
2615 END IF;
2616
2617 END IF;
2618
2619 ELSE -- l_parent_sales_group_is not null
2620 IF l_resource_id IS NULL THEN
2621
2622 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
2623 EXECUTE IMMEDIATE l_insert_stmnt || l_custom_sql
2624 USING l_cat_assign,
2625 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2626 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2627 l_curr_as_of_date,l_prev_date,l_yes,
2628 l_record_type_id,l_record_type_id,
2629 l_curr_as_of_date, l_prev_date,
2630 l_parent_sales_group_id,l_sg_id_num,l_prodcat_id,
2631 l_cat_assign,
2632 l_snapshot_date,l_period_type,
2633 l_snapshot_date,
2634 l_snapshot_date,
2635 l_parent_sales_group_id,
2636 l_sg_id_num,l_prodcat_id;
2637 ELSE
2638 EXECUTE IMMEDIATE l_insert_stmnt || l_custom_sql
2639 USING l_cat_assign,
2640 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2641 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2642 l_curr_as_of_date,l_prev_date,l_yes,
2643 l_record_type_id,l_record_type_id,
2644 l_curr_as_of_date, l_prev_date,
2645 l_parent_sales_group_id,l_sg_id_num,l_prodcat_id,
2646 l_cat_assign,
2647 l_snapshot_date,l_period_type,
2648 l_prev_snap_date,l_period_type,
2649 l_snapshot_date, l_prev_snap_date,
2650 l_parent_sales_group_id,
2651 l_sg_id_num,l_prodcat_id;
2652 END IF;
2653
2654 ELSE
2655
2656 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
2657 EXECUTE IMMEDIATE l_insert_stmnt || l_custom_sql
2658 USING l_cat_assign,
2659 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2660 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2661 l_curr_as_of_date,l_prev_date,l_yes,
2662 l_record_type_id,l_record_type_id,
2663 l_curr_as_of_date, l_prev_date,
2664 l_sg_id_num,l_sg_id_num,l_resource_id,l_prodcat_id,
2665 l_cat_assign,
2666 l_snapshot_date,l_period_type,
2667 l_snapshot_date,
2668 l_snapshot_date,
2669 l_sg_id_num,
2670 l_sg_id_num,l_resource_id,l_prodcat_id;
2671 ELSE
2672 EXECUTE IMMEDIATE l_insert_stmnt || l_custom_sql
2673 USING l_cat_assign,
2674 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2675 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,l_prev_date,
2676 l_curr_as_of_date,l_prev_date,l_yes,
2677 l_record_type_id,l_record_type_id,
2678 l_curr_as_of_date, l_prev_date,
2679 l_sg_id_num,l_sg_id_num,l_resource_id,l_prodcat_id,
2680 l_cat_assign,
2681 l_snapshot_date,l_period_type,
2682 l_prev_snap_date,l_period_type,
2683 l_snapshot_date, l_prev_snap_date,
2684 l_sg_id_num,
2685 l_sg_id_num,l_resource_id,l_prodcat_id;
2686 END IF;
2687
2688 END IF;
2689 END IF;
2690 IF bil_bi_util_pkg.isleafnode(l_prodcat_id) THEN
2691
2692 x_custom_sql := ' SELECT * FROM ( '||
2693 l_outer_select||
2694 ' FROM ('||
2695 ' SELECT VIEWBY, VIEWBYID, SORTORDER, '||
2696 ' CASE WHEN NOT(BIL_MEASURE6 IS NULL AND BIL_MEASURE10 IS NULL AND BIL_MEASURE14 IS NULL AND '||
2697 ' BIL_MEASURE22 IS NULL) '||
2698 ' THEN '||
2699 ' (NVL(BIL_MEASURE6,0)+NVL(BIL_MEASURE10,0)+NVL(BIL_MEASURE14,0)+NVL(BIL_MEASURE22,0)) '||
2700 ' ELSE NULL '||
2701 ' END BIL_MEASURE2,'||
2702 ' CASE WHEN NOT(BIL_MEASURE7 IS NULL AND BIL_MEASURE11 IS NULL AND BIL_MEASURE15 IS NULL AND '||
2703 ' BIL_MEASURE23 IS NULL) '||
2704 ' THEN '||
2705 ' (NVL(BIL_MEASURE7,0)+NVL(BIL_MEASURE11,0)+NVL(BIL_MEASURE15,0)+NVL(BIL_MEASURE23,0)) '||
2706 ' ELSE NULL '||
2707 ' END BIL_MEASURE3, '||
2708 ' BIL_MEASURE6,BIL_MEASURE7, '||
2712 ' BIL_MEASURE23,BIL_URL1, BIL_URL2 '||
2709 ' BIL_MEASURE10, BIL_MEASURE11, '||
2710 ' BIL_MEASURE14, BIL_MEASURE15, '||
2711 ' BIL_MEASURE18,BIL_MEASURE19, BIL_MEASURE22, '||
2713 ' FROM ('||
2714 ' SELECT VIEWBY, VIEWBYID, SORTORDER, BIL_MEASURE2,'||
2715 ' BIL_MEASURE3, BIL_MEASURE6,BIL_MEASURE7, '||
2716 ' BIL_MEASURE10, BIL_MEASURE11, '||
2717 ' BIL_MEASURE14, BIL_MEASURE15, '||
2718 ' BIL_MEASURE18,BIL_MEASURE19, BIL_MEASURE22, '||
2719 ' BIL_MEASURE23,BIL_URL1, BIL_URL2 '||
2720 ' FROM BIL_BI_RPT_TMP1 '||
2721 ' WHERE SORTORDER = 1 '||
2722 ' UNION ALL
2723 SELECT VIEWBY, VIEWBYID, SORTORDER, BIL_MEASURE2,'||
2724 ' BIL_MEASURE3, BIL_MEASURE6,BIL_MEASURE7, '||
2725 ' BIL_MEASURE10, BIL_MEASURE11, '||
2726 ' BIL_MEASURE14, BIL_MEASURE15, '||
2727 ' BIL_MEASURE18,BIL_MEASURE19, BIL_MEASURE22, '||
2728 ' BIL_MEASURE23,BIL_URL1, NULL BIL_URL2 '||
2729 ' FROM BIL_BI_RPT_TMP1 '||
2730 ' WHERE SORTORDER = 2 '||
2731 ' ) '||
2732 ')'||' ORDER BY SORTORDER, UPPER(VIEWBY) '||
2733 ' ) WHERE NOT('||l_null_rem_where_clause||')';
2734
2735
2736 ELSE
2737 x_custom_sql := ' SELECT * FROM ( '||
2738 l_outer_select||' FROM BIL_BI_RPT_TMP1 '||
2739 ' ORDER BY SORTORDER, UPPER(VIEWBY) '||
2740 ') WHERE NOT('||l_null_rem_where_clause||')';
2741 END IF;
2742
2743
2744 END IF;--end drill down on specific product cat
2745
2746 commit;
2747
2748 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
2749 l_ind :=1;
2750 l_len:= length(x_custom_sql);
2751
2752 WHILE l_ind <= l_len LOOP
2753 l_str:= substr(x_custom_sql, l_ind, 4000);
2754
2755 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
2756 MODULE => g_pkg || l_proc ||'.'|| ' Final Query to PMF ',
2757 MESSAGE => l_str);
2758
2759 l_ind := l_ind + 4000;
2760
2761 END LOOP;
2762 END IF;
2763
2764
2765
2766 x_custom_attr := BIS_QUERY_ATTRIBUTES_TBL();
2767 l_custom_rec := BIS_PMV_PARAMETERS_PUB.INITIALIZE_QUERY_TYPE;
2768
2769 l_bind_ctr := 1;
2770 l_custom_rec.attribute_name :=':l_yes';
2771 l_custom_rec.attribute_value := 'Y';
2772 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.CHARACTER_BIND;
2773 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
2774 x_custom_attr.Extend();
2775 x_custom_attr(l_bind_ctr) := l_custom_rec;
2776 l_bind_ctr:=l_bind_ctr+1;
2777
2778 l_custom_rec.attribute_name :=':l_unassigned_value';
2779 l_custom_rec.attribute_value := l_unassigned_value;
2780 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.CHARACTER_BIND;
2781 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
2782 x_custom_attr.Extend();
2783 x_custom_attr(l_bind_ctr) := l_custom_rec;
2784 l_bind_ctr:=l_bind_ctr+1;
2785
2786 END CASE;
2787 ELSE --no valid parameters
2788 BIL_BI_UTIL_PKG.get_default_query(p_regionname => l_region_id
2789 ,x_sqlstr => x_custom_sql);
2790
2791 IF FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
2792
2793 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_ERROR,
2794 MODULE => g_pkg || l_proc || 'Parameter_Error',
2795 MESSAGE => 'Invalid Parameter '|| l_proc);
2796
2797 END IF;
2798
2799 END IF;
2800
2801 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
2802
2803 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_PROCEDURE,
2804 MODULE => g_pkg || l_proc || 'End',
2805 MESSAGE => 'End of Procedure '||l_proc);
2806
2807 END IF;
2808
2809 EXCEPTION
2810 WHEN OTHERS THEN
2811
2812 IF FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
2813 fnd_message.set_name('FND','SQL_PLSQL_ERROR'); -- Seeded Message
2814 fnd_message.set_token('Error is : ' ,SQLCODE);
2815 fnd_message.set_token('Reason is : ', SQLERRM);
2816
2817 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_UNEXPECTED,
2818 MODULE => g_pkg || l_proc || 'proc_error',
2819 MESSAGE => fnd_message.get );
2820
2821 END IF;
2822 COMMIT;
2823 RAISE;
2824 END BIL_BI_OPPTY_OVERVIEW;
2825
2826
2827
2828
2829
2833 * Date : June 16, 2004
2830 /*******************************************************************************
2831 * Name : Procedure BIL_BI_OPPTY_WIN_LOSS_COUNTS
2832 * Author : Elena Sapozhnikova
2834 * Purpose : Opportunity Win/Loss with Counts Sales Intelligence report and charts.
2835 *
2836 * Copyright (c) 2002 Oracle Corporation
2837 *
2838 * Parameters
2839 * p_page_parameter_tbl PL/SQL table containing dimension parameters
2840 * p_bis_map_tbl PL/SQL table containing sql query
2841 *
2842 *
2843 * Date Author Description
2844 * ---- ------ -----------
2845 * 06/07/04 esapozhn initial version
2846 * 26 Nov 2004 hrpandey Drill Down to Oppty Line Detail report
2847 ******************************************************************************/
2848
2849
2850 PROCEDURE BIL_BI_OPPTY_WIN_LOSS_COUNTS( p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL
2851 ,x_custom_sql OUT NOCOPY VARCHAR2
2852 ,x_custom_attr OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL )
2853 IS
2854
2855 l_period_type VARCHAR2(50);
2856 l_sg_id VARCHAR2(50);
2857 l_resource_id VARCHAR2(50);
2858 l_conv_rate_selected VARCHAR2(50);
2859 l_curr_page_time_id NUMBER;
2860 l_prev_page_time_id NUMBER;
2861 l_custom_rec BIS_QUERY_ATTRIBUTES;
2862 l_region_id VARCHAR2(50);
2863 l_comp_type VARCHAR2(50);
2864 l_parameter_valid BOOLEAN;
2865 l_bitand_id VARCHAR2(50);
2866 l_calendar_id VARCHAR2(50);
2867 l_curr_as_of_date DATE;
2868 l_prev_date DATE;
2869 l_page_period_type VARCHAR2(50);
2870 l_bis_sysdate DATE;
2871 l_fii_struct VARCHAR2(50);
2872 l_record_type_id NUMBER;
2873 l_sql_error_msg VARCHAR2(1000);
2874 l_sql_error_desc VARCHAR2(5000);
2875 l_sg_id_num NUMBER;
2876 l_fst_category VARCHAR2(50);
2877 l_fst_crdt_type VARCHAR2(50);
2878 l_debug_mode VARCHAR2(50);
2879 l_rpt_str VARCHAR2(80);
2880 l_viewby VARCHAR2(80) ;
2881 l_bind_ctr NUMBER;
2882 l_inner_where_clause VARCHAR2(1000);
2883 l_inner_where_clause1 VARCHAR2(1000);
2884 l_inner_where_clause2 VARCHAR2(1000);
2885 l_inner_where_clause3 VARCHAR2(1000);
2886 l_inner_where_clause4 VARCHAR2(1000);
2887 l_null_rem_where_clause VARCHAR2(4000);
2888 l_outer_select VARCHAR2(8000);
2889 l_inner_select VARCHAR2(8000);
2890 l_inner_select1 VARCHAR2(8000);
2891 l_inner_select2 VARCHAR2(8000);
2892 l_inner_select3 VARCHAR2(8000);
2893 l_inner_select4 VARCHAR2(8000);
2894 l_custom_sql VARCHAR2(32000);
2895 l_custom_sql1 VARCHAR2(32000);
2896 l_using VARCHAR2(10000);
2897 l_insert_stmnt VARCHAR2(8000);
2898 l_prodcat_id VARCHAR2(20);
2899 l_productcat_id VARCHAR2(20);
2900 l_product_where_clause VARCHAR2(1000);
2901 l_product_where_clause1 VARCHAR2(1000);
2902 l_sumry VARCHAR2(50);
2903 l_denorm VARCHAR2(100);
2904 l_url VARCHAR2(1000);
2905 l_cat_assign VARCHAR2(1000);
2906 l_productcat_cl VARCHAR2(500);
2907 l_product_cl VARCHAR2(500);
2908 l_cat_url VARCHAR2(500);
2909 l_prod_url VARCHAR2(500);
2910 l_sumry1 VARCHAr2(50);
2911 l_sumry2 VARCHAr2(50);
2912 l_url_str VARCHAR2(1000);
2913 l_cat_denorm VARCHAR2(50);
2914 l_from1 VARCHAR2(1000);
2915 l_from2 VARCHAR2(1000);
2916 l_from3 VARCHAR2(1000);
2917 l_item VARCHAR2(100);
2918 l_snap_date DATE;
2919 l_proc VARCHAR2(100);
2920 l_parent_sales_group_id NUMBER;
2921 l_yes VARCHAR2(1);
2922 l_parent_sls_grp_where_clause VARCHAR2(1000);
2923 l_pipe_product_where_clause VARCHAR2(1000);
2924 l_pipe_denorm VARCHAR2(100);
2925 l_currency_suffix VARCHAR2(5);
2926 l_drill_link varchar2(4000);
2927
2928 l_ind NUMBER;
2929 l_str VARCHAR2(4000);
2930 l_len NUMBER;
2931
2932
2933 l_prev_amt VARCHAR2(1000);
2934 l_column_type VARCHAR2(1000);
2935 l_snapshot_date DATE;
2936 l_open_mv_new VARCHAR2(1000);
2937 l_open_mv_new1 VARCHAR2(1000);
2938 l_prev_snap_date DATE;
2939 l_pipe_select1 varchar2(4000);
2940 l_pipe_select2 varchar2(4000);
2941 l_pipe_select3 varchar2(4000);
2942 l_inner_where_pipe VARCHAR2(1000);
2943
2944
2945
2946 BEGIN
2947 g_pkg := 'bil.patch.115.sql.BIL_BI_SALES_MGMT_RPTS_PKG.';
2948 l_region_id:= 'BIL_BI_OPPTY_OVERVIEW';
2949 l_parameter_valid:= FALSE;
2953
2950 l_proc := 'BIL_BI_OPPTY_OVERVIEW.';
2951 l_yes := 'Y';
2952 g_sch_name := 'BIL';
2954
2955 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
2956
2957 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_PROCEDURE,
2958 MODULE => g_pkg || l_proc || 'begin',
2959 MESSAGE => 'Start of Procedure '|| l_proc);
2960
2961 END IF;
2962
2963 x_custom_attr := BIS_QUERY_ATTRIBUTES_TBL();
2964 l_custom_rec := BIS_PMV_PARAMETERS_PUB.INITIALIZE_QUERY_TYPE;
2965 BIL_BI_UTIL_PKG.GET_PAGE_PARAMS(p_page_parameter_tbl => p_page_parameter_tbl
2966 ,p_region_id => l_region_id
2967 ,x_period_type => l_period_type
2968 ,x_conv_rate_selected => l_conv_rate_selected
2969 ,x_sg_id => l_sg_id
2970 ,x_parent_sg_id => l_parent_sales_group_id
2971 ,x_resource_id => l_resource_id
2972 ,x_prodcat_id => l_prodcat_id
2973 ,x_curr_page_time_id => l_curr_page_time_id
2974 ,x_prev_page_time_id => l_prev_page_time_id
2975 ,x_comp_type => l_comp_type
2976 ,x_parameter_valid => l_parameter_valid
2977 ,x_as_of_date => l_curr_as_of_date
2978 ,x_page_period_type => l_page_period_type
2979 ,x_prior_as_of_date => l_prev_date
2980 ,x_record_type_id => l_record_type_id
2981 ,x_viewby => l_viewby );
2982
2983 /*
2984 bil_bi_util_pkg.get_latest_snap_date(p_page_parameter_tbl => p_page_parameter_tbl
2985 ,p_as_of_date => l_curr_as_of_date
2986 ,p_period_type => NULL
2987 ,x_snapshot_date => l_snap_date);
2988 */
2989
2990 IF l_parameter_valid THEN
2991 --retrieve 'Item unassigned' message here. We should be retireving from Message dicts?
2992 l_cat_assign:=FND_MESSAGE.GET_STRING('BIL', 'BIL_BI_ASSIGN_CATEGORY');
2993
2994 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
2995
2996 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
2997 MODULE => g_pkg || l_proc,
2998 MESSAGE => ' l_cat_assign is '||l_cat_assign );
2999
3000 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
3001 MODULE => g_pkg || l_proc,
3002 MESSAGE => 'Prod cat is '||nvl(l_prodcat_id, 0)||' Product is'||
3003 ' Lang '||USERENV('LANG'));
3004
3005 END IF;
3006
3007
3008 IF l_conv_rate_selected = 0 THEN
3009 l_currency_suffix := '_s';
3010 ELSE
3011 l_currency_suffix := '';
3012 END IF;
3013
3014 --Not sure what PMV returns for 'All', as of now it returns NULL, so convert it to 'All'.
3015 l_prodcat_id := 'All';
3016 BIL_BI_UTIL_PKG.GET_GLOBAL_CONTS( x_bitand_id => l_bitand_id
3017 ,x_calendar_id => l_calendar_id
3018 ,x_curr_date => l_bis_sysdate
3019 ,x_fii_struct => l_fii_struct );
3020
3021
3022 l_sg_id_num := TO_NUMBER(REPLACE(l_sg_id, ''''));
3023 l_bitand_id := TO_NUMBER(REPLACE(l_bitand_id, ''''));
3024 l_calendar_id := TO_NUMBER(REPLACE(l_calendar_id, ''''));
3025 l_conv_rate_selected := TO_NUMBER(REPLACE(l_conv_rate_selected, ''''));
3026 l_period_type := TO_NUMBER(REPLACE(l_period_type , ''''));
3027 l_prodcat_id := replace(l_prodcat_id,'''','');
3028
3029 l_rpt_str:='BIL_BI_OPOVER_R';
3030
3031 /*
3032
3036
3033 Include changes for the Drill to the Opty Line Detail Rep
3034
3035 */
3037
3038 --
3039
3040 -- Get the Drill Link to the Opty Line Detail Report
3041
3042 l_drill_link := bil_bi_util_pkg.get_drill_links( p_view_by => l_viewby,
3043 p_salesgroup_id => l_sg_id,
3044 p_resource_id => l_resource_id );
3045
3046
3047 --
3048
3049
3050 /* Get the Prefix for the Open amt based upon Period Type and Compare To Params */
3051
3052
3053 l_prev_amt := BIL_BI_UTIL_PKG.GET_PIPE_COL_NAMES(
3054 p_period_type => l_page_period_type ,
3055 p_compare_to => l_comp_type,
3056 p_column_type => 'O',
3057 p_curr_suffix => l_currency_suffix
3058 );
3059
3060
3061 /* Use the BIL_BI_UTIL_PKG.GET_PIPE_MV proc to get the MV name and snap date for Pipeline/Open Amts. */
3062
3063 BIL_BI_UTIL_PKG.GET_PIPE_MV(
3064 p_asof_date => l_curr_as_of_date ,
3065 p_period_type => l_page_period_type ,
3066 p_compare_to => l_comp_type ,
3067 p_prev_date => l_prev_date,
3068 p_page_parameter_tbl => p_page_parameter_tbl,
3069 x_pipe_mv => l_open_mv_new ,
3070 x_snapshot_date => l_snapshot_date ,
3071 x_prev_snap_date => l_prev_snap_date
3072 );
3073
3074
3075 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
3076
3077 l_sql_error_desc := 'l_viewby => '|| l_viewby||', '||
3078 'l_curr_page_time_id => '|| l_curr_page_time_id ||', ' ||
3079 'l_prev_page_time_id => '|| l_prev_page_time_id ||', ' ||
3080 'l_curr_as_of_date => '|| l_curr_as_of_date ||', ' ||
3081 'l_prev_date => '|| l_prev_date ||', ' ||
3082 'l_conv_rate_selected => '|| l_conv_rate_selected ||', ' ||
3083 'l_bitand_id => '|| l_bitand_id ||', ' ||
3084 'l_period_type => '|| l_period_type ||', ' ||
3085 'l_sg_id => '|| l_sg_id ||', ' ||
3086 'l_resource_id => '|| l_resource_id ||', ' ||
3087 'l_bis_sysdate => '|| l_bis_sysdate ||', ' ||
3088 'l_record_type_id => '|| l_record_type_id ||', ' ||
3089 'l_calendar_id => '|| l_calendar_id;
3090
3091
3092 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
3093 MODULE => g_pkg || l_proc,
3094 MESSAGE => 'Parameters =>'||l_sql_error_desc);
3095
3096 END IF;
3097
3098
3099
3100 /*** Query column mapping ******************************************************
3101 * Internal Name Grand Total Region Item Name
3102 * BIL_MEASURE1 BIL_MEASURE35 Total Opportunity Count
3103 * BIL_MEASURE2 BIL_MEASURE36 Total Opportunity
3104 * BIL_MEASURE3 BIL_MEASURE37 Prior Total Opportunity
3105 * BIL_MEASURE4 BIL_MEASURE38 Total Opportunity Change
3106 * BIL_MEASURE5 Won Count
3107 * BIL_MEASURE6 BIL_MEASURE40 Won
3108 * BIL_MEASURE7 BIL_MEASURE41 Prior Won / KPI Prior Won
3109 * BIL_MEASURE8 BIL_MEASURE42 Won Change
3110 * BIL_MEASURE9 Lost Count
3111 * BIL_MEASURE10 BIL_MEASURE44 Lost
3112 * BIL_MEASURE11 BIL_MEASURE45 Prior Lost / KPI Prior Lost
3113 * BIL_MEASURE12 BIL_MEASURE46 Lost Change
3114 * BIL_MEASURE13 Open Count
3115 * BIL_MEASURE14 BIL_MEASURE48 Open
3116 * BIL_MEASURE15 BIL_MEASURE49 Prior Open / KPI Prior Open
3117 * BIL_MEASURE16 BIL_MEASURE50 Open Change
3118 * BIL_MEASURE17 New Count
3119 * BIL_MEASURE18 BIL_MEASURE52 New
3120 * BIL_MEASURE19 BIL_MEASURE53 Prior New
3121 * BIL_MEASURE20 BIL_MEASURE54 New Change
3122 * BIL_MEASURE21 No Opportunity Count
3123 * BIL_MEASURE22 BIL_MEASURE56 No Opportunity
3124 * BIL_MEASURE23 BIL_MEASURE57 Prior No Opportunity / KPI Prior No
3125 * BIL_MEASURE24 BIL_MEASURE58 No Opportunity Change
3126 * BIL_MEASURE25 BIL_MEASURE59 Win %
3127 * BIL_MEASURE26 BIL_MEASURE60 Loss %
3128 * BIL_MEASURE27 BIL_MEASURE61 Open %
3129 * BIL_MEASURE28 BIL_MEASURE62 Win/Loss Ratio
3130 * BIL_MEASURE34 BIL_MEASURE68 KPI Prior Win/Loss Ratio
3131 * BIL_URL1 Sales Group URL
3132 * BIL_URL2 Product Category URL
3133 * BIL_TITLE1 Won, Lost, Open Opportunity Value
3134 * BIL_TITLE2 Won, Lost, Open % of Total
3135 * BIL_TITLE3 Won, Lost, Open Opportunity Count
3136 * BIL_URL3 URL to Drill to the Opty Line Detail rep from Lost Column
3137 * BIL_URL4 URL to Drill to the Opty Line Detail rep from No Opportunity Column
3138 * BIL_URL5 URL to Drill to the Opty Line Detail rep from Won Column
3139 * BIL_URL6 URL to Drill to the Opty Line Detail rep from Open Column
3140 *******************************************************************************/
3141
3142 l_outer_select:= 'SELECT VIEWBY
3143 ,VIEWBYID
3144 , BIL_MEASURE2
3145 , BIL_MEASURE3
3146 ,(((BIL_MEASURE2 - BIL_MEASURE3) / ABS(DECODE(BIL_MEASURE3, 0, NULL, BIL_MEASURE3))) * 100) BIL_MEASURE4
3147 ,BIL_MEASURE5
3148 ,BIL_MEASURE6
3149 ,BIL_MEASURE7
3153 ,BIL_MEASURE11
3150 ,(((BIL_MEASURE6 - BIL_MEASURE7) / ABS(DECODE(BIL_MEASURE7, 0, NULL, BIL_MEASURE7))) * 100) BIL_MEASURE8
3151 ,BIL_MEASURE9
3152 ,BIL_MEASURE10
3154 ,(((BIL_MEASURE10 - BIL_MEASURE11) / ABS(DECODE(BIL_MEASURE11, 0, NULL, BIL_MEASURE11))) * 100) BIL_MEASURE12
3155 ,BIL_MEASURE13
3156 ,BIL_MEASURE14
3157 ,BIL_MEASURE15
3158 ,(((BIL_MEASURE14 - BIL_MEASURE15) / ABS(DECODE(BIL_MEASURE15, 0, NULL, BIL_MEASURE15))) * 100) BIL_MEASURE16
3159 ,BIL_MEASURE17
3160 ,BIL_MEASURE18
3161 ,BIL_MEASURE19
3162 ,(((BIL_MEASURE18 - BIL_MEASURE19) / ABS(DECODE(BIL_MEASURE19, 0, NULL, BIL_MEASURE19))) * 100) BIL_MEASURE20
3163 ,BIL_MEASURE21
3164 ,BIL_MEASURE22
3165 ,BIL_MEASURE23
3166 ,(((BIL_MEASURE22 - BIL_MEASURE23) / ABS(DECODE(BIL_MEASURE23, 0, NULL, BIL_MEASURE23))) * 100) BIL_MEASURE24
3167 ,(((BIL_MEASURE6) / DECODE(BIL_MEASURE2, 0, NULL, BIL_MEASURE2)) * 100) BIL_MEASURE25
3168 ,(((BIL_MEASURE10) / DECODE(BIL_MEASURE2, 0, NULL, BIL_MEASURE2)) * 100) BIL_MEASURE26
3169 ,(((BIL_MEASURE14) / DECODE(BIL_MEASURE2, 0, NULL, BIL_MEASURE2)) * 100) BIL_MEASURE27
3170 ,(BIL_MEASURE6 / DECODE(BIL_MEASURE10, 0, NULL, BIL_MEASURE10)) BIL_MEASURE28
3171 ,(SUM(BIL_MEASURE2) OVER()) BIL_MEASURE36
3172 ,(SUM(BIL_MEASURE3) OVER()) BIL_MEASURE37
3173 ,(((( SUM(BIL_MEASURE2) OVER() ) - ( SUM(BIL_MEASURE3) OVER() )) / ABS(DECODE(SUM(BIL_MEASURE3) OVER(), 0, NULL, SUM(BIL_MEASURE3) OVER())) '||
3174 ' )) * 100 BIL_MEASURE38
3175 ,SUM(BIL_MEASURE6) OVER() BIL_MEASURE40
3176 ,SUM(BIL_MEASURE7) OVER() BIL_MEASURE41
3177 ,(((( SUM(BIL_MEASURE6) OVER() ) - ( SUM(BIL_MEASURE7) OVER() )) / ABS(DECODE(SUM(BIL_MEASURE7) OVER(), 0, NULL, SUM(BIL_MEASURE7) OVER())) '||
3178 ' )) * 100 BIL_MEASURE42
3179 ,(SUM(BIL_MEASURE10) OVER()) BIL_MEASURE44
3180 ,(SUM(BIL_MEASURE11) OVER()) BIL_MEASURE45
3181 ,(((( SUM(BIL_MEASURE10) OVER() ) - ( SUM(BIL_MEASURE11) OVER() )) / ABS(DECODE(SUM(BIL_MEASURE11) OVER(), 0, NULL, SUM(BIL_MEASURE11) OVER()))'||
3182 ' )) * 100 BIL_MEASURE46
3183 ,(SUM(BIL_MEASURE14) OVER()) BIL_MEASURE48
3184 ,(SUM(BIL_MEASURE15) OVER()) BIL_MEASURE49
3185 ,(((( SUM(BIL_MEASURE14) OVER() ) - ( SUM(BIL_MEASURE15) OVER() )) / ABS(DECODE(SUM(BIL_MEASURE15) OVER(), 0, NULL, SUM(BIL_MEASURE15) OVER() '||
3186 ' )) )) * 100 BIL_MEASURE50
3187 ,(SUM(BIL_MEASURE18) OVER()) BIL_MEASURE52
3188 ,(SUM(BIL_MEASURE19) OVER()) BIL_MEASURE53
3189 ,(((( SUM(BIL_MEASURE18) OVER() ) - ( SUM(BIL_MEASURE19) OVER() )) / ABS(DECODE(SUM(BIL_MEASURE19) OVER(), 0, NULL, SUM(BIL_MEASURE19) OVER() '||
3190 ' )) )) * 100 BIL_MEASURE54
3191 ,(SUM(BIL_MEASURE22) OVER()) BIL_MEASURE56
3192 ,(SUM(BIL_MEASURE23) OVER()) BIL_MEASURE57
3193 ,(((( SUM(BIL_MEASURE22) OVER() ) - ( SUM(BIL_MEASURE23) OVER() )) / ABS(DECODE(SUM(BIL_MEASURE23) OVER(), 0, NULL, SUM(BIL_MEASURE23) OVER() '||
3194 ' )) )) * 100 BIL_MEASURE58
3195 ,( SUM(BIL_MEASURE6) OVER() / (DECODE(SUM(BIL_MEASURE2) OVER(), 0, NULL, SUM(BIL_MEASURE2) OVER())) ) * 100 BIL_MEASURE59
3199 ,BIL_URL1
3196 ,( SUM(BIL_MEASURE10) OVER() / (DECODE(SUM(BIL_MEASURE2) OVER(), 0, NULL, SUM(BIL_MEASURE2) OVER())) ) * 100 BIL_MEASURE60
3197 ,( SUM(BIL_MEASURE14) OVER() / (DECODE(SUM(BIL_MEASURE2) OVER(), 0, NULL, SUM(BIL_MEASURE2) OVER())) ) *100 BIL_MEASURE61
3198 ,( SUM(BIL_MEASURE6) OVER() / (DECODE(SUM(BIL_MEASURE10) OVER(), 0, NULL, SUM(BIL_MEASURE10) OVER())) ) BIL_MEASURE62
3200 ,BIL_URL2
3201 ,DECODE('''||l_viewby||''',''ORGANIZATION+JTF_ORG_SALES_GROUP'',
3202 DECODE(BIL_URL2,NULL,NULL,BIL_URL2||'||'''BIL_DIMENSION1=LOST'''||'),
3203 DECODE(BIL_URL1,NULL,NULL,BIL_URL1||'||'''BIL_DIMENSION1=LOST'''||'))
3204 BIL_URL3
3205 ,DECODE('''||l_viewby||''',''ORGANIZATION+JTF_ORG_SALES_GROUP'',
3206 DECODE(BIL_URL2,NULL,NULL,BIL_URL2||'||'''BIL_DIMENSION1=No Opportunity'''||'),
3207 DECODE(BIL_URL1,NULL,NULL,BIL_URL1||'||'''BIL_DIMENSION1=No Opportunity'''||'))
3208 BIL_URL4
3209 ,DECODE('''||l_viewby||''',''ORGANIZATION+JTF_ORG_SALES_GROUP'',
3210 DECODE(BIL_URL2,NULL,NULL,BIL_URL2||'||'''BIL_DIMENSION1=WON'''||'),
3211 DECODE(BIL_URL1,NULL,NULL,BIL_URL1||'||'''BIL_DIMENSION1=WON'''||'))
3212 BIL_URL5
3213 ,DECODE('''||l_curr_as_of_date||''',TRUNC(SYSDATE),
3214 DECODE('''||l_viewby||''',''ORGANIZATION+JTF_ORG_SALES_GROUP'',
3215 DECODE(BIL_URL2,NULL,NULL,BIL_URL2||'||'''BIL_DIMENSION1=OPEN'''||'),
3216 DECODE(BIL_URL1,NULL,NULL,BIL_URL1||'||'''BIL_DIMENSION1=OPEN'''||')),
3217 NULL) BIL_URL6
3218 ' ;
3219
3220
3221 l_insert_stmnt := 'INSERT INTO BIL_BI_RPT_TMP1 (VIEWBY, VIEWBYID, SORTORDER, BIL_MEASURE2,'||
3222 'BIL_MEASURE3, '||
3223 'BIL_MEASURE5,BIL_MEASURE6,BIL_MEASURE7, BIL_MEASURE9, BIL_MEASURE10, BIL_MEASURE11, '||
3224 'BIL_MEASURE13,BIL_MEASURE14,BIL_MEASURE15,BIL_MEASURE17,BIL_MEASURE18,BIL_MEASURE19, '||
3225 'BIL_MEASURE21,BIL_MEASURE22,BIL_MEASURE23,BIL_URL1, BIL_URL2)';
3226
3227 l_inner_select:=' select VIEWBY '||
3228 ' ,VIEWBYID '||
3229 ' ,SORTORDER '||
3230 ' ,(CASE '||
3231 ' WHEN NOT(SUM(BIL_MEASURE2) IS NULL AND SUM(BIL_MEASURE14) IS NULL) '||
3232 ' THEN '||
3233 ' NVL(SUM(BIL_MEASURE2),0) + NVL(SUM(BIL_MEASURE14),0) '||
3234 ' ELSE NULL '||
3235 ' END) BIL_MEASURE2 '||
3236 ' ,(CASE '||
3237 ' WHEN NOT(SUM(BIL_MEASURE3) IS NULL AND SUM(BIL_MEASURE15) IS NULL) '||
3238 ' THEN '||
3239 ' NVL(SUM(BIL_MEASURE3),0) + NVL(SUM(BIL_MEASURE15),0) '||
3240 ' ELSE NULL '||
3241 ' END) BIL_MEASURE3 '||
3242 ' ,SUM(BIL_MEASURE5) BIL_MEASURE5 '||
3243 ' ,SUM(BIL_MEASURE6) BIL_MEASURE6 '||
3244 ' ,SUM(BIL_MEASURE7) BIL_MEASURE7 '||
3245 ' ,SUM(BIL_MEASURE9) BIL_MEASURE9 '||
3246 ' ,SUM(BIL_MEASURE10) BIL_MEASURE10 '||
3247 ' ,SUM(BIL_MEASURE11) BIL_MEASURE11 '||
3248 ' ,SUM(BIL_MEASURE13) BIL_MEASURE13 '||
3249 ' ,SUM(BIL_MEASURE14) BIL_MEASURE14 '||
3250 ' ,SUM(BIL_MEASURE15) BIL_MEASURE15 '||
3251 ' ,SUM(BIL_MEASURE17) BIL_MEASURE17 '||
3252 ' ,SUM(BIL_MEASURE18) BIL_MEASURE18 '||
3253 ' ,SUM(BIL_MEASURE19) BIL_MEASURE19 '||
3254 ' ,SUM(BIL_MEASURE21) BIL_MEASURE21 '||
3255 ' ,SUM(BIL_MEASURE22) BIL_MEASURE22 '||
3256 ' ,SUM(BIL_MEASURE23) BIL_MEASURE23 '||
3257 ' ,BIL_URL1 '||
3258 ' ,BIL_URL2 '||
3259 ' from ';
3260
3261 l_inner_select1:=
3262 ' (CASE WHEN cal.report_date =:l_curr_as_of_date '||
3263 ' THEN '||
3264 ' (CASE '||
3265 ' WHEN NOT(sumry.won_opty_amt'||l_currency_suffix||' IS NULL
3266 AND sumry.lost_opty_amt'||l_currency_suffix||' IS NULL AND '||
3267 ' sumry.no_opty_amt'||l_currency_suffix||' IS NULL) '||
3268 ' THEN '||
3272 ' ) '||
3269 ' (NVL(sumry.won_opty_amt'||l_currency_suffix||',0) + '||
3270 ' NVL(sumry.lost_opty_amt'||l_currency_suffix||',0) + '||
3271 ' NVL(sumry.no_opty_amt'||l_currency_suffix||',0) '||
3273 ' ELSE NULL '||
3274 ' END) '||
3275 ' ELSE NULL '||
3276 ' END) BIL_MEASURE2 '||
3277 ' , (CASE WHEN cal.report_date =:l_prev_date '||
3278 ' THEN '||
3279 ' (CASE '||
3280 ' WHEN NOT(sumry.won_opty_amt'||l_currency_suffix||' IS NULL
3281 AND sumry.lost_opty_amt'||l_currency_suffix||' IS NULL '||
3282 ' AND sumry.no_opty_amt'||l_currency_suffix||' IS NULL) '||
3283 ' THEN '||
3284 ' (NVL(sumry.won_opty_amt'||l_currency_suffix||',0) + '||
3285 ' NVL(sumry.lost_opty_amt'||l_currency_suffix||',0) + '||
3286 ' NVL(sumry.no_opty_amt'||l_currency_suffix||',0) '||
3287 ' ) '||
3288 ' ELSE NULL '||
3289 ' END) '||
3290 ' ELSE NULL '||
3291 ' END) BIL_MEASURE3 '||
3292 ' , (CASE WHEN cal.report_date =:l_curr_as_of_date '||
3293 ' THEN sumry.won_opty_cnt '||
3294 ' ELSE NULL '||
3295 ' END) BIL_MEASURE5 '||
3296 ' , (CASE WHEN cal.report_date =:l_curr_as_of_date '||
3297 ' THEN sumry.won_opty_amt'||l_currency_suffix||' '||
3298 ' ELSE NULL '||
3299 ' END) BIL_MEASURE6 '||
3300 ' , (CASE WHEN cal.report_date =:l_prev_date '||
3301 ' THEN sumry.won_opty_amt'||l_currency_suffix||' '||
3302 ' ELSE NULL '||
3303 ' END) BIL_MEASURE7 '||
3304 ' , (CASE WHEN cal.report_date =:l_curr_as_of_date '||
3305 ' THEN sumry.lost_opty_cnt '||
3306 ' ELSE NULL '||
3307 ' END) BIL_MEASURE9 '||
3308 ' , (CASE WHEN cal.report_date =:l_curr_as_of_date '||
3309 ' THEN sumry.lost_opty_amt'||l_currency_suffix||' '||
3310 ' ELSE NULL '||
3311 ' END) BIL_MEASURE10 '||
3312 ' , (CASE WHEN cal.report_date =:l_prev_date '||
3313 ' THEN sumry.lost_opty_amt'||l_currency_suffix||' '||
3314 ' ELSE NULL '||
3315 ' END) BIL_MEASURE11 '||
3316 ' , NULL BIL_MEASURE13 '||
3317 ' , NULL BIL_MEASURE14 '||
3318 ' , NULL BIL_MEASURE15 '||
3319 ' , (CASE WHEN cal.report_date =:l_curr_as_of_date '||
3320 ' THEN sumry.new_opty_cnt '||
3321 ' ELSE NULL '||
3322 ' END) BIL_MEASURE17 '||
3323 ' , (CASE WHEN cal.report_date =:l_curr_as_of_date '||
3324 ' THEN sumry.new_opty_amt'||l_currency_suffix||' '||
3325 ' ELSE NULL '||
3326 ' END) BIL_MEASURE18 '||
3327 ' , (CASE WHEN cal.report_date =:l_prev_date '||
3328 ' THEN sumry.new_opty_amt'||l_currency_suffix||' '||
3329 ' ELSE NULL '||
3330 ' END) BIL_MEASURE19 '||
3331 ' , (CASE WHEN cal.report_date =:l_curr_as_of_date '||
3332 ' THEN sumry.no_opty_cnt '||
3333 ' ELSE NULL '||
3334 ' END) BIL_MEASURE21 '||
3335 ' , (CASE WHEN cal.report_date =:l_curr_as_of_date '||
3336 ' THEN sumry.no_opty_amt'||l_currency_suffix||' '||
3337 ' ELSE NULL '||
3338 ' END) BIL_MEASURE22 '||
3339 ' , (CASE WHEN cal.report_date =:l_prev_date '||
3340 ' THEN sumry.no_opty_amt'||l_currency_suffix||' '||
3341 ' ELSE NULL '||
3342 ' END) BIL_MEASURE23';
3343
3344
3345 l_inner_where_clause := ' sumry.effective_time_id = cal.time_id '||
3346 ' AND sumry.effective_period_type_id = cal.period_type_id '||
3347 ' AND bitand(cal.record_type_id, :l_record_type_id)= :l_record_type_id '||
3348 ' AND cal.report_date IN (:l_curr_as_of_date, :l_prev_date) '||
3349 'AND sumry.parent_sales_group_id = :l_sg_id_num ';
3350 IF l_parent_sales_group_id IS NULL THEN
3351 IF l_resource_id IS NULL THEN
3352 l_inner_where_clause1 := ' sumry.effective_time_id = cal.time_id '||
3353 ' AND sumry.effective_period_type_id = cal.period_type_id '||
3354 ' AND bitand(cal.record_type_id, :l_record_type_id)= :l_record_type_id'||
3355 ' AND cal.report_date IN (:l_curr_as_of_date, :l_prev_date)'||
3356 ' AND sumry.parent_sales_group_id IS NULL '||
3357 ' AND sumry.sales_group_id = :l_sg_id_num ';
3358 ELSE
3359 l_inner_where_clause1 := ' sumry.effective_time_id = cal.time_id '||
3360 ' AND sumry.effective_period_type_id = cal.period_type_id '||
3361 ' AND bitand(cal.record_type_id, :l_record_type_id)= :l_record_type_id'||
3362 ' AND cal.report_date IN (:l_curr_as_of_date, :l_prev_date)'||
3363 ' AND sumry.parent_sales_group_id = sumry.sales_group_id '||
3367 IF l_resource_id IS NULL THEN
3364 ' AND sumry.sales_group_id = :l_sg_id_num ';
3365 END IF;
3366 ELSE
3368 l_inner_where_clause1 := ' sumry.effective_time_id = cal.time_id '||
3369 ' AND sumry.effective_period_type_id = cal.period_type_id '||
3370 ' AND bitand(cal.record_type_id, :l_record_type_id)= :l_record_type_id'||
3371 ' AND cal.report_date IN (:l_curr_as_of_date, :l_prev_date)'||
3372 ' AND sumry.parent_sales_group_id = :l_parent_sales_group_id '||
3373 ' AND sumry.sales_group_id = :l_sg_id_num ';
3374 ELSE
3375 l_inner_where_clause1 := ' sumry.effective_time_id = cal.time_id '||
3376 ' AND sumry.effective_period_type_id = cal.period_type_id '||
3377 ' AND bitand(cal.record_type_id, :l_record_type_id)= :l_record_type_id'||
3378 ' AND cal.report_date IN (:l_curr_as_of_date, :l_prev_date)'||
3379 ' AND sumry.parent_sales_group_id = :l_sg_id_num '||
3380 ' AND sumry.sales_group_id = :l_sg_id_num ';
3381 END IF;
3382 END IF;
3383
3384 /*
3385 l_inner_select3:= ' NULL BIL_MEASURE2 '||
3386 ' ,NULL BIL_MEASURE3 '||
3387 ' ,NULL BIL_MEASURE5 '||
3388 ' ,NULL BIL_MEASURE6 '||
3389 ' ,NULL BIL_MEASURE7 '||
3390 ' ,NULL BIL_MEASURE9 '||
3391 ' ,NULL BIL_MEASURE10 '||
3392 ' ,NULL BIL_MEASURE11 '||
3393 ' ,NULL BIL_MEASURE13 '||
3394 ' ,(CASE WHEN sumry.snap_date =:l_snap_date THEN '||
3395 ' decode(:l_period_type, '||
3396 ' 128,open_amt_year'||l_currency_suffix||', '||
3397 ' 64,open_amt_quarter'||l_currency_suffix||', '||
3398 ' 32,open_amt_period'||l_currency_suffix||', '||
3399 ' 16,open_amt_week'||l_currency_suffix||' '||
3400 ' ) '||
3401 ' ELSE NULL '||
3402 ' END) BIL_MEASURE14 '||
3403 ' ,(CASE WHEN sumry.snap_date =:l_prev_date THEN '||
3404 ' decode(:l_period_type, '||
3405 ' 128,open_amt_year'||l_currency_suffix||', '||
3406 ' 64,open_amt_quarter'||l_currency_suffix||', '||
3407 ' 32,open_amt_period'||l_currency_suffix||', '||
3408 ' 16,open_amt_week'||l_currency_suffix||' '||
3409 ' ) '||
3410 ' ELSE NULL '||
3411 ' END) BIL_MEASURE15 '||
3412 ' ,NULL BIL_MEASURE17 '||
3413 ' ,NULL BIL_MEASURE18 '||
3414 ' ,NULL BIL_MEASURE19 '||
3415 ' ,NULL BIL_MEASURE21 '||
3416 ' ,NULL BIL_MEASURE22 '||
3417 ' ,NULL BIL_MEASURE23';
3418 */
3419
3420
3421 IF (l_open_mv_new = 'BIL_BI_PIPE_G_MV') THEN
3422 l_inner_where_pipe := ' sumry.snap_date in (:l_snapshot_date, :l_prev_snap_date) ';
3423 ELSE
3424 l_inner_where_pipe := ' sumry.snap_date in (:l_snapshot_date) ';
3425 END IF;
3426
3427
3428 -- l_inner_select3:=
3429
3430
3431 l_pipe_select1 := ' NULL BIL_MEASURE2 '||
3432 ' ,NULL BIL_MEASURE3 '||
3433 ' ,NULL BIL_MEASURE5 '||
3434 ' ,NULL BIL_MEASURE6 '||
3435 ' ,NULL BIL_MEASURE7 '||
3436 ' ,NULL BIL_MEASURE9 '||
3440 ' ,(CASE WHEN sumry.snap_date =:l_snapshot_date THEN '||
3437 ' ,NULL BIL_MEASURE10 '||
3438 ' ,NULL BIL_MEASURE11 '||
3439 ' ,NULL BIL_MEASURE13 '||
3441 ' decode(:l_period_type, '||
3442 ' 128,open_amt_year'||l_currency_suffix||', '||
3443 ' 64,open_amt_quarter'||l_currency_suffix||', '||
3444 ' 32,open_amt_period'||l_currency_suffix||', '||
3445 ' 16,open_amt_week'||l_currency_suffix||' '||
3446 ' ) '||
3447 ' ELSE NULL '||
3448 ' END) BIL_MEASURE14 ';
3449
3450 IF (l_open_mv_new = 'BIL_BI_PIPE_G_MV') THEN
3451 l_pipe_select2 := ' ,(CASE WHEN sumry.snap_date =:l_prev_snap_date THEN '||
3452 ' decode(:l_period_type, '||
3453 ' 128,open_amt_year'||l_currency_suffix||', '||
3454 ' 64,open_amt_quarter'||l_currency_suffix||', '||
3455 ' 32,open_amt_period'||l_currency_suffix||', '||
3456 ' 16,open_amt_week'||l_currency_suffix||' '||
3457 ' ) '||
3458 ' ELSE NULL '||
3459 ' END) BIL_MEASURE14 ';
3460 ELSE
3461 l_pipe_select2 := ' ,(CASE WHEN sumry.snap_date =:l_snapshot_date THEN '||
3462 ''||l_prev_amt||' '||
3463 ' ELSE NULL '||
3464 ' END) BIL_MEASURE15 ';
3465 END IF;
3466
3467 l_pipe_select3 := ' ,NULL BIL_MEASURE17 '||
3468 ' ,NULL BIL_MEASURE18 '||
3469 ' ,NULL BIL_MEASURE19 '||
3470 ' ,NULL BIL_MEASURE21 '||
3471 ' ,NULL BIL_MEASURE22 '||
3472 ' ,NULL BIL_MEASURE23';
3473
3474
3475 l_inner_select3:= l_pipe_select1 || l_pipe_select2 || l_pipe_select3;
3476
3477 l_inner_where_clause2:= l_inner_where_pipe ||
3478 ' AND sumry.parent_sales_group_id = :l_sg_id_num ';
3479
3480
3481
3482 /*
3483 l_inner_where_clause2:= ' sumry.snap_date in (:l_snap_date, :l_prev_date) '||
3484 ' AND sumry.parent_sales_group_id = :l_sg_id_num ';
3485 */
3486
3487 IF l_parent_sales_group_id IS NULL THEN
3488 IF l_resource_id IS NULL THEN
3489 l_inner_where_clause3:= l_inner_where_pipe ||
3490 ' AND sumry.parent_sales_group_id IS NULL '||
3491 ' AND sumry.sales_group_id = :l_sg_id_num '||
3492 ' AND sumry.grp_total_flag = 0 ';
3493 ELSE
3494 l_inner_where_clause3:= l_inner_where_pipe ||
3495 ' AND sumry.parent_sales_group_id = sumry.sales_group_id '||
3496 ' AND sumry.sales_group_id = :l_sg_id_num '||
3497 ' AND sumry.grp_total_flag = 0 ';
3498 END IF;
3499 ELSE
3500 IF l_resource_id IS NULL THEN
3501 l_inner_where_clause3:= l_inner_where_pipe ||
3502 ' AND sumry.parent_sales_group_id = :l_parent_sales_group_id '||
3503 ' AND sumry.sales_group_id = :l_sg_id_num '||
3504 ' AND sumry.grp_total_flag = 0 ';
3505 ELSE
3506 l_inner_where_clause3:= l_inner_where_pipe ||
3507 ' AND sumry.parent_sales_group_id = :l_sg_id_num '||
3508 ' AND sumry.sales_group_id = :l_sg_id_num '||
3509 ' AND sumry.grp_total_flag = 0 ';
3510 END IF;
3511 END IF;
3512 l_inner_select4:= ' NULL BIL_MEASURE2 '||
3513 ' ,NULL BIL_MEASURE3 '||
3514 ' ,NULL BIL_MEASURE5 '||
3515 ' ,NULL BIL_MEASURE6 '||
3516 ' ,NULL BIL_MEASURE7 '||
3517 ' ,NULL BIL_MEASURE9 '||
3518 ' ,NULL BIL_MEASURE10 '||
3519 ' ,NULL BIL_MEASURE11 '||
3520 ' ,(sumry.latest_open_opty_cnt) BIL_MEASURE13 '||
3521 ' ,NULL BIL_MEASURE14 '||
3522 ' ,NULL BIL_MEASURE15 '||
3523 ' ,NULL BIL_MEASURE17 '||
3524 ' ,NULL BIL_MEASURE18 '||
3525 ' ,NULL BIL_MEASURE19 '||
3526 ' ,NULL BIL_MEASURE21 '||
3527 ' ,NULL BIL_MEASURE22 '||
3528 ' ,NULL BIL_MEASURE23';
3529
3530 l_inner_where_clause4 :=
3531 ' sumry.effective_period_type_id = :l_period_type '||
3532 ' AND sumry.effective_time_id = :l_curr_page_time_id ';
3533
3534 l_null_rem_where_clause := ' BIL_MEASURE2 IS NULL '||
3535 ' AND BIL_MEASURE5 IS NULL AND BIL_MEASURE6 IS NULL '||
3536 ' AND BIL_MEASURE9 IS NULL '||
3537 ' AND BIL_MEASURE10 IS NULL '||
3538 ' AND BIL_MEASURE13 IS NULL AND BIL_MEASURE14 IS NULL '||
3539 ' AND BIL_MEASURE17 IS NULL '||
3540 ' AND BIL_MEASURE18 IS NULL '||
3541 ' AND BIL_MEASURE21 IS NULL AND BIL_MEASURE22 IS NULL ';
3542
3543
3544 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
3545
3546 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
3547 MODULE => g_pkg || l_proc,
3548 MESSAGE => ' l_from3 '||l_from3);
3549
3550 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
3551 MODULE => g_pkg || l_proc,
3552 MESSAGE => ' l_inner_where_clause4 '||l_inner_where_clause4);
3553
3557 execute immediate 'TRUNCATE TABLE '||g_sch_name||'.'||'BIL_BI_RPT_TMP1';
3554 END IF;
3555
3556
3558
3559 BIL_BI_UTIL_PKG.get_PC_NoRollup_Where_Clause(
3560 p_prodcat => l_prodcat_id,
3561 p_viewby => l_viewby,
3562 x_denorm => l_pipe_denorm,
3563 x_where_clause => l_pipe_product_where_clause);
3564
3565 l_url_str:='pFunctionName=BIL_BI_OPCOUNTS_R&pParamIds=Y&VIEW_BY='||l_viewby||'&VIEW_BY_NAME=VIEW_BY_ID';
3566
3567
3568 l_sumry1 := 'BIL_BI_OPTY_G_MV';
3569 -- l_sumry2 := 'BIL_BI_PIPE_G_MV';
3570 l_sumry2 := l_open_mv_new ;
3571 l_from1 := ' FROM '||l_fii_struct ||' cal, '||l_sumry1||' sumry '||l_denorm;
3572 l_from2 := ' FROM '||l_sumry2||' sumry ';
3573 l_from3 := ' FROM '||l_sumry1||' sumry '||l_denorm;
3574 l_inner_where_clause2 := l_inner_where_clause2||' AND sumry.grp_total_flag = 1 ';
3575 l_product_where_clause := '';
3576
3577
3578 /*
3579 * 1. Need jtf_rs_grp_relations table to get the parent sales group
3580 * 2. In the case of sales reps, sales group and parent sales group are the same ,
3581 * so filtering on sales group directly
3582 */
3583
3584 IF l_resource_id IS NULL THEN
3585 l_custom_sql :=l_insert_stmnt || l_inner_select ||
3586 ' ('||
3587 ' SELECT '||
3588 ' DECODE(tmp1.salesrep_id, NULL, grptl.group_name,restl.resource_name) VIEWBY '||
3589 ' ,DECODE(tmp1.salesrep_id, NULL, to_char(tmp1.sales_group_id), '||
3590 ' tmp1.salesrep_id||''.''||tmp1.sales_group_id) VIEWBYID '||
3591 ' ,DECODE(tmp1.salesrep_id, NULL, 1, 2) sortorder '||
3592 ' ,SUM(tmp1.BIL_MEASURE2) BIL_MEASURE2 '||
3593 ' ,SUM(tmp1.BIL_MEASURE3) BIL_MEASURE3 '||
3594 ' ,SUM(tmp1.BIL_MEASURE5) BIL_MEASURE5 '||
3595 ' ,SUM(tmp1.BIL_MEASURE6) BIL_MEASURE6 '||
3596 ' ,SUM(tmp1.BIL_MEASURE7) BIL_MEASURE7 '||
3597 ' ,SUM(tmp1.BIL_MEASURE9) BIL_MEASURE9 '||
3598 ' ,SUM(tmp1.BIL_MEASURE10) BIL_MEASURE10 '||
3599 ' ,SUM(tmp1.BIL_MEASURE11) BIL_MEASURE11 '||
3600 ' ,SUM(tmp1.BIL_MEASURE13) BIL_MEASURE13 '||
3601 ' ,SUM(tmp1.BIL_MEASURE14) BIL_MEASURE14 '||
3602 ' ,SUM(tmp1.BIL_MEASURE15) BIL_MEASURE15 '||
3603 ' ,SUM(tmp1.BIL_MEASURE17) BIL_MEASURE17 '||
3604 ' ,SUM(tmp1.BIL_MEASURE18) BIL_MEASURE18 '||
3605 ' ,SUM(tmp1.BIL_MEASURE19) BIL_MEASURE19 '||
3606 ' ,SUM(tmp1.BIL_MEASURE21) BIL_MEASURE21 '||
3607 ' ,SUM(tmp1.BIL_MEASURE22) BIL_MEASURE22 '||
3608 ' ,SUM(tmp1.BIL_MEASURE23) BIL_MEASURE23 '||
3609 ' ,DECODE(tmp1.salesrep_id, NULL, BIL_URL1, NULL) BIL_URL1 '||
3610 ' ,DECODE(tmp1.salesrep_id, NULL, NULL,'''||l_drill_link||''') BIL_URL2 '||
3611 ' FROM ('||
3612 'SELECT /*+ LEADING(cal) */ '||
3613 l_inner_select1||
3614 ',sumry.sales_group_id '||
3615 ',sumry.salesrep_id salesrep_id '||
3616 ','''||l_url_str||''' BIL_URL1 '||
3617 ',null BIL_URL2 '|| l_from1 ||
3618 ' WHERE cal.xtd_flag=:l_yes AND '
3619 ||l_inner_where_clause||
3620 l_product_where_clause ;
3621
3622 l_custom_sql := l_custom_sql||
3623 ' UNION ALL '||
3624 'SELECT '||
3625 l_inner_select3||
3626 ',sumry.sales_group_id sales_group_id '||
3627 ',sumry.salesrep_id salesrep_id '||
3628 ','''||l_url_str||''' BIL_URL1 '||
3629 ',null BIL_URL2 '||
3630 l_from2 ||
3631 ' WHERE '||l_inner_where_clause2||
3632 l_pipe_product_where_clause||
3633 ' UNION ALL '||
3634 'SELECT '||
3635 l_inner_select4||
3636 ',sumry.sales_group_id sales_group_id '||
3637 ',sumry.salesrep_id salesrep_id '||
3638 ','''||l_url_str||''' BIL_URL1 '||
3639 ',null BIL_URL2 '||
3640 l_from3 ||
3641 ' WHERE '||l_inner_where_clause4||
3642 ' AND sumry.parent_sales_group_id = :l_sg_id_num '||
3643 l_product_where_clause||' ' ;
3644
3645 l_custom_sql := l_custom_sql||
3646 ') tmp1 '||
3647 ' ,jtf_rs_groups_tl grptl'||
3648 ' ,jtf_rs_resource_extns_tl restl'||
3649 ' WHERE grptl.group_id = tmp1.sales_group_id'||
3650 ' AND grptl.language = USERENV(''LANG'')'||
3654 ' DECODE(tmp1.salesrep_id, NULL, to_char(tmp1.sales_group_id), '||
3651 ' AND restl.resource_id(+) = tmp1.salesrep_id'||
3652 ' AND restl.language(+) = USERENV(''LANG'') '||
3653 ' GROUP BY DECODE(tmp1.salesrep_id, NULL, grptl.group_name,restl.resource_name),'||
3655 ' tmp1.salesrep_id||''.''||tmp1.sales_group_id), '||
3656 ' DECODE(tmp1.salesrep_id, NULL, 1, 2), '||
3657 ' DECODE(tmp1.salesrep_id, NULL, BIL_URL1, NULL), '||
3658 ' DECODE(tmp1.salesrep_id, NULL, NULL,'''||l_drill_link||''') '||
3659 ') GROUP BY VIEWBY, VIEWBYID, SORTORDER, BIL_URL1,BIL_URL2';
3660 ELSE
3661 l_custom_sql :=l_insert_stmnt || l_inner_select ||
3662 ' ('||
3663 ' SELECT '||
3664 ' resource_name VIEWBY '||
3665 ' ,tmp1.salesrep_id||''.''||tmp1.sales_group_id VIEWBYID '||
3666 ' ,tmp1.sortorder sortorder '||
3667 ' ,SUM(tmp1.BIL_MEASURE2) BIL_MEASURE2 '||
3668 ' ,SUM(tmp1.BIL_MEASURE3) BIL_MEASURE3 '||
3669 ' ,SUM(tmp1.BIL_MEASURE5) BIL_MEASURE5 '||
3670 ' ,SUM(tmp1.BIL_MEASURE6) BIL_MEASURE6 '||
3671 ' ,SUM(tmp1.BIL_MEASURE7) BIL_MEASURE7 '||
3672 ' ,SUM(tmp1.BIL_MEASURE9) BIL_MEASURE9 '||
3673 ' ,SUM(tmp1.BIL_MEASURE10) BIL_MEASURE10 '||
3674 ' ,SUM(tmp1.BIL_MEASURE11) BIL_MEASURE11 '||
3675 ' ,SUM(tmp1.BIL_MEASURE13) BIL_MEASURE13 '||
3676 ' ,SUM(tmp1.BIL_MEASURE14) BIL_MEASURE14 '||
3677 ' ,SUM(tmp1.BIL_MEASURE15) BIL_MEASURE15 '||
3678 ' ,SUM(tmp1.BIL_MEASURE17) BIL_MEASURE17 '||
3679 ' ,SUM(tmp1.BIL_MEASURE18) BIL_MEASURE18 '||
3680 ' ,SUM(tmp1.BIL_MEASURE19) BIL_MEASURE19 '||
3681 ' ,SUM(tmp1.BIL_MEASURE21) BIL_MEASURE21 '||
3682 ' ,SUM(tmp1.BIL_MEASURE22) BIL_MEASURE22 '||
3683 ' ,SUM(tmp1.BIL_MEASURE23) BIL_MEASURE23 '||
3684 ' ,DECODE(tmp1.salesrep_id, NULL, BIL_URL1, NULL) BIL_URL1 '||
3685 ' ,'''||l_drill_link||''' BIL_URL2 '||
3686 ' FROM ('||
3687 'SELECT /*+ LEADING(cal) */ 1 sortorder, '||
3688 l_inner_select1||
3689 ',sumry.sales_group_id '||
3690 ',sumry.salesrep_id salesrep_id '||
3691 ','''||l_url_str||''' BIL_URL1 '||
3692 ',null BIL_URL2 '|| l_from1 ||
3693 ' WHERE cal.xtd_flag=:l_yes AND '
3694 ||l_inner_where_clause||
3695 l_product_where_clause ;
3696
3697 l_custom_sql := l_custom_sql||
3698 ' UNION ALL '||
3699 'SELECT 1 sortorder, '||
3700 l_inner_select3||
3701 ',sumry.sales_group_id sales_group_id '||
3702 ',sumry.salesrep_id salesrep_id '||
3703 ','''||l_url_str||''' BIL_URL1 '||
3704 ',null BIL_URL2 '||
3705 l_from2 ||
3706 ' WHERE '||l_inner_where_clause2||
3707 l_pipe_product_where_clause ||
3708 ' UNION ALL '||
3709 'SELECT 1 sortorder, '||
3710 l_inner_select4||
3711 ',sumry.sales_group_id sales_group_id '||
3712 ',sumry.salesrep_id salesrep_id '||
3713 ','''||l_url_str||''' BIL_URL1 '||
3714 ',null BIL_URL2 '||
3715 l_from3 ||
3716 ' WHERE '||l_inner_where_clause4||
3717 ' AND sumry.parent_sales_group_id = :l_sg_id_num '||
3718 l_product_where_clause;
3719
3720 l_custom_sql := l_custom_sql||
3721 ') tmp1 '||
3722 ' ,jtf_rs_resource_extns_tl restl'||
3723 ' WHERE restl.resource_id = tmp1.salesrep_id'||
3724 ' AND restl.language = USERENV(''LANG'') '||
3725 ' AND tmp1.salesrep_id = :l_resource_id '||
3726 ' GROUP BY restl.resource_name,'||
3727 ' tmp1.salesrep_id||''.''||tmp1.sales_group_id, '||
3728 ' tmp1.sortorder, '||
3729 ' DECODE(tmp1.salesrep_id, NULL, BIL_URL1, NULL), BIL_URL2 '||
3730 ') GROUP BY VIEWBY, VIEWBYID, SORTORDER, BIL_URL1,BIL_URL2';
3731 END IF;
3732
3733
3734 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
3735 l_ind :=1;
3736 l_len:= length(l_custom_sql);
3737
3738 WHILE l_ind <= l_len LOOP
3739 l_str:= substr(l_custom_sql, l_ind, 4000);
3740
3741 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
3742 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
3743 MESSAGE => l_str);
3744
3745 l_ind := l_ind + 4000;
3746
3747 END LOOP;
3748 END IF;
3749
3750
3754 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
3751
3752 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
3753
3755 MODULE => g_pkg || l_proc,
3756 MESSAGE => 'length of query l_custom_sql is '|| length(l_custom_sql));
3757
3758 END IF;
3759
3760
3761 IF l_resource_id IS NULL THEN
3762
3763 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
3764 EXECUTE IMMEDIATE l_custom_sql
3765 USING
3766 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3767 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3768 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3769 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3770 l_curr_as_of_date,l_prev_date,l_yes,
3771 l_record_type_id,l_record_type_id,
3772 l_curr_as_of_date, l_prev_date,
3773 l_sg_id_num,
3774 l_snapshot_date,l_period_type,
3775 l_snapshot_date,
3776 l_snapshot_date,
3777 l_sg_id_num,
3778 l_period_type,l_curr_page_time_id,l_sg_id_num;
3779 ELSE
3780 EXECUTE IMMEDIATE l_custom_sql
3781 USING
3782 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3783 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3784 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3785 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3786 l_curr_as_of_date,l_prev_date,l_yes,
3787 l_record_type_id,l_record_type_id,
3788 l_curr_as_of_date, l_prev_date,
3789 l_sg_id_num,
3790 l_snapshot_date,l_period_type,
3791 l_prev_snap_date,l_period_type,
3792 l_snapshot_date,l_prev_snap_date,
3793 l_sg_id_num,
3794 l_period_type,l_curr_page_time_id,l_sg_id_num;
3795 END IF;
3796
3797
3798 ELSE
3799 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
3800 EXECUTE IMMEDIATE l_custom_sql
3801 USING
3802 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3803 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3804 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3805 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3806 l_curr_as_of_date,l_prev_date,l_yes,
3807 l_record_type_id,l_record_type_id,
3808 l_curr_as_of_date, l_prev_date,l_sg_id_num,
3809 l_snapshot_date,l_period_type,
3810 l_snapshot_date,
3811 l_snapshot_date,
3812 l_sg_id_num,
3813 l_period_type,l_curr_page_time_id,l_sg_id_num,l_resource_id;
3814 ELSE
3815 EXECUTE IMMEDIATE l_custom_sql
3816 USING
3817 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3818 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3819 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3820 l_curr_as_of_date,l_prev_date,l_curr_as_of_date,
3821 l_curr_as_of_date,l_prev_date,l_yes,
3822 l_record_type_id,l_record_type_id,
3823 l_curr_as_of_date, l_prev_date,l_sg_id_num,
3824 l_snapshot_date,l_period_type,
3825 l_prev_snap_date,l_period_type,
3826 l_snapshot_date,l_prev_snap_date,
3827 l_sg_id_num,
3828 l_period_type,l_curr_page_time_id,l_sg_id_num,l_resource_id;
3829 END IF;
3830 END IF;
3831
3832
3833
3834 COMMIT;
3835 x_custom_sql := ' SELECT * FROM ( '||
3836 l_outer_select||' FROM BIL_BI_RPT_TMP1 '||
3837 ' ORDER BY SORTORDER, UPPER(VIEWBY) '||
3838 ' ) WHERE NOT('||l_null_rem_where_clause||')';
3839 --view by Product category
3840
3841
3842 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
3843 l_ind :=1;
3844 l_len:= length(x_custom_sql);
3845
3846 WHILE l_ind <= l_len LOOP
3847 l_str:= substr(x_custom_sql, l_ind, 4000);
3848
3849 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
3850 MODULE => g_pkg || l_proc ||'.'|| ' Query to PMV ',
3851 MESSAGE => l_str);
3852
3853 l_ind := l_ind + 4000;
3854
3855 END LOOP;
3856 END IF;
3857
3858
3859 ELSE --no valid parameters
3860 BIL_BI_UTIL_PKG.get_default_query(p_regionname => l_region_id
3861 ,x_sqlstr => x_custom_sql);
3862
3863 IF FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
3864
3865 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_ERROR,
3866 MODULE => g_pkg || l_proc || 'Parameter_Error',
3867 MESSAGE => 'Invalid Parameter '|| l_proc);
3868
3869 END IF;
3873
3870 END IF;
3871
3872 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
3874 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_PROCEDURE,
3875 MODULE => g_pkg || l_proc || 'End',
3876 MESSAGE => 'End of Procedure '||l_proc);
3877
3878 END IF;
3879 EXCEPTION
3880 WHEN OTHERS THEN
3881
3882 IF FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
3883 fnd_message.set_name('FND','SQL_PLSQL_ERROR'); -- Seeded Message
3884 fnd_message.set_token('Error is : ' ,SQLCODE);
3885 fnd_message.set_token('Reason is : ', SQLERRM);
3886
3887
3888 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_UNEXPECTED,
3889 MODULE => g_pkg || l_proc || 'proc_error',
3890 MESSAGE => fnd_message.get );
3891
3892 END IF;
3893
3894 COMMIT;
3895 RAISE;
3896 END BIL_BI_OPPTY_WIN_LOSS_COUNTS;
3897
3898
3899 /*******************************************************************************
3900 * Name : Procedure BIL_BI_GRP_FRCST
3901 * Author : Prasanna Patil
3902 * Date : June 26, 2003
3903 * Purpose : Revenue KPI for SMD.
3904 *
3905 * Copyright (c) 2003 Oracle Corporation
3906 *
3907 * Parameters
3908 * p_page_parameter_tbl PL/SQL table containing dimension parameters
3909 * x_custom_sql string containing sql query
3910 * x_custom_attr PL/SQL table containing our bind vars
3911 *
3912 * Date Author Description
3913 * ---- ------ -----------
3914 * 26/16/03 ppatil Initial version
3915 * 20/10/05 vchahal changed to return revenue
3916 * This proc is used by revenue KPI (BIL_BI_REV_KPI) on SMD
3917 *
3918 ******************************************************************************/
3919
3920
3921 PROCEDURE BIL_BI_GRP_FRCST ( p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL
3922 ,x_custom_sql OUT NOCOPY VARCHAR2
3923 ,x_custom_attr OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL )
3924
3925 IS
3926
3927 l_period_type VARCHAR2(50);
3928 l_sg_id VARCHAR2(50);
3929 l_conv_rate_selected VARCHAR2(50);
3930 l_curr_page_time_id NUMBER;
3931 l_prev_page_time_id NUMBER;
3932 l_custom_rec BIS_QUERY_ATTRIBUTES;
3933 l_region_id VARCHAR2(50);
3934 l_comp_type VARCHAR2(50);
3935 l_parameter_valid BOOLEAN;
3936 l_bitand_id VARCHAR2(50);
3937 l_calendar_id VARCHAR2(50);
3938 l_curr_as_of_date DATE;
3939 l_prev_date DATE;
3940 l_page_period_type VARCHAR2(50);
3941 l_bis_sysdate DATE;
3942 l_fii_struct VARCHAR2(50);
3943 l_record_type_id NUMBER;
3944 l_sql_error_msg VARCHAR2(1000);
3945 l_sql_error_desc VARCHAR2(1000);
3946 l_sg_id_num NUMBER;
3947 l_debug_mode VARCHAR2(50);
3948 l_bind_ctr NUMBER;
3949 l_inner_where_clause VARCHAR2(1000);
3950 l_sql_stmt VARCHAR2(8000);
3951 l_from1 VARCHAR2(50);
3952 l_prodcat_id VARCHAR2(20);
3953 l_viewby VARCHAR2(200);
3954 l_resource_id VARCHAR2(20);
3955 l_proc VARCHAR2(100);
3956 l_parent_sales_group_id NUMBER;
3957 l_parent_sls_grp_where_clause VARCHAR2(1000);
3958 l_currency_suffix VARCHAR2(5);
3959 l_yes VARCHAR2(1);
3960 l_ind NUMBER;
3961 l_str VARCHAR2(4000);
3962 l_len NUMBER;
3963
3964 BEGIN
3965
3966 g_pkg := 'bil.patch.115.sql.BIL_BI_SALES_MGMT_RPTS_PKG.';
3967 l_region_id := 'BIL_BI_GRP_FRCST';
3968 l_proc := 'BIL_BI_GRP_FRCST.';
3969 l_parameter_valid := FALSE;
3970 l_yes := 'Y';
3971
3972
3973 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
3974
3975 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_PROCEDURE,
3976 MODULE => g_pkg || l_proc || 'begin',
3977 MESSAGE => 'Start of Procedure '||l_proc);
3978
3979 END IF;
3980
3981
3982 x_custom_attr := BIS_QUERY_ATTRIBUTES_TBL();
3983 l_custom_rec := BIS_PMV_PARAMETERS_PUB.INITIALIZE_QUERY_TYPE;
3984
3985 BIL_BI_UTIL_PKG.GET_PAGE_PARAMS( p_page_parameter_tbl => p_page_parameter_tbl
3986 ,p_region_id => l_region_id
3987 ,x_period_type => l_period_type
3988 ,x_conv_rate_selected => l_conv_rate_selected
3989 ,x_sg_id => l_sg_id
3990 ,x_parent_sg_id => l_parent_sales_group_id
3991 ,x_resource_id => l_resource_id
3992 ,x_prodcat_id => l_prodcat_id
3993 ,x_curr_page_time_id => l_curr_page_time_id
3997 ,x_as_of_date => l_curr_as_of_date
3994 ,x_prev_page_time_id => l_prev_page_time_id
3995 ,x_comp_type => l_comp_type
3996 ,x_parameter_valid => l_parameter_valid
3998 ,x_page_period_type => l_page_period_type
3999 ,x_prior_as_of_date => l_prev_date
4000 ,x_record_type_id => l_record_type_id
4001 ,x_viewby => l_viewby);
4002
4003
4004 l_sg_id_num := replace(l_sg_id,'''');
4005
4006 IF l_conv_rate_selected = 0 THEN
4007 l_currency_suffix := '1';
4008 ELSE
4009 l_currency_suffix := '';
4010 END IF;
4011
4012 IF l_parameter_valid THEN
4013 BIL_BI_UTIL_PKG.GET_GLOBAL_CONTS( x_bitand_id => l_bitand_id
4014 ,x_calendar_id => l_calendar_id
4015 ,x_curr_date => l_bis_sysdate
4016 ,x_fii_struct => l_fii_struct );
4017 BIL_BI_UTIL_PKG.GET_OTHER_PROFILES( x_debugmode => l_debug_mode );
4018 l_sg_id_num := TO_NUMBER(REPLACE(l_sg_id, ''''));
4019 /*Mappings
4020 *BIL_MEASURE1 => Revenue
4021 *BIL_MEASURE2 => Prior Revenue
4022 *BIL_MEASURE3 => Grand Total for BIL_MEASURE1
4023 *BIL_MEASURE4 => Grand Total for BIL_MEASURE2
4024 */
4025 l_inner_where_clause := ' WHERE sumry.parent_grp_id = :l_sg_id_num
4026 AND sumry.grp_marker <> ''TOP GROUP''
4027 AND sumry.time_id = cal.time_id
4028 AND cal.report_date in (:l_curr_as_of_date, :l_prev_date)
4029 AND cal.period_type_id = sumry.period_type_id
4030 AND cal.xtd_flag = :l_yes
4031 AND BITAND(cal.record_type_id,:l_record_type_id) = :l_record_type_id
4032 AND sumry.cat_top_node_flag = :l_yes ';
4033
4034 l_from1 := ' ISC_DBI_SCR_002_MV ';
4035
4036 IF l_resource_id IS NULL THEN
4037 l_sql_stmt :=
4038 'SELECT grptl.group_name VIEWBY
4039 ,SUM(revenue) BIL_MEASURE1
4040 ,SUM(priorRevenue) BIL_MEASURE2
4041 ,SUM(SUM(revenue)) over() BIL_MEASURE3
4042 ,SUM(SUM(priorRevenue)) over() BIL_MEASURE4
4043 ,VIEWBYID FROM
4044 (
4045 SELECT /*+ leading (cal) */
4046 SUM(CASE WHEN cal.report_date=:l_curr_as_of_date THEN
4047 sumry.recognized_amt_g'||l_currency_suffix||'
4048 ELSE NULL
4049 END) revenue
4050 ,SUM(CASE WHEN cal.report_date =:l_prev_date THEN
4051 sumry.recognized_amt_g'||l_currency_suffix||'
4052 ELSE NULL
4053 END) priorRevenue
4054 ,sumry.sales_grp_id AS VIEWBYID
4055 FROM '||l_from1 ||'sumry, '||l_fii_struct||' cal '||
4056 l_inner_where_clause||' '||
4057 ' GROUP BY sumry.sales_grp_id
4058 ) tmp1,
4059 jtf_rs_groups_tl grptl
4060 WHERE grptl.group_id = tmp1.viewbyid
4061 AND grptl.language = USERENV(''LANG'')
4062 GROUP BY grptl.group_name, VIEWBYID';
4063 ELSE
4064 l_sql_stmt :=
4065 'SELECT grptl.resource_name VIEWBY
4066 ,SUM(revenue) BIL_MEASURE1
4067 ,SUM(priorRevenue) BIL_MEASURE2
4068 ,SUM(SUM(revenue)) over() BIL_MEASURE3
4069 ,SUM(SUM(priorRevenue)) over() BIL_MEASURE4
4070 ,VIEWBYID FROM
4071 (
4072 SELECT /*+ LEADING(cal) */
4073 SUM(CASE WHEN cal.report_date=:l_curr_as_of_date THEN
4074 sumry.recognized_amt_g'||l_currency_suffix||'
4075 ELSE NULL
4076 END) revenue,
4077 SUM(CASE WHEN cal.report_date =:l_prev_date THEN
4078 sumry.recognized_amt_g'||l_currency_suffix||'
4079 ELSE NULL
4080 END) priorRevenue
4081 ,sumry.sales_grp_id, sumry.resource_id AS VIEWBYID
4082 FROM '||l_from1 ||'sumry, '||l_fii_struct||' cal '||
4083 l_inner_where_clause||' '||
4084 ' AND sumry.resource_id = :l_resource_id '||
4085 ' GROUP BY sumry.sales_grp_id, sumry.resource_id
4086 ) tmp1,
4087 jtf_rs_resource_extns_tl grptl
4088 WHERE grptl.resource_id = tmp1.viewbyid
4089 AND grptl.language = USERENV(''LANG'')
4090 GROUP BY grptl.resource_name, VIEWBYID';
4091 END IF;
4092
4093 x_custom_sql := l_sql_stmt;
4094
4095
4096 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
4097 l_ind :=1;
4098 l_len:= length(x_custom_sql);
4099
4100 WHILE l_ind <= l_len LOOP
4101 l_str:= substr(x_custom_sql, l_ind, 4000);
4102
4103 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
4104 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
4105 MESSAGE => l_str);
4106
4107 l_ind := l_ind + 4000;
4108
4109 END LOOP;
4110 END IF;
4111
4112
4116 l_custom_rec.attribute_name := BIS_PMV_PARAMETERS_PUB.VIEW_BY_VALUE;
4113 /* Bind parameters */
4114 l_bind_ctr:=1;
4115
4117 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.VIEW_BY_TYPE;
4118 l_custom_rec.attribute_value := l_viewby;
4119 x_custom_attr.Extend();
4120 x_custom_attr(l_bind_ctr):=l_custom_rec;
4121 l_bind_ctr:=l_bind_ctr+1;
4122
4123 l_custom_rec.attribute_name :=':l_curr_page_time_id';
4124 l_custom_rec.attribute_value :=l_curr_page_time_id;
4125 l_custom_rec.attribute_data_type :=BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
4126 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
4127 x_custom_attr.Extend();
4128 x_custom_attr(l_bind_ctr):=l_custom_rec;
4129 l_bind_ctr:=l_bind_ctr+1;
4130
4131 l_custom_rec.attribute_name :=':l_prev_page_time_id';
4132 l_custom_rec.attribute_value :=l_prev_page_time_id;
4133 l_custom_rec.attribute_data_type :=BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
4134 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
4135 x_custom_attr.Extend();
4136 x_custom_attr(l_bind_ctr):=l_custom_rec;
4137 l_bind_ctr:=l_bind_ctr+1;
4138
4139 l_custom_rec.attribute_name :=':l_bitand_id';
4140 l_custom_rec.attribute_value :=l_bitand_id;
4141 l_custom_rec.attribute_data_type :=BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
4142 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
4143 x_custom_attr.Extend();
4144 x_custom_attr(l_bind_ctr):=l_custom_rec;
4145 l_bind_ctr:=l_bind_ctr+1;
4146
4147 l_custom_rec.attribute_name :=':l_period_type';
4148 l_custom_rec.attribute_value :=l_period_type;
4149 l_custom_rec.attribute_data_type :=BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
4150 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
4151 x_custom_attr.Extend();
4152 x_custom_attr(l_bind_ctr):=l_custom_rec;
4153 l_bind_ctr:=l_bind_ctr+1;
4154
4155 l_custom_rec.attribute_name :=':l_calendar_id';
4156 l_custom_rec.attribute_value :=l_calendar_id;
4157 l_custom_rec.attribute_data_type :=BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
4158 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
4159 x_custom_attr.Extend();
4160 x_custom_attr(l_bind_ctr):=l_custom_rec;
4161 l_bind_ctr:=l_bind_ctr+1;
4162
4163 l_custom_rec.attribute_name :=':l_curr_as_of_date';
4164 l_custom_rec.attribute_value := to_char(l_curr_as_of_date,'dd/mm/yyyy');
4165 l_custom_rec.attribute_data_type :=BIS_PMV_PARAMETERS_PUB.DATE_BIND;
4166 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
4167 x_custom_attr.Extend();
4168 x_custom_attr(l_bind_ctr):=l_custom_rec;
4169 l_bind_ctr:=l_bind_ctr+1;
4170
4171 l_custom_rec.attribute_name :=':l_prev_date';
4172 l_custom_rec.attribute_value := to_char(l_prev_date,'dd/mm/yyyy');
4173 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.DATE_BIND;
4174 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
4175 x_custom_attr.Extend();
4176 x_custom_attr(l_bind_ctr):=l_custom_rec;
4177 l_bind_ctr:=l_bind_ctr+1;
4178
4179 l_custom_rec.attribute_name :=':l_sg_id_num';
4180 l_custom_rec.attribute_value := l_sg_id_num;
4181 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
4182 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
4183 x_custom_attr.Extend();
4184 x_custom_attr(l_bind_ctr):=l_custom_rec;
4185 l_bind_ctr:=l_bind_ctr+1;
4186
4187 IF l_parent_sales_group_id IS NOT NULL THEN
4188 l_custom_rec.attribute_name :=':l_parent_sales_group_id';
4189 l_custom_rec.attribute_value := l_parent_sales_group_id;
4190 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
4191 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
4192 x_custom_attr.Extend();
4193 x_custom_attr(l_bind_ctr):=l_custom_rec;
4194 l_bind_ctr:=l_bind_ctr+1;
4195 END IF;
4196
4197 l_custom_rec.attribute_name :=':l_record_type_id';
4198 l_custom_rec.attribute_value := l_record_type_id;
4199 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
4200 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
4201 x_custom_attr.Extend();
4202 x_custom_attr(l_bind_ctr):=l_custom_rec;
4203 l_bind_ctr:=l_bind_ctr+1;
4204
4205
4206 IF (l_resource_id IS NOT NULL) THEN
4207 l_custom_rec.attribute_name :=':l_resource_id';
4208 l_custom_rec.attribute_value :=l_resource_id;
4209 l_custom_rec.attribute_data_type :=BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
4210 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
4211 x_custom_attr.Extend();
4212 x_custom_attr(l_bind_ctr):=l_custom_rec;
4213 l_bind_ctr:=l_bind_ctr+1;
4214 END IF;
4215
4216 l_custom_rec.attribute_name :=':l_yes';
4217 l_custom_rec.attribute_value := 'Y';
4218 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
4219 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
4220 x_custom_attr.Extend();
4221 x_custom_attr(l_bind_ctr):= l_custom_rec;
4225 l_custom_rec.attribute_value := 'N';
4222 l_bind_ctr:=l_bind_ctr+1;
4223
4224 l_custom_rec.attribute_name :=':l_no';
4226 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
4227 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
4228 x_custom_attr.Extend();
4229 x_custom_attr(l_bind_ctr):= l_custom_rec;
4230 l_bind_ctr:=l_bind_ctr+1;
4231
4232
4233 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
4234
4235 l_sql_error_desc :=
4236 'l_viewby => '||l_viewby||', '||
4237 'l_curr_page_time_id => '|| l_curr_page_time_id ||', ' ||
4238 'l_prev_page_time_id => '|| l_prev_page_time_id ||', ' ||
4239 'l_curr_as_of_date => '|| l_curr_as_of_date ||', ' ||
4240 'l_prev_date => '|| l_prev_date ||', ' ||
4241 'l_conv_rate_selected => '|| l_conv_rate_selected ||', ' ||
4242 'l_bitand_id => '|| l_bitand_id ||', ' ||
4243 'l_period_type => '|| l_period_type ||', ' ||
4244 'l_sg_id_num => '|| l_sg_id_num ||', ' ||
4245 'l_calendar_id => '|| l_calendar_id;
4246
4247
4248 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
4249 MODULE => g_pkg || l_proc || 'l_sql_error_desc',
4250 MESSAGE => l_sql_error_desc);
4251
4252 END IF;
4253
4254
4255 ELSE --no valid parameters
4256 BIL_BI_UTIL_PKG.get_default_query(p_regionname => l_region_id
4257 ,x_sqlstr => x_custom_sql);
4258 END IF;
4259 EXCEPTION
4260 WHEN OTHERS THEN
4261
4262 IF FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
4263 fnd_message.set_name('FND','SQL_PLSQL_ERROR'); -- Seeded Message
4264 fnd_message.set_token('Error is : ' ,SQLCODE);
4265 fnd_message.set_token('Reason is : ', SQLERRM);
4266
4267 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_UNEXPECTED,
4268 MODULE => g_pkg || l_proc || 'proc_error',
4269 MESSAGE => fnd_message.get );
4270
4271
4272 END IF;
4273 RAISE;
4274 END BIL_BI_GRP_FRCST;
4275
4276
4277 /*******************************************************************************
4278 * Name : Leads, Opportunities and Backlog
4279 * Author : Prasanna Patil
4280 * Date : July 1, 2003
4281 * Purpose : Sales Overview Sales Intelligence report and charts.
4282 *
4283 * Copyright (c) 2002 Oracle Corporation
4284 *
4285 * Parameters
4286 * p_page_parameter_tbl PL/SQL table containing dimension parameters
4287 * x_custom_sql string containing sql query
4288 * x_custom_attr PL/SQL table containing our bind vars
4289 *
4290 *
4291 * Date Author Description
4292 * ---- ------ -----------
4293 * 07/01/03 ppatil Intial Version
4294 * 06/09/04 ctoba Uptake marketing changes
4295 * 26 Nov 2004 hrpandey Drill Down to Oppty Line Detail report
4296 *****************************************************************************/
4297 PROCEDURE BIL_BI_OPEN_LDOPBKLOG (p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL
4298 ,x_custom_sql OUT NOCOPY VARCHAR2
4299 ,x_custom_attr OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
4300 AS
4301
4302 l_start_date DATE;
4303 l_period_type VARCHAR2(50);
4304 l_sg_id VARCHAR2(50);
4305 l_conv_rate_selected VARCHAR2(50);
4306 l_curr_page_time_id NUMBER;
4307 l_prev_page_time_id NUMBER;
4308 l_custom_rec BIS_QUERY_ATTRIBUTES;
4309 l_region_id VARCHAR2(50);
4310 l_comp_type VARCHAR2(50);
4311 l_parameter_valid BOOLEAN;
4312 l_bitand_id VARCHAR2(50);
4313 l_calendar_id VARCHAR2(50);
4314 l_curr_as_of_date DATE;
4315 l_prev_date DATE;
4316 l_page_period_type VARCHAR2(50);
4317 l_bis_sysdate DATE;
4318 l_fii_struct VARCHAR2(50);
4319 l_record_type_id NUMBER;
4320 l_sql_error_msg VARCHAR2(1000);
4321 l_sql_error_desc VARCHAR2(8000);
4322 l_sg_id_num NUMBER;
4323 l_fst_category VARCHAR2(50);
4324 l_fst_crdt_type VARCHAR2(50);
4325 l_rpt_str VARCHAR2(80);
4326 l_viewby VARCHAR2(80) ;
4327 l_bind_ctr NUMBER;
4328 l_outer_select VARCHAR2(8000);
4329 l_inner_select VARCHAR2(4000);
4330 l_prodcat_id VARCHAR2(50);
4331 l_null_item VARCHAR2(50);
4332 l_product_where_clause VARCHAR2(1000);
4333 l_product_where_clause1 VARCHAR2(1000);
4334
4335
4336 l_url VARCHAR2(1000);
4337 l_cat_assign VARCHAR2(1000);
4338 l_cat_url VARCHAR2(500);
4339 l_proc VARCHAR2(100);
4340 l_custom_sql VARCHAR2(32000);
4341
4342 l_cat_denorm VARCHAR2(50);
4343 l_denorm VARCHAR2(100);
4344
4345 l_sql_stmt1 VARCHAR2(4000);
4346 l_sql_stmt2 VARCHAR2(4000);
4347 l_sql_stmt3 VARCHAR2(8000);
4348
4349 l_where_clause1 VARCHAR2(1000);
4353 l_where_clause5 VARCHAR2(1000);
4350 l_where_clause2 VARCHAR2(1000);
4351 l_where_clause3 VARCHAR2(1000);
4352 l_where_clause4 VARCHAR2(1000);
4354 l_where_clause6 VARCHAR2(1000);
4355
4356 l_sumry1 VARCHAR2(50);
4357 l_sumry2 VARCHAR2(50);
4358 l_sumry3 VARCHAR2(50);
4359
4360 l_url_str VARCHAR2(1000);
4361 l_insert_stmnt VARCHAR2(32000);
4362 l_resource_id VARCHAR2(20);
4363
4364 l_group_flag VARCHAR2(30);
4365 l_open_col VARCHAR2(20);
4366 l_null_rem_clause VARCHAR2(1000);
4367 l_snapshot_date DATE;
4368 l_parent_sg_id_num NUMBER;
4369 l_group_by VARCHAR2(800);
4370 l_yes VARCHAR2(1);
4371 l_unassigned_value VARCHAR2(1000);
4372 l_prodcat_flag VARCHAR2(200);
4373 l_currency_suffix VARCHAR2(5);
4374 l_isc_currency_suffix VARCHAR2(5);
4375 l_drill_link varchar2(4000);
4376
4377 l_ind NUMBER;
4378 l_str VARCHAR2(4000);
4379 l_len NUMBER;
4380
4381
4382 l_prev_amt VARCHAR2(1000);
4383 l_column_type VARCHAR2(1000);
4384 l_snap_date DATE;
4385 l_open_mv_new VARCHAR2(1000);
4386 l_open_mv_new1 VARCHAR2(1000);
4387 l_prev_snap_date DATE;
4388 l_pipe_select1 varchar2(4000);
4389 l_pipe_select2 varchar2(4000);
4390 l_pipe_select3 varchar2(4000);
4391 l_inner_where_pipe varchar2(4000);
4392
4393
4394 BEGIN
4395
4396 g_pkg := 'bil.patch.115.sql.BIL_BI_SALES_MGMT_RPTS_PKG.';
4397 l_region_id := 'BIL_BI_OPEN_LDOPBKLOG';
4398 l_parameter_valid:= FALSE;
4399 l_proc := 'BIL_BI_OPEN_LDOPBKLOG.';
4400 l_yes :='Y';
4401 g_sch_name := 'BIL';
4402
4403
4404 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
4405
4406 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_PROCEDURE,
4407 MODULE => g_pkg || l_proc || 'begin',
4408 MESSAGE => 'Start of Procedure '||l_proc);
4409
4410 END IF;
4411
4412 x_custom_attr := BIS_QUERY_ATTRIBUTES_TBL();
4413 l_custom_rec := BIS_PMV_PARAMETERS_PUB.INITIALIZE_QUERY_TYPE;
4414
4415 BIL_BI_UTIL_PKG.GET_PAGE_PARAMS(p_page_parameter_tbl => p_page_parameter_tbl
4416 ,p_region_id => l_region_id
4417 ,x_period_type => l_period_type
4418 ,x_conv_rate_selected => l_conv_rate_selected
4419 ,x_sg_id => l_sg_id
4420 ,x_parent_sg_id => l_parent_sg_id_num
4421 ,x_resource_id => l_resource_id
4422 ,x_prodcat_id => l_prodcat_id
4423 ,x_curr_page_time_id => l_curr_page_time_id
4424 ,x_prev_page_time_id => l_prev_page_time_id
4425 ,x_comp_type => l_comp_type
4426 ,x_parameter_valid => l_parameter_valid
4427 ,x_as_of_date => l_curr_as_of_date
4428 ,x_page_period_type => l_page_period_type
4429 ,x_prior_as_of_date => l_prev_date
4430 ,x_record_type_id => l_record_type_id
4431 ,x_viewby => l_viewby );
4432
4433 IF l_parameter_valid THEN
4434
4435 BIL_BI_UTIL_PKG.GET_GLOBAL_CONTS( x_bitand_id => l_bitand_id
4436 ,x_calendar_id => l_calendar_id
4437 ,x_curr_date => l_bis_sysdate
4438 ,x_fii_struct => l_fii_struct );
4439
4440 l_sg_id_num := TO_NUMBER(REPLACE(l_sg_id, ''''));
4441 l_prodcat_id := TO_NUMBER(REPLACE(l_prodcat_id,''''));
4442
4443
4444
4445 IF l_conv_rate_selected = 0 THEN
4446 l_currency_suffix := '_s';
4447 l_isc_currency_suffix := '1';
4448 ELSE
4449 l_currency_suffix := '';
4450 l_isc_currency_suffix := '';
4451 END IF;
4452
4453 IF l_prodcat_id IS NULL THEN
4454 l_prodcat_id := 'All';
4455 END IF;
4456
4457 CASE l_page_period_type
4458 WHEN 'FII_TIME_ENT_YEAR' THEN
4459 l_open_col := 'open_amt_year'||l_currency_suffix;
4460 WHEN 'FII_TIME_ENT_QTR' THEN
4461 l_open_col := 'open_amt_quarter'||l_currency_suffix;
4462 WHEN 'FII_TIME_ENT_PERIOD' THEN
4463 l_open_col := 'open_amt_period'||l_currency_suffix;
4464 ELSE--week
4465 l_open_col := 'open_amt_week'||l_currency_suffix;
4466 END CASE;
4467
4468 IF(l_viewby = 'ORGANIZATION+JTF_ORG_SALES_GROUP' and l_prodcat_id = 'All') THEN
4469 l_group_flag := ' AND sumry.grp_total_flag = 1 ';
4470 ELSE
4471 l_group_flag := ' AND sumry.grp_total_flag = 0 ';
4472 END IF;
4473
4477 x_denorm => l_denorm,
4474 BIL_BI_UTIL_PKG.GET_PC_NOROLLUP_WHERE_CLAUSE(
4475 p_prodcat => l_prodcat_id,
4476 p_viewby => l_viewby,
4478 x_where_clause => l_product_where_clause
4479 );
4480 /*
4481 BIL_BI_UTIL_PKG.GET_LATEST_SNAP_DATE(p_page_parameter_tbl =>p_page_parameter_tbl,
4482 p_as_of_date => l_curr_as_of_date,
4483 p_period_type =>null,
4484 x_snapshot_date => l_snapshot_date);
4485 */
4486
4487 ---- Changes for Drill Links to opty Line Detail Report
4488
4489
4490 -- Get the Drill Link to the Opty Line Detail Report
4491
4492 l_drill_link := bil_bi_util_pkg.get_drill_links( p_view_by => l_viewby,
4493 p_salesgroup_id => l_sg_id,
4494 p_resource_id => l_resource_id );
4495
4496
4497
4498
4499 /* Get the Prefix for the Open amt based upon Period Type and Compare To Params */
4500
4501
4502 l_prev_amt := BIL_BI_UTIL_PKG.GET_PIPE_COL_NAMES(
4503 p_period_type => l_page_period_type ,
4504 p_compare_to => l_comp_type,
4505 p_column_type => 'O',
4506 p_curr_suffix => l_currency_suffix
4507 );
4508
4509
4510 /* Use the BIL_BI_UTIL_PKG.GET_PIPE_MV proc to get the MV name and snap date for Pipeline/Open Amts. */
4511
4512 BIL_BI_UTIL_PKG.GET_PIPE_MV(
4513 p_asof_date => l_curr_as_of_date ,
4514 p_period_type => l_page_period_type ,
4515 p_compare_to => l_comp_type ,
4516 p_prev_date => l_prev_date,
4517 p_page_parameter_tbl => p_page_parameter_tbl,
4518 x_pipe_mv => l_open_mv_new ,
4519 x_snapshot_date => l_snap_date ,
4520 x_prev_snap_date => l_prev_snap_date
4521 );
4522
4523
4524 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
4525
4526 l_sql_error_desc:= 'l_viewby => '||l_viewby||', '||
4527 'l_curr_page_time_id => '|| l_curr_page_time_id ||', ' ||
4528 'l_prev_page_time_id => '|| l_prev_page_time_id ||', ' ||
4529 'l_curr_as_of_date => '|| l_curr_as_of_date ||', ' ||
4530 'l_prev_date => '|| l_prev_date ||', ' ||
4531 'l_conv_rate_selected => '|| l_conv_rate_selected ||', ' ||
4532 'l_bitand_id => '|| l_bitand_id ||', ' ||
4533 'l_period_type => '|| l_period_type ||', ' ||
4534 'l_sg_id_num => '|| l_sg_id_num ||', ' ||
4535 'l_resource_id => '|| l_resource_id ||', '||
4536 'l_bis_sysdate => '|| l_bis_sysdate ||', ' ||
4537 'l_fst_crdt_type => ' || l_fst_crdt_type||', '||
4538 'l_record_type_id => '|| l_record_type_id;
4539
4540
4541 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
4542 MODULE => g_pkg || l_proc ||'Param values ',
4543 MESSAGE => 'Param values '||l_sql_error_desc);
4544
4545 END IF;
4546
4547
4548
4549
4550
4551 l_outer_select:= 'SELECT VIEWBY';
4552 IF 'ORGANIZATION+JTF_ORG_SALES_GROUP' = l_viewby THEN
4553 l_outer_select := l_outer_select ||',DECODE(BIL_URL1,NULL,VIEWBYID||''.''||:l_sg_id_num,VIEWBYID) VIEWBYID ';
4554 ELSE
4555 l_outer_select := l_outer_select ||',VIEWBYID ';
4556 END IF;
4557
4558 l_outer_select := l_outer_select ||',DECODE(BIL_MEASURE28,0,NULL,BIL_MEASURE28) BIL_MEASURE1'||
4559 ',BIL_MEASURE2'||
4560 ',(BIL_MEASURE28-BIL_MEASURE2)/ABS(DECODE(BIL_MEASURE2,0,null,BIL_MEASURE2)) * 100 BIL_MEASURE3 '||
4561 ',BIL_MEASURE4'||
4562 ',BIL_MEASURE5'||
4563 ',(BIL_MEASURE4-BIL_MEASURE5)/ABS(DECODE(BIL_MEASURE5,0,null,BIL_MEASURE5)) * 100 BIL_MEASURE6'||
4564 ',DECODE(BIL_MEASURE7,0,NULL,BIL_MEASURE7) BIL_MEASURE7'||
4565 ',BIL_MEASURE8'||
4566 ',(BIL_MEASURE7-BIL_MEASURE8)/ABS(DECODE(BIL_MEASURE8,0,null,BIL_MEASURE8)) * 100 BIL_MEASURE9'||
4567 ',DECODE(BIL_MEASURE10,0,NULL,BIL_MEASURE10) BIL_MEASURE10'||
4568 ',BIL_MEASURE11'||
4569 ',(BIL_MEASURE10-BIL_MEASURE11)/ABS(DECODE(BIL_MEASURE11,0,null,BIL_MEASURE11)) * 100 BIL_MEASURE12 '||
4570 ', BIL_MEASURE4 BIL_MEASURE25 '||
4571 ',SUM(DECODE(BIL_MEASURE28,0,NULL,BIL_MEASURE28)) OVER() BIL_MEASURE13'||
4572 ',SUM(BIL_MEASURE2) OVER() BIL_MEASURE14'||
4576 ',SUM(BIL_MEASURE5) OVER() BIL_MEASURE17'||
4573 ',(SUM(BIL_MEASURE28) OVER() - SUM(BIL_MEASURE2) OVER())/ABS(DECODE(SUM(BIL_MEASURE2) OVER(), 0, null, SUM(BIL_MEASURE2)
4574 OVER()))*100 BIL_MEASURE15 '||
4575 ',SUM(BIL_MEASURE4) OVER() BIL_MEASURE16'||
4577 ',(SUM(BIL_MEASURE4) OVER() - SUM(BIL_MEASURE5) OVER())/ABS(DECODE(SUM(BIL_MEASURE5) OVER(), 0, null, SUM(BIL_MEASURE5)
4578 OVER()))*100 BIL_MEASURE18 '||
4579 ',SUM(DECODE(BIL_MEASURE7,0,NULL,BIL_MEASURE7)) OVER() BIL_MEASURE19'||
4580 ',SUM(BIL_MEASURE8) OVER() BIL_MEASURE20'||
4581 ',(SUM(BIL_MEASURE7) OVER() - SUM(BIL_MEASURE8) OVER())/ABS(DECODE(SUM(BIL_MEASURE8) OVER(), 0, null, SUM(BIL_MEASURE8)
4582 OVER()))*100 BIL_MEASURE21 '||
4583 ',SUM(DECODE(BIL_MEASURE10,0,NULL,BIL_MEASURE10)) OVER() BIL_MEASURE22'||
4584 ',SUM(BIL_MEASURE11) OVER() BIL_MEASURE23'||
4585 ',(SUM(BIL_MEASURE10) OVER() - SUM(BIL_MEASURE11) OVER())/ABS(DECODE(SUM(BIL_MEASURE11) OVER(), 0, null, SUM(BIL_MEASURE11)
4586 OVER()))*100 BIL_MEASURE24 '||
4587 ',SUM(BIL_MEASURE4) OVER() BIL_MEASURE26'||
4588 ',BIL_URL1'||
4589 ',BIL_URL2
4590 ,DECODE('''||l_curr_as_of_date||''',TRUNC(SYSDATE),
4591 DECODE('''||l_viewby||''',''ORGANIZATION+JTF_ORG_SALES_GROUP'',
4592 DECODE(BIL_URL2,NULL,NULL,BIL_URL2||'||'''BIL_DIMENSION1=OPEN'''||'),
4593 DECODE(BIL_URL1,NULL,NULL,BIL_URL1||'||'''BIL_DIMENSION1=OPEN'''||')),
4594 NULL) BIL_URL3
4595 ';
4596
4597 l_inner_select := 'SELECT VIEWBY
4598 ,SORTORDER
4599 ,SUM(BIL_MEASURE28) BIL_MEASURE28
4600 ,SUM(BIL_MEASURE2) BIL_MEASURE2
4601 ,SUM(BIL_MEASURE4) BIL_MEASURE4
4602 ,SUM(BIL_MEASURE5) BIL_MEASURE5
4603 ,SUM(BIL_MEASURE7) BIL_MEASURE7
4604 ,SUM(BIL_MEASURE8) BIL_MEASURE8
4605 ,SUM(BIL_MEASURE10) BIL_MEASURE10
4606 ,SUM(BIL_MEASURE11) BIL_MEASURE11
4607 ,VIEWBYID
4608 ,BIL_URL1
4609 ,BIL_URL2 ';
4610
4611 l_rpt_str:='BIL_BI_LDOPBKLOG_R';
4612 l_insert_stmnt := ' INSERT INTO bil_bi_rpt_tmp1(VIEWBY,VIEWBYID,SORTORDER,
4613 BIL_MEASURE28, BIL_MEASURE2,'||
4614 'BIL_MEASURE4,BIL_MEASURE5,BIL_MEASURE7,BIL_MEASURE8,'||
4615 'BIL_MEASURE10,BIL_MEASURE11, BIL_URL1,BIL_URL2)';
4616
4617 l_null_rem_clause := ' WHERE NOT ((BIL_MEASURE28 IS NULL OR BIL_MEASURE28 = 0)
4618 AND (BIL_MEASURE4 IS NULL OR BIL_MEASURE4 = 0)
4619 AND (BIL_MEASURE7 IS NULL OR BIL_MEASURE7 = 0)
4620 AND (BIL_MEASURE10 IS NULL OR BIL_MEASURE10 = 0)) ';
4621
4622 execute immediate 'TRUNCATE TABLE '||g_sch_name||'.'||'BIL_BI_RPT_TMP1';
4623
4624 /* The following section is dedicated to Open oppty amount */
4625
4626 /*
4627 l_sql_stmt1:=' NULL BIL_MEASURE28 '||
4628 ',NULL BIL_MEASURE2 '||
4629 ', '||
4630 'SUM(CASE WHEN sumry.snap_date =:l_snapshot_date THEN '||
4631 'sumry.'||l_open_col ||' '||
4632 'ELSE NULL '||
4633 'END '||
4634 ' ) BIL_MEASURE4 '||
4635 ',SUM( '||
4636 'CASE WHEN sumry.snap_date =:l_prev_date THEN '||
4637 'sumry.'||l_open_col ||' '||
4638 'ELSE NULL '||
4639 'END '||
4640 ' ) BIL_MEASURE5 '||
4641 ',NULL BIL_MEASURE7 '||
4642 ',NULL BIL_MEASURE8 '||
4643 ',NULL BIL_MEASURE10 '||
4644 ',NULL BIL_MEASURE11 ';
4645 */
4646
4647 l_pipe_select1 := ' NULL BIL_MEASURE28 '||
4648 ',NULL BIL_MEASURE2 '||
4649 ', '||
4650 'SUM(CASE WHEN sumry.snap_date =:l_snap_date THEN '||
4651 'sumry.'||l_open_col ||' '||
4652 'ELSE NULL '||
4653 'END '||
4654 ' ) BIL_MEASURE4 ';
4655
4656 IF (l_open_mv_new = 'BIL_BI_PIPE_G_MV') THEN
4657
4658 l_pipe_select2 := ',SUM( '||
4659 'CASE WHEN sumry.snap_date =:l_prev_snap_date THEN '||
4660 'sumry.'||l_open_col ||' '||
4661 'ELSE NULL '||
4662 'END '||
4663 ' ) BIL_MEASURE5 ';
4664 ELSE
4665 l_pipe_select2 := ',SUM( '||
4666 'CASE WHEN sumry.snap_date =:l_snap_date THEN '||
4667 ''||l_prev_amt||' '||
4668 'ELSE NULL '||
4672
4669 'END '||
4670 ' ) BIL_MEASURE5 ';
4671 END IF;
4673
4674 l_pipe_select3 := ',NULL BIL_MEASURE7 '||
4675 ',NULL BIL_MEASURE8 '||
4676 ',NULL BIL_MEASURE10 '||
4677 ',NULL BIL_MEASURE11 ';
4678
4679 l_sql_stmt1:= l_pipe_select1 || l_pipe_select2 || l_pipe_select3;
4680
4681
4682 /*
4683 l_where_clause1 :=' WHERE sumry.parent_sales_group_id = :l_sg_id_num '||
4684 ' AND sumry.snap_date in (:l_snapshot_date, :l_prev_date) ';
4685
4686 l_where_clause4 :=' WHERE sumry.snap_date in (:l_snapshot_date, :l_prev_date)
4687 AND sumry.sales_group_id = :l_sg_id_num ';
4688 */
4689
4690 IF (l_open_mv_new = 'BIL_BI_PIPE_G_MV') THEN
4691 l_inner_where_pipe := ' sumry.snap_date in (:l_snap_date, :l_prev_snap_date) ';
4692 ELSE
4693 l_inner_where_pipe := ' sumry.snap_date in (:l_snap_date) ';
4694 END IF;
4695
4696
4697 l_where_clause1 :=' WHERE sumry.parent_sales_group_id = :l_sg_id_num AND '||
4698 l_inner_where_pipe ;
4699
4700
4701 l_where_clause4 := l_inner_where_pipe ||
4702 ' AND sumry.sales_group_id = :l_sg_id_num ';
4703
4704 if(l_resource_id is not null) then
4705 l_where_clause4:= l_where_clause4 ||
4706 ' AND sumry.salesrep_id = :l_resource_id AND sumry.parent_sales_group_id = :l_sg_id_num';
4707 else
4708 l_where_clause4:=l_where_clause4 ||
4709 ' AND sumry.salesrep_id IS NULL ';
4710 if l_parent_sg_id_num IS NULL then
4711 l_where_clause4:=l_where_clause4 || ' AND sumry.parent_sales_group_id IS NULL ';
4712 else
4713 l_where_clause4:=l_where_clause4 || ' AND sumry.parent_sales_group_id = :l_parent_sg_id_num ';
4714 end if;
4715 end if;
4716
4717
4718
4719
4720 /*The following section is dedicated to Leads open count */
4721
4722 l_sql_stmt2:='SUM( '||
4723 'CASE WHEN cal.report_date=:l_curr_as_of_date THEN '||
4724 '(sumry.leads-(sumry.leads_closed+sumry.leads_dead+sumry.leads_converted)) '||
4725 'ELSE NULL '||
4726 'END '||
4727 ') BIL_MEASURE28 '||
4728 ',SUM( '||
4729 'CASE WHEN cal.report_date=:l_prev_date THEN'||
4730 '(sumry.leads-(sumry.leads_closed+sumry.leads_dead+sumry.leads_converted)) '||
4731 'ELSE NULL '||
4732 'END '||
4733 ') BIL_MEASURE2 '||
4734 ',NULL BIL_MEASURE4 '||
4735 ',NULL BIL_MEASURE5 '||
4736 ',NULL BIL_MEASURE7 '||
4737 ',NULL BIL_MEASURE8 '||
4738 ',NULL BIL_MEASURE10 '||
4739 ',NULL BIL_MEASURE11 ';
4740
4741 l_where_clause2 := ' WHERE sumry.time_id=cal.time_id '||
4742 'AND sumry.period_type_id=cal.period_type_id '||
4743 'AND bitand(cal.record_type_id, :l_bitand_id)= :l_bitand_id '||
4744 'AND cal.report_date in (:l_curr_as_of_date, :l_prev_date) AND cal.xtd_flag=''Y'' '||
4745 ' AND sumry.update_time_id = ''-1'' '||
4746 ' AND sumry.update_period_type_id = ''-1''';
4747
4748
4749
4750 l_where_clause5 :=' WHERE sumry.TIME_ID = cal.TIME_ID '||
4751 'AND sumry.PERIOD_TYPE_ID = cal.PERIOD_TYPE_ID '||
4752 'AND bitand(cal.record_type_id, :l_bitand_id)= :l_bitand_id '||
4753 'AND cal.report_date in (:l_curr_as_of_date, :l_prev_date) AND cal.xtd_flag=''Y'' '||
4754 'AND sumry.group_id = :l_sg_id_num '||
4755 'AND sumry.update_time_id = ''-1'' '||
4756 'AND sumry.update_period_type_id = ''-1'' ';
4757
4758
4759 /* The following section is dedicated to backlog amt and deferred amt*/
4760
4761
4762
4763 l_sql_stmt3:='NULL BIL_MEASURE28
4764 ,NULL BIL_MEASURE2
4765 ,NULL BIL_MEASURE4
4766 ,NULL BIL_MEASURE5
4767 ,SUM( '||
4768 'CASE WHEN cal.report_date=:l_curr_as_of_date THEN '||
4769 '(sumry.backlog_amt_g'||l_isc_currency_suffix||') '||
4770 'ELSE NULL '||
4771 'END '||
4772 ') BIL_MEASURE7 '||
4773 ',SUM( '||
4774 'CASE WHEN cal.report_date=:l_prev_date THEN '||
4775 '(sumry.backlog_amt_g'||l_isc_currency_suffix||') '||
4776 'ELSE NULL '||
4777 'END '||
4778 ') BIL_MEASURE8 '||
4779 ',SUM( '||
4780 'CASE WHEN cal.report_date=:l_curr_as_of_date THEN '||
4781 '(sumry.deferred_amt_g'||l_isc_currency_suffix||') '||
4782 'ELSE NULL '||
4783 'END '||
4784 ') BIL_MEASURE10 '||
4785 ',SUM( '||
4786 'CASE WHEN cal.report_date=:l_prev_date THEN '||
4787 '(sumry.deferred_amt_g'||l_isc_currency_suffix||') '||
4788 'ELSE NULL '||
4792 l_where_clause3 := ' WHERE sumry.parent_grp_id = :l_sg_id_num
4789 'END '||
4790 ') BIL_MEASURE11 ';
4791 --For issue similar to that in bug 3640113 removed sumry.cat_top_node_flag =''Y''
4793 AND sumry.grp_marker <> ''TOP GROUP''
4794 AND sumry.time_id = cal.time_id AND cal.xtd_flag=''Y''
4795 AND cal.report_date in (:l_curr_as_of_date, :l_prev_date)
4796 AND cal.period_type_id = sumry.period_type_id
4797 AND bitand(cal.record_type_id,:l_bitand_id) = :l_bitand_id';
4798
4799
4800 l_where_clause6 := ' WHERE sumry.time_id = cal.time_id
4801 AND sumry.sales_grp_id = :l_sg_id_num ';
4802
4803
4804 if(l_resource_id is not null) then
4805 l_where_clause6:= l_where_clause6 ||
4806 ' AND sumry.resource_id = :l_resource_id AND sumry.parent_grp_id = :l_sg_id_num';
4807 else
4808 l_where_clause6:=l_where_clause6 ||
4809 ' AND sumry.resource_id IS NULL ';
4810 if l_parent_sg_id_num IS NULL then
4811 l_where_clause6:=l_where_clause6 || ' AND sumry.parent_grp_id = sumry.sales_grp_id ';
4812 else
4813 l_where_clause6:=l_where_clause6 || ' AND sumry.parent_grp_id = :l_parent_sg_id_num ';
4814 end if;
4815 end if;
4816
4817 l_where_clause6 := l_where_clause6 ||
4818 ' AND cal.report_date in (:l_curr_as_of_date, :l_prev_date)
4819 AND cal.period_type_id = sumry.period_type_id AND cal.xtd_flag=''Y''
4820 AND bitand(cal.record_type_id,:l_bitand_id) = :l_bitand_id';
4821
4822 CASE l_viewby
4823 WHEN 'ORGANIZATION+JTF_ORG_SALES_GROUP' THEN
4824
4825
4826
4827 l_url_str:='pFunctionName=BIL_BI_LDOPBKLOG_R&pParamIds=Y&VIEW_BY='||l_viewby||'&VIEW_BY_NAME=VIEW_BY_ID';
4828 IF l_prodcat_id = 'All' THEN
4829 l_prodcat_flag := ' ';
4830 l_sumry2 := 'BIM_I_LD_GEN_SG_MV';
4831 l_product_where_clause1 := ' AND sumry.cat_top_node_flag =''Y''';
4832 l_group_by := ' group by sumry.salesrep_id,sumry.sales_group_id, '||
4833 '(CASE WHEN sumry.salesrep_id IS NULL THEN 1 ELSE 2 END),
4834 (CASE WHEN sumry.salesrep_id IS NULL
4835 THEN '''||l_url_str||''' ELSE NULL END) ';
4836
4837 ELSE
4838 l_prodcat_flag := 'sumry.product_category_id, ';
4839 l_sumry2 := 'BIM_I_LP_GEN_SG_MV';
4840 l_product_where_clause1:= ' AND sumry.item_category_id = :l_prodcat ';
4841 l_group_by := ' GROUP BY sumry.salesrep_id,sumry.sales_group_id,
4842 '||l_prodcat_flag||'
4843 (CASE WHEN sumry.salesrep_id IS NULL THEN 1 ELSE 2 END),
4844 (CASE WHEN sumry.salesrep_id IS NULL
4845 THEN '''||l_url_str||''' ELSE NULL END) ';
4846
4847 END IF;
4848
4849 -- l_sumry1 := 'BIL_BI_PIPE_G_MV';
4850 l_sumry1 := l_open_mv_new ;
4851 l_sumry3 := 'ISC_DBI_SCR_002_MV';
4852
4853
4854
4855 l_custom_sql:= 'SELECT decode(sumry.salesrep_id, NULL, grptl.group_name,
4856 restl.resource_name) VIEWBY, decode(sumry.salesrep_id, NULL,
4857 sumry.sales_group_id, sumry.salesrep_id) VIEWBYID,
4858 SORTORDER, BIL_MEASURE28, BIL_MEASURE2, BIL_MEASURE4,
4859 BIL_MEASURE5, BIL_MEASURE7, BIL_MEASURE8, BIL_MEASURE10,
4860 BIL_MEASURE11, BIL_URL1,
4861 DECODE(sumry.salesrep_id, NULL, NULL,'''||l_drill_link||''') BIL_URL2
4862 FROM (
4863 SELECT /*+ NO_MERGE */ salesrep_id, sales_group_id, sortorder,
4864 sum(bil_measure28) bil_measure28,sum(bil_measure2) bil_measure2,
4865 sum(bil_measure4) bil_measure4, sum(bil_measure5) bil_measure5,
4866 SUM(BIL_MEASURE7) BIL_MEASURE7 ,SUM(BIL_MEASURE8) BIL_MEASURE8 ,
4867 SUM(BIL_MEASURE10) BIL_MEASURE10,
4868 SUM(BIL_MEASURE11) BIL_MEASURE11, BIL_URL1, NULL BIL_URL2
4869 FROM (
4870 SELECT salesrep_id, sales_group_id, sortorder,
4871 sum(bil_measure28) bil_measure28,
4872 sum(bil_measure2) bil_measure2,
4873 sum(bil_measure4) bil_measure4,
4874 sum(bil_measure5) bil_measure5,
4875 NULL BIL_MEASURE7 ,NULL BIL_MEASURE8 ,
4876 NULL BIL_MEASURE10 ,NULL BIL_MEASURE11,
4877 BIL_URL1, NULL BIL_URL2
4878 FROM ( ';
4879
4880 --Open Opportunity by sales group and sales rep
4881
4882 l_custom_sql :=l_custom_sql||'SELECT sumry.salesrep_id,sumry.sales_group_id,
4883 '||l_prodcat_flag||'
4884 (CASE WHEN sumry.salesrep_id IS NULL THEN 1 ELSE 2 END) SORTORDER' ||
4885 ','||l_sql_stmt1||
4886 ',(CASE WHEN sumry.salesrep_id IS NULL
4887 THEN '''||l_url_str||''' ELSE NULL END) BIL_URL1
4888 ,NULL BIL_URL2
4889 FROM '||l_sumry1||' sumry
4890 '||l_where_clause1||'
4891 '||l_group_flag;
4892
4896
4893 IF l_resource_id IS NOT NULL THEN
4894 l_custom_sql := l_custom_sql||' AND sumry.salesrep_id = '||l_resource_id;
4895 END IF;
4897 l_custom_sql := l_custom_sql||l_group_by;
4898
4899 --Leads open count by sales group
4900
4901 IF l_resource_id IS NULL THEN
4902 l_custom_sql := l_custom_sql||' UNION ALL SELECT /*+ leading (cal) */ null salesrep_id,
4903 sumry.group_id sales_group_id , '||l_prodcat_flag||
4904 '1 SORTORDER,' ||
4905 ' '||l_sql_stmt2||
4906 ','''||l_url_str||''' BIL_URL1 '||
4907 ',null BIL_URL2 '||
4908 ' FROM '||l_sumry2||' sumry,
4909 jtf_rs_grp_relations rels, '||
4910 l_fii_struct||' cal '||
4911 l_where_clause2||
4912 ' AND rels.related_group_id = :l_sg_id_num '||
4913 ' AND rels.relation_type = ''PARENT_GROUP'' '||
4914 ' AND rels.group_id <> rels.related_group_id '||
4915 ' AND :l_bis_sysdate BETWEEN rels.start_date_active '||
4916 ' AND NVL(rels.end_date_active, :l_bis_sysdate) '||
4917 ' AND NVL(rels.delete_flag, ''N'') <> ''Y'' '||
4918 ' AND sumry.group_id = rels.group_id '||
4919 ' AND sumry.resource_id = ''-1'' ' ||
4920 ' GROUP BY '||l_prodcat_flag||' sumry.group_id ';
4921
4922 END IF; -- if resource id is null ends
4923
4924 --Leads open count by sales rep
4925 l_custom_sql := l_custom_sql||' UNION ALL SELECT /*+ leading (cal) */ sumry.resource_id salesrep_id ,
4926 sumry.group_id sales_group_id, '||l_prodcat_flag||
4927 ' 2 SORTORDER '||
4928 ','||l_sql_stmt2||
4929 ',NULL BIL_URL1 '||
4930 ',NULL BIL_URL2 '||
4931 ' FROM '||l_sumry2||' sumry '||
4932 ','||l_fii_struct||' cal '||
4933 ' '||l_where_clause2||
4934 ' AND sumry.group_id = :l_sg_id_num ';
4935
4936 IF l_resource_id IS NULL THEN
4937 l_custom_sql := l_custom_sql||' AND sumry.resource_id <>''-1''';
4938 ELSE
4939 l_custom_sql := l_custom_sql||' AND sumry.resource_id = '||l_resource_id;
4940 END IF;
4941
4942 l_custom_sql := l_custom_sql||
4943 ' GROUP BY '||l_prodcat_flag||' sumry.resource_id, sumry.group_id ';
4944
4945 l_custom_sql := l_custom_sql||') sumry '||l_denorm ;
4946
4947 if(l_prodcat_id is not NULL) then
4948 l_custom_sql := l_custom_sql||' where 1=1 '||l_product_where_clause||
4949 'group by salesrep_id, sales_group_id, sortorder, bil_url1 ';
4950 end if;
4951
4952
4953 -- Backlog amt and deferred amt by sales group and sales rep
4954
4955 l_custom_sql := l_custom_sql||' UNION ALL SELECT /*+ leading (cal) */ sumry.resource_id salesrep_id,
4956 sumry.sales_grp_id sales_group_id '||
4957 ',(CASE WHEN sumry.resource_id IS NULL THEN 1 ELSE 2 END) SORTORDER' ||
4958 ','||l_sql_stmt3||
4959 ',(CASE WHEN sumry.resource_id IS NULL
4960 THEN '''||l_url_str||''' ELSE NULL END) BIL_URL1
4961 ,NULL BIL_URL2
4962 FROM '||l_sumry3||' sumry
4963 ,'||l_fii_struct||' cal '
4964 ||l_where_clause3||'
4965 '||l_product_where_clause1;
4966 IF l_resource_id IS NOT NULL THEN
4967 l_custom_sql := l_custom_sql||' AND sumry.resource_id = '||l_resource_id;
4968 END IF;
4969
4970 l_custom_sql := l_custom_sql||'
4971 GROUP BY (CASE WHEN sumry.resource_id IS NULL THEN 1 ELSE 2 END) ,
4972 sumry.resource_id ,
4973 sumry.sales_grp_id ,
4974 (CASE WHEN sumry.resource_id IS NULL
4975 THEN '''||l_url_str||''' ELSE NULL END)';
4976
4977 l_custom_sql := l_custom_sql||' ) group by salesrep_id,
4978 sales_group_id, sortorder, BIL_URL1
4979 ) sumry, jtf_rs_groups_tl grptl,
4980 jtf_rs_resource_extns_tl restl
4981 where grptl.group_id = sumry.sales_group_id
4982 AND grptl.language = USERENV(''LANG'')
4983 AND restl.language(+) = USERENV(''LANG'')
4984 AND restl.resource_id(+) = sumry.salesrep_id ';
4985
4986
4987 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
4988 l_ind :=1;
4989 l_len:= length(l_custom_sql);
4990
4991 WHILE l_ind <= l_len LOOP
4992 l_str:= substr(l_custom_sql, l_ind, 4000);
4993
4997
4994 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
4995 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
4996 MESSAGE => l_str);
4998 l_ind := l_ind + 4000;
4999
5000 END LOOP;
5001 END IF;
5002
5003
5004 IF l_prodcat_id = 'All' THEN
5005 if l_resource_id is null then
5006 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
5007 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5008 --open oppties
5009 USING l_snap_date,
5010 l_snap_date, l_sg_id_num,
5011 l_snap_date,
5012 --open leads
5013 l_curr_as_of_date, l_prev_date
5014 , l_bitand_id, l_bitand_id, l_curr_as_of_date, l_prev_date
5015 , l_sg_id_num, l_bis_sysdate, l_bis_sysdate,
5016 --open leads
5017 l_curr_as_of_date, l_prev_date
5018 , l_bitand_id, l_bitand_id, l_curr_as_of_date, l_prev_date,
5019 l_sg_id_num,
5020 --backlog
5021 l_curr_as_of_date,
5022 l_prev_date,
5023 l_curr_as_of_date,
5024 l_prev_date,
5025 l_sg_id_num,l_curr_as_of_date, l_prev_date,
5026 l_bitand_id,l_bitand_id
5027 ;
5028 ELSE
5029 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5030 --open oppties
5031 USING l_snap_date,
5032 l_prev_snap_date, l_sg_id_num,
5033 l_snap_date, l_prev_snap_date,
5034 --open leads
5035 l_curr_as_of_date, l_prev_date
5036 , l_bitand_id, l_bitand_id, l_curr_as_of_date, l_prev_date
5037 , l_sg_id_num, l_bis_sysdate, l_bis_sysdate,
5038 --open leads
5039 l_curr_as_of_date, l_prev_date
5040 , l_bitand_id, l_bitand_id, l_curr_as_of_date, l_prev_date,
5041 l_sg_id_num,
5042 --backlog
5043 l_curr_as_of_date,
5044 l_prev_date,
5045 l_curr_as_of_date,
5046 l_prev_date,
5047 l_sg_id_num,l_curr_as_of_date, l_prev_date,
5048 l_bitand_id,l_bitand_id
5049 ;
5050 END IF;
5051 else
5052 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
5053 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5054 USING l_snap_date,
5055 l_snap_date, l_sg_id_num,
5056 l_snap_date,
5057 --open leads
5058 l_curr_as_of_date, l_prev_date
5059 , l_bitand_id, l_bitand_id, l_curr_as_of_date, l_prev_date,
5060 l_sg_id_num,
5061 --backlog
5062 l_curr_as_of_date,
5063 l_prev_date,
5064 l_curr_as_of_date,
5065 l_prev_date,
5066 l_sg_id_num,l_curr_as_of_date, l_prev_date,
5067 l_bitand_id,l_bitand_id
5068 ;
5069 ELSE
5070 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5071 USING l_snap_date,
5072 l_prev_snap_date, l_sg_id_num,
5073 l_snap_date, l_prev_snap_date,
5074 --open leads
5075 l_curr_as_of_date, l_prev_date
5076 , l_bitand_id, l_bitand_id, l_curr_as_of_date, l_prev_date,
5077 l_sg_id_num,
5078 --backlog
5079 l_curr_as_of_date,
5080 l_prev_date,
5081 l_curr_as_of_date,
5082 l_prev_date,
5083 l_sg_id_num,l_curr_as_of_date, l_prev_date,
5084 l_bitand_id,l_bitand_id
5085 ;
5086 END IF;
5087 end if;
5088 ELSE --prodcat selected
5089 if l_resource_id is null then
5090 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
5091 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5092 --open oppties
5093 USING l_snap_date,
5094 l_snap_date, l_sg_id_num,
5095 l_snap_date,
5096 --open leads
5097 l_curr_as_of_date, l_prev_date
5098 , l_bitand_id,l_bitand_id,l_curr_as_of_date,l_prev_date
5099 , l_sg_id_num,l_bis_sysdate, l_bis_sysdate,
5100 --open leads
5101 l_curr_as_of_date, l_prev_date
5102 , l_bitand_id, l_bitand_id, l_curr_as_of_date, l_prev_date
5103 , l_sg_id_num, l_prodcat_id,
5104 --backlog
5105 l_curr_as_of_date,
5106 l_prev_date,
5107 l_curr_as_of_date,
5108 l_prev_date,
5109 l_sg_id_num,l_curr_as_of_date, l_prev_date,
5110 l_bitand_id, l_bitand_id, l_prodcat_id;
5111 ELSE
5112 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5113 --open oppties
5114 USING l_snap_date,
5115 l_prev_snap_date, l_sg_id_num,
5116 l_snap_date, l_prev_snap_date,
5117 --open leads
5118 l_curr_as_of_date, l_prev_date
5119 , l_bitand_id,l_bitand_id,l_curr_as_of_date,l_prev_date
5120 , l_sg_id_num,l_bis_sysdate, l_bis_sysdate,
5121 --open leads
5122 l_curr_as_of_date, l_prev_date
5126 l_curr_as_of_date,
5123 , l_bitand_id, l_bitand_id, l_curr_as_of_date, l_prev_date
5124 , l_sg_id_num, l_prodcat_id,
5125 --backlog
5127 l_prev_date,
5128 l_curr_as_of_date,
5129 l_prev_date,
5130 l_sg_id_num,l_curr_as_of_date, l_prev_date,
5131 l_bitand_id, l_bitand_id, l_prodcat_id;
5132 END IF;
5133 else
5134 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
5135 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5136 --open oppties
5137 USING l_snap_date,
5138 l_snap_date, l_sg_id_num,
5139 l_snap_date,
5140 --open leads
5141 l_curr_as_of_date, l_prev_date
5142 , l_bitand_id, l_bitand_id, l_curr_as_of_date, l_prev_date
5143 , l_sg_id_num, l_prodcat_id,
5144 --backlog
5145 l_curr_as_of_date,
5146 l_prev_date,
5147 l_curr_as_of_date,
5148 l_prev_date,
5149 l_sg_id_num,l_curr_as_of_date, l_prev_date,
5150 l_bitand_id, l_bitand_id, l_prodcat_id;
5151 ELSE
5152 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5153 --open oppties
5154 USING l_snap_date,
5155 l_prev_snap_date, l_sg_id_num,
5156 l_snap_date, l_prev_snap_date,
5157 --open leads
5158 l_curr_as_of_date, l_prev_date
5159 , l_bitand_id, l_bitand_id, l_curr_as_of_date, l_prev_date
5160 , l_sg_id_num, l_prodcat_id,
5161 --backlog
5162 l_curr_as_of_date,
5163 l_prev_date,
5164 l_curr_as_of_date,
5165 l_prev_date,
5166 l_sg_id_num,l_curr_as_of_date, l_prev_date,
5167 l_bitand_id, l_bitand_id, l_prodcat_id;
5168 END IF;
5169 end if;
5170 END IF;
5171 COMMIT;
5172
5173
5174 x_custom_sql:= l_outer_select ||
5175 ' FROM( '||
5176 'SELECT VIEWBY, SORTORDER,
5177 SUM(BIL_MEASURE28) BIL_MEASURE28, '||
5178 'SUM(BIL_MEASURE2) BIL_MEASURE2, '||
5179 'SUM(BIL_MEASURE4) BIL_MEASURE4,
5180 SUM(BIL_MEASURE5) BIL_MEASURE5, '||
5181 'SUM(BIL_MEASURE7) BIL_MEASURE7,
5182 SUM(BIL_MEASURE8) BIL_MEASURE8, '||
5183 'SUM(BIL_MEASURE10) BIL_MEASURE10,
5184 SUM(BIL_MEASURE11) BIL_MEASURE11, '||
5185 'VIEWBYID, BIL_URL1, BIL_URL2 '||
5186 ' FROM BIL_BI_RPT_TMP1 GROUP BY VIEWBY, SORTORDER, VIEWBYID, BIL_URL1, BIL_URL2 '||
5187 ') '|| l_null_rem_clause ||' ORDER BY SORTORDER, VIEWBY ';
5188
5189
5190
5191 WHEN 'ITEM+ENI_ITEM_VBH_CAT' THEN
5192
5193 l_cat_url := 'pFunctionName='||l_rpt_str||'&pParamIds=Y&VIEW_BY='||l_viewby||'&VIEW_BY_NAME=VIEW_BY_ID';
5194
5195 -- l_sumry1 := 'BIL_BI_PIPE_G_MV ';
5196 l_sumry1 := l_open_mv_new ;
5197 l_sumry2 := 'BIM_I_LP_GEN_SG_MV ';
5198 l_sumry3 := 'ISC_DBI_SCR_002_MV ';
5199
5200 IF (l_prodcat_id = 'All') THEN
5201 l_product_where_clause1 := ' AND pcd.top_node_flag = :l_yes
5202 AND pcd.parent_id = sumry.item_category_id
5203 AND pcd.child_id = sumry.item_category_id
5204 AND sumry.item_category_id = pcd.child_id
5205 AND sumry.cat_top_node_flag = :l_yes ';
5206 l_group_by := ' group by pcd.value, pcd.id';
5207 ELSE
5208 l_product_where_clause1 := ' AND pcd.parent_id = :l_prodcat
5209 AND pcd.id = pcd.child_id
5210 AND sumry.item_category_id = pcd.child_id
5211 AND sumry.item_category_id = pcd.id
5212 AND ((pcd.child_id <> pcd.parent_id AND pcd.leaf_node_flag = ''N'')
5213 OR pcd.leaf_node_flag = ''Y'') ';
5214 l_group_by := ' group by sumry.product_category_id, sumry.item_id';
5215 END IF;
5216
5217
5218
5219
5220 IF l_prodcat_id = 'All' THEN
5221
5222 l_unassigned_value:= bil_bi_util_pkg.GET_UNASSIGNED_PC;
5223
5224
5225 --Open Opportunity by prod cat
5226 l_custom_sql := ' SELECT null VIEWBY'||
5227 ',sumry.product_category_id VIEWBYID'||
5228 ', 1 SORTORDER'||
5229 ','||l_sql_stmt1||
5230 ',NULL BIL_URL1'||
5231 ',NULL BIL_URL2 '||
5232 ' FROM '||l_sumry1||' sumry'||
5233 ' '||l_where_clause4||
5234 ' '||l_group_flag||
5235 ' GROUP BY sumry.product_category_id';
5236
5237 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
5238 l_ind :=1;
5239 l_len:= length(l_custom_sql);
5240
5241 WHILE l_ind <= l_len LOOP
5242 l_str:= substr(l_custom_sql, l_ind, 4000);
5243
5244 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
5245 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
5246 MESSAGE => l_str);
5250 END LOOP;
5247
5248 l_ind := l_ind + 4000;
5249
5251 END IF;
5252
5253
5254 if(l_resource_id is not null) then
5255 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
5256 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5257 USING l_snap_date,
5258 l_snap_date,
5259 l_snap_date,
5260 l_sg_id_num,l_resource_id,l_sg_id_num;
5261 COMMIT;
5262 ELSE
5263 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5264 USING l_snap_date,
5265 l_prev_snap_date,
5266 l_snap_date, l_prev_snap_date,
5267 l_sg_id_num,l_resource_id,l_sg_id_num;
5268 COMMIT;
5269 END IF;
5270 else
5271 if (l_parent_sg_id_num is not null) then
5272 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
5273 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5274 USING l_snap_date,
5275 l_snap_date,
5276 l_snap_date,
5277 l_sg_id_num,l_parent_sg_id_num;
5278 COMMIT;
5279 ELSE
5280 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5281 USING l_snap_date,
5282 l_prev_snap_date,
5283 l_snap_date, l_prev_snap_date,
5284 l_sg_id_num,l_parent_sg_id_num;
5285 COMMIT;
5286 END IF;
5287 else
5288 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
5289 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5290 USING l_snap_date,
5291 l_snap_date,
5292 l_snap_date, l_sg_id_num;
5293 COMMIT;
5294 ELSE
5295 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5296 USING l_snap_date,
5297 l_prev_snap_date,
5298 l_snap_date, l_prev_snap_date,l_sg_id_num;
5299 COMMIT;
5300 END IF;
5301 end if;
5302 end if;
5303
5304
5305
5306
5307
5308 --Leads open count by prod cat
5309
5310
5311 l_custom_sql := ' SELECT /*+ leading (cal) */ null VIEWBY'||
5312 ',sumry.product_category_id VIEWBYID'||
5313 ', 1 SORTORDER'||
5314 ','||l_sql_stmt2||
5315 ',NULL BIL_URL1'||
5316 ',NULL BIL_URL2 '||
5317 ' FROM '||l_sumry2||' sumry'||
5318 ','||l_fii_struct||' cal'||
5319 ' '||l_where_clause5;
5320
5321
5322 IF l_resource_id IS NULL THEN
5323 l_custom_sql := l_custom_sql||' AND sumry.resource_id = ''-1'' ';
5324 ELSE
5325 l_custom_sql := l_custom_sql||' AND sumry.resource_id = :l_resource_id ';
5326 END IF;
5327
5328 l_custom_sql := l_custom_sql||' GROUP BY sumry.product_category_id ';
5329
5330
5331 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
5332 l_ind :=1;
5333 l_len:= length(l_custom_sql);
5334
5335 WHILE l_ind <= l_len LOOP
5336 l_str:= substr(l_custom_sql, l_ind, 4000);
5337
5338 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
5339 MODULE => g_pkg || l_proc ||'.'|| 'Leads by PC ',
5340 MESSAGE => l_str);
5341
5342 l_ind := l_ind + 4000;
5343
5344 END LOOP;
5345 END IF;
5346
5347
5348 IF l_resource_id IS NULL THEN
5349 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5350 USING l_curr_as_of_date,l_prev_date,
5351 l_bitand_id,l_bitand_id,l_curr_as_of_date,l_prev_date,l_sg_id_num;
5352 ELSE
5353 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5354 USING l_curr_as_of_date,l_prev_date,
5355 l_bitand_id,l_bitand_id,l_curr_as_of_date,l_prev_date,l_sg_id_num,l_resource_id;
5356
5357 END IF;
5358
5359 --Backlog amt and deferred amt by prod cat
5360
5361 x_custom_sql := l_outer_select||' FROM (
5362 SELECT VIEWBY, VIEWBYID, SORTORDER, SUM(BIL_MEASURE28) BIL_MEASURE28,
5363 SUM(BIL_MEASURE2) BIL_MEASURE2, SUM(BIL_MEASURE4) BIL_MEASURE4,
5364 SUM(BIL_MEASURE5) BIL_MEASURE5, SUM(BIL_MEASURE7) BIL_MEASURE7,
5365 SUM(BIL_MEASURE8) BIL_MEASURE8, SUM(BIL_MEASURE10) BIL_MEASURE10,
5366 SUM(BIL_MEASURE11) BIL_MEASURE11, BIL_URL1, BIL_URL2 FROM
5367 (select decode(parent_id, -1,:l_unassigned_value,
5368 mtl.DESCRIPTION || '' ('' || mtl.CATEGORY_CONCAT_SEGS ||'')'') VIEWBY,
5369 parent_id VIEWBYID,
5370 1 SORTORDER, BIL_MEASURE28,'||
5371 'BIL_MEASURE2, '||
5372 'BIL_MEASURE4,BIL_MEASURE5, BIL_MEASURE7, BIL_MEASURE8, '||
5373 'BIL_MEASURE10,BIL_MEASURE11,BIL_URL1, DECODE(parent_id,''-1'',NULL,'''||l_cat_url||''') BIL_URL2
5374 from (select pcd.parent_id parent_id,
5375 SORTORDER, BIL_MEASURE28,'||
5376 'BIL_MEASURE2, '||
5377 'BIL_MEASURE4,BIL_MEASURE5, BIL_MEASURE7, BIL_MEASURE8, '||
5378 'BIL_MEASURE10,BIL_MEASURE11,
5379 '''||l_drill_link||''' BIL_URL1, BIL_URL2
5380
5384 'BIL_MEASURE4,BIL_MEASURE5, BIL_MEASURE7, BIL_MEASURE8, '||
5381 from (select VIEWBYID product_category_id,
5382 SORTORDER, BIL_MEASURE28,'||
5383 'BIL_MEASURE2, '||
5385 'BIL_MEASURE10,BIL_MEASURE11,BIL_URL1, BIL_URL2 FROM BIL_BI_RPT_TMP1) sumry '||l_denorm||' where
5386 sortorder = 1 '||l_product_where_clause||') opty, mtl_categories_v mtl '||
5387 ' WHERE mtl.category_id (+) = opty.parent_id
5388 UNION ALL
5389 SELECT /*+ leading (cal) */ pcd.value VIEWBY'||
5390 ',pcd.id VIEWBYID'||
5391 ', 1 SORTORDER'||
5392 ','||l_sql_stmt3||
5393 ', '''||l_drill_link||''' BIL_URL1'||
5394 ',decode(pcd.id, ''-1'',NULL, '''||l_cat_url||''') BIL_URL2 '||
5395 ' FROM '||l_sumry3||' sumry'||
5396 ','||l_fii_struct||' cal,ENI_ITEM_PROD_CAT_LOOKUP_V pcd
5397 '||l_where_clause6||
5398 ' '||l_product_where_clause1
5399 ||' GROUP BY pcd.value, pcd.id '||
5400 ')
5401 '|| l_null_rem_clause||
5402 ' GROUP BY VIEWBY, VIEWBYID, SORTORDER,
5403 BIL_URL1, BIL_URL2)
5404 ORDER BY SORTORDER, VIEWBY ';
5405
5406
5407 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
5408 l_ind :=1;
5409 l_len:= length(x_custom_sql);
5410
5411 WHILE l_ind <= l_len LOOP
5412 l_str:= substr(x_custom_sql, l_ind, 4000);
5413
5414 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
5415 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
5416 MESSAGE => l_str);
5417
5418 l_ind := l_ind + 4000;
5419
5420 END LOOP;
5421 END IF;
5422
5423
5424 --PRODCAT NOT ALL
5425 ELSE -- if prod cat is not All
5426
5427
5428 l_cat_assign := bil_bi_util_pkg.getLookupMeaning(p_lookuptype => 'BIL_BI_LOOKUPS'
5429 ,p_lookupcode => 'ASSIGN_CATEG');
5430
5431
5432 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
5433
5434 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
5435 MODULE => g_pkg ||l_proc || ' Product cat is not all ',
5436 MESSAGE => 'Product cat '||l_prodcat_id);
5437
5438 END IF;
5439
5440
5441 l_custom_sql := 'SELECT DECODE(pcd.parent_id, pcd.id, decode(sumry.item_id, ''-1'', :l_cat_assign, pcd.value), pcd.value) VIEWBY
5442 ,pcd.id VIEWBYID'||
5443 ',DECODE(pcd.parent_id, pcd.id, decode(sumry.item_id, ''-1'', 1, 2), 2) SORTORDER '||
5444 ',BIL_MEASURE28,BIL_MEASURE2, BIL_MEASURE4,BIL_MEASURE5,
5445 NULL BIL_MEASURE7 ,NULL BIL_MEASURE8 ,NULL BIL_MEASURE10 ,
5446 NULL BIL_MEASURE11,
5447 decode(sumry.item_id, ''-1'', decode(pcd.parent_id, pcd.id,NULL,'''||l_drill_link||'''),'''||l_drill_link||''') BIL_URL1,
5448 DECODE(pcd.parent_id, pcd.id, NULL, '''||l_cat_url||''') BIL_URL2
5449 FROM
5450 ( ';
5451
5452 l_custom_sql := l_custom_sql ||'
5453 SELECT sumry.product_category_id, to_char(sumry.item_id) item_id '||
5454 ','||l_sql_stmt1||
5455 ',NULL BIL_URL1'||
5456 ',NULL BIL_URL2
5457 FROM '||l_sumry1||' sumry'||
5458 ' '||
5459 l_where_clause4||' '
5460 ||l_group_flag
5461 || l_group_by;
5462
5463 l_custom_sql := l_custom_sql||
5464 ' UNION ALL ';
5465
5466
5467 --Get Leads values
5468 l_custom_sql := l_custom_sql || '
5469 SELECT sumry.product_category_id, sumry.item_id,
5470 '||l_sql_stmt2||
5471 ',NULL BIL_URL1
5472 ,NULL BIL_URL2
5473 FROM '||l_sumry2||' sumry '||
5474 ','||l_fii_struct||' cal'||
5475 l_where_clause5 ;
5476
5477 IF l_resource_id IS NOT NULL THEN
5478 l_custom_sql := l_custom_sql||' AND sumry.resource_id = :l_resource_id ';
5479 ELSE
5480 l_custom_sql := l_custom_sql ||' AND sumry.resource_id = ''-1'' ';
5481 END IF;
5482
5483 l_custom_sql := l_custom_sql||' '||
5484 l_group_by;
5485
5486 l_custom_sql := l_custom_sql||') sumry '||l_denorm||
5487 'where 1=1 '|| l_product_where_clause;
5488
5489
5490 l_custom_sql := l_custom_sql||
5494 ,2 SORTORDER,'||l_sql_stmt3||
5491 ' UNION ALL
5492 SELECT pcd.value VIEWBY
5493 ,pcd.id VIEWBYID
5495 ', DECODE(pcd.parent_id, pcd.id, NULL, '''||l_drill_link||''') BIL_URL1
5496 , DECODE(pcd.parent_id, pcd.id, NULL, '''||l_cat_url||''') BIL_URL2
5497 FROM ENI_ITEM_PROD_CAT_LOOKUP_V pcd,'||l_fii_struct||' cal, '||l_sumry3||' sumry '||
5498 l_where_clause6 ||' '
5499 ||l_product_where_clause1||
5500 ' GROUP BY 2
5501 ,pcd.value
5502 ,pcd.id
5503 ,DECODE(pcd.parent_id, pcd.id, NULL, '''||l_drill_link||''')
5504 , DECODE(pcd.parent_id, pcd.id, NULL, '''||l_cat_url||''') ';
5505
5506
5507 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
5508 l_ind :=1;
5509 l_len:= length(l_custom_sql);
5510
5511 WHILE l_ind <= l_len LOOP
5512 l_str:= substr(l_custom_sql, l_ind, 4000);
5513
5514 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
5515 MODULE => g_pkg || l_proc ||'.'|| ' View by PC, PC not null: ',
5516 MESSAGE => l_str);
5517
5518 l_ind := l_ind + 4000;
5519
5520 END LOOP;
5521 END IF;
5522
5523 if(l_resource_id is not null) then
5524 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
5525 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5526 USING l_cat_assign,
5527 l_snap_date, l_snap_date,
5528 l_snap_date,
5529 l_sg_id_num,l_resource_id,l_sg_id_num,
5530 l_curr_as_of_date,l_prev_date,
5531 l_bitand_id,l_bitand_id,l_curr_as_of_date,l_prev_date,
5532 l_sg_id_num, l_resource_id, l_prodcat_id,
5533 l_curr_as_of_date,
5534 l_prev_date,
5535 l_curr_as_of_date,
5536 l_prev_date,
5537 l_sg_id_num,l_resource_id,l_sg_id_num,l_curr_as_of_date, l_prev_date,
5538 l_bitand_id, l_bitand_id, l_prodcat_id;
5539 COMMIT;
5540 ELSE
5541 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5542 USING l_cat_assign,
5543 l_snap_date, l_prev_snap_date,
5544 l_snap_date, l_prev_snap_date,
5545 l_sg_id_num,l_resource_id,l_sg_id_num,
5546 l_curr_as_of_date,l_prev_date,
5547 l_bitand_id,l_bitand_id,l_curr_as_of_date,l_prev_date,
5548 l_sg_id_num, l_resource_id, l_prodcat_id,
5549 l_curr_as_of_date,
5550 l_prev_date,
5551 l_curr_as_of_date,
5552 l_prev_date,
5553 l_sg_id_num,l_resource_id,l_sg_id_num,l_curr_as_of_date, l_prev_date,
5554 l_bitand_id, l_bitand_id, l_prodcat_id;
5555 COMMIT;
5556 END IF;
5557 else
5558 if (l_parent_sg_id_num is not null) then
5559 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
5560 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5561 USING l_cat_assign,
5562 l_snap_date, l_snap_date,
5563 l_snap_date,
5564 l_sg_id_num,l_parent_sg_id_num,
5565 l_curr_as_of_date,l_prev_date,
5566 l_bitand_id,l_bitand_id,l_curr_as_of_date,l_prev_date,
5567 l_sg_id_num,l_prodcat_id,
5568 l_curr_as_of_date,
5569 l_prev_date,
5570 l_curr_as_of_date,
5571 l_prev_date,
5572 l_sg_id_num,l_parent_sg_id_num,l_curr_as_of_date, l_prev_date,
5573 l_bitand_id, l_bitand_id, l_prodcat_id;
5574 COMMIT;
5575 ELSE
5576 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5577 USING l_cat_assign,
5578 l_snap_date, l_prev_snap_date,
5579 l_snap_date, l_prev_snap_date,
5580 l_sg_id_num,l_parent_sg_id_num,
5581 l_curr_as_of_date,l_prev_date,
5582 l_bitand_id,l_bitand_id,l_curr_as_of_date,l_prev_date,
5583 l_sg_id_num,l_prodcat_id,
5584 l_curr_as_of_date,
5585 l_prev_date,
5586 l_curr_as_of_date,
5587 l_prev_date,
5588 l_sg_id_num,l_parent_sg_id_num,l_curr_as_of_date, l_prev_date,
5589 l_bitand_id, l_bitand_id, l_prodcat_id;
5590 COMMIT;
5591 END IF;
5592 else
5593 IF (l_open_mv_new <> 'BIL_BI_PIPE_G_MV') THEN
5594 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5595 USING l_cat_assign,
5596 l_snap_date, l_snap_date,
5597 l_snap_date,
5598 l_sg_id_num,
5599 l_curr_as_of_date,l_prev_date,
5600 l_bitand_id,l_bitand_id,l_curr_as_of_date,l_prev_date,
5604 l_curr_as_of_date,
5601 l_sg_id_num,l_prodcat_id,
5602 l_curr_as_of_date,
5603 l_prev_date,
5605 l_prev_date,
5606 l_sg_id_num,l_curr_as_of_date, l_prev_date,
5607 l_bitand_id, l_bitand_id, l_prodcat_id;
5608 COMMIT;
5609 ELSE
5610 EXECUTE IMMEDIATE l_insert_stmnt||l_custom_sql
5611 USING l_cat_assign,
5612 l_snap_date, l_prev_snap_date,
5613 l_snap_date, l_prev_snap_date,
5614 l_sg_id_num,
5615 l_curr_as_of_date,l_prev_date,
5616 l_bitand_id,l_bitand_id,l_curr_as_of_date,l_prev_date,
5617 l_sg_id_num,l_prodcat_id,
5618 l_curr_as_of_date,
5619 l_prev_date,
5620 l_curr_as_of_date,
5621 l_prev_date,
5622 l_sg_id_num,l_curr_as_of_date, l_prev_date,
5623 l_bitand_id, l_bitand_id, l_prodcat_id;
5624 COMMIT;
5625 END IF;
5626 end if;
5627 end if;
5628
5629
5630 IF bil_bi_util_pkg.isleafnode(l_prodcat_id) THEN
5631
5632 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
5633
5634 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
5635 MODULE => g_pkg || l_proc,
5636 MESSAGE => 'Leaf Node');
5637
5638 END IF;
5639
5640
5641 x_custom_sql := l_outer_select||
5642 ' FROM
5643
5644 (SELECT VIEWBY, VIEWBYID, SORTORDER,
5645 SUM(BIL_MEASURE28) BIL_MEASURE28, SUM(BIL_MEASURE2) BIL_MEASURE2,
5646 SUM(BIL_MEASURE4) BIL_MEASURE4, SUM(BIL_MEASURE5) BIL_MEASURE5,
5647 SUM(BIL_MEASURE7) BIL_MEASURE7,SUM(BIL_MEASURE8) BIL_MEASURE8,
5648 SUM(BIL_MEASURE10) BIL_MEASURE10,
5649 SUM(BIL_MEASURE11) BIL_MEASURE11, BIL_URL1, BIL_URL2 FROM
5650
5651 ('||
5652 ' SELECT VIEWBY, VIEWBYID, 1 SORTORDER,
5653 SUM(BIL_MEASURE28) BIL_MEASURE28, SUM(BIL_MEASURE2) BIL_MEASURE2,
5654 SUM(BIL_MEASURE4) BIL_MEASURE4, SUM(BIL_MEASURE5) BIL_MEASURE5,
5655 SUM(BIL_MEASURE7) BIL_MEASURE7,SUM(BIL_MEASURE8) BIL_MEASURE8,
5656 SUM(BIL_MEASURE10) BIL_MEASURE10,
5657 SUM(BIL_MEASURE11) BIL_MEASURE11, BIL_URL1, BIL_URL2 '||
5658 ' FROM bil_bi_rpt_tmp1 '||
5659 ' WHERE SORTORDER = 1 GROUP BY VIEWBY, VIEWBYID, SORTORDER,
5660 BIL_URL1, BIL_URL2
5661
5662 '||
5663 ' UNION ALL '||
5664 ' SELECT VIEWBY, VIEWBYID, 2 SORTORDER, BIL_MEASURE28, BIL_MEASURE2,
5665 BIL_MEASURE4, BIL_MEASURE5,BIL_MEASURE7,
5666 BIL_MEASURE8, BIL_MEASURE10, '||
5667 'BIL_MEASURE11,'''||l_drill_link||''' BIL_URL1, NULL BIL_URL2 '||
5668 ' FROM
5669
5670 ('||
5671 ' SELECT SUM(RN) RN, MAX(VIEWBY) VIEWBY, MAX(VIEWBYID) VIEWBYID, '||
5672 ' SUM(BIL_MEASURE28) BIL_MEASURE28, SUM(BIL_MEASURE2) BIL_MEASURE2, '||
5673 ' SUM(BIL_MEASURE4) BIL_MEASURE4, SUM(BIL_MEASURE5) BIL_MEASURE5, '||
5674 ' SUM(BIL_MEASURE7) BIL_MEASURE7, SUM(BIL_MEASURE8) BIL_MEASURE8, '||
5675 ' SUM(BIL_MEASURE10) BIL_MEASURE10, SUM(BIL_MEASURE11) BIL_MEASURE11 '||
5676 ' FROM
5677
5678 ('||
5679 ' SELECT ROWNUM RN, VIEWBY, VIEWBYID, BIL_MEASURE28,'||
5680 ' BIL_MEASURE2, BIL_MEASURE4, BIL_MEASURE5,TRUNC(BIL_MEASURE7,3) BIL_MEASURE7, '||
5681 ' TRUNC(BIL_MEASURE8,3) BIL_MEASURE8,
5682 TRUNC(BIL_MEASURE10,3) BIL_MEASURE10, TRUNC(BIL_MEASURE11,3) BIL_MEASURE11 '||
5683 ' FROM
5684
5685 bil_bi_rpt_tmp1 '||
5686 ' WHERE SORTORDER <> 1
5687
5688 '||
5689 ' UNION ALL '||
5690 ' SELECT -ROWNUM RN, NULL VIEWBY, VIEWBYID, NULL BIL_MEASURE28,'||
5691 'NULL BIL_MEASURE2, NULL BIL_MEASURE4, NULL BIL_MEASURE5,-TRUNC(BIL_MEASURE7,3) BIL_MEASURE7, '||
5692 ' -TRUNC(BIL_MEASURE8,3) BIL_MEASURE8, -TRUNC(BIL_MEASURE10,3) BIL_MEASURE10,
5693 -TRUNC(BIL_MEASURE11,3) BIL_MEASURE11 '||
5694 ' FROM
5695
5696 ( SELECT VIEWBYID, SUM(BIL_MEASURE28) BIL_MEASURE28,
5697 SUM(BIL_MEASURE2) BIL_MEASURE2, SUM(BIL_MEASURE4) BIL_MEASURE4,
5698 SUM(BIL_MEASURE5) BIL_MEASURE5, SUM(BIL_MEASURE7) BIL_MEASURE7,
5699 SUM(BIL_MEASURE8) BIL_MEASURE8, SUM(BIL_MEASURE10) BIL_MEASURE10,
5700 SUM(BIL_MEASURE11) BIL_MEASURE11
5701
5702 FROM bil_bi_rpt_tmp1 '||
5703 ' WHERE SORTORDER = 1 GROUP BY VIEWBYID
5704
5705 )'||
5706 ') '||
5707 ' ) '||
5708 ' WHERE NOT( RN = 0 AND BIL_MEASURE28 = 0 AND BIL_MEASURE2 = 0 '||
5712
5709 ' AND BIL_MEASURE4 = 0 AND BIL_MEASURE5 = 0 AND BIL_MEASURE7 = 0'||
5710 ' AND BIL_MEASURE8 = 0 AND BIL_MEASURE10 = 0 AND BIL_MEASURE11 = 0 ) '||
5711 ' )
5713 GROUP BY VIEWBY, VIEWBYID, SORTORDER, BIL_URL1, BIL_URL2
5714 )'|| l_null_rem_clause||'
5715 ORDER BY SORTORDER, VIEWBY ';
5716
5717 ELSE
5718
5719 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
5720
5721 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
5722 MODULE => g_pkg || l_proc,
5723 MESSAGE => 'Not a Leaf Node');
5724
5725 END IF;
5726
5727 x_custom_sql:= l_outer_select ||
5728 ' FROM( '||
5729 'SELECT VIEWBY, SORTORDER, SUM(BIL_MEASURE28) BIL_MEASURE28, '||
5730 'SUM(BIL_MEASURE2) BIL_MEASURE2, '||
5731 'SUM(BIL_MEASURE4) BIL_MEASURE4, SUM(BIL_MEASURE5) BIL_MEASURE5, '||
5732 'SUM(BIL_MEASURE7) BIL_MEASURE7, SUM(BIL_MEASURE8) BIL_MEASURE8, '||
5733 'SUM(BIL_MEASURE10) BIL_MEASURE10, SUM(BIL_MEASURE11) BIL_MEASURE11, '||
5734 'VIEWBYID, BIL_URL1, BIL_URL2 '||
5735 ' FROM BIL_BI_RPT_TMP1 GROUP BY VIEWBY, SORTORDER, VIEWBYID, BIL_URL1, BIL_URL2 '||
5736 ') '|| l_null_rem_clause||' ORDER BY SORTORDER, VIEWBY';
5737
5738
5739 END IF;
5740
5741 END IF; -- end category selected check
5742
5743 END CASE;
5744
5745 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
5746
5747 l_sql_error_desc := length(x_custom_sql);
5748
5749 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
5750 MODULE => g_pkg || l_proc,
5751 MESSAGE => ' x_custom_sql length '||l_sql_error_desc);
5752
5753 END IF;
5754
5755
5756 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
5757 l_ind :=1;
5758 l_len:= length(x_custom_sql);
5759
5760 WHILE l_ind <= l_len LOOP
5761 l_str:= substr(x_custom_sql, l_ind, 4000);
5762
5763 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
5764 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
5765 MESSAGE => l_str);
5766
5767 l_ind := l_ind + 4000;
5768
5769 END LOOP;
5770 END IF;
5771
5772
5773
5774 l_bind_ctr := 1;
5775
5776 l_custom_rec.attribute_name :=':l_unassigned_value';
5777 l_custom_rec.attribute_value := l_unassigned_value;
5778 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
5779 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
5780 x_custom_attr.Extend();
5781 x_custom_attr(l_bind_ctr) := l_custom_rec;
5782 l_bind_ctr:=l_bind_ctr+1;
5783
5784 l_custom_rec.attribute_name :=':l_sg_id_num';
5785 l_custom_rec.attribute_value := l_sg_id_num;
5786 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
5787 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
5788 x_custom_attr.Extend();
5789 x_custom_attr(l_bind_ctr) := l_custom_rec;
5790 l_bind_ctr:=l_bind_ctr+1;
5791
5792 IF(l_resource_id IS NOT NULL) THEN
5793 l_custom_rec.attribute_name :=':l_resource_id';
5794 l_custom_rec.attribute_value := l_resource_id;
5795 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
5796 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
5797 x_custom_attr.Extend();
5798 x_custom_attr(l_bind_ctr) := l_custom_rec;
5799 l_bind_ctr:=l_bind_ctr+1;
5800 END IF;
5801
5802 l_custom_rec.attribute_name := ':l_curr_as_of_date';
5803 l_custom_rec.attribute_value := TO_CHAR(l_curr_as_of_date,'DD/MM/YYYY');
5804 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.DATE_BIND;
5805 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
5806 x_custom_attr.Extend();
5807 x_custom_attr(l_bind_ctr) := l_custom_rec;
5808
5809 l_bind_ctr:=l_bind_ctr+1;
5810
5811 l_custom_rec.attribute_name := ':l_prev_date';
5812 l_custom_rec.attribute_value := TO_CHAR(l_prev_date,'DD/MM/YYYY');
5813 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.DATE_BIND;
5814 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
5815 x_custom_attr.Extend();
5816 x_custom_attr(l_bind_ctr) := l_custom_rec;
5817
5818 l_bind_ctr:=l_bind_ctr+1;
5819
5820 l_custom_rec.attribute_name := ':l_prev_snap_date';
5821 l_custom_rec.attribute_value := TO_CHAR(l_prev_snap_date,'DD/MM/YYYY');
5822 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.DATE_BIND;
5823 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
5824 x_custom_attr.Extend();
5825 x_custom_attr(l_bind_ctr) := l_custom_rec;
5826
5827 l_bind_ctr:=l_bind_ctr+1;
5828
5832 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
5829 l_custom_rec.attribute_name := ':l_snap_date';
5830 l_custom_rec.attribute_value := TO_CHAR(l_snap_date,'DD/MM/YYYY');
5831 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.DATE_BIND;
5833 x_custom_attr.Extend();
5834 x_custom_attr(l_bind_ctr) := l_custom_rec;
5835 l_bind_ctr:=l_bind_ctr+1;
5836
5837 l_custom_rec.attribute_name := ':l_bitand_id';
5838 l_custom_rec.attribute_value := l_bitand_id;
5839 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
5840 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
5841 x_custom_attr.Extend();
5842 x_custom_attr(l_bind_ctr) := l_custom_rec;
5843
5844 l_bind_ctr := l_bind_ctr+1;
5845
5846 l_custom_rec.attribute_name :=':l_yes';
5847 l_custom_rec.attribute_value :=l_yes;
5848 l_custom_rec.attribute_data_type:=BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
5849 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
5850 x_custom_attr.Extend();
5851 x_custom_attr(l_bind_ctr):=l_custom_rec;
5852 l_bind_ctr:=l_bind_ctr+1;
5853
5854
5855 IF l_parent_sg_id_num IS NOT NULL THEN
5856 l_custom_rec.attribute_name := ':l_parent_sg_id_num';
5857 l_custom_rec.attribute_value := l_parent_sg_id_num;
5858 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
5859 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
5860 x_custom_attr.Extend();
5861 x_custom_attr(l_bind_ctr) := l_custom_rec;
5862
5863 l_bind_ctr := l_bind_ctr+1;
5864 END IF;
5865
5866
5867 ELSE -- params not valid
5868 BIL_BI_UTIL_PKG.get_default_query(p_regionname => l_region_id
5869 ,x_sqlstr => x_custom_sql);
5870 END IF;
5871
5872 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
5873
5874 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_PROCEDURE,
5875 MODULE => g_pkg || l_proc || 'end',
5876 MESSAGE => 'End of Procedure '|| l_proc);
5877
5878 END IF;
5879
5880 EXCEPTION
5881 WHEN OTHERS THEN
5882 IF FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
5883 fnd_message.set_name('FND','SQL_PLSQL_ERROR'); -- Seeded Message
5884 fnd_message.set_token('LDOPBKLOG Error is : ' ,SQLCODE);
5885 fnd_message.set_token('Reason is : ', SQLERRM);
5886
5887 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_UNEXPECTED,
5888 MODULE => g_pkg || l_proc || 'proc_error',
5889 MESSAGE => fnd_message.get );
5890 END IF;
5891
5892 BIL_BI_UTIL_PKG.get_default_query(p_regionname => l_region_id
5893 ,x_sqlstr => x_custom_sql);
5894 END BIL_BI_OPEN_LDOPBKLOG;
5895
5896
5897 /*******************************************************************************
5898 * Name : Procedure BIL_LDOPP_CAMP
5899 * Author : Aananth Solaiyappan
5900 * Date : 18th Feb 2004
5901 * Purpose : Lead and Oppty by Campaign Report.
5902 *
5903 * Copyright (c) 2003 Oracle Corporation
5904 *
5905 * Parameters
5906 * p_page_parameter_tbl PL/SQL table containing dimension parameters
5907 * x_custom_sql string containing sql query
5908 * x_custom_attr PL/SQL table containing our bind vars
5909 *
5910 ******************************************************************************/
5911
5912 PROCEDURE BIL_LDOPP_CAMP
5913 (
5914 p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL
5915 ,x_custom_sql OUT NOCOPY VARCHAR2
5916 ,x_custom_attr OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL
5917 )
5918 IS
5919
5920 l_period_type VARCHAR2(50);
5921 l_period_type_num Number;
5922
5923 l_sg_id VARCHAR2(50);
5924 l_sg_id_num NUMBER;
5925
5926 l_resource_id VARCHAR2(50);
5927
5928 l_campaign_id VARCHAR2(50);
5929 l_campaign_id_num Number;
5930
5931 l_bitand_id VARCHAR2(50);
5932
5933 l_conv_rate_selected VARCHAR2(50);
5934 l_conv_rate_selected_num Number;
5935
5936 l_curr_page_time_id NUMBER;
5937 l_prev_page_time_id NUMBER;
5938
5939 l_custom_rec BIS_QUERY_ATTRIBUTES;
5940 l_region_id VARCHAR2(50);
5941 l_comp_type VARCHAR2(50);
5942 l_parameter_valid BOOLEAN;
5943
5944 l_calendar_id VARCHAR2(50);
5945 l_calendar_id_num Number;
5946
5947 l_curr_as_of_date DATE;
5948 l_prev_date DATE;
5949 l_page_period_type VARCHAR2(50);
5950 l_bis_sysdate DATE;
5951 l_fii_struct VARCHAR2(50);
5952 l_record_type_id NUMBER;
5953
5954 l_sql_error_desc VARCHAR2(1000);
5955 l_rpt_str VARCHAR2(80);
5956 l_viewby VARCHAR2(80);
5957 l_bind_ctr NUMBER;
5958
5959 l_inner_where_clause VARCHAR2(1000);
5963 l_outer_query VARCHAR2(8000);
5960 l_inner_where_clause1 VARCHAR2(1000);
5961
5962 l_outer_select VARCHAR2(8000);
5964 l_outer_query1 VARCHAR2(8000);
5965
5966 l_inner_select VARCHAR2(8000);
5967 l_inner_select1 VARCHAR2(8000);
5968 l_inner_select2 VARCHAR2(8000);
5969
5970 l_custom_sql VARCHAR2(32000);
5971 l_custom_sql1 VARCHAR2(32000);
5972
5973 l_insert_stmnt VARCHAR2(8000);
5974
5975 l_product_where_clause VARCHAR2(1000);
5976
5977 l_sumry VARCHAR2(50);
5978 l_denorm VARCHAR2(50);
5979
5980 l_url_str VARCHAR2(1000);
5981 l_proc VARCHAR2(100);
5982 l_null_camp VARCHAR2(100);
5983
5984 l_salesrep_where VARCHAR2(100);
5985 l_prodcat_from VARCHAR2(1000);
5986 l_prodcat_where VARCHAR2(1000);
5987 l_prodcat_id VARCHAR2(20);
5988
5989 l_null_rem_clause VARCHAR2(4000);
5990 l_parent_sg_id_num NUMBER;
5991 l_currency_suffix VARCHAR2(5);
5992
5993 l_category_set VARCHAR2(15);
5994 l_yes VARCHAR2(1);
5995 l_func_area_id NUMBER;
5996
5997 l_ind NUMBER;
5998 l_str VARCHAR2(4000);
5999 l_len NUMBER;
6000
6001
6002 BEGIN
6003
6004 g_pkg := 'bil.patch.115.sql.BIL_BI_SALES_MGMT_RPTS_PKG.';
6005 l_region_id := 'BIL_BI_LEAD_OPP_CAMP';
6006 l_parameter_valid := FALSE;
6007 l_proc := 'BIL_LDOPP_CAMP.';
6008 l_category_set:='CATEGORY_SET';
6009 l_yes:='Y';
6010 l_func_area_id:=11;
6011 g_sch_name := 'BIL';
6012
6013
6014 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
6015
6016 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_PROCEDURE,
6017 MODULE => g_pkg || l_proc || 'begin',
6018 MESSAGE => 'Start of Procedure '|| l_proc);
6019
6020 END IF;
6021
6022 x_custom_attr := BIS_QUERY_ATTRIBUTES_TBL();
6023 l_custom_rec := BIS_PMV_PARAMETERS_PUB.INITIALIZE_QUERY_TYPE;
6024 BIL_BI_UTIL_PKG.GET_PAGE_PARAMS(
6025 p_page_parameter_tbl => p_page_parameter_tbl
6026 ,p_region_id => l_region_id
6027 ,x_period_type => l_period_type
6028 ,x_conv_rate_selected => l_conv_rate_selected
6029 ,x_sg_id => l_sg_id
6030 ,x_parent_sg_id => l_parent_sg_id_num
6031 ,x_resource_id => l_resource_id
6032 ,x_prodcat_id => l_prodcat_id
6033 ,x_curr_page_time_id => l_curr_page_time_id
6034 ,x_prev_page_time_id => l_prev_page_time_id
6035 ,x_comp_type => l_comp_type
6036 ,x_parameter_valid => l_parameter_valid
6037 ,x_as_of_date => l_curr_as_of_date
6038 ,x_page_period_type => l_page_period_type
6039 ,x_prior_as_of_date => l_prev_date
6040 ,x_record_type_id => l_record_type_id
6041 ,x_viewby => l_viewby
6042 );
6043
6044
6045 IF l_parameter_valid THEN
6046
6047 IF (p_page_parameter_tbl.count > 0) THEN
6048 FOR i IN p_page_parameter_tbl.first..p_page_parameter_tbl.last LOOP
6049 IF p_page_parameter_tbl(i).parameter_name = 'CAMPAIGN+CAMPAIGN' THEN
6050 l_campaign_id :=p_page_parameter_tbl(i).parameter_id;
6051 l_campaign_id_num := TO_NUMBER(REPLACE(l_campaign_id, ''''));
6052 END IF;
6053 END LOOP;
6054 END IF;
6055
6056 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
6057
6058 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
6059 MODULE => g_pkg || l_proc,
6060 MESSAGE => 'Prod cat is '||nvl(l_prodcat_id, 0)||' Lang '||USERENV('LANG'));
6061
6062 END IF;
6063
6064
6065 --Not sure what PMV returns for 'All', as of now it returns NULL, so convert it to 'All'.
6066 IF l_prodcat_id IS NULL THEN
6067 l_prodcat_id := 'All';
6068 END IF;
6069
6070 IF l_conv_rate_selected = 0 THEN
6071 l_currency_suffix := '_s';
6072 ELSE
6073 l_currency_suffix := '';
6074 END IF;
6075
6076
6077 BIL_BI_UTIL_PKG.GET_GLOBAL_CONTS
6078 (
6079 x_bitand_id => l_bitand_id
6080 ,x_calendar_id => l_calendar_id
6081 ,x_curr_date => l_bis_sysdate
6082 ,x_fii_struct => l_fii_struct
6083 );
6084
6085 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
6086
6087 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
6088 MODULE => g_pkg || l_proc,
6089 MESSAGE => 'Date '||l_bis_sysdate);
6090
6091 END IF;
6092
6093 l_sg_id_num := TO_NUMBER(REPLACE(l_sg_id, ''''));
6094 -- l_bitand_id_num := TO_NUMBER(REPLACE(l_bitand_id, ''''));
6095 l_calendar_id_num := TO_NUMBER(REPLACE(l_calendar_id, ''''));
6099 l_rpt_str:='BIL_BI_LEAD_OPP_CAMP';
6096 l_conv_rate_selected_num := TO_NUMBER(REPLACE(l_conv_rate_selected, ''''));
6097 l_period_type_num := TO_NUMBER(REPLACE(l_period_type , ''''));
6098
6100
6101 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
6102
6103
6104 l_sql_error_desc := 'l_viewby => '|| l_viewby||', '||
6105 'l_curr_page_time_id => '|| l_curr_page_time_id ||', ' ||
6106 'l_prev_page_time_id => '|| l_prev_page_time_id ||', ' ||
6107 'l_curr_as_of_date => '|| l_curr_as_of_date ||', ' ||
6108 'l_prev_date => '|| l_prev_date ||', ' ||
6109 'l_conv_rate_selected => '|| l_conv_rate_selected ||', ' ||
6110 'l_bitand_id => '|| l_bitand_id ||', ' ||
6111 'l_period_type => '|| l_period_type ||', ' ||
6112 'l_sg_id => '|| l_sg_id ||', ' ||
6113 'l_resource_id => '|| l_resource_id ||', ' ||
6114 'l_record_type_id => '|| l_record_type_id||', ' ||
6115 'l_calendar_id => '|| l_calendar_id||', ' ||
6116 'l_campaign_id: => '||l_campaign_id;
6117
6118
6119 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
6120 MODULE => g_pkg || l_proc,
6121 MESSAGE => 'Parameters =>'||l_sql_error_desc);
6122
6123 END IF;
6124
6125
6126 /*
6127 l_insert_stmnt is used to insert into temp table1.
6128 l_innerselect is the core select that hits the MVs.
6129 */
6130
6131 --BIL_BI_RPT_TMP1
6132 l_insert_stmnt :=
6133 'INSERT INTO BIL_BI_RPT_TMP1
6134 (
6135 VIEWBYID,
6136 BIL_MEASURE28,
6137 BIL_MEASURE2,
6138 BIL_MEASURE3,
6139 BIL_MEASURE5,
6140 BIL_MEASURE6,
6141 BIL_MEASURE7,
6142 BIL_MEASURE8,
6143 BIL_MEASURE9,
6144 BIL_MEASURE10,
6145 BIL_MEASURE11,
6146 BIL_MEASURE12,
6147 BIL_MEASURE13,
6148 BIL_MEASURE14,
6149 BIL_MEASURE15
6150 ) ';
6151
6152 l_inner_select :=
6153 ' SELECT /*+ NO_MERGE */
6154 VIEWBYID
6155 ,SUM(BIL_MEASURE28) BIL_MEASURE28
6156 ,SUM(BIL_MEASURE2) BIL_MEASURE2
6157 ,SUM(BIL_MEASURE3) BIL_MEASURE3
6158 ,SUM(BIL_MEASURE5) BIL_MEASURE5
6159 ,SUM(BIL_MEASURE6) BIL_MEASURE6
6160 ,SUM(BIL_MEASURE7) BIL_MEASURE7
6161 ,SUM(BIL_MEASURE8) BIL_MEASURE8
6162 ,SUM(BIL_MEASURE9) BIL_MEASURE9
6163 ,SUM(BIL_MEASURE10) BIL_MEASURE10
6164 ,SUM(BIL_MEASURE11) BIL_MEASURE11
6165 ,SUM(BIL_MEASURE12) BIL_MEASURE12
6166 ,SUM(BIL_MEASURE13) BIL_MEASURE13
6167 ,SUM(BIL_MEASURE14) BIL_MEASURE14
6168 ,BIL_MEASURE15
6169 FROM ';
6170
6171
6172 execute immediate 'TRUNCATE TABLE '||g_sch_name||'.'||'BIL_BI_RPT_TMP1';
6173
6174 /*
6175 -- CASE l_viewby
6176 -- WHEN 'CAMPAIGN+CAMPAIGN' THEN
6177
6178 --l_url_str:='pFunctionName=BIL_BI_LDOPCAMP_R&pParamIds=Y&VIEW_BY='||l_viewby||'&VIEW_BY_NAME=VIEW_BY_ID';
6179 */
6180
6181 BIL_BI_UTIL_PKG.GET_PRODUCT_WHERE_CLAUSE
6182 (
6183 p_viewby => l_viewby,--Timebeing used as there is no case stmt
6184 p_prodcat => l_prodcat_id,
6185 x_denorm => l_denorm,
6189 IF l_prodcat_id = 'All' THEN
6186 x_where_clause => l_product_where_clause
6187 );
6188
6190 l_sumry := 'BIL_BI_OPLDC_GC_MV';
6191 ELSE
6192 l_sumry := 'BIL_BI_OPLPC_GC_MV';
6193 END IF;
6194
6195 /*
6196 * 1. Need jtf_rs_grp_relations table to get the parent sales group
6197 * 2. In the case of sales reps, sales group and parent sales group are the same ,
6198 * so filtering on sales group directly
6199 */
6200
6201 IF l_resource_id IS NULL THEN
6202 l_salesrep_where := ' AND sumry.salesrep_id IS NULL ';
6203 ELSE
6204 l_salesrep_where := ' AND sumry.salesrep_id= :l_resource_id ';
6205 END IF;
6206
6207
6208 If l_prodcat_id = 'All' THEN
6209 l_prodcat_from :='';
6210 l_prodcat_where :='';
6211 ELSE
6212
6213 l_prodcat_from := ' , eni_denorm_hierarchies vbh , mtl_default_category_sets vct ';
6214 l_prodcat_where := ' inner.product_category_id = vbh.child_id AND vbh.object_type = :l_category_set
6215 AND vbh.object_id = vct.category_set_id AND vbh.dbi_flag = :l_yes
6216 AND vct.functional_area_id = :l_func_area_id AND vbh.parent_id = :l_prodcat_id ';
6217
6218 -- l_prodcat_id_num := TO_NUMBER(REPLACE(l_prodcat_id, ''''));
6219 NULL;
6220 END IF;
6221
6222 /*
6223 BIL_MEASURE15 is used to identify those leaf level rows whose URL has to be suppressed
6224 (does not apply for campaign unassigned row!).
6225 The values are
6226 -1 - suppress URL
6227 1 - DOnt suppress URL
6228 */
6229
6230 l_custom_sql1 :=
6231 'SELECT sumry.source_code_id VIEWBYID
6232 ,SUM(CASE WHEN cal.report_date =:l_curr_as_of_date
6233 THEN new_leads_cnt ELSE NULL END) BIL_MEASURE28
6234 ,SUM(CASE WHEN cal.report_date =:l_curr_as_of_date
6235 THEN cnv_leads_cnt ELSE NULL END) BIL_MEASURE2
6236 ,NULL BIL_MEASURE3
6237 ,SUM(CASE WHEN cal.report_date =:l_curr_as_of_date
6238 THEN sumry.new_opty_amt'||l_currency_suffix||' ELSE NULL END) BIL_MEASURE5
6239 ,SUM(CASE WHEN cal.report_date =:l_prev_date
6240 THEN sumry.new_opty_amt'||l_currency_suffix||' ELSE NULL END) BIL_MEASURE6
6241 ,SUM(CASE WHEN cal.report_date =:l_curr_as_of_date
6242 THEN sumry.cnv_opty_amt'||l_currency_suffix||' ELSE NULL END) BIL_MEASURE7
6243 ,SUM(CASE WHEN cal.report_date =:l_prev_date
6244 THEN sumry.cnv_opty_amt'||l_currency_suffix||' ELSE NULL END) BIL_MEASURE8
6245 ,SUM(CASE WHEN cal.report_date =:l_curr_as_of_date
6246 THEN sumry.won_opty_amt'||l_currency_suffix||' ELSE NULL END) BIL_MEASURE9
6247 ,SUM(CASE WHEN cal.report_date =:l_prev_date
6248 THEN sumry.won_opty_amt'||l_currency_suffix||' ELSE NULL END) BIL_MEASURE10
6249 ,SUM(CASE WHEN cal.report_date =:l_curr_as_of_date
6250 THEN sumry.lost_opty_amt'||l_currency_suffix||' ELSE NULL END) BIL_MEASURE11
6251 ,SUM(CASE WHEN cal.report_date =:l_prev_date
6252 THEN sumry.lost_opty_amt'||l_currency_suffix||' ELSE NULL END) BIL_MEASURE12
6253 ,SUM(CASE WHEN cal.report_date =:l_curr_as_of_date
6254 THEN sumry.no_opty_amt'||l_currency_suffix||' ELSE NULL END) BIL_MEASURE13
6255 ,SUM(CASE WHEN cal.report_date =:l_prev_date
6256 THEN sumry.no_opty_amt'||l_currency_suffix||' ELSE NULL END) BIL_MEASURE14
6260 l_custom_sql1 := l_custom_sql1||',product_category_id ';
6257 ,DECODE(sumry.leaf_node_flag,''Y'', -1,1) BIL_MEASURE15';
6258
6259 IF l_prodcat_id <> 'All' THEN
6261 END IF;
6262
6263 l_custom_sql1:=l_custom_sql1||'
6264 FROM
6265 '||l_sumry||' sumry,'||
6266 l_fii_struct||' cal
6267 WHERE
6268 sumry.effective_time_id = cal.time_id
6269 AND sumry.effective_period_type_id = cal.period_type_id
6270 AND BITAND(cal.record_type_id, :l_record_type_id) = :l_record_type_id
6271 AND cal.report_date IN (:l_curr_as_of_date , :l_prev_date) ';
6272 IF l_campaign_id is NULL THEN
6273 l_custom_sql1:=l_custom_sql1||'
6274 AND sumry.parent_source_code_id IS NULL
6275 and sumry.top_node_flag = ''Y''';
6276 else
6277 l_custom_sql1:=l_custom_sql1||'
6278 AND sumry.parent_source_code_id = :l_campaign_id ';
6279 end if;
6280 l_custom_sql1:=l_custom_sql1||'
6281 AND sumry.sales_group_id = :l_sg_id_num '||l_salesrep_where||'
6282 GROUP BY DECODE(sumry.leaf_node_flag,''Y'', -1,1), sumry.source_code_id';
6283 IF l_prodcat_id <> 'All' THEN
6284 l_custom_sql1 := l_custom_sql1||',product_category_id';
6285 END IF;
6286
6287 l_custom_sql1:=l_custom_sql1||'
6288 UNION ALL
6289 SELECT VIEWBYID
6290 ,NULL BIL_MEASURE28
6291 ,NULL BIL_MEASURE2
6292 ,(CASE WHEN (new - (closed+cnv+dead))=0 THEN NULL ELSE (new - (closed+cnv+dead)) END) BIL_MEASURE3
6293 ,NULL BIL_MEASURE5
6294 ,NULL BIL_MEASURE6
6295 ,NULL BIL_MEASURE7
6296 ,NULL BIL_MEASURE8
6297 ,NULL BIL_MEASURE9
6298 ,NULL BIL_MEASURE10
6299 ,NULL BIL_MEASURE11
6300 ,NULL BIL_MEASURE12
6301 ,NULL BIL_MEASURE13
6302 ,NULL BIL_MEASURE14
6303 ,BIL_MEASURE15';
6304
6305 IF l_prodcat_id <> 'All' THEN
6306 l_custom_sql1 := l_custom_sql1||',product_category_id ';
6307 END IF;
6308
6309 l_custom_sql1:=l_custom_sql1||'
6310
6311 FROM
6312 (
6313 SELECT sumry.source_code_id VIEWBYID
6314 ,NVL(SUM(new_leads_cnt),0) new
6315 ,NVL(SUM(cnv_leads_cnt),0) cnv
6316 ,NVL(SUM(dead_leads_cnt),0) dead
6317 ,NVL(SUM(closed_leads_cnt),0) closed
6318 ,DECODE(sumry.leaf_node_flag,''Y'', -1,1) BIL_MEASURE15';
6319
6320 IF l_prodcat_id <> 'All' THEN
6321 l_custom_sql1 := l_custom_sql1||',product_category_id ';
6322 END IF;
6323
6324 l_custom_sql1:=l_custom_sql1||'
6325 FROM
6326 '||l_sumry||' sumry, '||
6327 l_fii_struct||' cal
6328 WHERE
6329 sumry.effective_time_id = cal.time_id
6330 AND sumry.effective_period_type_id = cal.period_type_id
6331 AND BITAND(cal.record_type_id, :l_bitand_id) = :l_bitand_id
6332 AND cal.report_date = :l_curr_as_of_date ';
6333 IF l_campaign_id is NULL THEN
6334 l_custom_sql1:=l_custom_sql1||'
6335 AND sumry.parent_source_code_id IS NULL
6336 and sumry.top_node_flag = ''Y''';
6337 else
6338 l_custom_sql1:=l_custom_sql1||'
6339 AND sumry.parent_source_code_id = :l_campaign_id ';
6340 end if;
6341 l_custom_sql1:=l_custom_sql1||'
6342 AND sumry.sales_group_id = :l_sg_id_num '||l_salesrep_where||'
6343 GROUP BY DECODE(sumry.leaf_node_flag,''Y'', -1,1), sumry.source_code_id';
6344
6345
6346 IF l_prodcat_id <> 'All' THEN
6347 l_custom_sql1 := l_custom_sql1||',product_category_id ) ';
6348 ELSE
6349 l_custom_sql1 := l_custom_sql1||' ) ';
6350 END IF;
6351
6352
6353
6354 IF l_prodcat_id <> 'All' THEN
6355 l_custom_sql :=l_inner_select ||' ( select * from ('|| l_custom_sql1 ||' )
6356 where NOT (BIL_MEASURE28 IS NULL AND BIL_MEASURE2 IS NULL AND BIL_MEASURE3 IS NULL AND BIL_MEASURE5 IS NULL
6357 AND BIL_MEASURE7 IS NULL AND BIL_MEASURE9 IS NULL AND BIL_MEASURE11 IS NULL AND BIL_MEASURE13 IS NULL ) )inner'||l_prodcat_from||
6358 ' WHERE '||l_prodcat_where||
6359 ' GROUP BY BIL_MEASURE15, VIEWBYID ';
6360 ELSE
6361 l_custom_sql := l_inner_select ||' ('|| l_custom_sql1 ||' )
6362 where NOT (BIL_MEASURE28 IS NULL AND BIL_MEASURE2 IS NULL AND BIL_MEASURE3 IS NULL AND BIL_MEASURE5 IS NULL
6363 AND BIL_MEASURE7 IS NULL AND BIL_MEASURE9 IS NULL AND BIL_MEASURE11 IS NULL AND BIL_MEASURE13 IS NULL ) '||
6364 ' GROUP BY BIL_MEASURE15, VIEWBYID ';
6365 END IF;
6366
6367 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
6368 l_ind :=1;
6369 l_len:= length(l_custom_sql);
6370
6371 WHILE l_ind <= l_len LOOP
6372 l_str:= substr(l_custom_sql, l_ind, 4000);
6373
6374 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
6375 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
6376 MESSAGE => l_str);
6377
6378 l_ind := l_ind + 4000;
6379
6380 END LOOP;
6381 END IF;
6382
6383
6384
6385 /*** Query column mapping ******************************************************
6386 * Internal Name Grand Total Region Item Name
6387 * BIL_MEASURE1 Leads (Count)
6388 * BIL_MEASURE2 BIL_MEASURE18 New
6389 * BIL_MEASURE3 BIL_MEASURE19 Open
6390 * BIL_MEASURE4 BIL_MEASURE20 Converted to Opportunities
6391 * BIL_MEASURE5 New Opportunities (Amount)
6392 * BIL_MEASURE6 BIL_MEASURE21 New
6393 * BIL_MEASURE7 BIL_MEASURE22 Change
6394 * BIL_MEASURE8 BIL_MEASURE23 Converted from Leads
6395 * BIL_MEASURE9 BIL_MEASURE24 Change
6399 * BIL_MEASURE13 BIL_MEASURE26 Change
6396 * BIL_MEASURE10 Converted
6397 * BIL_MEASURE11 Won, Lost, Open Opportunities (Amount)
6398 * BIL_MEASURE12 BIL_MEASURE25 Won
6400 * BIL_MEASURE14 BIL_MEASURE27 Lost
6401 * BIL_MEASURE15 BIL_MEASURE28 Change
6402 * BIL_MEASURE16 BIL_MEASURE29 no
6403 * BIL_MEASURE17 BIL_MEASURE30 Change
6404 *******************************************************************************/
6405
6406
6407 l_url_str:='pFunctionName=BIL_BI_LDOPCAMP_R&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=VIEW_BY&pParamIds=Y';
6408
6409
6410 l_outer_select :='SELECT * FROM ('||
6411 'SELECT '||
6412 'VIEWBY'||
6413 ',VIEWBYID'||
6414 ',BIL_MEASURE28 BIL_MEASURE2 '||
6415 ',BIL_MEASURE28 BIL_MEASURE31 '||
6416 ',BIL_MEASURE3 BIL_MEASURE3 '||
6417 ',BIL_MEASURE3 BIL_MEASURE32 '||
6418 ',BIL_MEASURE2 BIL_MEASURE4 '||
6419 ',BIL_MEASURE2 BIL_MEASURE33 '||
6420 ',BIL_MEASURE5 BIL_MEASURE6 '||
6421 ',(((BIL_MEASURE5 - BIL_MEASURE6) / ABS(DECODE(BIL_MEASURE6, 0, NULL, BIL_MEASURE6))) * 100) BIL_MEASURE7 '||
6422 ',BIL_MEASURE7 BIL_MEASURE8 '||
6423 ',(((BIL_MEASURE7 - BIL_MEASURE8) / ABS(DECODE(BIL_MEASURE8, 0, NULL, BIL_MEASURE8))) * 100) BIL_MEASURE9 '||
6424 ',BIL_MEASURE9 BIL_MEASURE10 '||
6425 ',BIL_MEASURE9 BIL_MEASURE12 '||
6426 ',BIL_MEASURE9 BIL_MEASURE34 '||
6427 ',(((BIL_MEASURE9 - BIL_MEASURE10) / ABS(DECODE(BIL_MEASURE10, 0, NULL, BIL_MEASURE10))) * 100) BIL_MEASURE13 '||
6428 ',BIL_MEASURE11 BIL_MEASURE14 '||
6429 ',BIL_MEASURE11 BIL_MEASURE35 '||
6430 ',(((BIL_MEASURE11 - BIL_MEASURE12) / ABS(DECODE(BIL_MEASURE12, 0, NULL, BIL_MEASURE12))) * 100) BIL_MEASURE15 '||
6431 ',BIL_MEASURE13 BIL_MEASURE16 '||
6432 ',(((BIL_MEASURE13 - BIL_MEASURE14) / ABS(DECODE(BIL_MEASURE14, 0, NULL, BIL_MEASURE14))) * 100) BIL_MEASURE17 '||
6433 ',SUM(BIL_MEASURE28) OVER() BIL_MEASURE18 '||
6434 ',SUM(BIL_MEASURE3) OVER() BIL_MEASURE19 '||
6435 ',SUM(BIL_MEASURE2) OVER() BIL_MEASURE20 '||
6436 ',SUM(BIL_MEASURE5) OVER() BIL_MEASURE21 '||
6437 ',(((( SUM(BIL_MEASURE5) OVER() ) - ( SUM(BIL_MEASURE6) OVER() )) / '||
6438 'ABS(DECODE(SUM(BIL_MEASURE6) OVER(), 0, NULL, SUM(BIL_MEASURE6) OVER())) )) * 100 BIL_MEASURE22 '||
6439 ',(SUM(BIL_MEASURE7) OVER()) BIL_MEASURE23 '||
6440 ',(((( SUM(BIL_MEASURE7) OVER() ) - ( SUM(BIL_MEASURE8) OVER() )) / '||
6441 'ABS(DECODE(SUM(BIL_MEASURE8) OVER(), 0, NULL, SUM(BIL_MEASURE8) OVER())) )) * 100 BIL_MEASURE24 '||
6442 ',(SUM(BIL_MEASURE9) OVER()) BIL_MEASURE25 '||
6443 ',(((( SUM(BIL_MEASURE9) OVER() ) - ( SUM(BIL_MEASURE10) OVER() )) / '||
6444 'ABS(DECODE(SUM(BIL_MEASURE10) OVER(), 0, NULL, SUM(BIL_MEASURE10) OVER())) )) * 100 BIL_MEASURE26 '||
6445 ',(SUM(BIL_MEASURE11) OVER()) BIL_MEASURE27 '||
6446 ',(((( SUM(BIL_MEASURE11) OVER() ) - ( SUM(BIL_MEASURE12) OVER() )) / '||
6447 'ABS(DECODE(SUM(BIL_MEASURE12) OVER(), 0, NULL, SUM(BIL_MEASURE12) OVER())) )) * 100 BIL_MEASURE28 '||
6448 ',(SUM(BIL_MEASURE13) OVER()) BIL_MEASURE29 '||
6449 ',(((( SUM(BIL_MEASURE13) OVER() ) - ( SUM(BIL_MEASURE14) OVER() )) / '||
6450 'ABS(DECODE(SUM(BIL_MEASURE14) OVER(), 0, NULL, SUM(BIL_MEASURE14) OVER())) )) * 100 BIL_MEASURE30 '||
6451 ', (CASE WHEN VIEWBYID = -1 THEN NULL WHEN BIL_MEASURE15 = -1 THEN NULL '||
6452 'ELSE '''||l_url_str||''' END) BIL_URL1 ' ;
6453
6454
6455 /*
6456 There are 2 possibilities for the URL to be NULL(suppressed)
6457 1.When unassigned campaign = viewby id is null
6458 2.when leaflevel = BIL_MEASURE15 is 1
6459 */
6460
6461 l_inner_select1 :=
6462 ',VIEWBYID'||
6463 ',SUM(BIL_MEASURE28) BIL_MEASURE28'||
6464 ',SUM(BIL_MEASURE2) BIL_MEASURE2'||
6465 ',SUM(BIL_MEASURE3) BIL_MEASURE3'||
6466 ',SUM(BIL_MEASURE5) BIL_MEASURE5'||
6467 ',SUM(BIL_MEASURE6) BIL_MEASURE6'||
6468 ',SUM(BIL_MEASURE7) BIL_MEASURE7'||
6469 ',SUM(BIL_MEASURE8) BIL_MEASURE8'||
6470 ',SUM(BIL_MEASURE9) BIL_MEASURE9'||
6471 ',SUM(BIL_MEASURE10) BIL_MEASURE10'||
6472 ',SUM(BIL_MEASURE11) BIL_MEASURE11'||
6473 ',SUM(BIL_MEASURE12) BIL_MEASURE12'||
6474 ',SUM(BIL_MEASURE13) BIL_MEASURE13'||
6475 ',SUM(BIL_MEASURE14) BIL_MEASURE14'||
6476 ',BIL_MEASURE15'||
6477 ' FROM ('||l_custom_sql||') mv, ';
6478
6479
6480 /*
6481 Get the look up value for UNASSIGNED to be shown in the UI.
6482 */
6483 SELECT MEANING
6484 INTO
6485 l_null_camp
6486 FROM
6487 FND_LOOKUP_VALUES
6488 WHERE
6489 LOOKUP_TYPE = 'BIL_BI_LOOKUPS'
6490 AND LOOKUP_CODE = 'UNASSIGN'
6491 AND LANGUAGE = USERENV('LANG');
6492
6493
6494 l_outer_query1 :=
6495 ' ( '||
6496 ' SELECT '||
6497 ' camp.name VIEWBY, '
6498 ||' decode(mv.VIEWBYID, -1,2,1) SORTORDER '
6499 || l_inner_select1 ||
6500 ' bim_i_obj_name_mv camp '||
6501 ' where '||
6502 ' mv.VIEWBYID = camp.source_code_id '||
6503 ' and camp.language= USERENV(''LANG'')'||
6504 ' group by '||
6505 ' mv.VIEWBYID, '||
6506 ' camp.name, '||
6507 ' decode(mv.VIEWBYID, -1,2,1),'
6508 ||'BIL_MEASURE15'
6509 ||') '||
6510 ' GROUP BY '||
6511 'VIEWBY,VIEWBYID,BIL_MEASURE15,SORTORDER ';
6512
6513 l_inner_select2 :=
6514 ' SELECT '||
6515 'VIEWBY'||
6516 ',VIEWBYID'||
6517 ',SUM(BIL_MEASURE28) BIL_MEASURE28'||
6518 ',SUM(BIL_MEASURE2) BIL_MEASURE2'||
6519 ',SUM(BIL_MEASURE3) BIL_MEASURE3'||
6520 ',SUM(BIL_MEASURE5) BIL_MEASURE5'||
6521 ',SUM(BIL_MEASURE6) BIL_MEASURE6'||
6522 ',SUM(BIL_MEASURE7) BIL_MEASURE7'||
6523 ',SUM(BIL_MEASURE8) BIL_MEASURE8'||
6524 ',SUM(BIL_MEASURE9) BIL_MEASURE9'||
6525 ',SUM(BIL_MEASURE10) BIL_MEASURE10'||
6526 ',SUM(BIL_MEASURE11) BIL_MEASURE11'||
6530 ',SORTORDER'||
6527 ',SUM(BIL_MEASURE12) BIL_MEASURE12'||
6528 ',SUM(BIL_MEASURE13) BIL_MEASURE13'||
6529 ',SUM(BIL_MEASURE14) BIL_MEASURE14'||
6531 ',BIL_MEASURE15'||
6532 ' FROM '||l_outer_query1;
6533
6534
6535 l_null_rem_clause := ' WHERE NOT (BIL_MEASURE2 IS NULL AND BIL_MEASURE31 IS NULL AND BIL_MEASURE3 IS NULL '||
6536 ' AND BIL_MEASURE32 IS NULL AND BIL_MEASURE4 IS NULL AND BIL_MEASURE33 IS NULL AND BIL_MEASURE6 IS NULL '||
6537 ' AND BIL_MEASURE8 IS NULL AND BIL_MEASURE10 IS NULL AND BIL_MEASURE12 IS NULL AND BIL_MEASURE34 IS NULL '||
6538 ' AND BIL_MEASURE14 IS NULL AND BIL_MEASURE35 IS NULL AND BIL_MEASURE15 IS NULL AND BIL_MEASURE16 IS NULL)';
6539
6540
6541 x_custom_sql:=
6542 l_outer_select ||' FROM ( '||l_inner_select2 ||' ) ORDER BY SORTORDER,VIEWBY) ';
6543
6544
6545 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
6546 l_ind :=1;
6547 l_len:= length(x_custom_sql);
6548
6549 WHILE l_ind <= l_len LOOP
6550 l_str:= substr(x_custom_sql, l_ind, 4000);
6551
6552 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
6553 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
6554 MESSAGE => l_str);
6555
6556 l_ind := l_ind + 4000;
6557
6558 END LOOP;
6559 END IF;
6560
6561
6562
6563 /* Bind parameters */
6564 l_bind_ctr:=1;
6565 l_custom_rec.attribute_name := BIS_PMV_PARAMETERS_PUB.VIEW_BY_VALUE;
6566 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.VIEW_BY_TYPE;
6567 l_custom_rec.attribute_value := l_viewby;
6568 x_custom_attr.Extend();
6569 x_custom_attr(l_bind_ctr):=l_custom_rec;
6570 l_bind_ctr:=l_bind_ctr+1;
6571
6572
6573 l_custom_rec.attribute_name := ':l_null_camp';
6574 l_custom_rec.attribute_value := l_null_camp;
6575 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
6576 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
6577 x_custom_attr.Extend();
6578 x_custom_attr(l_bind_ctr) := l_custom_rec;
6579 l_bind_ctr := l_bind_ctr+1;
6580
6581 l_custom_rec.attribute_name :=':l_sg_id_num';
6582 l_custom_rec.attribute_value := l_sg_id_num;
6583 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
6584 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
6585 x_custom_attr.Extend();
6586 x_custom_attr(l_bind_ctr) := l_custom_rec;
6587 l_bind_ctr:=l_bind_ctr+1;
6588
6589 IF(l_resource_id IS NOT NULL) THEN
6590 l_custom_rec.attribute_name :=':l_resource_id';
6591 l_custom_rec.attribute_value := l_resource_id;
6592 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
6593 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
6594 x_custom_attr.Extend();
6595 x_custom_attr(l_bind_ctr) := l_custom_rec;
6596 l_bind_ctr:=l_bind_ctr+1;
6597 END IF;
6598
6599 l_custom_rec.attribute_name := ':l_curr_as_of_date';
6600 l_custom_rec.attribute_value := TO_CHAR(l_curr_as_of_date,'DD/MM/YYYY');
6601 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.DATE_BIND;
6602 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
6603 x_custom_attr.Extend();
6604 x_custom_attr(l_bind_ctr) := l_custom_rec;
6605
6606 l_bind_ctr:=l_bind_ctr+1;
6607
6608
6609 l_custom_rec.attribute_name := ':l_prev_date';
6610 l_custom_rec.attribute_value := TO_CHAR(l_prev_date,'DD/MM/YYYY');
6611 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.DATE_BIND;
6612 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
6613 x_custom_attr.Extend();
6614 x_custom_attr(l_bind_ctr) := l_custom_rec;
6615
6616 l_bind_ctr:=l_bind_ctr+1;
6617
6618 l_custom_rec.attribute_name := ':l_bitand_id';
6619 l_custom_rec.attribute_value := l_bitand_id;
6620 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
6621 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
6622 x_custom_attr.Extend();
6623 x_custom_attr(l_bind_ctr) := l_custom_rec;
6624
6625 l_bind_ctr := l_bind_ctr+1;
6626
6627 l_custom_rec.attribute_name := ':l_record_type_id';
6628 l_custom_rec.attribute_value := l_record_type_id;
6629 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
6630 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
6631 x_custom_attr.Extend();
6632 x_custom_attr(l_bind_ctr) := l_custom_rec;
6633
6634 l_bind_ctr := l_bind_ctr+1;
6635
6636 l_custom_rec.attribute_name :=':l_yes';
6637 l_custom_rec.attribute_value :=l_yes;
6638 l_custom_rec.attribute_data_type:=BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
6639 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
6640 x_custom_attr.Extend();
6641 x_custom_attr(l_bind_ctr):=l_custom_rec;
6642 l_bind_ctr:=l_bind_ctr+1;
6643
6644 IF(l_prodcat_id <> 'All') THEN
6645 l_custom_rec.attribute_name :=':l_prodcat_id';
6646 l_custom_rec.attribute_value :=l_prodcat_id;
6647 l_custom_rec.attribute_data_type :=BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
6648 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
6649 x_custom_attr.Extend();
6650 x_custom_attr(l_bind_ctr):=l_custom_rec;
6651 l_bind_ctr:=l_bind_ctr+1;
6655 l_custom_rec.attribute_value := l_func_area_id;
6652 END IF;
6653
6654 l_custom_rec.attribute_name :=':l_func_area_id';
6656 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
6657 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
6658 x_custom_attr.Extend();
6659 x_custom_attr(l_bind_ctr) := l_custom_rec;
6660 l_bind_ctr:=l_bind_ctr+1;
6661
6662 l_custom_rec.attribute_name :=':l_category_set';
6663 l_custom_rec.attribute_value :=l_category_set;
6664 l_custom_rec.attribute_data_type :=BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
6665 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
6666 x_custom_attr.Extend();
6667 x_custom_attr(l_bind_ctr):=l_custom_rec;
6668 l_bind_ctr:=l_bind_ctr+1;
6669
6670
6671 l_custom_rec.attribute_name :=':l_campaign_id';
6672 l_custom_rec.attribute_value :=l_campaign_id;
6673 l_custom_rec.attribute_data_type :=BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
6674 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
6675 x_custom_attr.Extend();
6676 x_custom_attr(l_bind_ctr):=l_custom_rec;
6677 l_bind_ctr:=l_bind_ctr+1;
6678
6679
6680
6681 ELSE --no valid parameters
6682 BIL_BI_UTIL_PKG.get_default_query
6683 (
6684 p_regionname => l_region_id
6685 ,x_sqlstr => x_custom_sql
6686 );
6687 END IF;
6688
6689 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
6690
6691 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_PROCEDURE,
6692 MODULE => g_pkg || l_proc || 'End',
6693 MESSAGE => 'End of Procedure '||l_proc);
6694
6695 END IF;
6696
6697
6698 EXCEPTION
6699 WHEN OTHERS THEN
6700
6701 IF FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
6702 fnd_message.set_name('FND','SQL_PLSQL_ERROR'); -- Seeded Message
6703 fnd_message.set_token('Error is : ' ,SQLCODE);
6704 fnd_message.set_token('Reason is : ', SQLERRM);
6705
6706 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_UNEXPECTED,
6707 MODULE => g_pkg || l_proc || 'proc_error',
6708 MESSAGE => fnd_message.get );
6709
6710 END IF;
6711 BIL_BI_UTIL_PKG.get_default_query(p_regionname => l_region_id
6712 ,x_sqlstr => x_custom_sql);
6713
6714 RAISE;
6715
6716 END BIL_LDOPP_CAMP;
6717
6718
6719
6720
6721 /*******************************************************************************
6722 * Name : Procedure BIL_BI_SLS_PERF - Top Sales Performers Report
6723 * Author : Hrishikesh Pandey
6724 * Date : Aug 10th, 2005
6725 *
6726 * Copyright (c) 2004 Oracle Corporation
6727 *
6728 * Parameters :
6729 * p_page_parameter_tbl PL/SQL table containing dimension parameters
6730 * x_custom_sql string containing sql query
6731 * x_custom_attr PL/SQL table containing our bind vars
6732 ******************************************************************************/
6733
6734 PROCEDURE BIL_BI_SLS_PERF(
6735 p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL
6736 ,x_custom_sql OUT NOCOPY VARCHAR2
6737 ,x_custom_attr OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
6738 IS
6739 l_custom_rec BIS_QUERY_ATTRIBUTES;
6740 l_currency VARCHAR2(100);
6741 l_parameter_valid BOOLEAN;
6742 l_salesgroup_id VARCHAR2(50);
6743 l_resource_id VARCHAR2(50);
6744 l_region_id VARCHAR2(3000);
6745 l_asof_date DATE;
6746 l_prev_date DATE;
6747 l_page_period_type VARCHAR2(50);
6748 l_period_type NUMBER;
6749 l_per_type VARCHAR2(200);
6750 l_bind_ctr NUMBER;
6751 l_select VARCHAR2(4000);
6752 l_select1 VARCHAR2(4000);
6753 l_select3 VARCHAR2(4000);
6754 l_select2 VARCHAR2(4000);
6755 l_viewby VARCHAR2(4000);
6756 l_comp_type VARCHAR2(4000);
6757 l_err VARCHAR2(4000);
6758 l_err_msg VARCHAR2(4000);
6759 l_where_clause VARCHAR2(4000);
6760 l_status_report VARCHAR2(50) ;
6761 l_rank_pre VARCHAR2(200) ;
6762 l_status_rank VARCHAR2(50) ;
6763 l_proc VARCHAR2(100);
6764 l_curr_suffix VARCHAR2(10);
6765 l_booked_suffix VARCHAR2(10);
6766 l_sql_error_desc VARCHAR2(10000);
6767 l_nulls VARCHAR2(200);
6768 l_rank VARCHAR2(200);
6769 l_rank_where VARCHAR2(200);
6770 l_order_rank VARCHAR2(3000);
6771 l_orderBy VARCHAR2(4000);
6772 l_order VARCHAR2(4000);
6773 l_comp VARCHAR2(200);
6774 l_sortby VARCHAR2(4000);
6775 l_rep_suffix VARCHAR2(2000);
6776 l_rank_select VARCHAR2(2000);
6777 l_group_by VARCHAR2(2000);
6778 l_where VARCHAR2(2000);
6779 l_drill_link VARCHAR2(4000);
6780 l_drill_link1 VARCHAR2(4000);
6781 l_drill_link2 VARCHAR2(4000);
6782 l_drill_link3 VARCHAR2(4000);
6783 l_umarker VARCHAR2(2000);
6787 l_len NUMBER;
6784 l_outer_where_clause VARCHAR2(4000);
6785 l_ind NUMBER;
6786 l_str VARCHAR2(4000);
6788
6789 l_prev_page_time_id NUMBER;
6790 l_curr_page_time_id NUMBER;
6791 l_fst_crdt_type VARCHAR2(50);
6792 l_bitand_id VARCHAR2(50);
6793 l_calendar_id VARCHAR2(50);
6794 l_bis_sysdate DATE;
6795 l_fii_struct VARCHAR2(50);
6796 l_record_type_id NUMBER;
6797 l_rep_select1 varchar2(4000);
6798 l_rep_select2 varchar2(4000);
6799 l_rep_select3 varchar2(4000);
6800 l_rep_where1 varchar2(4000);
6801 l_rep_where2 varchar2(4000);
6802
6803 l_prev_amt VARCHAR2(1000);
6804 l_column_type VARCHAR2(1000);
6805 l_snapshot_date DATE;
6806 l_open_mv_new VARCHAR2(1000);
6807 l_open_mv_new1 VARCHAR2(1000);
6808 l_prev_snap_date DATE;
6809 l_amt_where varchar2(4000);
6810
6811 BEGIN
6812 /* Initializing variables*/
6813 x_custom_attr := BIS_QUERY_ATTRIBUTES_TBL();
6814 l_custom_rec := BIS_PMV_PARAMETERS_PUB.INITIALIZE_QUERY_TYPE;
6815 l_bind_ctr := 1;
6816 l_parameter_valid := TRUE;
6817 g_pkg := 'bil.patch.115.sql.BIL_BI_SALES_MGMT_RPTS_PKG.';
6818 l_region_id := 'BIL_BI_SLS_PERF';
6819 l_proc := 'BIL_BI_SLS_PERF.';
6820 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
6821 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_PROCEDURE,
6822 MODULE => g_pkg || l_proc || 'begin',
6823 MESSAGE => 'Start of Procedure '|| l_proc);
6824 END IF;
6825 /* Get the page parameters */
6826 FOR i IN 1..p_page_parameter_tbl.count
6827 LOOP
6828 IF p_page_parameter_tbl(i).parameter_name = 'CURRENCY+FII_CURRENCIES' THEN
6829 l_currency := p_page_parameter_tbl(i).parameter_id;
6830 IF l_currency IS NULL THEN
6831 l_parameter_valid := FALSE;
6832 l_err_msg := 'Null currency parameter';
6833 l_err := 'l_currency';
6834 END IF;
6835 ELSIF p_page_parameter_tbl(i).parameter_name = 'ORGANIZATION+JTF_ORG_SALES_GROUP' THEN
6836 l_salesgroup_id := p_page_parameter_tbl(i).parameter_id;
6837 BIL_BI_UTIL_PKG.PARSE_SALES_GROUP_ID
6838 (
6839 p_salesgroup_id =>l_salesgroup_id,
6840 x_resource_id =>l_resource_id
6841 );
6842 IF l_salesgroup_id IS NULL THEN
6843 l_parameter_valid := FALSE;
6844 l_err_msg := 'Null sales group parameter(s)';
6845 l_err := l_err || ' ,SALES GROUP';
6846 END IF;
6847 ELSIF p_page_parameter_tbl(i).parameter_name = 'VIEW_BY' THEN
6848 l_viewby := p_page_parameter_tbl(i).parameter_value;
6849
6850 ELSIF p_page_parameter_tbl(i).parameter_name='BIS_CURRENT_ASOF_DATE' THEN
6851 l_asof_date := p_page_parameter_tbl(i).PERIOD_DATE;
6852
6853 ELSIF p_page_parameter_tbl(i).parameter_name='BIS_P_ASOF_DATE' THEN
6854 l_prev_date := p_page_parameter_tbl(i).PERIOD_DATE;
6855
6856
6857 ELSIF p_page_parameter_tbl(i).parameter_name = 'TIME_COMPARISON_TYPE' THEN
6858 l_comp_type := p_page_parameter_tbl(i).parameter_id;
6859 IF l_comp_type IS NULL THEN
6860 l_parameter_valid := FALSE;
6861 l_err_msg := 'Null period type parameter';
6862 l_err := l_err || ' ,l_comp_type';
6863 END IF;
6864
6865 ELSIF p_page_parameter_tbl(i).parameter_name = 'TIME+FII_TIME_WEEK_PFROM' THEN
6866 l_prev_page_time_id := p_page_parameter_tbl(i).parameter_id;
6867 ELSIF p_page_parameter_tbl(i).parameter_name = 'TIME+FII_TIME_ENT_PERIOD_PFROM' THEN
6868 l_prev_page_time_id := p_page_parameter_tbl(i).parameter_id;
6869 ELSIF p_page_parameter_tbl(i).parameter_name = 'TIME+FII_TIME_ENT_QTR_PFROM' THEN
6870 l_prev_page_time_id := p_page_parameter_tbl(i).parameter_id;
6871 ELSIF p_page_parameter_tbl(i).parameter_name = 'TIME+FII_TIME_ENT_YEAR_PFROM' THEN
6872 l_prev_page_time_id := p_page_parameter_tbl(i).parameter_value;
6873
6874 ELSIF p_page_parameter_tbl(i).parameter_name = 'TIME+FII_TIME_WEEK_FROM' THEN
6875 l_curr_page_time_id := p_page_parameter_tbl(i).parameter_id;
6876 ELSIF p_page_parameter_tbl(i).parameter_name = 'TIME+FII_TIME_ENT_PERIOD_FROM' THEN
6877 l_curr_page_time_id := p_page_parameter_tbl(i).parameter_id;
6878 ELSIF p_page_parameter_tbl(i).parameter_name = 'TIME+FII_TIME_ENT_QTR_FROM' THEN
6879 l_curr_page_time_id := p_page_parameter_tbl(i).parameter_id;
6880 ELSIF p_page_parameter_tbl(i).parameter_name = 'TIME+FII_TIME_ENT_YEAR_FROM' THEN
6881 l_curr_page_time_id := p_page_parameter_tbl(i).parameter_value;
6882
6883 ELSIF p_page_parameter_tbl(i).parameter_name = 'PERIOD_TYPE' THEN
6884 l_page_period_type := p_page_parameter_tbl(i).parameter_value;
6885 IF l_page_period_type IS NULL THEN
6886 l_parameter_valid := FALSE;
6887 l_err_msg := 'Null period type parameter';
6888 l_err := l_err || ' ,l_page_period_type';
6889 END IF;
6890 ELSIF ( p_page_parameter_tbl(i).parameter_name = 'ORDERBY' )
6891 THEN
6892 l_order := TRIM(p_page_parameter_tbl(i).parameter_value);
6893 l_orderBy := TRIM(SUBSTR(l_order,0,INSTR(l_order,' ')));
6894 l_sortBy := SUBSTR(l_order,INSTR(l_order,' '));
6895 ELSIF p_page_parameter_tbl(i).parameter_name = 'DIMENSION+DIMENSION11' THEN
6896 IF p_page_parameter_tbl(i).parameter_id = '1' THEN
6900 ELSE
6897 l_status_report := 'Top';
6898 ELSIF p_page_parameter_tbl(i).parameter_id = '2' THEN
6899 l_status_report := 'Bottom';
6901 l_status_report := 'Top';
6902 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
6903 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
6904 MODULE => g_pkg || l_proc ,
6905 MESSAGE => 'Defaulted thru code to => '||l_status_report);
6906 END IF;
6907 END IF;
6908 ELSIF p_page_parameter_tbl(i).parameter_name = 'DIMENSION+DIMENSION12' THEN
6909 IF p_page_parameter_tbl(i).parameter_id = '1' THEN
6910 l_status_rank := 'Booked';
6911 ELSIF p_page_parameter_tbl(i).parameter_id = '2' THEN
6912 l_status_rank := 'Won';
6913 ELSIF p_page_parameter_tbl(i).parameter_id = '3' THEN
6914 l_status_rank := 'Win/Loss Ratio';
6915 ELSE
6916 l_status_rank := 'Won';
6917 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
6918 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
6919 MODULE => g_pkg || l_proc ,
6920 MESSAGE => 'Defaulted thru code to => '||l_status_report);
6921 END IF;
6922 END IF;
6923
6924
6925
6926 END IF;
6927 END LOOP;
6928
6929
6930 /* Check for Currency whether it is Primary or Secondary */
6931 IF INSTR(l_currency,'FII_GLOBAL1') > 0 THEN
6932 l_curr_suffix := '';
6933 l_booked_suffix := '';
6934 ELSE
6935 l_curr_suffix := '_S';
6936 l_booked_suffix := '1';
6937 END IF;
6938
6939
6940 BIL_BI_UTIL_PKG.GET_FORECAST_PROFILES( x_fstcrdttype => l_fst_crdt_type );
6941
6942 BIL_BI_UTIL_PKG.GET_GLOBAL_CONTS(x_bitand_id =>l_bitand_id,
6943 x_calendar_id =>l_calendar_id,
6944 x_curr_date =>l_bis_sysdate,
6945 x_fii_struct =>l_fii_struct);
6946
6947
6948 l_prev_amt := BIL_BI_UTIL_PKG.GET_PIPE_COL_NAMES(
6949 p_period_type => l_page_period_type ,
6950 p_compare_to => l_comp_type,
6951 p_column_type => 'P',
6952 p_curr_suffix => l_curr_suffix
6953 );
6954
6955 BIL_BI_UTIL_PKG.GET_PIPE_MV(
6956 p_asof_date => l_asof_date ,
6957 p_period_type => l_page_period_type ,
6958 p_compare_to => l_comp_type ,
6959 p_prev_date => l_prev_date,
6960 p_page_parameter_tbl => p_page_parameter_tbl,
6961 x_pipe_mv => l_open_mv_new ,
6962 x_snapshot_date => l_snapshot_date ,
6963 x_prev_snap_date => l_prev_snap_date
6964 );
6965
6966 IF(l_status_report = 'Top') THEN
6967 l_nulls := ' DESC NULLS LAST ' ;
6968 l_rank := '';
6969 l_rank_pre := 'TOP_';
6970 l_rank_where := ' WHERE ranking < 26 ';
6971 l_order_rank := ' ORDER BY BIL_MEASURE1, BIL_MEASURE3 ';
6972 ELSE
6973 l_nulls := ' ASC NULLS LAST ' ;
6974 l_rank := ' DESC ';
6975 l_rank_pre := 'BOTTOM_';
6976 l_rank_where := ' WHERE ranking > last_rank - 25 ';
6977 l_order_rank := ' ORDER BY BIL_MEASURE1 DESC,BIL_MEASURE3 ';
6978 END IF;
6979 /* Check for column based on that sorting is to be done */
6980 IF(l_orderby is not null ) THEN
6981 l_order_rank := ' ORDER BY '||l_orderby||' '|| l_sortby||' , BIL_MEASURE3 ';
6982 END IF;
6983
6984 /* Check for Period Type selected */
6985 IF l_page_period_type = 'FII_TIME_WEEK' THEN
6986 l_per_type := 'WEEK';
6987 l_record_type_id := 32;
6988 l_period_type := 16;
6989 ELSIF l_page_period_type ='FII_TIME_ENT_PERIOD' THEN
6990 l_per_type := 'PERIOD';
6991 l_record_type_id := 64;
6992 l_period_type := 32;
6993 ELSIF l_page_period_type = 'FII_TIME_ENT_QTR' THEN
6994 l_per_type := 'QTR';
6995 l_record_type_id := 128;
6996 l_period_type := 64;
6997 ELSIF l_page_period_type = 'FII_TIME_ENT_YEAR' THEN
6998 l_per_type := 'YEAR';
6999 l_record_type_id := 256;
7000 l_period_type := 128;
7001 END IF ;
7002 /*
7003 CASE l_period_type
7004 WHEN 'FII_TIME_WEEK' THEN l_per_type := 'WEEK';
7005 WHEN 'FII_TIME_ENT_PERIOD' THEN l_per_type := 'PERIOD';
7006 WHEN 'FII_TIME_ENT_QTR' THEN l_per_type := 'QTR';
7007 WHEN 'FII_TIME_ENT_YEAR' THEN l_per_type := 'YEAR';
7008 END CASE;
7009 */
7010
7011
7012 IF UPPER(l_status_rank) = 'BOOKED' THEN
7013 l_rep_suffix := 'BOOKED_';
7014 l_umarker := 'BOOKED_RANK';
7015 l_amt_where := ' booked_amt_'||l_per_type||''||l_curr_suffix||' ';
7016 ELSIF UPPER(l_status_rank) = 'WON' THEN
7017 l_rep_suffix := 'WON_';
7018 l_umarker := 'WON_RANK';
7019 l_amt_where := ' won_amt_'||l_per_type||''||l_curr_suffix||' ';
7020 ELSIF UPPER(l_status_rank) = 'WIN/LOSS RATIO' THEN
7021 l_rep_suffix := 'WINLOSS_';
7022 l_umarker := 'WON_RANK';
7023 l_amt_where := ' winloss_ratio_'||l_per_type||''||l_curr_suffix||' ';
7024 END IF;
7025 /*
7026 CASE UPPER(l_status_rank)
7027 WHEN 'NET BOOKED' THEN
7028 l_rep_suffix := 'BOOKED_';
7029 l_umarker := 'BOOKED_RANK';
7033 WHEN 'WIN/LOSS RATIO' THEN
7030 WHEN 'WON' THEN
7031 l_rep_suffix := 'WON_';
7032 l_umarker := 'WON_RANK';
7034 l_rep_suffix := 'WINLOSS_';
7035 l_umarker := 'WON_RANK';
7036 END CASE;
7037 */
7038
7039
7040
7041 IF UPPER(l_status_report) = 'TOP'
7042 THEN l_rank_select := ' '||l_rank_pre||''||l_rep_suffix||''||l_per_type||'_RANK ' ;
7043 ELSIF UPPER(l_status_report) = 'BOTTOM'
7044 THEN l_rank_select := ' ('||l_rep_suffix||''||l_per_type||'_LAST_RANK + 1 ) -
7045 '||l_rank_pre||''||l_rep_suffix||''||l_per_type||'_RANK ';
7046 END IF;
7047 /*
7048 CASE UPPER(l_status_report)
7049 WHEN 'TOP' THEN l_rank_select := ' '||l_rank_pre||''||l_rep_suffix||''||l_per_type||'_RANK ' ;
7050 WHEN 'BOTTOM'
7051 THEN l_rank_select := ' ('||l_rep_suffix||''||l_per_type||'_LAST_RANK + 1 ) -
7052 '||l_rank_pre||''||l_rep_suffix||''||l_per_type||'_RANK ';
7053 END CASE;
7054 */
7055 IF UPPER(l_status_report) = 'TOP' THEN
7056 l_group_by := ''||l_rank_pre||''||l_rep_suffix||''||l_per_type||'_RANK ';
7057 l_where := ''||l_rank_pre||''||l_rep_suffix||''||l_per_type||'_RANK ';
7058 ELSIF UPPER(l_status_report) = 'BOTTOM' THEN
7059 l_where := ''||l_rank_pre||''||l_rep_suffix||''||l_per_type||'_RANK ';
7060 l_group_by := ''||l_rank_pre||''||l_rep_suffix||''||l_per_type||'_RANK,
7061 '||l_rep_suffix||''||l_per_type||'_LAST_RANK ';
7062 END IF;
7063
7064
7065
7066 /*
7067 CASE UPPER(l_status_report)
7068 WHEN 'TOP' THEN l_group_by := ''||l_rank_pre||''||l_rep_suffix||''||l_per_type||'_RANK ';
7069 l_where := ''||l_rank_pre||''||l_rep_suffix||''||l_per_type||'_RANK ';
7070 WHEN 'BOTTOM'
7071 THEN l_where := ''||l_rank_pre||''||l_rep_suffix||''||l_per_type||'_RANK ';
7072 l_group_by := ''||l_rank_pre||''||l_rep_suffix||''||l_per_type||'_RANK,
7073 '||l_rep_suffix||''||l_per_type||'_LAST_RANK ';
7074 END CASE;
7075 */
7076 IF UPPER(l_status_rank) = 'BOOKED' THEN
7077 l_umarker := 'BOOKED_RANK';
7078 ELSE
7079 l_umarker := 'WON_RANK';
7080 END IF ;
7081 IF l_resource_id IS NULL THEN
7082 l_where_clause := ' WHERE
7083 parent_sales_group_id = :l_salesgroup_id
7084 AND '||l_where||' < 26
7085 and '|| l_amt_where || ' is NOT NULL
7086 AND UMARKER = '''|| L_UMARKER ||'''
7087 GROUP BY
7088 salesrep_id,
7089 sales_group_id,
7090 '||l_group_by||' ';
7091 l_outer_where_clause := 'where bil_measure1 > 0';
7092 ELSE
7093 l_where_clause := ' WHERE
7094 parent_sales_group_id = :l_salesgroup_id
7095 and parent_sales_group_id = sales_group_id
7096 and salesrep_id = :l_resource_id
7097 AND UMARKER = '''|| L_UMARKER ||'''
7098 GROUP BY
7099 salesrep_id,
7100 sales_group_id ';
7101 l_rank_select := 'NULL';
7102 l_order_rank := NULL;
7103 l_outer_where_clause := NULL;
7104 END IF;
7105 IF l_comp_type = 'YEARLY'
7106 THEN l_comp := 'PREV_YR_';
7107 ELSIF l_comp_type = 'SEQUENTIAL'
7108 THEN l_comp := 'PREV_PER_';
7109 END IF;
7110
7111
7112 /*
7113 CASE l_comp_type
7114 WHEN 'YEARLY' THEN l_comp := 'PREV_YR_';
7115 WHEN 'SEQUENTIAL' THEN l_comp := 'PREV_PER_';
7116 END CASE;
7117 */
7118
7119
7120 /* Drill Links to Opportunity Line Detail report */
7121 l_drill_link3 := '&ORGANIZATION';
7122 l_drill_link2 := 'JTF_ORG_SALES_GROUP=';
7123 l_drill_link1 := '&BIL_DIMENSION2=';
7124 l_drill_link := 'pFunctionName=BIL_BI_OPPTY_LINE_DETAIL_R&pParamIds=Y&VIEW_BY_NAME=VIEW_BY_ID
7125 &BIL_DIMENSION3=Y&BIL_DIMENSION10=';
7126 l_sql_error_desc :=
7127 'l_status_rank => '|| l_status_rank ||', ' ||
7128 'l_viewby => '|| l_viewby ||', ' ||
7129 'l_status_report => '|| l_status_report ||', ' ||
7130 'l_page_period_type => '|| l_page_period_type ||', ' ||
7131 'l_currency => '|| l_currency ||', ' ||
7132 'l_salesgroup_id => '|| l_salesgroup_id ||', ' ||
7133 'l_resource_id => '|| l_resource_id ||', ' ||
7134 'l_order => '|| l_order ||', ' ||
7135 'l_orderBy => '|| l_orderBy ||', ' ||
7136 'l_sortBy => '|| l_sortBy ||', ' ||
7137 'l_comp_type => '|| l_comp_type ;
7138 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
7139 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
7140 MODULE => g_pkg || l_proc ,
7141 MESSAGE => 'Parameters => '||l_sql_error_desc);
7142 END IF;
7143 /*** Query column mapping ******************************************************
7144 * Internal Name Region Item Name
7145 * BIL_MEASURE1 Rank
7146 * BIL_MEASURE2 Job Title
7147 * BIL_MEASURE3 Name
7148 * BIL_MEASURE4 Sales Group
7149 * BIL_MEASURE6 Forecast
7150 * BIL_MEASURE7 Prior Forecast
7151 * BIL_MEASURE8 Change
7152 * BIL_MEASURE9 Pipeline
7153 * BIL_MEASURE10 Prior Pipeline
7154 * BIL_MEASURE11 Change
7155 * BIL_MEASURE12 Won
7156 * BIL_MEASURE13 Prior Won
7157 * BIL_MEASURE14 Change
7158 * BIL_MEASURE15 Win/Loss Ratio
7159 * BIL_MEASURE16 Prior Win/Loss Ratio
7160 * BIL_MEASURE17 Change
7161 * BIL_MEASURE18 Booked
7162 * BIL_MEASURE19 Prior Booked
7163 * BIL_MEASURE20 Change
7164 * BIL_MEASURE21 GRAND TOTAL(NetBooked)
7168 * BIL_URL1 Link to Oppty Line Detail Report for Pipeline measure
7165 * BIL_MEASURE22 GRAND TOTAL(Forecast)
7166 * BIL_MEASURE23 GRAND TOTAL(Pipeline)
7167 * BIL_MEASURE24 GRAND TOTAL(Won)
7169 * BIL_URL2 Link to Oppty Line Detail Report for Won measure
7170 *******************************************************************************/
7171 /************************************
7172 Front END Query
7173 *************************************/
7174 l_select1 := 'SELECT
7175 BIL_MEASURE1,
7176 (SELECT source_job_title FROM Jtf_rs_resource_extns WHERE resource_id = BIL_MEASURE3) BIL_MEASURE2,
7177 (SELECT rstl.resource_name FROM jtf_rs_resource_extns_tl rstl
7178 WHERE rstl.resource_id=BIL_MEASURE3 AND USERENV(''LANG'')=rstl.LANGUAGE) BIL_MEASURE3,
7179 (SELECT group_name FROM jtf_rs_groups_tl grtl
7180 WHERE BIL_MEASURE4=grtl.group_id AND USERENV(''LANG'')=grtl.LANGUAGE) BIL_MEASURE4,
7181 BIL_MEASURE6,
7182 BIL_MEASURE7,
7183 BIL_MEASURE8,
7184 BIL_MEASURE9,
7185 BIL_MEASURE10,
7186 BIL_MEASURE11,
7187 BIL_MEASURE12,
7188 BIL_MEASURE13,
7189 BIL_MEASURE14,
7190 BIL_MEASURE15,
7191 BIL_MEASURE16,
7192 BIL_MEASURE17,
7193 BIL_MEASURE18,
7194 BIL_MEASURE19,
7195 BIL_MEASURE20,
7196 BIL_MEASURE21,
7197 BIL_MEASURE22,
7198 BIL_MEASURE23,
7199 BIL_MEASURE24,
7200 BIL_URL1||'||'''BIL_DIMENSION1=WON'''||' BIL_URL1,
7201 BIL_URL1||'||'''BIL_DIMENSION1=PIPELINE'''||' BIL_URL2
7202 FROM
7203 (
7204 ';
7205
7206
7207 l_select3 := '
7208 select * from(
7209 select
7210 (ROWNUM - 1) RN,
7211 BIL_MEASURE1,
7212 BIL_MEASURE2,
7213 BIL_MEASURE3,
7214 BIL_MEASURE4,
7215 BIL_MEASURE6,
7216 BIL_MEASURE7,
7217 BIL_MEASURE8,
7218 BIL_MEASURE9,
7219 BIL_MEASURE10,
7220 BIL_MEASURE11,
7221 BIL_MEASURE12,
7222 BIL_MEASURE13,
7223 BIL_MEASURE14,
7224 BIL_MEASURE15,
7225 BIL_MEASURE16,
7226 BIL_MEASURE17,
7227 BIL_MEASURE18,
7228 BIL_MEASURE19,
7229 BIL_MEASURE20,
7230 BIL_MEASURE21,
7231 BIL_MEASURE22,
7232 BIL_MEASURE23,
7233 BIL_MEASURE24,
7234 BIL_URL1
7235 from
7236 (
7237 ';
7238
7239
7240 l_select2 := ' SELECT
7241 '||l_rank_select||' BIL_MEASURE1 ,
7242 NULL BIL_MEASURE2,
7243 salesrep_id BIL_MEASURE3 ,
7244 sales_group_id BIL_MEASURE4 ,
7245 SUM(frcst_amt_'||l_per_type||''||l_curr_suffix||') bil_measure6,
7246 SUM('||l_comp||''||l_per_type||'_frcst_amt'||l_curr_suffix||') bil_measure7,
7247 (((SUM(frcst_amt_'||l_per_type||''||l_curr_suffix||') -
7248 SUM('||l_comp||''||l_per_type||'_frcst_amt'||l_curr_suffix||'))/
7249 DECODE(SUM('||l_comp||''||l_per_type||'_frcst_amt'||l_curr_suffix||'),0,NULL,
7250 SUM('||l_comp||''||l_per_type||'_frcst_amt'||l_curr_suffix||'))) * 100) bil_measure8,
7251 SUM( pipeline_amt_'||l_per_type||''||l_curr_suffix||') bil_measure9,
7252 SUM('||l_comp||''||l_per_type||'_pip_amt'||l_curr_suffix||') bil_measure10,
7253 (((SUM( pipeline_amt_'||l_per_type||''||l_curr_suffix||') -
7254 SUM('||l_comp||''||l_per_type||'_pip_amt'||l_curr_suffix||'))/
7255 DECODE(SUM('||l_comp||''||l_per_type||'_pip_amt'||l_curr_suffix||'),0,NULL,
7256 SUM('||l_comp||''||l_per_type||'_pip_amt'||l_curr_suffix||'))) * 100) bil_measure11,
7257 SUM(won_amt_'||l_per_type||''||l_curr_suffix||') bil_measure12,
7258 SUM('||l_comp||''||l_per_type||'_won_amt'||l_curr_suffix||') bil_measure13,
7259 (((SUM(won_amt_'||l_per_type||''||l_curr_suffix||') -
7260 SUM('||l_comp||''||l_per_type||'_won_amt'||l_curr_suffix||'))/
7261 DECODE(SUM('||l_comp||''||l_per_type||'_won_amt'||l_curr_suffix||'),0,NULL,
7262 SUM('||l_comp||''||l_per_type||'_won_amt'||l_curr_suffix||'))) * 100) bil_measure14,
7263 SUM(winloss_ratio_'||l_per_type||''||l_curr_suffix||') bil_measure15,
7264 SUM('||l_comp||''||l_per_type||'_wlratio'||l_curr_suffix||') bil_measure16,
7265 (SUM(winloss_ratio_'||l_per_type||''||l_curr_suffix||') -
7266 SUM('||l_comp||''||l_per_type||'_wlratio'||l_curr_suffix||')) bil_measure17,
7267 SUM(booked_amt_'||l_per_type||''||l_curr_suffix||') bil_measure18,
7268 SUM('||l_comp||''||l_per_type||'_booked_amt'||l_curr_suffix||') bil_measure19 ,
7269 (((SUM(booked_amt_'||l_per_type||''||l_curr_suffix||') -
7270 SUM('||l_comp||''||l_per_type||'_booked_amt'||l_curr_suffix||'))/
7271 DECODE(SUM('||l_comp||''||l_per_type||'_booked_amt'||l_curr_suffix||'),0,
7272 NULL,SUM('||l_comp||''||l_per_type||'_booked_amt'||l_curr_suffix||'))) * 100) bil_measure20,
7273 SUM(SUM(frcst_amt_'||l_per_type||''||l_curr_suffix||')) OVER() BIL_MEASURE22 ,
7274 SUM(SUM(pipeline_amt_'||l_per_type||''||l_curr_suffix||')) OVER() BIL_MEASURE23,
7275 SUM(SUM(won_amt_'||l_per_type||''||l_curr_suffix||')) OVER() BIL_MEASURE24,
7276 SUM(SUM(booked_amt_'||l_per_type||''||l_curr_suffix||')) OVER() BIL_MEASURE21,
7277 '''||l_drill_link||'''||MV.salesrep_id||'''||l_drill_link3||'''||''+''||'''||l_drill_link2||'''||MV.salesrep_id||
7278 ''.''||MV.sales_group_id||'''||l_drill_link1||'''||MV.sales_group_id||''&''||'''' BIL_URL1
7279 FROM
7280 BIL_BI_SLS_PERF_MV MV
7281 '|| l_where_clause ||'
7282
7283 )
7284 order by BIL_MEASURE1
7285 )
7286 where
7287 RN >= &START_INDEX
7288 AND RN <= &END_INDEX
7289 )
7290 '|| l_outer_where_clause ||'
7291 '|| l_order_rank ||'
7292 ';
7293
7294
7298
7295
7296
7297
7299
7300
7301
7302 l_rep_select2 := '
7303 (
7304 SELECT
7305 salesrep_id BIL_MEASURE3,
7306 sales_group_id BIL_MEASURE4,
7307 SUM(frcst) BIL_MEASURE6,
7308 sum(priorFrcst) BIL_MEASURE7,
7309 sum(pipeline) BIL_MEASURE9,
7310 sum(priorPipeline) BIL_MEASURE10,
7311 sum(won) BIL_MEASURE12,
7312 sum(priorWon) BIL_MEASURE13,
7313
7314 sum(won) / DECODE(sum(lost), 0, NULL, sum(lost)) BIL_MEASURE15,
7315 sum(priorWon) / DECODE(sum(priorLost), 0, NULL, sum(priorLost)) BIL_MEASURE16,
7316 sum(booked) BIL_MEASURE18,
7317 SUM(priorBooked) BIL_MEASURE19,
7318 '''||l_drill_link||'''||salesrep_id||'''||l_drill_link3||'''||''+''||'''||l_drill_link2||'''||salesrep_id||
7319 ''.''||sales_group_id||'''||l_drill_link1||'''||sales_group_id||''&''||'''' BIL_URL1
7320 from (
7321 SELECT /*+ LEADING(cal) */
7322 sumry.salesrep_id,
7323 sumry.sales_group_id,
7324 NULL AS frcst,
7325 NULL AS priorFrcst,
7326 NULL pipeline,
7327 NULL priorPipeline,
7328 (case
7329 when cal.report_date = :l_asof_date then
7330 sumry.won_opty_amt'||l_curr_suffix||'
7331 else
7332 NULL
7333 end) AS won,
7334 (case
7335 when cal.report_date = :l_prev_date then
7336 sumry.won_opty_amt'||l_curr_suffix||'
7337 else
7338 NULL
7339 end) AS priorWon,
7340 (case
7341 when cal.report_date = :l_asof_date then
7342 sumry.lost_opty_amt'||l_curr_suffix||'
7343 else
7344 NULL
7345 end) AS lost,
7346 (case
7347 when cal.report_date = :l_prev_date then
7348 sumry.lost_opty_amt'||l_curr_suffix||'
7349 else
7350 NULL
7351 end) AS priorLost,
7352 NULL booked,
7353 NULL priorBooked
7354 FROM FII_TIME_STRUCTURES cal, BIL_BI_OPTY_G_MV sumry
7355 WHERE sumry.effective_time_id = cal.time_id
7356 AND sumry.effective_period_type_id = cal.PERIOD_TYPE_ID
7357 AND bitand(cal.record_type_id, :l_record_type_id) = :l_record_type_id
7358 AND cal.report_date in (:l_asof_date, :l_prev_date)
7359 AND sumry.parent_sales_group_id = :l_salesgroup_id
7360 AND cal.xtd_flag = ''Y''
7361 AND sumry.salesrep_id = :l_resource_id
7362 AND sumry.sales_group_id = :l_salesgroup_id
7363 AND sumry.won_opty_amt is not NULL
7364 UNION ALL
7365 SELECT /*+ leading (cal) */
7366 sumry.salesrep_id,
7367 sumry.sales_group_id,
7368 NULL AS frcst,
7369 NULL AS priorFrcst,
7370 (case
7371 when sumry.snap_date = :l_snapshot_date then
7372 decode(:l_period_type,
7373 128,
7374 PIPELINE_AMT_YEAR'||l_curr_suffix||',
7375 64,
7376 PIPELINE_AMT_QUARTER'||l_curr_suffix||',
7377 32,
7378 PIPELINE_AMT_PERIOD'||l_curr_suffix||',
7379 16,
7380 PIPELINE_AMT_WEEK'||l_curr_suffix||')
7381 end) AS pipeline,
7382 (CASE
7383 WHEN sumry.snap_date = :l_snapshot_date THEN
7384 '|| l_prev_amt ||'
7385 ELSE
7386 NULL
7387 END) AS priorPipeline,
7388 NULL AS won,
7389 NULL AS priorWon,
7390 NULL AS lost,
7391 NULL AS prorLost,
7392 NULL booked,
7393 NULL priorBooked
7394 FROM
7395 '|| l_open_mv_new ||' sumry
7396 WHERE sumry.snap_date in (:l_snapshot_date)
7397 AND sumry.grp_total_flag = 1
7398 AND sumry.parent_sales_group_id = :l_salesgroup_id
7399 AND sumry.salesrep_id = :l_resource_id
7400 AND sumry.sales_group_id = :l_salesgroup_id
7401 UNION ALL
7402 ';
7403
7404 l_rep_select3 := '
7405 SELECT /*+ LEADING(cal) */
7406 sumry.salesrep_id,
7407 sumry.sales_group_id,
7408 (case
7409 when sumry.effective_time_id = :l_curr_page_time_id AND
7410 cal.report_date = :l_asof_date then
7411 sumry.forecast_amt'||l_curr_suffix||'
7412 else
7413 NULL
7414 end) AS frcst,
7415 (case
7416 when sumry.effective_time_id = :l_prev_page_time_id AND
7417 cal.report_date = :l_prev_date then
7418 sumry.forecast_amt'||l_curr_suffix||'
7419 else
7420 NULL
7421 end) AS priorFrcst,
7422 NULL AS pipeline,
7423 NULL AS priorPipeline,
7424 NULL AS won,
7425 NULL AS priorWon,
7426 NULL AS lost,
7427 NULL AS prorLost,
7428 NULL booked,
7429 NULL priorBooked
7430 FROM FII_TIME_STRUCTURES cal, BIL_BI_FST_G_MV sumry
7431 WHERE sumry.TXN_TIME_ID = cal.TIME_ID
7432 AND sumry.TXN_PERIOD_TYPE_ID = cal.PERIOD_TYPE_ID
7433 AND bitand(cal.record_type_id, :l_bitand_id) = :l_bitand_id
7434 AND sumry.EFFECTIVE_PERIOD_TYPE_ID = :l_period_type
7435 AND NVL(sumry.credit_type_id, :l_fst_crdt_type) = :l_fst_crdt_type
7436 AND cal.report_date in (:l_asof_date, :l_prev_date)
7437 AND sumry.effective_time_id in
7438 (:l_curr_page_time_id, :l_prev_page_time_id)
7439 AND sumry.parent_sales_group_id = :l_salesgroup_id
7440 AND cal.xtd_flag = ''Y''
7441 AND sumry.forecast_amt is not NULL
7442 AND sumry.salesrep_id = :l_resource_id
7443 AND sumry.sales_group_id = :l_salesgroup_id
7444 UNION ALL
7445 SELECT /*+ leading (cal) */
7446 resource_id salesrep_id,
7447 sales_grp_id sales_group_id,
7448 NULL AS frcst,
7449 NULL AS priorFrcst,
7450 NULL AS pipeline,
7451 NULL AS priorPipeline,
7452 NULL AS won,
7453 NULL AS priorWon,
7454 NULL AS lost,
7455 NULL AS priorLost,
7456 (CASE
7457 WHEN cal.report_date = :l_asof_date THEN
7458 (sumry.net_booked_amt_g'||l_booked_suffix||')
7459 ELSE
7460 NULL
7461 END) As booked,
7462 (CASE
7463 WHEN cal.report_date = :l_prev_date THEN
7464 (sumry.net_booked_amt_g'||l_booked_suffix||')
7465 ELSE
7466 NULL
7467 END) AS priorBooked
7468 FROM FII_TIME_STRUCTURES cal, isc_dbi_scr_001_mv sumry
7469 WHERE sumry.time_id = cal.time_id
7470 AND sumry.period_type_id = cal.period_type_id
7471 AND cal.xtd_flag = ''Y''
7472 AND cal.report_date in (:l_asof_date, :l_prev_date)
7473 AND bitand(cal.record_type_id, :l_record_type_id) = :l_record_type_id
7477 AND sumry.item_cat_flag = 0
7474 AND sumry.GRP_MARKER = ''SALES REP''
7475 AND sumry.resource_id = :l_resource_id
7476 AND sumry.customer_flag = 0
7478 AND sumry.net_booked_amt_g is not NULL
7479 AND sumry.sales_grp_id = :l_salesgroup_id
7480 AND sumry.parent_grp_id = :l_salesgroup_id)
7481 GROUP BY salesrep_id, sales_group_id
7482 )
7483 ';
7484
7485
7486 l_rep_select1 := '
7487 SELECT
7488 NULL BIL_MEASURE1,
7489 (SELECT source_job_title FROM Jtf_rs_resource_extns WHERE resource_id = BIL_MEASURE3) BIL_MEASURE2,
7490 (SELECT rstl.resource_name FROM jtf_rs_resource_extns_tl rstl
7491 WHERE rstl.resource_id=BIL_MEASURE3 AND USERENV(''LANG'')=rstl.LANGUAGE) BIL_MEASURE3,
7492 (SELECT group_name FROM jtf_rs_groups_tl grtl
7493 WHERE BIL_MEASURE4=grtl.group_id AND USERENV(''LANG'')=grtl.LANGUAGE) BIL_MEASURE4,
7494 BIL_MEASURE6,
7495 BIL_MEASURE7,
7496 (((BIL_MEASURE6 - BIL_MEASURE7) / (DECODE(BIL_MEASURE7, 0, NULL, BIL_MEASURE7))) * 100) BIL_MEASURE8,
7497
7498 BIL_MEASURE9,
7499 BIL_MEASURE10,
7500 (((BIL_MEASURE9 - BIL_MEASURE10) / (DECODE(BIL_MEASURE10, 0, NULL, BIL_MEASURE10))) * 100) BIL_MEASURE11,
7501
7502 BIL_MEASURE12,
7503 BIL_MEASURE13,
7504 (((BIL_MEASURE12 - BIL_MEASURE13) / (DECODE(BIL_MEASURE13, 0, NULL, BIL_MEASURE13))) * 100) BIL_MEASURE14,
7505
7506 BIL_MEASURE15,
7507 BIL_MEASURE16,
7508 (BIL_MEASURE15 - BIL_MEASURE16) BIL_MEASURE17,
7509
7510 BIL_MEASURE18,
7511 BIL_MEASURE19,
7512 (((BIL_MEASURE18 - BIL_MEASURE19) / (DECODE(BIL_MEASURE19, 0, NULL, BIL_MEASURE19))) * 100) BIL_MEASURE20,
7513
7514 SUM(BIL_MEASURE18) OVER() BIL_MEASURE21 ,
7515 SUM(BIL_MEASURE6) OVER() BIL_MEASURE22 ,
7516 SUM(BIL_MEASURE9) OVER() BIL_MEASURE23 ,
7517 SUM(BIL_MEASURE12) OVER() BIL_MEASURE24 ,
7518 BIL_URL1||'||'''BIL_DIMENSION1=WON'''||' BIL_URL1,
7519 BIL_URL1||'||'''BIL_DIMENSION1=PIPELINE'''||' BIL_URL2
7520 FROM
7521 ';
7522
7523
7524 IF l_resource_id IS NULL THEN
7525 x_custom_sql := l_select1 ||
7526 l_select3 ||
7527 l_select2 ;
7528 ELSE
7529 x_custom_sql := l_rep_select1 ||
7530 l_rep_select2 ||
7531 l_rep_select3 ;
7532 END IF;
7533
7534
7535
7536
7537 --Log the query being returned
7538 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
7539 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
7540 MODULE => g_pkg || l_proc || 'Query LENGTH=>',
7541 MESSAGE => ' x_custom_sql LENGTH '||LENGTH(x_custom_sql));
7542 END IF;
7543 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
7544 l_ind :=1;
7545 l_len:= LENGTH(x_custom_sql);
7546 WHILE l_ind <= l_len LOOP
7547 l_str:= SUBSTR(x_custom_sql, l_ind, 4000);
7548 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_STATEMENT,
7549 MODULE => g_pkg || l_proc ||'.'|| ' statement ',
7550 MESSAGE => l_str);
7551 l_ind := l_ind + 4000;
7552 END LOOP;
7553 END IF;
7554 /* Bind Parameters */
7555
7556 l_custom_rec.attribute_name := ':l_asof_date';
7557 l_custom_rec.attribute_value := TO_CHAR(l_asof_date,'DD/MM/YYYY');
7558 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.DATE_BIND;
7559 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
7560 x_custom_attr.Extend();
7561 x_custom_attr(l_bind_ctr) := l_custom_rec;
7562 l_bind_ctr := l_bind_ctr+1;
7563
7564 l_custom_rec.attribute_name := ':l_prev_date';
7565 l_custom_rec.attribute_value := TO_CHAR(l_prev_date,'DD/MM/YYYY');
7566 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.DATE_BIND;
7567 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
7568 x_custom_attr.Extend();
7569 x_custom_attr(l_bind_ctr) := l_custom_rec;
7570 l_bind_ctr := l_bind_ctr+1;
7571
7572 l_custom_rec.attribute_name := ':l_snapshot_date';
7573 l_custom_rec.attribute_value := TO_CHAR(l_snapshot_date,'DD/MM/YYYY');
7574 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.DATE_BIND;
7575 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
7576 x_custom_attr.Extend();
7577 x_custom_attr(l_bind_ctr) := l_custom_rec;
7578 l_bind_ctr := l_bind_ctr+1;
7579
7580 l_custom_rec.attribute_name := ':l_period_type';
7581 l_custom_rec.attribute_value := l_period_type;
7582 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
7583 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
7584 x_custom_attr.Extend();
7585 x_custom_attr(l_bind_ctr) := l_custom_rec;
7586 l_bind_ctr := l_bind_ctr+1;
7587
7588 l_custom_rec.attribute_name := ':l_record_type_id';
7589 l_custom_rec.attribute_value := l_record_type_id ;
7590 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
7591 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
7592 x_custom_attr.Extend();
7593 x_custom_attr(l_bind_ctr) := l_custom_rec;
7594 l_bind_ctr := l_bind_ctr+1;
7595
7596 l_custom_rec.attribute_name := ':l_curr_page_time_id';
7597 l_custom_rec.attribute_value := l_curr_page_time_id;
7598 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
7599 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
7600 x_custom_attr.Extend();
7601 x_custom_attr(l_bind_ctr) := l_custom_rec;
7602 l_bind_ctr := l_bind_ctr+1;
7603
7604 l_custom_rec.attribute_name := ':l_prev_page_time_id';
7608 x_custom_attr.Extend();
7605 l_custom_rec.attribute_value := l_prev_page_time_id;
7606 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
7607 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
7609 x_custom_attr(l_bind_ctr) := l_custom_rec;
7610 l_bind_ctr := l_bind_ctr+1;
7611
7612 l_custom_rec.attribute_name :=':l_bitand_id';
7613 l_custom_rec.attribute_value := l_bitand_id;
7614 l_custom_rec.attribute_data_type :=BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
7615 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
7616 x_custom_attr.Extend();
7617 x_custom_attr(l_bind_ctr):=l_custom_rec;
7618 l_bind_ctr:=l_bind_ctr+1;
7619
7620 l_custom_rec.attribute_name :=':l_fst_crdt_type';
7621 l_custom_rec.attribute_value := l_fst_crdt_type;
7622 l_custom_rec.attribute_data_type :=BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
7623 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
7624 x_custom_attr.Extend();
7625 x_custom_attr(l_bind_ctr):=l_custom_rec;
7626 l_bind_ctr:=l_bind_ctr+1;
7627
7628 l_custom_rec.attribute_name :=':l_salesgroup_id';
7629 l_custom_rec.attribute_value := l_salesgroup_id;
7630 l_custom_rec.attribute_data_type :=BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
7631 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
7632 x_custom_attr.Extend();
7633 x_custom_attr(l_bind_ctr):=l_custom_rec;
7634 l_bind_ctr:=l_bind_ctr+1;
7635 IF l_resource_id IS NOT NULL THEN
7636 l_custom_rec.attribute_name :=':l_resource_id';
7637 l_custom_rec.attribute_value := l_resource_id;
7638 l_custom_rec.attribute_data_type :=BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
7639 l_custom_rec.attribute_type :=BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
7640 x_custom_attr.Extend();
7641 x_custom_attr(l_bind_ctr):=l_custom_rec;
7642 l_bind_ctr:=l_bind_ctr+1;
7643 END IF;
7644 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
7645 FND_LOG.STRING(LOG_LEVEL => fnd_log.LEVEL_PROCEDURE,
7646 MODULE => g_pkg || l_proc || 'END',
7647 MESSAGE => 'END of Procedure '||l_proc);
7648 END IF;
7649 END BIL_BI_SLS_PERF ;
7650
7651
7652
7653
7654 END BIL_BI_SALES_MGMT_RPTS_PKG;