DBA Data[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;