DBA Data[Home] [Help]

PACKAGE BODY: APPS.ISC_DBI_SHIP_PERF_PKG

Source


1 PACKAGE BODY ISC_DBI_SHIP_PERF_PKG AS
2 /* $Header: ISCRG65B.pls 120.2 2006/06/26 06:09:10 abhdixi noship $ */
3 
4 
5 PROCEDURE GET_SQL(p_param IN BIS_PMV_PAGE_PARAMETER_TBL,x_custom_sql OUT NOCOPY VARCHAR2,
6 	x_custom_output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL) IS
7 
8   l_formula_sql		VARCHAR2(32000);
9   l_inner_sql		VARCHAR2(32000);
10   l_outer_sql		VARCHAR2(32000);
11   l_stmt 		VARCHAR2(32000);
12   l_view_by		VARCHAR2(32000);
13   l_org 		VARCHAR2(32000);
14   l_org_where     	VARCHAR2(32000);
15   l_item		VARCHAR2(32000);
16   l_item_where		VARCHAR2(32000);
17   l_inv_cat		VARCHAR2(32000);
18   l_inv_cat_where	VARCHAR2(32000);
19   l_item_cat_flag	NUMBER; -- 0 for product and 1 for product category
20   l_cust_flag		NUMBER; -- 0 for customer level, 1 for no-customer level
21   l_agg_level		NUMBER;
22   l_cust		VARCHAR2(32000);
23   l_cust_where		VARCHAR2(32000);
24   l_custom_rec 		BIS_QUERY_ATTRIBUTES ;
25   l_lang		varchar2(10);
26   l_period_type		varchar2(30);
27 
28 
29 BEGIN
30 
31   FOR i IN 1..p_param.COUNT
32   LOOP
33     IF( p_param(i).parameter_name= 'VIEW_BY')
34       THEN l_view_by := p_param(i).parameter_value;
35     END IF;
36 
37     IF(p_param(i).parameter_name = 'ORGANIZATION+ORGANIZATION')
38       THEN l_org :=  p_param(i).parameter_value;
39     END IF;
40 
41     IF(p_param(i).parameter_name = 'ITEM+ENI_ITEM_INV_CAT') THEN
42        l_inv_cat :=  p_param(i).parameter_value;
43     END IF;
44 
45     IF(p_param(i).parameter_name = 'ITEM+ENI_ITEM_ORG') THEN
46        l_item :=  p_param(i).parameter_value;
47     END IF;
48 
49     IF(p_param(i).parameter_name = 'CUSTOMER+FII_CUSTOMERS') THEN
50        l_cust :=  p_param(i).parameter_value;
51     END IF;
52 
53     IF(p_param(i).parameter_name = 'PERIOD_TYPE') THEN
54        l_period_type :=  p_param(i).parameter_value;
55     END IF;
56 
57   END LOOP;
58 
59 
60   IF ( l_org IS NULL OR l_org = 'All' ) THEN
61     l_org_where := '
62 	AND (EXISTS
63 		(SELECT 1
64 		FROM org_access o
65 		WHERE o.responsibility_id = fnd_global.resp_id
66 		AND o.resp_application_id = fnd_global.resp_appl_id
67 		AND o.organization_id = f.inv_org_id)
68 		OR EXISTS
69 		(SELECT 1
70 		FROM mtl_parameters org
71 		WHERE org.organization_id = f.inv_org_id
72 		AND NOT EXISTS
73 			(SELECT 1
74 			FROM org_access ora
75 			WHERE org.organization_id = ora.organization_id)))';
76 
77   ELSE
78     l_org_where := '
79 		AND f.inv_org_id = &ORGANIZATION+ORGANIZATION';
80   END IF;
81 
82 
83   IF ( l_inv_cat IS NULL OR l_inv_cat = 'All' ) THEN
84     l_inv_cat_where :='';
85   ELSE
86     l_inv_cat_where := '
87 	AND f.item_category_id in (&ITEM+ENI_ITEM_INV_CAT)';
88   END IF;
89 
90 
91   IF ( l_item IS NULL OR l_item = 'All' )
92   THEN l_item_where := '';
93   ELSE l_item_where := '
94 		AND f.item_id in (&ITEM+ENI_ITEM_ORG)';
95   END IF;
96 
97   IF (l_cust IS NULL OR l_cust = 'All') THEN
98     l_cust_where:='';
99 
100     IF(l_view_by = 'CUSTOMER+FII_CUSTOMERS') THEN
101        l_cust_flag := 0;
102     ELSE
103        l_cust_flag := 1; -- do not need customer id
104     END IF;
105   ELSE
106     l_cust_where :='
107 	AND f.customer_id in (&CUSTOMER+FII_CUSTOMERS)';
108     l_cust_flag := 0; -- customer level
109   END IF;
110 
111 
112   IF (l_item IS NULL OR l_item = 'All')
113     THEN
114       IF (l_view_by = 'ITEM+ENI_ITEM_ORG')
115 	THEN l_item_cat_flag := 0; -- item
116       ELSIF (l_view_by = 'ITEM+ENI_ITEM_INV_CAT')
117         THEN l_item_cat_flag := 1; -- category
118       ELSE
119 	IF (l_inv_cat IS NULL OR l_inv_cat = 'All')
120 	  THEN l_item_cat_flag := 3; -- all
121 	ELSE l_item_cat_flag := 1; -- category
122 	END IF;
123       END IF;
124   ELSE
125     l_item_cat_flag := 0; -- item
126   END IF;
127 
128   CASE
129     WHEN (l_item_cat_flag = 0 and l_cust_flag = 0) THEN l_agg_level := 0;
130     WHEN (l_item_cat_flag = 1 and l_cust_flag = 0) THEN l_agg_level := 4;
131     WHEN (l_item_cat_flag = 3 and l_cust_flag = 0) THEN l_agg_level := 2;
132     WHEN (l_item_cat_flag = 0 and l_cust_flag = 1) THEN l_agg_level := 1;
133     WHEN (l_item_cat_flag = 1 and l_cust_flag = 1) THEN l_agg_level := 5;
134     WHEN (l_item_cat_flag = 3 and l_cust_flag = 1) THEN l_agg_level := 3;
135   END CASE;
136 
137 
138   l_lang := USERENV('LANG');
139 
140   l_custom_rec := BIS_PMV_PARAMETERS_PUB.INITIALIZE_QUERY_TYPE;
141   x_custom_output := BIS_QUERY_ATTRIBUTES_TBL();
142 
143   l_formula_sql := '
144 	c.curr_shipped					ISC_MEASURE_1,
145 	c.prev_shipped					ISC_MEASURE_2,
146 	(c.curr_shipped-c.prev_shipped)/
147 		decode(c.prev_shipped,0, null,
148 			abs(c.prev_shipped))*100	ISC_MEASURE_3,-- lines shipped change
149         c.curr_late_schedule/
150 		decode(c.curr_shipped,0,null,
151 			c.curr_shipped)*100		ISC_MEASURE_4, -- lines late to schedule
152         c.prev_late_schedule/
153 		decode(c.prev_shipped,0,null,
154 			c.prev_shipped)*100		ISC_MEASURE_5, -- prev. lines late to schedule
155 	(c.curr_late_schedule/
156 		decode(c.curr_shipped,0,null,
157 			c.curr_shipped)*100)-
158 		(c.prev_late_schedule/
159 		decode(c.prev_shipped,0,null,
160 			c.prev_shipped)*100)		ISC_MEASURE_6, -- lines late to schedule change
161         c.curr_late_promise/
162 		decode(c.curr_shipped,0,null,
163 			c.curr_shipped)*100		ISC_MEASURE_7, -- lines late to promise
164 	c.prev_late_promise/
165 		decode(c.prev_shipped,0,null,
166 			c.prev_shipped)*100		ISC_MEASURE_8, -- prev. late to promise
167 	(c.curr_late_promise/
168 		decode(c.curr_shipped,0,null,
169 			c.curr_shipped)*100)-
170 		(c.prev_late_promise/
171 		decode(c.prev_shipped,0,null,
172 			c.prev_shipped)*100)		ISC_MEASURE_9, -- line late to promise change
173 	sum(c.curr_shipped) over ()			ISC_MEASURE_10, -- grand total lines shipped
174 	(sum(c.curr_shipped) over()-sum(c.prev_shipped) over())/
175 		decode(sum(c.prev_shipped) over (),
176 		0,null,abs(sum(c.prev_shipped) over()))*100	ISC_MEASURE_11, -- grand total lines shipped change
177  	sum(c.curr_late_schedule) over()/
178 		decode(sum(c.curr_shipped) over(),
179 		0,null,sum(c.curr_shipped) over()) *100	ISC_MEASURE_12, -- grand total lines late to schedule
180 	(sum(c.curr_late_schedule) over()/
181 		decode(sum(c.curr_shipped) over(),
182 		0,null,sum(c.curr_shipped) over()))*100
183 	-(sum(c.prev_late_schedule) over()/
184 		decode(sum(c.prev_shipped) over(),
185 		0,null,sum(c.prev_shipped) over()))*100	ISC_MEASURE_13, -- grand total lines late to schedule change
186 	sum(c.curr_late_promise) over()/
187 		decode(sum(c.curr_shipped) over(),
188 		0,null,sum(c.curr_shipped) over()) *100	ISC_MEASURE_14, -- grand total lines late to promise
189 	(sum(c.curr_late_promise) over()/
190 		decode(sum(c.curr_shipped) over(),
191 		0,null,sum(c.curr_shipped) over()))*100
192 	-(sum(c.prev_late_promise) over()/
193 		decode(sum(c.prev_shipped) over(),
194 		0,null,sum(c.prev_shipped) over()))*100	ISC_MEASURE_15, -- grand total lines late to promise change
195 	(sum(c.prev_late_schedule) over()/
196 		decode(sum(c.prev_shipped) over(),
197 		0,null,sum(c.prev_shipped) over()))*100	ISC_MEASURE_16, -- grand total lines late to schedule prior(KPI)
198 	(sum(c.prev_late_promise) over()/
199 		decode(sum(c.prev_shipped) over(),
200 		0,null,sum(c.prev_shipped) over()))*100	ISC_MEASURE_17, -- grand total lines late to promise prior(KPI)
201 	c.curr_shipped					ISC_MEASURE_18, -- lines shipped for KPI
202         c.curr_late_schedule/
203 		decode(c.curr_shipped,0,null,
204 			c.curr_shipped)*100		ISC_MEASURE_19, -- Lines late to schedule KPI,
205         c.curr_late_promise/
206 		decode(c.curr_shipped,0,null,
207 			c.curr_shipped)*100		ISC_MEASURE_20, -- Lines late to promise KPI
208 	c.qty_shipped					ISC_MEASURE_21,
209  	sum(c.curr_late_schedule) over()/
210 		decode(sum(c.curr_shipped) over(),
211 		0,null,sum(c.curr_shipped) over()) *100	ISC_MEASURE_22, -- grand total lines late to schedule KPI
212 	sum(c.curr_late_promise) over()/
213 		decode(sum(c.curr_shipped) over(),
214 		0,null,sum(c.curr_shipped) over()) *100	ISC_MEASURE_23, -- grand total lines late to promise KPI
215 	sum(c.curr_shipped) over ()			ISC_MEASURE_24, -- grand total lines shipped KPI
216 	sum(c.prev_shipped) over ()			ISC_MEASURE_25, -- grand total lines shipped prev KPI
217 	null						CURRENCY	-- obsolted items from DBI 5.0';
218 IF(l_period_type = 'FII_TIME_DAY')
219 -- Day reporting
220 THEN
221   l_inner_sql:= 'sum(decode(to_date(f.time_id,''j''),&BIS_CURRENT_ASOF_DATE,f.shipped_line_cnt,0))	CURR_SHIPPED,
222 		sum(decode(to_date(f.time_id,''j''),&BIS_PREVIOUS_ASOF_DATE,f.shipped_line_cnt,0))	PREV_SHIPPED,
223 		sum(decode(to_date(f.time_id,''j''),&BIS_CURRENT_ASOF_DATE,f.late_line_cnt,0))		CURR_LATE_SCHEDULE,
224 		sum(decode(to_date(f.time_id,''j''),&BIS_PREVIOUS_ASOF_DATE,f.late_line_cnt,0))		PREV_LATE_SCHEDULE,
225 		sum(decode(to_date(f.time_id,''j''),&BIS_CURRENT_ASOF_DATE,f.late_line_promise_cnt,0))	CURR_LATE_PROMISE,
226 		sum(decode(to_date(f.time_id,''j''),&BIS_PREVIOUS_ASOF_DATE,f.late_line_promise_cnt,0))	PREV_LATE_PROMISE,
227 		sum(decode(to_date(f.time_id,''j''),&BIS_CURRENT_ASOF_DATE,f.shipped_qty, 0))		QTY_SHIPPED
228         FROM ISC_DBI_FM_0000_MV		f
229      	WHERE f.time_id in
230 	(to_char(&BIS_CURRENT_ASOF_DATE,''j''),to_char(&BIS_PREVIOUS_ASOF_DATE,''j''))
231 	AND f.period_type_id = 1
232 	AND f.agg_level = :ISC_AGG_LEVEL';
233 
234 ELSE
235 -- For Week, Month, Quarter, Year reporting
236   l_inner_sql:= 'sum(decode(cal.report_date,&BIS_CURRENT_ASOF_DATE,f.shipped_line_cnt,0))	CURR_SHIPPED,
237 		sum(decode(cal.report_date,&BIS_PREVIOUS_ASOF_DATE,f.shipped_line_cnt,0))	PREV_SHIPPED,
238 		sum(decode(cal.report_date,&BIS_CURRENT_ASOF_DATE,f.late_line_cnt,0))		CURR_LATE_SCHEDULE,
239 		sum(decode(cal.report_date,&BIS_PREVIOUS_ASOF_DATE,f.late_line_cnt,0))		PREV_LATE_SCHEDULE,
240 		sum(decode(cal.report_date,&BIS_CURRENT_ASOF_DATE,f.late_line_promise_cnt,0))	CURR_LATE_PROMISE,
241 		sum(decode(cal.report_date,&BIS_PREVIOUS_ASOF_DATE,f.late_line_promise_cnt,0))	PREV_LATE_PROMISE,
242 		sum(decode(cal.report_date,&BIS_CURRENT_ASOF_DATE,f.shipped_qty, 0))		QTY_SHIPPED
243         FROM ISC_DBI_FM_0000_MV		f,
244 		FII_TIME_RPT_STRUCT_V	cal
245      	WHERE f.time_id = cal.time_id
246 	AND f.agg_level = :ISC_AGG_LEVEL
247 	AND cal.report_date in(&BIS_CURRENT_ASOF_DATE,&BIS_PREVIOUS_ASOF_DATE)
248 	AND cal.period_type_id = f.period_type_id
249 	AND bitand(cal.record_type_id,&BIS_NESTED_PATTERN) =
250 	cal.record_type_id ';
251 
252 END IF;
253 
254 l_inner_sql := l_inner_sql||l_org_where||l_inv_cat_where||l_item_where||l_cust_where;
255 
256  l_outer_sql:= 'ISC_MEASURE_21,ISC_MEASURE_1,ISC_MEASURE_2,ISC_MEASURE_3,ISC_MEASURE_4,ISC_MEASURE_5,
257 		ISC_MEASURE_6,ISC_MEASURE_7,ISC_MEASURE_8,ISC_MEASURE_9,ISC_MEASURE_10,
258 		ISC_MEASURE_11,ISC_MEASURE_12,ISC_MEASURE_13,ISC_MEASURE_14,ISC_MEASURE_15,
259 		ISC_MEASURE_16,ISC_MEASURE_17,ISC_MEASURE_18,ISC_MEASURE_19,ISC_MEASURE_20,
260 	        ISC_MEASURE_22,ISC_MEASURE_23,ISC_MEASURE_24,ISC_MEASURE_25,CURRENCY';
261 
262   IF l_view_by = 'ORGANIZATION+ORGANIZATION' THEN
263      l_stmt := 'SELECT org.name 	VIEWBY,
264 		org.organization_id	VIEWBYID,
265 		null			ISC_ATTRIBUTE_2,
266 		null			ISC_ATTRIBUTE_3,
267 		org.organization_id	ISC_ATTRIBUTE_4,
268 		'||l_outer_sql||'
269 		FROM(select
270 		(rank() over (&ORDER_BY_CLAUSE nulls last,inv_org_id))-1 rnk,
271 		inv_org_id,
272 		'||l_outer_sql||'
273 		FROM (select inv_org_id,
274 		'||l_formula_sql||'
275 		FROM (select f.inv_org_id INV_ORG_ID,
276 		'||l_inner_sql||'
277 		GROUP BY f.inv_org_id) c)) a,
278 		HR_ALL_ORGANIZATION_UNITS_TL org
279 		WHERE org.organization_id = a.inv_org_id
280 		AND org.language = :ISC_LANG
281 		AND ((a.rnk between &START_INDEX and &END_INDEX) OR (&END_INDEX = -1))
282   		ORDER BY rnk';
283 
284   ELSIF l_view_by = 'ITEM+ENI_ITEM_ORG' THEN
285      l_stmt := 'SELECT items.value	VIEWBY,
286 		items.id		VIEWBYID,
287 		items.id 		ISC_ATTRIBUTE_4,
288 		items.description	ISC_ATTRIBUTE_2,
289 		uom.unit_of_measure	ISC_ATTRIBUTE_3,
290 		'||l_outer_sql||'
291 		FROM(select (rank() over (&ORDER_BY_CLAUSE nulls last,item_id))-1 rnk,
292 		item_id,uom,
293 		'||l_outer_sql||'
294 		FROM (select item_id, uom,
295 		'||l_formula_sql||'
296 		FROM (select f.item_id ITEM_ID,f.uom,
297 		'||l_inner_sql||'
298 		GROUP by f.item_id,f.uom) c)) a,
299 		 ENI_ITEM_ORG_V items,
300 		 MTL_UNITS_OF_MEASURE_TL uom
301   		WHERE a.item_id = items.id
302 		AND uom.uom_code= a.uom
303 		AND uom.language = :ISC_LANG
304 		AND ((a.rnk between &START_INDEX and &END_INDEX) OR (&END_INDEX = -1))
305 		ORDER BY rnk';
306 
307    ELSIF l_view_by = 'ITEM+ENI_ITEM_INV_CAT' THEN
308     l_stmt := 'SELECT 	eniv.value 	VIEWBY,
309 		eniv.id			VIEWBYID,
310 		eniv.id	 		ISC_ATTRIBUTE_4,
311 		null			ISC_ATTRIBUTE_2,
312 		null			ISC_ATTRIBUTE_3,
313 		'||l_outer_sql||'
314 		FROM(select (rank() over (&ORDER_BY_CLAUSE nulls last,item_category_id))-1 rnk,
315 		item_category_id,
316 		'||l_outer_sql||'
317 		FROM (select item_category_id,
318 		'||l_formula_sql||'
319 		FROM (select f.item_category_id ITEM_CATEGORY_ID,
320 		'||l_inner_sql||'
321 		GROUP by f.item_category_id) c)) a,
322  		ENI_ITEM_INV_CAT_V 	eniv
323 		WHERE a.item_category_id = eniv.id
324 		AND ((a.rnk between &START_INDEX and &END_INDEX) OR (&END_INDEX = -1))
325   		ORDER BY rnk';
326 
327   ELSE	--l_view_by=Customer
328     l_stmt := 'SELECT 	cust.value	VIEWBY,
329 		cust.id			VIEWBYID,
330 		cust.id	 		ISC_ATTRIBUTE_4,
331 		null			ISC_ATTRIBUTE_2,
332 		null			ISC_ATTRIBUTE_3,
333 		'||l_outer_sql||'
334 		FROM(select (rank() over (&ORDER_BY_CLAUSE nulls last,customer_id))-1 rnk,
335 		customer_id,
336 		'||l_outer_sql||'
337 		FROM (select customer_id,
338 		'||l_formula_sql||'
339 		FROM (select f.customer_id CUSTOMER_ID,
340 		'||l_inner_sql||'
341 		GROUP by f.customer_id) c)) a,
342  		FII_CUSTOMERS_V 	cust
343 		WHERE a.customer_id = cust.id
344 		AND ((a.rnk between &START_INDEX and &END_INDEX) OR (&END_INDEX = -1))
345   		ORDER BY rnk';
346 
347   END IF;
348 
349   x_custom_sql := l_stmt;
350 
351   l_custom_rec.attribute_name := ':ISC_AGG_LEVEL';
352   l_custom_rec.attribute_value := to_char(l_agg_level);
353   l_custom_Rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
354   l_custom_Rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.INTEGER_BIND;
355   x_custom_output.EXTEND;
356   x_custom_output(1) := l_custom_rec;
357 
358   l_custom_rec.attribute_name := ':ISC_LANG';
359   l_custom_rec.attribute_value := l_lang;
360   l_custom_Rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
361   l_custom_Rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
362   x_custom_output.EXTEND;
363   x_custom_output(2) := l_custom_rec;
364 
365 
366 END get_sql;
367 
368 END ISC_DBI_SHIP_PERF_PKG ;
369