[Home] [Help]
PACKAGE BODY: APPS.ISC_DBI_BACKORDER_TREND_PKG
Source
1 PACKAGE BODY ISC_DBI_BACKORDER_TREND_PKG AS
2 /* $Header: ISCRGAWB.pls 120.2 2006/06/26 06:31:37 abhdixi 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_sql_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
20 l_custom_rec BIS_QUERY_ATTRIBUTES;
21 l_att_2 VARCHAR2(255);
22 BEGIN
23
24 FOR i IN 1..p_param.COUNT
25 LOOP
26
27 IF(p_param(i).parameter_name = 'PERIOD_TYPE')
28 THEN l_period_type := p_param(i).parameter_value;
29 END IF;
30
31 IF(p_param(i).parameter_name = 'ORGANIZATION+ORGANIZATION')
32 THEN l_inv_org := p_param(i).parameter_value;
33 END IF;
34
35 IF(p_param(i).parameter_name = 'ITEM+ENI_ITEM_INV_CAT')
36 THEN l_inv_cat := p_param(i).parameter_value;
37 END IF;
38
39 IF(p_param(i).parameter_name = 'ITEM+ENI_ITEM_ORG')
40 THEN l_item := p_param(i).parameter_value;
41 END IF;
42
43 IF(p_param(i).parameter_name = 'CUSTOMER+FII_CUSTOMERS')
44 THEN l_customer := p_param(i).parameter_value;
45 END IF;
46
47 END LOOP;
48
49 IF(l_inv_org IS NULL OR l_inv_org = 'All')
50 THEN l_inv_org_where := '
51 AND (EXISTS
52 (SELECT 1
53 FROM org_access o
54 WHERE o.responsibility_id = fnd_global.resp_id
55 AND o.resp_application_id = fnd_global.resp_appl_id
56 AND o.organization_id = mv.inv_org_id)
57 OR EXISTS
58 (SELECT 1
59 FROM mtl_parameters org
60 WHERE org.organization_id = mv.inv_org_id
61 AND NOT EXISTS
62 (SELECT 1
63 FROM org_access ora
64 WHERE org.organization_id = ora.organization_id)))';
65 ELSE l_inv_org_where := '
66 AND inv_org_id = &ORGANIZATION+ORGANIZATION';
67 END IF;
68
69 IF (l_customer IS NULL OR l_customer = 'All')
70 THEN l_customer_where :='';
71 ELSE l_customer_where :='
72 AND mv.customer_id IN (&CUSTOMER+FII_CUSTOMERS)';
73 END IF;
74
75 IF(l_inv_cat IS NULL OR l_inv_cat = 'All')
76 THEN l_inv_cat_where := '';
77 ELSE l_inv_cat_where := '
78 AND item_category_id IN (&ITEM+ENI_ITEM_INV_CAT)';
79 END IF;
80
81 IF(l_item IS NULL OR l_item = 'All')
82 THEN l_item_where := '';
83 ELSE l_item_where := '
84 AND item_id IN (&ITEM+ENI_ITEM_ORG)';
85 END IF;
86
87 l_custom_rec := BIS_PMV_PARAMETERS_PUB.Initialize_Query_Type;
88 x_custom_output := bis_query_attributes_tbl();
89
90 If l_period_type = 'FII_TIME_WEEK' then
91 l_att_2 := '''AS_OF_DATE=''||'|| 'to_char(fii1.end_date,''DD/MM/YYYY'')' || '||''&pFunctionName=ISC_DBI_BACKORDER_TREND&TIME+FII_TIME_DAY=TIME+FII_TIME_DAY&pParameters=pParamIds@Y''';
92 else
93 l_att_2 := 'NULL ';
94 end if;
95
96 If l_period_type = 'FII_TIME_DAY' then
97 l_sql_stmt := 'SELECT fii1.start_date VIEWBY,';
98 l_sql_stmt := l_sql_stmt || l_att_2 || ' ISC_ATTRIBUTE_2,
99 s.prev_bkord_lines ISC_MEASURE_2, -- Backordered Lines - prior
100 s.curr_bkord_lines ISC_MEASURE_1, -- Backordered Lines
101 (s.curr_bkord_lines - s.prev_bkord_lines)
102 / decode( s.prev_bkord_lines, 0, NULL,
103 abs(s.prev_bkord_lines)) * 100
104 ISC_MEASURE_3, -- (Backordered Lines) Change
105 s.prev_bkord_items ISC_MEASURE_5, -- Backordered Items - prior
106 s.curr_bkord_items ISC_MEASURE_4, -- Backordered Items
107 (s.curr_bkord_items - s.prev_bkord_items)
108 / decode( s.prev_bkord_items, 0, NULL,
109 abs(s.prev_bkord_items)) * 100
110 ISC_MEASURE_6 -- (Backordered Items) Change
111 FROM (SELECT dates.start_date START_DATE,
112 sum(decode(mv.time_snapshot_date_id, dates.curr_day,
113 mv.backorder_line_cnt, NULL)) CURR_BKORD_LINES,
114 sum(decode(mv.time_snapshot_date_id, dates.prev_day,
115 mv.backorder_line_cnt, NULL)) PREV_BKORD_LINES,
116 count(distinct(decode(mv.time_snapshot_date_id, dates.curr_day,
117 decode(mv.item_id,''-'',null,mv.item_id),
118 null))) CURR_BKORD_ITEMS,
119 count(distinct(decode(mv.time_snapshot_date_id, dates.prev_day,
120 decode(mv.item_id,''-'',null,mv.item_id),
121 null))) PREV_BKORD_ITEMS
122 FROM (SELECT curr.start_date START_DATE,
123 curr.day CURR_DAY,
124 prev.day PREV_DAY
125 FROM (SELECT start_date,
126 day,
127 rownum ID
128 FROM
129 (SELECT fii1.start_date START_DATE,
130 fii1.start_date DAY
131 FROM '||l_period_type||' fii1
132 WHERE fii1.start_date BETWEEN &BIS_CURRENT_REPORT_START_DATE
133 AND &BIS_CURRENT_ASOF_DATE
134 )
135 ORDER BY start_date DESC) curr,
136 (SELECT start_date,
137 day,
138 rownum ID
139 FROM
140 (SELECT fii1.start_date START_DATE,
141 fii1.start_date DAY
142 FROM '||l_period_type||' fii1
143 WHERE fii1.start_date BETWEEN &BIS_PREVIOUS_REPORT_START_DATE
144 AND &BIS_PREVIOUS_ASOF_DATE)
145 ORDER BY start_date DESC) prev
146 WHERE curr.id = prev.id(+)) dates,
147 ISC_DBI_FM_0007_MV mv
148 WHERE mv.time_snapshot_date_id IN (dates.curr_day, dates.prev_day)
149 AND ((1=1'
150 ||l_inv_org_where
151 ||l_inv_cat_where
152 ||l_item_where
153 ||l_customer_where
154 ||')
155 OR mv.inv_org_id IS NULL) -- snapshot taken but no data
156 GROUP BY dates.start_date) s,
157 '||l_period_type||' fii1
158 WHERE fii1.start_date BETWEEN &BIS_CURRENT_REPORT_START_DATE
159 AND &BIS_CURRENT_ASOF_DATE
160 AND fii1.start_date = s.start_date(+)
161 ORDER BY fii1.start_date';
162 else
163 l_sql_stmt := 'SELECT fii1.NAME VIEWBY,';
164 l_sql_stmt := l_sql_stmt || l_att_2 || ' ISC_ATTRIBUTE_2,
165 s.prev_bkord_lines ISC_MEASURE_2, -- Backordered Lines - prior
166 s.curr_bkord_lines ISC_MEASURE_1, -- Backordered Lines
167 (s.curr_bkord_lines - s.prev_bkord_lines)
168 / decode( s.prev_bkord_lines, 0, NULL,
169 abs(s.prev_bkord_lines)) * 100
170 ISC_MEASURE_3, -- (Backordered Lines) Change
171 s.prev_bkord_items ISC_MEASURE_5, -- Backordered Items - prior
172 s.curr_bkord_items ISC_MEASURE_4, -- Backordered Items
173 (s.curr_bkord_items - s.prev_bkord_items)
174 / decode( s.prev_bkord_items, 0, NULL,
175 abs(s.prev_bkord_items)) * 100
176 ISC_MEASURE_6 -- (Backordered Items) Change
177 FROM (SELECT dates.start_date START_DATE,
178 sum(decode(mv.time_snapshot_date_id, dates.curr_day,
179 mv.backorder_line_cnt, NULL)) CURR_BKORD_LINES,
180 sum(decode(mv.time_snapshot_date_id, dates.prev_day,
181 mv.backorder_line_cnt, NULL)) PREV_BKORD_LINES,
182 count(distinct(decode(mv.time_snapshot_date_id, dates.curr_day,
183 decode(mv.item_id,''-'',null,mv.item_id),
184 null))) CURR_BKORD_ITEMS,
185 count(distinct(decode(mv.time_snapshot_date_id, dates.prev_day,
186 decode(mv.item_id,''-'',null,mv.item_id),
187 null))) PREV_BKORD_ITEMS
188 FROM (SELECT curr.start_date START_DATE,
189 curr.day CURR_DAY,
190 prev.day PREV_DAY
191 FROM (SELECT start_date,
192 day,
193 rownum ID
194 FROM
195 (SELECT fii1.start_date START_DATE,
196 max(mv.time_snapshot_date_id) DAY
197 FROM '||l_period_type||' fii1,
198 ISC_DBI_FM_0007_MV mv
199 WHERE fii1.start_date BETWEEN &BIS_CURRENT_REPORT_START_DATE
200 AND &BIS_CURRENT_ASOF_DATE
201 AND mv.time_snapshot_date_id (+) >= fii1.start_date
202 AND mv.time_snapshot_date_id (+) <= fii1.end_date
203 AND mv.time_snapshot_date_id (+) <= &BIS_CURRENT_ASOF_DATE
204 GROUP BY fii1.start_date)
205 ORDER BY start_date DESC) curr,
206 (SELECT start_date,
207 day,
208 rownum ID
209 FROM
210 (SELECT fii1.start_date START_DATE,
211 max(mv.time_snapshot_date_id) DAY
212 FROM '||l_period_type||' fii1,
213 ISC_DBI_FM_0007_MV mv
214 WHERE fii1.start_date BETWEEN &BIS_PREVIOUS_REPORT_START_DATE
215 AND &BIS_PREVIOUS_ASOF_DATE
216 AND mv.time_snapshot_date_id (+) >= fii1.start_date
217 AND mv.time_snapshot_date_id (+) <= fii1.end_date
218 AND mv.time_snapshot_date_id (+) <= &BIS_PREVIOUS_ASOF_DATE
219 GROUP BY fii1.start_date)
220 ORDER BY start_date DESC) prev
221 WHERE curr.id = prev.id(+)) dates,
222 ISC_DBI_FM_0007_MV mv
223 WHERE mv.time_snapshot_date_id IN (dates.curr_day, dates.prev_day)
224 AND ((1=1'
225 ||l_inv_org_where
226 ||l_inv_cat_where
227 ||l_item_where
228 ||l_customer_where
229 ||')
230 OR mv.inv_org_id IS NULL) -- snapshot taken but no data
231 GROUP BY dates.start_date) s,
232 '||l_period_type||' fii1
233 WHERE fii1.start_date BETWEEN &BIS_CURRENT_REPORT_START_DATE
234 AND &BIS_CURRENT_ASOF_DATE
235 AND fii1.start_date = s.start_date(+)
236 ORDER BY fii1.start_date';
237 end if;
238
239 x_custom_sql := l_sql_stmt;
240
241 l_custom_rec.attribute_name := BIS_PMV_PARAMETERS_PUB.View_By_Value;
242 l_custom_rec.attribute_value := 'TIME+'||l_period_type;
243 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.View_By_Type;
244 x_custom_output.extend;
245 x_custom_output(1) := l_custom_rec;
246
247 END Get_Sql;
248
249 END ISC_DBI_BACKORDER_TREND_PKG ;
250