[Home] [Help]
PACKAGE BODY: APPS.ISC_DBI_DAYS_SHIP_TREND_PKG
Source
1 PACKAGE BODY ISC_DBI_DAYS_SHIP_TREND_PKG AS
2 /* $Header: ISCRG71B.pls 120.3 2006/05/03 03:08:39 achandak noship $ */
3
4
5 PROCEDURE Get_Sql ( p_param IN BIS_PMV_PAGE_PARAMETER_TBL,
6 x_custom_sql OUT NOCOPY VARCHAR2,
7 x_custom_output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL) IS
8
9 l_stmt VARCHAR2(10000);
10 l_period_type VARCHAR2(10000);
11 l_inv_org VARCHAR2(10000);
12 l_inv_org_where VARCHAR2(10000);
13 l_item VARCHAR2(10000);
14 l_item_where VARCHAR2(10000);
15 l_inv_cat VARCHAR2(10000);
16 l_inv_cat_where VARCHAR2(10000);
17 l_customer VARCHAR2(10000);
18 l_customer_where VARCHAR2(10000);
19 l_item_cat_flag NUMBER; -- 0 for item, 1 for inv category
20 l_customer_flag NUMBER; -- 0 for customer level, 1 for no-customer level
21 l_agg_level NUMBER;
22
23 l_custom_rec BIS_QUERY_ATTRIBUTES;
24 l_att_2 VARCHAR2(255);
25 BEGIN
26
27 FOR i IN 1..p_param.COUNT
28 LOOP
29
30 IF(p_param(i).parameter_name = 'PERIOD_TYPE')
31 THEN l_period_type := p_param(i).parameter_value;
32 END IF;
33
34 IF(p_param(i).parameter_name = 'ORGANIZATION+ORGANIZATION')
35 THEN l_inv_org := p_param(i).parameter_value;
36 END IF;
37
38 IF(p_param(i).parameter_name = 'ITEM+ENI_ITEM_INV_CAT')
39 THEN l_inv_cat := p_param(i).parameter_value;
40 END IF;
41
42 IF(p_param(i).parameter_name = 'ITEM+ENI_ITEM_ORG')
43 THEN l_item := p_param(i).parameter_value;
44 END IF;
45
46 IF(p_param(i).parameter_name = 'CUSTOMER+FII_CUSTOMERS')
47 THEN l_customer := p_param(i).parameter_value;
48 END IF;
49
50 END LOOP;
51
52 IF(l_inv_cat IS NULL OR l_inv_cat = 'All')
53 THEN l_inv_cat_where := '';
54 ELSE l_inv_cat_where := '
55 AND fact.item_category_id IN (&ITEM+ENI_ITEM_INV_CAT)';
56 END IF;
57
58 IF(l_item IS NULL OR l_item = 'All')
59 THEN l_item_where := '';
60 ELSE l_item_where := '
61 AND fact.item_id IN (&ITEM+ENI_ITEM_ORG)';
62 END IF;
63
64 IF (l_inv_org IS NULL OR l_inv_org = 'All')
65 THEN l_inv_org_where := '
66 AND (EXISTS
67 (SELECT 1
68 FROM org_access o
69 WHERE o.responsibility_id = fnd_global.resp_id
70 AND o.resp_application_id = fnd_global.resp_appl_id
71 AND o.organization_id = fact.inv_org_id)
72 OR EXISTS
73 (SELECT 1
74 FROM mtl_parameters org
75 WHERE org.organization_id = fact.inv_org_id
76 AND NOT EXISTS
77 (SELECT 1
78 FROM org_access ora
79 WHERE org.organization_id = ora.organization_id)))';
80
81 ELSE l_inv_org_where := '
82 AND fact.inv_org_id = &ORGANIZATION+ORGANIZATION';
83 END IF;
84
85 IF (l_customer IS NULL OR l_customer = 'All')
86 THEN l_customer_where :='';
87 l_customer_flag := 1; -- do not need customer id
88 ELSE l_customer_where :='
89 AND fact.customer_id IN (&CUSTOMER+FII_CUSTOMERS)';
90 l_customer_flag := 0; -- customer level
91 END IF;
92
93 IF((l_inv_cat IS NULL OR l_inv_cat = 'All') AND (l_item IS NULL OR l_item = 'All'))
94 THEN l_item_cat_flag := 3; -- no grouping on item dimension
95 ELSE
96 IF (l_item IS NULL OR l_item = 'All')
97 THEN l_item_cat_flag := 1; -- inventory category
98 ELSE l_item_cat_flag := 0; -- item
99 END IF;
100 END IF;
101
102 CASE
103 WHEN (l_item_cat_flag = 0 and l_customer_flag = 0) THEN l_agg_level := 0;
104 WHEN (l_item_cat_flag = 1 and l_customer_flag = 0) THEN l_agg_level := 4;
105 WHEN (l_item_cat_flag = 3 and l_customer_flag = 0) THEN l_agg_level := 2;
106 WHEN (l_item_cat_flag = 0 and l_customer_flag = 1) THEN l_agg_level := 1;
107 WHEN (l_item_cat_flag = 1 and l_customer_flag = 1) THEN l_agg_level := 5;
108 WHEN (l_item_cat_flag = 3 and l_customer_flag = 1) THEN l_agg_level := 3;
109 END CASE;
110
111 l_custom_rec := BIS_PMV_PARAMETERS_PUB.Initialize_Query_Type;
112 x_custom_output := bis_query_attributes_tbl();
113
114 If l_period_type = 'FII_TIME_WEEK' then
115 l_att_2 := '''AS_OF_DATE=''||'|| 'to_char(fii1.end_date,''DD/MM/YYYY'')' || '||''&pFunctionName=ISC_DBI_DAYS_SHIP_TREND&TIME+FII_TIME_DAY=TIME+FII_TIME_DAY&pParameters=pParamIds@Y''';
116 else
117 l_att_2 := 'NULL ';
118 end if;
119
120 If l_period_type = 'FII_TIME_DAY' then
121 l_stmt := 'SELECT fii1.start_date VIEWBY, fii1.start_date ISC_ATTRIBUTE_2, '
122 || l_att_2 || ' ISC_ATTRIBUTE_3, nvl(s.curr_book_to_ship_days,0) ISC_MEASURE_1,
123 nvl(s.curr_shipped_line_cnt,0) ISC_MEASURE_2,
124 nvl(s.prev_book_to_ship_days,0) /
125 decode(nvl(s.prev_shipped_line_cnt,0), 0, NULL,
126 abs(nvl(s.prev_shipped_line_cnt,0))) ISC_MEASURE_5,
127 nvl(s.prev_book_to_ship_days,0) ISC_MEASURE_3,
128 nvl(s.prev_shipped_line_cnt,0) ISC_MEASURE_4,
129 nvl(s.curr_book_to_ship_days,0) /
130 decode(nvl(s.curr_shipped_line_cnt,0), 0, NULL,
131 abs(nvl(s.curr_shipped_line_cnt,0))) ISC_MEASURE_6,
132 nvl(s.curr_book_to_ship_days,0) /
133 decode(nvl(s.curr_shipped_line_cnt,0), 0, NULL,
134 abs(nvl(s.curr_shipped_line_cnt,0))) -
135 nvl(s.prev_book_to_ship_days,0) /
136 decode(nvl(s.prev_shipped_line_cnt,0), 0, NULL,
137 abs(nvl(s.prev_shipped_line_cnt,0))) ISC_MEASURE_7,
138 null CURRENCY, -- obsolete
139 null ISC_CALC_ITEM_2, -- obsolete
140 null ISC_CALC_ITEM_1, -- obsolete
141 null ISC_CALC_ITEM_3 -- obsolete
142 FROM (SELECT dates.start_date START_DATE,
143 sum(decode(dates.period, ''C'',
144 nvl(fact.book_to_ship_days,0), 0)) CURR_BOOK_TO_SHIP_DAYS,
145 sum(decode(dates.period, ''P'',
146 nvl(fact.book_to_ship_days,0), 0)) PREV_BOOK_TO_SHIP_DAYS,
147 sum(decode(dates.period, ''C'',
148 nvl(fact.shipped_line_cnt,0), 0)) CURR_SHIPPED_LINE_CNT,
149 sum(decode(dates.period, ''P'',
150 nvl(fact.shipped_line_cnt,0), 0)) PREV_SHIPPED_LINE_CNT
151 FROM (SELECT fii1.start_date START_DATE,
152 ''C'' PERIOD,
153 least(fii1.end_date, &BIS_CURRENT_ASOF_DATE) REPORT_DATE
154 FROM '||l_period_type||' fii1
155 WHERE fii1.start_date BETWEEN &BIS_CURRENT_REPORT_START_DATE
156 AND &BIS_CURRENT_ASOF_DATE
157 UNION ALL
158 SELECT p2.start_date START_DATE,
159 ''P'' PERIOD,
160 p1.report_date REPORT_DATE
161 FROM (SELECT least(fii1.end_date, &BIS_PREVIOUS_ASOF_DATE) REPORT_DATE,
162 rownum ID
163 FROM '||l_period_type||' fii1
164 WHERE fii1.start_date BETWEEN &BIS_PREVIOUS_REPORT_START_DATE
165 AND &BIS_PREVIOUS_ASOF_DATE
166 ORDER BY fii1.start_date DESC) p1,
167 (SELECT fii1.start_date START_DATE,
168 rownum ID
169 FROM '||l_period_type||' fii1
170 WHERE fii1.start_date BETWEEN &BIS_CURRENT_REPORT_START_DATE
171 AND &BIS_CURRENT_ASOF_DATE
172 ORDER BY fii1.start_date DESC) p2
173 WHERE p1.id(+) = p2.id) dates,
174 ISC_DBI_FM_0000_MV fact
175 WHERE fact.agg_level = :ISC_AGG_LEVEL
176 AND fact.time_id = to_char(dates.report_date,''j'')
177 AND fact.period_type_id = 1 '
178 ||l_inv_org_where
179 ||l_inv_cat_where
180 ||l_item_where
181 ||l_customer_where||'
182 GROUP BY dates.start_date) s,
183 '||l_period_type||' fii1
184 WHERE fii1.start_date BETWEEN &BIS_CURRENT_REPORT_START_DATE
185 AND &BIS_CURRENT_ASOF_DATE
186 AND fii1.start_date = s.start_date(+)
187 ORDER BY fii1.start_date';
188 else
189 l_stmt := 'SELECT fii1.NAME VIEWBY, fii1.NAME ISC_ATTRIBUTE_2, '
190 || l_att_2 || ' ISC_ATTRIBUTE_3, nvl(s.curr_book_to_ship_days,0) ISC_MEASURE_1,
191 nvl(s.curr_shipped_line_cnt,0) ISC_MEASURE_2,
192 nvl(s.prev_book_to_ship_days,0) /
193 decode(nvl(s.prev_shipped_line_cnt,0), 0, NULL,
194 abs(nvl(s.prev_shipped_line_cnt,0))) ISC_MEASURE_5,
195 nvl(s.prev_book_to_ship_days,0) ISC_MEASURE_3,
196 nvl(s.prev_shipped_line_cnt,0) ISC_MEASURE_4,
197 nvl(s.curr_book_to_ship_days,0) /
198 decode(nvl(s.curr_shipped_line_cnt,0), 0, NULL,
199 abs(nvl(s.curr_shipped_line_cnt,0))) ISC_MEASURE_6,
200 nvl(s.curr_book_to_ship_days,0) /
201 decode(nvl(s.curr_shipped_line_cnt,0), 0, NULL,
202 abs(nvl(s.curr_shipped_line_cnt,0))) -
203 nvl(s.prev_book_to_ship_days,0) /
204 decode(nvl(s.prev_shipped_line_cnt,0), 0, NULL,
205 abs(nvl(s.prev_shipped_line_cnt,0))) ISC_MEASURE_7,
206 null CURRENCY, -- obsolete
207 null ISC_CALC_ITEM_2, -- obsolete
208 null ISC_CALC_ITEM_1, -- obsolete
209 null ISC_CALC_ITEM_3 -- obsolete
210 FROM (SELECT dates.start_date START_DATE,
211 sum(decode(dates.period, ''C'',
212 nvl(fact.book_to_ship_days,0), 0)) CURR_BOOK_TO_SHIP_DAYS,
213 sum(decode(dates.period, ''P'',
214 nvl(fact.book_to_ship_days,0), 0)) PREV_BOOK_TO_SHIP_DAYS,
215 sum(decode(dates.period, ''C'',
216 nvl(fact.shipped_line_cnt,0), 0)) CURR_SHIPPED_LINE_CNT,
217 sum(decode(dates.period, ''P'',
218 nvl(fact.shipped_line_cnt,0), 0)) PREV_SHIPPED_LINE_CNT
219 FROM (SELECT fii1.start_date START_DATE,
220 ''C'' PERIOD,
221 least(fii1.end_date, &BIS_CURRENT_ASOF_DATE) REPORT_DATE
222 FROM '||l_period_type||' fii1
223 WHERE fii1.start_date BETWEEN &BIS_CURRENT_REPORT_START_DATE
224 AND &BIS_CURRENT_ASOF_DATE
225 UNION ALL
226 SELECT p2.start_date START_DATE,
227 ''P'' PERIOD,
228 p1.report_date REPORT_DATE
229 FROM (SELECT least(fii1.end_date, &BIS_PREVIOUS_ASOF_DATE) REPORT_DATE,
230 rownum ID
231 FROM '||l_period_type||' fii1
232 WHERE fii1.start_date BETWEEN &BIS_PREVIOUS_REPORT_START_DATE
233 AND &BIS_PREVIOUS_ASOF_DATE
234 ORDER BY fii1.start_date DESC) p1,
235 (SELECT fii1.start_date START_DATE,
236 rownum ID
237 FROM '||l_period_type||' fii1
238 WHERE fii1.start_date BETWEEN &BIS_CURRENT_REPORT_START_DATE
239 AND &BIS_CURRENT_ASOF_DATE
240 ORDER BY fii1.start_date DESC) p2
241 WHERE p1.id(+) = p2.id) dates,
242 ISC_DBI_FM_0000_MV fact,
243 FII_TIME_RPT_STRUCT_V cal
244 WHERE cal.report_date = dates.report_date
245 AND bitand(cal.record_type_id, &BIS_NESTED_PATTERN) = cal.record_type_id
246 AND fact.time_id = cal.time_id
247 AND fact.period_type_id = cal.period_type_id
248 AND fact.agg_level = :ISC_AGG_LEVEL'
249 ||l_inv_org_where
250 ||l_inv_cat_where
251 ||l_item_where
252 ||l_customer_where||'
253 GROUP BY dates.start_date) s,
254 '||l_period_type||' fii1
255 WHERE fii1.start_date BETWEEN &BIS_CURRENT_REPORT_START_DATE
256 AND &BIS_CURRENT_ASOF_DATE
257 AND fii1.start_date = s.start_date(+)
258 ORDER BY fii1.start_date';
259 end if;
260
261
262 x_custom_sql := l_stmt;
263
264 l_custom_rec.attribute_name := BIS_PMV_PARAMETERS_PUB.View_By_Value;
265 l_custom_rec.attribute_value := 'TIME+'||l_period_type;
266 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.View_By_Type;
267 x_custom_output.extend;
268 x_custom_output(1) := l_custom_rec;
269
270 l_custom_rec.attribute_name := ':ISC_AGG_LEVEL';
271 l_custom_rec.attribute_value := to_char(l_agg_level);
272 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.Bind_Type;
273 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.Integer_Bind;
274 x_custom_output.extend;
275 x_custom_output(2) := l_custom_rec;
276
277 END Get_Sql;
278 END ISC_DBI_DAYS_SHIP_TREND_PKG;