DBA Data[Home] [Help]

PACKAGE BODY: APPS.ISC_DBI_DAYS_FULF_PKG

Source


1 PACKAGE BODY ISC_DBI_DAYS_FULF_PKG AS
2 /* $Header: ISCRG73B.pls 120.0 2005/05/25 17:28:20 appldev noship $ */
3 
4 PROCEDURE Get_Sql (	p_param		IN		BIS_PMV_PAGE_PARAMETER_TBL,
5 			x_custom_sql	OUT NOCOPY	VARCHAR2,
6 			x_custom_output	OUT NOCOPY	BIS_QUERY_ATTRIBUTES_TBL) IS
7 
8   l_stmt			VARCHAR2(10000);
9   l_measures			VARCHAR2(10000);
10   l_select_stmt			VARCHAR2(10000);
11   l_inner_select_stmt		VARCHAR2(10000);
12   l_inner_group_by_stmt		VARCHAR2(10000);
13   l_where_stmt			VARCHAR2(10000);
14   l_inv_org			VARCHAR2(10000);
15   l_inv_org_where		VARCHAR2(10000);
16   l_prod			VARCHAR2(10000);
17   l_prod_where			VARCHAR2(10000);
18   l_prod_cat			VARCHAR2(10000);
19   l_prod_cat_from		VARCHAR2(10000);
20   l_prod_cat_where		VARCHAR2(10000);
21   l_cust			VARCHAR2(10000);
22   l_cust_where			VARCHAR2(10000);
23   l_mv				VARCHAR2(10000);
24   l_flags_where			VARCHAR2(10000);
25   l_view_by			VARCHAR2(120);
26   l_lang			VARCHAR2(10);
27   l_item_cat_flag		NUMBER;
28   l_cust_flag			NUMBER;
29 
30   l_custom_rec			BIS_QUERY_ATTRIBUTES;
31 
32 BEGIN
33 
34   l_lang := userenv('LANG');
35 
36   FOR i IN 1..p_param.COUNT
37   LOOP
38     IF (p_param(i).parameter_name = 'ORGANIZATION+ORGANIZATION')
39       THEN l_inv_org := p_param(i).parameter_value;
40     END IF;
41 
42     IF (p_param(i).parameter_name = 'ITEM+ENI_ITEM_VBH_CAT')
43       THEN l_prod_cat := p_param(i).parameter_value;
44     END IF;
45 
46     IF (p_param(i).parameter_name = 'ITEM+ENI_ITEM_ORG')
47       THEN l_prod := p_param(i).parameter_value;
48     END IF;
49 
50     IF (p_param(i).parameter_name = 'CUSTOMER+FII_CUSTOMERS')
51       THEN l_cust := p_param(i).parameter_value;
52     END IF;
53 
54     IF (p_param(i).parameter_name = 'VIEW_BY')
55       THEN l_view_by := p_param(i).parameter_value;
56     END IF;
57   END LOOP;
58 
59   IF (l_inv_org IS NULL OR l_inv_org = '' OR l_inv_org = 'All')
60     THEN l_inv_org_where := '
61 	AND (EXISTS
62 		(SELECT 1
63 		FROM org_access o
64 		WHERE o.responsibility_id = fnd_global.resp_id
65 		AND o.resp_application_id = fnd_global.resp_appl_id
66 		AND o.organization_id = fact.inv_org_id)
67 	OR EXISTS
68 		(SELECT 1
69 		FROM mtl_parameters org
70 		WHERE org.organization_id = fact.inv_org_id
71 		AND NOT EXISTS
72 			(SELECT 1
73 			FROM org_access ora
74 			WHERE org.organization_id = ora.organization_id)))';
75     ELSE l_inv_org_where := '
76 	    AND fact.inv_org_id = &ORGANIZATION+ORGANIZATION';
77   END IF;
78 
79   IF (l_prod_cat IS NULL OR l_prod_cat = '' OR l_prod_cat = 'All')
80     THEN
81       IF (l_view_by = 'ITEM+ENI_ITEM_VBH_CAT')
82 	THEN
83 	  l_prod_cat_from := ',
84 		ENI_DENORM_HIERARCHIES		eni_cat,
85 		MTL_DEFAULT_CATEGORY_SETS	mdcs';
86 	  l_prod_cat_where := '
87 	    AND fact.item_category_id = eni_cat.child_id
88 	    AND eni_cat.top_node_flag = ''Y''
89 	    AND	eni_cat.dbi_flag = ''Y''
90 	    AND eni_cat.object_type = ''CATEGORY_SET''
91 	    AND	eni_cat.object_id = mdcs.category_set_id
92 	    AND	mdcs.functional_area_id = 11';
93 	ELSE
94 	  l_prod_cat_from := '';
95 	  l_prod_cat_where := '';
96       END IF;
97     ELSE
98       l_prod_cat_from := ',
99 		ENI_DENORM_HIERARCHIES		eni_cat,
100 		MTL_DEFAULT_CATEGORY_SETS	mdcs';
101       l_prod_cat_where := '
102 	    AND fact.item_category_id = eni_cat.child_id
103 	    AND eni_cat.parent_id IN (&ITEM+ENI_ITEM_VBH_CAT)
104 	    AND	eni_cat.dbi_flag = ''Y''
105 	    AND	eni_cat.object_type = ''CATEGORY_SET''
106 	    AND eni_cat.object_id = mdcs.category_set_id
107 	    AND	mdcs.functional_area_id = 11';
108   END IF;
109 
110   IF (l_prod IS NULL OR l_prod = '' OR l_prod = 'All')
111     THEN l_prod_where := '';
112     ELSE l_prod_where := '
113 	    AND fact.item_id IN (&ITEM+ENI_ITEM_ORG)';
114   END IF;
115 
116   IF (l_cust IS NULL OR l_cust = '' OR l_cust = 'All')
117     THEN
118       l_cust_where := '';
119       IF (l_view_by = 'CUSTOMER+FII_CUSTOMERS')
120         THEN l_cust_flag := 0;
121 	ELSE l_cust_flag := 1;
122       END IF;
123     ELSE
124       l_cust_where := '
125 	    AND fact.customer_id in (&CUSTOMER+FII_CUSTOMERS)';
126       l_cust_flag := 0;
127   END IF;
128 
129   IF (l_prod IS NULL OR l_prod = '' OR l_prod = 'All')
130     THEN
131       IF (l_view_by = 'ITEM+ENI_ITEM_ORG')
132 	THEN l_item_cat_flag := 0; -- product
133       ELSIF (l_view_by = 'ITEM+ENI_ITEM_VBH_CAT')
134         THEN l_item_cat_flag := 1; -- category
135       ELSE
136 	IF (l_prod_cat IS NULL OR l_prod_cat = '' OR l_prod_cat = 'All')
137 	  THEN l_item_cat_flag := 3; -- all
138 	  ELSE l_item_cat_flag := 1; -- category
139 	END IF;
140       END IF;
141   ELSE
142     l_item_cat_flag := 0; -- product
143   END IF;
144 
145   l_custom_rec := BIS_PMV_PARAMETERS_PUB.Initialize_Query_Type;
146   x_custom_output := BIS_QUERY_ATTRIBUTES_TBL();
147 
148   l_measures := 'ISC_MEASURE_1,ISC_MEASURE_2,ISC_MEASURE_3,ISC_MEASURE_4,ISC_MEASURE_5,
149 		 ISC_MEASURE_6,ISC_MEASURE_7,ISC_MEASURE_8,CURRENCY,FND_CATEGORY,FND_PRODUCT';
150 
151   IF l_view_by = 'ITEM+ENI_ITEM_ORG'
152     THEN l_select_stmt := '
153  SELECT	items.value						VIEWBY,
154 	NULL							ISC_ATTRIBUTE_2,
155 	NULL							ISC_ATTRIBUTE_3, -- drill across url
156 	items.description					ISC_ATTRIBUTE_4, -- item description
157 	'||l_measures||'
158    FROM
159 (SELECT	(rank() over (&ORDER_BY_CLAUSE nulls last, item_id)) - 1		rnk,
160 	item_id,
161 	'||l_measures||'
162    FROM
163 (SELECT	c.item_id,';
164 	l_inner_select_stmt := '
165 		 SELECT	fact.item_id					ITEM_ID,';
166 	l_inner_group_by_stmt := '
167 		GROUP BY fact.item_id';
168 	l_where_stmt := '
169 	ENI_ITEM_ORG_V			items
170   WHERE a.item_id = items.id
171     AND	((a.rnk between &START_INDEX and &END_INDEX) OR (&END_INDEX = -1))
172   ORDER BY rnk';
173 
174   ELSIF l_view_by = 'ORGANIZATION+ORGANIZATION'
175     THEN l_select_stmt := '
176  SELECT	org.name						VIEWBY,
177 	NULL							ISC_ATTRIBUTE_2,
178 	NULL							ISC_ATTRIBUTE_3, -- drill across url
179 	NULL							ISC_ATTRIBUTE_4, -- item description
180 	'||l_measures||'
181    FROM
182 (SELECT (rank() over (&ORDER_BY_CLAUSE nulls last, inv_org_id)) - 1		rnk,
183 	inv_org_id,
184 	'||l_measures||'
185    FROM
186 (SELECT	c.inv_org_id,	';
187 	l_inner_select_stmt := '
188 		 SELECT	fact.inv_org_id					INV_ORG_ID,';
189 	l_inner_group_by_stmt := '
190 		GROUP BY fact.inv_org_id';
191 	l_where_stmt := '
192 	HR_ALL_ORGANIZATION_UNITS_TL	org
193   WHERE a.inv_org_id = org.organization_id
194     AND org.language = :ISC_LANG
195     AND	((a.rnk between &START_INDEX and &END_INDEX) OR (&END_INDEX = -1))
196   ORDER BY rnk';
197 
198   ELSIF l_view_by = 'CUSTOMER+FII_CUSTOMERS'
199     THEN l_select_stmt := '
200  SELECT	cust.value						VIEWBY,
201 	NULL							ISC_ATTRIBUTE_2,
202 	NULL							ISC_ATTRIBUTE_3, -- drill across url
203 	NULL							ISC_ATTRIBUTE_4, -- item description
204 	'||l_measures||'
205    FROM
206 (SELECT	(rank() over (&ORDER_BY_CLAUSE nulls last, customer_id)) - 1		rnk,
207 	customer_id,
208 	'||l_measures||'
209    FROM
210 (SELECT	c.customer_id,	';
211 	l_inner_select_stmt := '
212 		 SELECT	fact.customer_id				CUSTOMER_ID,';
213 	l_inner_group_by_stmt := '
214 		GROUP BY fact.customer_id';
215 	l_where_stmt := '
216 	FII_CUSTOMERS_V			cust
217   WHERE a.customer_id = cust.id
218     AND	((a.rnk between &START_INDEX and &END_INDEX) OR (&END_INDEX = -1))
219   ORDER BY rnk';
220 
221   ELSE -- l_view_by = 'ITEM+ENI_ITEM_VBH_CAT'
222     l_select_stmt := '
223  SELECT	ecat.value					VIEWBY,
224 	ecat.id						VIEWBYID,
225 	NULL						ISC_ATTRIBUTE_2,
226 	decode(ecat.leaf_node_flag, ''Y'',
227 		''pFunctionName=ISC_DBI_DAYS_FULF&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=ITEM+ENI_ITEM_ORG&pParamIds=Y'',
228 		''pFunctionName=ISC_DBI_DAYS_FULF&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=ITEM+ENI_ITEM_VBH_CAT&pParamIds=Y'')
229 								ISC_ATTRIBUTE_3, -- drill across url
230 	NULL							ISC_ATTRIBUTE_4, -- item description
231 	'||l_measures||'
232    FROM
233 (SELECT (rank() over (&ORDER_BY_CLAUSE nulls last, item_category_id)) - 1	rnk,
234 	item_category_id,
235 	'||l_measures||'
236    FROM
237 (SELECT	c.item_category_id,	';
238   IF (l_prod_cat IS NULL OR l_prod_cat = '' OR l_prod_cat = 'All')
239     THEN
240 	l_inner_select_stmt := '
241 		 SELECT	eni_cat.parent_id				ITEM_CATEGORY_ID,';
242 	l_inner_group_by_stmt := '
243 		GROUP BY eni_cat.parent_id';
244     ELSE
245 	l_inner_select_stmt := '
246 		 SELECT	eni_cat.imm_child_id				ITEM_CATEGORY_ID,';
247 	l_inner_group_by_stmt := '
248 		GROUP BY eni_cat.imm_child_id';
249   END IF;
250 	l_where_stmt := '
251 	ENI_ITEM_VBH_NODES_V		ecat
252   WHERE a.item_category_id = ecat.id
253     AND	ecat.parent_id = ecat.child_id
254     AND	((a.rnk between &START_INDEX and &END_INDEX) OR (&END_INDEX = -1))
255   ORDER BY rnk';
256   END IF;
257 
258   IF ((l_view_by = 'ITEM+ENI_ITEM_VBH_CAT' OR l_view_by = 'ORGANIZATION+ORGANIZATION') AND
259       (l_prod IS NULL OR l_prod = '' OR l_prod = 'All') AND
260       (l_cust IS NULL OR l_cust = '' OR l_cust = 'All'))
261     THEN
262     	IF (l_view_by = 'ITEM+ENI_ITEM_VBH_CAT') THEN
263           IF (l_prod_cat IS NULL OR l_prod_cat = '' OR l_prod_cat = 'All')
264 	    THEN
265 	      l_inner_select_stmt := '
266 		 SELECT	fact.parent_id					ITEM_CATEGORY_ID,';
267 	      l_inner_group_by_stmt := '
268 		GROUP BY fact.parent_id';
269 	    ELSE
270 	      l_inner_select_stmt := '
271 		 SELECT fact.imm_child_id				ITEM_CATEGORY_ID,';
272 	      l_inner_group_by_stmt := '
273 		GROUP BY fact.imm_child_id';
274 	  END IF;
275         END IF;
276 
277         IF (l_prod_cat IS NULL OR l_prod_cat = '' OR l_prod_cat = 'All')
278 	  THEN
279 	    l_prod_cat_from := '';
280 	    l_prod_cat_where := '
281 		    AND fact.top_node_flag = ''Y''';
282 	  ELSE
283 	    l_prod_cat_from := '';
284 	    l_prod_cat_where := '
285 		    AND fact.parent_id = &ITEM+ENI_ITEM_VBH_CAT';
286 	END IF;
287 	l_mv := 'ISC_DBI_CFM_011_MV';
288 	l_flags_where := '
289 	    AND	fact.inv_org_flag = 0';
290     ELSE
291 	l_mv := 'ISC_DBI_CFM_002_MV';
292 	l_flags_where := '
293 	    AND fact.item_cat_flag = :ISC_ITEM_CAT_FLAG
294 	    AND fact.customer_flag = :ISC_CUST_FLAG';
295   END IF;
296 
297   l_stmt := l_select_stmt || '
298 	c.curr_fulf_days
299 	  / decode(c.curr_fulf_cnt, 0, NULL,
300 		   c.curr_fulf_cnt)				ISC_MEASURE_1, -- days fulf
301 	c.curr_fulf_days
302 	  / decode(c.curr_fulf_cnt, 0, NULL,
303 		   c.curr_fulf_cnt) -
304 	c.prev_fulf_days
305 	  / decode(c.prev_fulf_cnt, 0, NULL,
306 		   c.prev_fulf_cnt)				ISC_MEASURE_2, -- days fulf change
307 	sum(c.curr_fulf_days) over ()
308 	  / decode(sum(c.curr_fulf_cnt) over (), 0, NULL,
309 		   sum(c.curr_fulf_cnt) over ())		ISC_MEASURE_3, -- gd total days fulf
310 	sum(c.curr_fulf_days) over ()
311 	  / decode(sum(c.curr_fulf_cnt) over (), 0, NULL,
312 		   sum(c.curr_fulf_cnt) over ()) -
313 	sum(c.prev_fulf_days) over ()
314 	  / decode(sum(c.prev_fulf_cnt) over (), 0, NULL,
315 		   sum(c.prev_fulf_cnt) over ())		ISC_MEASURE_4, -- gd total days fulf change
316 	NULL							ISC_MEASURE_5,
317 	NULL							ISC_MEASURE_6,
318 	NULL							ISC_MEASURE_7,
319 	NULL							ISC_MEASURE_8,
320 	NULL							CURRENCY,	-- obsoleted from 5.0
321 	NULL							FND_CATEGORY,	-- obsoleted from 5.0
322 	NULL							FND_PRODUCT	-- obsoleted from 5.0
323 	   FROM	('||l_inner_select_stmt||'
324 		sum(decode(cal.report_date, &BIS_CURRENT_ASOF_DATE,
325 			   fact.book_to_fulfill_days, 0))		CURR_FULF_DAYS,
326 		sum(decode(cal.report_date, &BIS_PREVIOUS_ASOF_DATE,
327 			   fact.book_to_fulfill_days, 0))		PREV_FULF_DAYS,
328 		sum(decode(cal.report_date, &BIS_CURRENT_ASOF_DATE,
329 			   fact.book_to_fulfill_cnt, 0))		CURR_FULF_CNT,
330 		sum(decode(cal.report_date, &BIS_PREVIOUS_ASOF_DATE,
331 			   fact.book_to_fulfill_cnt, 0))		PREV_FULF_CNT
332 	   FROM '||l_mv||'			fact,
333 		FII_TIME_RPT_STRUCT_V		cal'||l_prod_cat_from||'
334 	  WHERE fact.time_id = cal.time_id
335 	    AND fact.return_flag = 0'||l_flags_where||'
336 	    AND cal.report_date IN (&BIS_CURRENT_ASOF_DATE, &BIS_PREVIOUS_ASOF_DATE)
337 	    AND cal.period_type_id = fact.period_type_id
338 	    AND bitand(cal.record_type_id, &BIS_NESTED_PATTERN) = cal.record_type_id'
339 		||l_inv_org_where
340 		||l_prod_cat_where
341 		||l_prod_where
342 		||l_cust_where
343 		||l_inner_group_by_stmt||')	c)
344 	  WHERE	ISC_MEASURE_1 IS NOT NULL
345 	     OR	ISC_MEASURE_2 IS NOT NULL)	a,'
346 		||l_where_stmt;
347 
348   x_custom_sql := l_stmt;
349 
350   l_custom_rec.attribute_name := ':ISC_ITEM_CAT_FLAG';
351   l_custom_rec.attribute_value := to_char(l_item_cat_flag);
352   l_custom_Rec.attribute_type := bis_pmv_parameters_pub.bind_type;
353   l_custom_rec.attribute_data_type := bis_pmv_parameters_pub.integer_bind;
354   x_custom_output.extend;
355   x_custom_output(1) := l_custom_rec;
356 
357   l_custom_rec.attribute_name := ':ISC_CUST_FLAG';
358   l_custom_rec.attribute_value := to_char(l_cust_flag);
359   l_custom_Rec.attribute_type := bis_pmv_parameters_pub.bind_type;
360   l_custom_rec.attribute_data_type := bis_pmv_parameters_pub.integer_bind;
361   x_custom_output.extend;
362   x_custom_output(2) := l_custom_rec;
363 
364   l_custom_rec.attribute_name := ':ISC_LANG';
365   l_custom_rec.attribute_value := l_lang;
366   l_custom_Rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
367   l_custom_Rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
368   x_custom_output.EXTEND;
369   x_custom_output(3) := l_custom_rec;
370 
371 END Get_Sql;
372 
373 END ISC_DBI_DAYS_FULF_PKG;