DBA Data[Home] [Help]

PACKAGE BODY: APPS.POA_DBI_PCL_PKG

Source


1 PACKAGE BODY poa_dbi_pcl_pkg
2 /* $Header: poadbipclb.pls 120.0 2005/06/01 14:39:15 appldev noship $ */
3 
4 AS
5 
6   FUNCTION get_status_sel_clause(p_view_by_col in VARCHAR2, p_url in VARCHAR2) return VARCHAR2;
7   FUNCTION get_trend_sel_clause return VARCHAR2;
8   FUNCTION get_status_filter_where return VARCHAR2;
9 
10   FUNCTION get_kpi_filter_where return VARCHAR2;
11 
12   PROCEDURE status_sql(p_param in BIS_PMV_PAGE_PARAMETER_TBL,
13                       x_custom_sql  OUT NOCOPY VARCHAR2,
14                       x_custom_output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
15   IS
16 	l_query varchar2(4000);
17         l_view_by varchar2(120);
18 	l_view_by_col varchar2(120);
19         l_as_of_date date;
20         l_prev_as_of_date date;
21         l_xtd varchar2(10);
22         l_comparison_type varchar2(1) := 'Y';
23         l_nested_pattern number;
24         l_cur_suffix varchar2(2);
25         l_url varchar2(300);
26         l_custom_sql varchar2(4000);
27         l_col_tbl poa_dbi_util_pkg.POA_DBI_COL_TBL;
28 	l_join_tbl poa_dbi_util_pkg.POA_DBI_JOIN_TBL;
29 	l_in_join_tbl poa_dbi_util_pkg.POA_DBI_IN_JOIN_TBL;
30 	l_where_clause VARCHAR2(2000);
31 	l_view_by_value VARCHAR2(100);
32 	l_mv VARCHAR2(30);
33 
34   BEGIN
35    l_join_tbl := poa_dbi_util_pkg.POA_DBI_JOIN_TBL();
36    l_col_tbl := poa_dbi_util_pkg.POA_DBI_COL_TBL();
37 
38   poa_dbi_sutil_pkg.process_parameters(p_param,l_view_by,l_view_by_col,l_view_by_value, l_comparison_type, l_xtd, l_as_of_date, l_prev_as_of_date, l_cur_suffix, l_nested_pattern, l_where_clause, l_mv, l_join_tbl, l_in_join_tbl,
39 x_custom_output,
40                                        'N','PO', '5.0', 'VPP','POD');
41 
42    poa_dbi_util_pkg.add_column(l_col_tbl, 'p_contract_amt_' || l_cur_suffix, 'p_contract_amt');
43    poa_dbi_util_pkg.add_column(l_col_tbl, 'p_savings_amt_' || l_cur_suffix, 'p_savings_amt');
44    poa_dbi_util_pkg.add_column(l_col_tbl, 'purchase_amt_' || l_cur_suffix, 'purchase_amt');
45 
46   if((l_view_by = 'HRI_PERSON+HRI_PER') and (l_view_by_value is not null) and (instr(l_view_by_value,',') = 0)) then
47     l_url := null;
48   else
49     l_url := 'pFunctionName=POA_DBI_PCL_STATUS_RPT&VIEW_BY_NAME=VIEW_BY_VALUE&VIEW_BY=HRI_PERSON+HRI_PER';
50   end if;
51 
52   l_query := get_status_sel_clause(l_view_by_col, l_url) || ' from
53               '|| poa_dbi_template_pkg.status_sql(
54                                               l_mv,
55                                               l_where_clause,
56                                               l_join_tbl,
57                                               p_use_windowing => 'Y',
58                                               p_col_name => l_col_tbl,
59 					      p_use_grpid => 'N',
60 					      p_filter_where => get_status_filter_where,
61                                               p_in_join_tables => l_in_join_tbl);
62 
63   x_custom_sql := l_query;
64 
65   end;
66 
67   PROCEDURE trend_sql(p_param in BIS_PMV_PAGE_PARAMETER_TBL,
68                       x_custom_sql  OUT NOCOPY VARCHAR2,
69                       x_custom_output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
70   IS
71 	l_query varchar2(4000);
72         l_view_by varchar2(120);
73 	l_view_by_col varchar2(120);
74         l_as_of_date date;
75         l_prev_as_of_date date;
76         l_xtd varchar2(10);
77         l_comparison_type varchar2(1) := 'Y';
78         l_nested_pattern number;
79         l_cur_suffix varchar2(2);
80         l_custom_sql varchar2(4000);
81         l_col_tbl poa_dbi_util_pkg.POA_DBI_COL_TBL;
82 	l_join_tbl poa_dbi_util_pkg.POA_DBI_JOIN_TBL;
83 	l_in_join_tbl poa_dbi_util_pkg.POA_DBI_IN_JOIN_TBL;
84 	l_mv VARCHAR2(30);
85 	l_where_clause VARCHAR2(2000);
86 	l_view_by_value VARCHAR2(100);
87   BEGIN
88   l_join_tbl := poa_dbi_util_pkg.POA_DBI_JOIN_TBL();
89   l_col_tbl := poa_dbi_util_pkg.POA_DBI_COL_TBL();
90 
91  poa_dbi_sutil_pkg.process_parameters(p_param,l_view_by,l_view_by_col,l_view_by_value,l_comparison_type, l_xtd, l_as_of_date, l_prev_as_of_date, l_cur_suffix, l_nested_pattern, l_where_clause, l_mv, l_join_tbl, l_in_join_tbl,
92 x_custom_output,
93                                      'Y','PO', '5.0', 'VPP','POD');
94 
95  poa_dbi_util_pkg.add_column(l_col_tbl, 'purchase_amt_' || l_cur_suffix, 'purchase_amt', 'N');
96  poa_dbi_util_pkg.add_column(l_col_tbl, 'p_contract_amt_' || l_cur_suffix, 'p_contract_amt', 'N');
97 
98   l_query := get_trend_sel_clause || ' from
99              '|| poa_dbi_template_pkg.trend_sql(
100                                               l_xtd,
101                                               l_comparison_type,
102                                               l_mv,
103                                               l_where_clause,
104                                               l_col_tbl,
105 					      p_use_grpid => 'N',
106                                               p_in_join_tables => l_in_join_tbl);
107 
108 
109   x_custom_sql := l_query;
110 
111   END;
112 
113   PROCEDURE kpi_sql(p_param in BIS_PMV_PAGE_PARAMETER_TBL,
114                       x_custom_sql  OUT NOCOPY VARCHAR2,
115                       x_custom_output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
116   IS
117        l_query varchar2(4000);
118        l_view_by varchar2(120);
119 	l_view_by_col varchar2(120);
120        l_as_of_date date;
121        l_prev_as_of_date date;
122        l_xtd varchar2(10);
123        l_comparison_type varchar2(1) := 'Y';
124        l_nested_pattern number;
125        l_org_where varchar2(500);
126        l_cur_suffix varchar2(2);
127   	l_custom_sql varchar2(4000);
128        	l_col_tbl poa_dbi_util_pkg.POA_DBI_COL_TBL;
129 	l_where_clause varchar2(1000);
130 	l_mv varchar2(30);
131   	l_join_rec poa_dbi_util_pkg.POA_DBI_JOIN_REC;
132 	l_join_tbl poa_dbi_util_pkg.POA_DBI_JOIN_TBL;
133 	l_in_join_tbl poa_dbi_util_pkg.POA_DBI_IN_JOIN_TBL;
134   	l_custom_rec BIS_QUERY_ATTRIBUTES;
135 	l_view_by_value VARCHAR2(100);
136   begin                                                                           l_join_tbl := poa_dbi_util_pkg.POA_DBI_JOIN_TBL();
137   l_col_tbl := poa_dbi_util_pkg.POA_DBI_COL_TBL();
138 
139  poa_dbi_sutil_pkg.process_parameters(p_param,l_view_by,l_view_by_col,l_view_by_value,l_comparison_type, l_xtd, l_as_of_date, l_prev_as_of_date, l_cur_suffix, l_nested_pattern, l_where_clause, l_mv, l_join_tbl, l_in_join_tbl,
140 x_custom_output,
141                                       'N','PO', '5.0', 'VPP','POD');
142 
143   poa_dbi_util_pkg.add_column(l_col_tbl, 'purchase_amt_' || l_cur_suffix, 'purchase_amt');
144   poa_dbi_util_pkg.add_column(l_col_tbl, 'p_contract_amt_' || l_cur_suffix, 'p_contract_amt');
145   poa_dbi_util_pkg.add_column(l_col_tbl, 'n_contract_amt_' || l_cur_suffix, 'n_contract_amt');
146 
147   l_join_tbl := poa_dbi_util_pkg.POA_DBI_JOIN_TBL();
148 
149   l_join_rec.table_name :=
150 	poa_dbi_sutil_pkg.get_table('ORGANIZATION+FII_OPERATING_UNITS', 'PO', '5.0');
151   l_join_rec.table_alias := 'v';
152   l_join_rec.fact_column :=
153 	poa_dbi_sutil_pkg.get_col_name('ORGANIZATION+FII_OPERATING_UNITS', 'PO', '5.0', 'POD');
154   l_join_rec.column_name := 'id';
155 
156   l_join_tbl.extend;
157   l_join_tbl(l_join_tbl.count) :=l_join_rec;
158 
159   l_query :=
160   'select v.value VIEWBY,
161           oset.POA_PERCENT1 POA_PERCENT1,
162           oset.POA_PERCENT2 POA_PERCENT2,
163           oset.POA_PERCENT3 POA_PERCENT3,
164           oset.POA_PERCENT4 POA_PERCENT4,
165           oset.POA_MEASURE1 POA_MEASURE1,
166           oset.POA_MEASURE2 POA_MEASURE2,
167           oset.POA_MEASURE3 POA_MEASURE3,
168           oset.POA_MEASURE4 POA_MEASURE4 from
169    (select * from
170      (select org_id,
171              ' || poa_dbi_util_pkg.rate_clause('c_p_contract_amt','c_purchase_amt') || ' POA_PERCENT1,
172              ' || poa_dbi_util_pkg.rate_clause('p_p_contract_amt','p_purchase_amt') || ' POA_PERCENT2,
173              ' || poa_dbi_util_pkg.rate_clause('c_n_contract_amt','c_purchase_amt') || ' POA_PERCENT3,
174              ' || poa_dbi_util_pkg.rate_clause('p_n_contract_amt','p_purchase_amt') || ' POA_PERCENT4,
175              ' || poa_dbi_util_pkg.rate_clause('c_p_contract_amt_total','c_purchase_amt_total') || ' POA_MEASURE1,
176              ' || poa_dbi_util_pkg.rate_clause('p_p_contract_amt_total','p_purchase_amt_total') || ' POA_MEASURE2,
177              ' || poa_dbi_util_pkg.rate_clause('c_n_contract_amt_total','c_purchase_amt_total') || ' POA_MEASURE3,
178              ' || poa_dbi_util_pkg.rate_clause('p_n_contract_amt_total','p_purchase_amt_total') || ' POA_MEASURE4
179    from
180   ' || poa_dbi_template_pkg.status_sql(      l_mv,
181                                               l_where_clause,
182                                              l_join_tbl,
183                                               p_use_windowing => 'N',
184                                               p_col_name => l_col_tbl,
185 					      p_use_grpid => 'N',
186 						p_filter_where => get_kpi_filter_where,
187                                               p_in_join_tables => l_in_join_tbl);
188 
189   x_custom_sql := l_query;
190 
191   end;
192 
193 
194   FUNCTION get_status_filter_where return VARCHAR2
195   IS
196     l_col_tbl poa_dbi_sutil_pkg.poa_dbi_filter_tbl;
197   BEGIN
198     l_col_tbl := poa_dbi_sutil_pkg.POA_DBI_FILTER_TBL();
199     l_col_tbl.extend;
200     l_col_tbl(1) := 'POA_MEASURE1';
201     l_col_tbl.extend;
202     l_col_tbl(2) := 'POA_PERCENT2';
203     l_col_tbl.extend;
204     l_col_tbl(3) := 'POA_PERCENT1';
205     l_col_tbl.extend;
206     l_col_tbl(4) := 'POA_MEASURE3';
207 
208     return poa_dbi_sutil_pkg.get_filter_where(l_col_tbl);
209 
210   END;
211 
212  FUNCTION get_kpi_filter_where return VARCHAR2
213   IS
214     l_col_tbl poa_dbi_sutil_pkg.poa_dbi_filter_tbl;
215   BEGIN
216     l_col_tbl := poa_dbi_sutil_pkg.POA_DBI_FILTER_TBL();
217     l_col_tbl.extend;
218     l_col_tbl(1) := 'POA_PERCENT3';
219     l_col_tbl.extend;
220     l_col_tbl(2) := 'POA_PERCENT2';
221     l_col_tbl.extend;
222     l_col_tbl(3) := 'POA_PERCENT1';
223     l_col_tbl.extend;
224     l_col_tbl(4) := 'POA_PERCENT4';
225 
226     return poa_dbi_sutil_pkg.get_filter_where(l_col_tbl);
227 
228   END;
229 
230 
231 
232 
233   FUNCTION get_status_sel_clause(p_view_by_col in VARCHAR2, p_url in VARCHAR2) return VARCHAR2
234   IS
235 
236   l_sel_clause varchar2(4000);
237 
238 
239   BEGIN
240   l_sel_clause :=
241   'select v.value VIEWBY,
242 	oset.POA_MEASURE1 POA_MEASURE1,		--Leakage Amount
243 	oset.POA_PERCENT1 POA_PERCENT1, 	--Change
244 	oset.POA_MEASURE3 POA_MEASURE3,		--Leakage Impact Amount
245 	oset.POA_PERCENT2 POA_PERCENT2,		--Leakage Rate
246 	oset.POA_MEASURE4 POA_MEASURE4, 	--Total Leakage Amount
247 	oset.POA_MEASURE5 POA_MEASURE5,		--Total Leakage Impact Amount
248 	oset.POA_MEASURE6 POA_MEASURE6, 	--Total Change
249 	oset.POA_MEASURE7 POA_MEASURE7,		-- Total Leakage Rate
250            ''' || p_url || ''' POA_MEASURE8
251      from
252      (select (rank() over
253                    (&ORDER_BY_CLAUSE nulls last, ' || p_view_by_col || ')) - 1 rnk,'
254         || p_view_by_col || ',
255            POA_MEASURE1, POA_PERCENT1, POA_MEASURE3, POA_PERCENT2, POA_MEASURE4,
256            POA_MEASURE5, POA_MEASURE6, POA_MEASURE7 from
257      (select ' || p_view_by_col || ',
258              ' || p_view_by_col || ' VIEWBY,
259            nvl(c_p_contract_amt,0) POA_MEASURE1,
260            ' || poa_dbi_util_pkg.change_clause('c_p_contract_amt','p_p_contract_amt') || ' POA_PERCENT1,
261            nvl(c_p_savings_amt,0) POA_MEASURE3,
262            '|| poa_dbi_util_pkg.rate_clause('c_p_contract_amt','c_purchase_amt') ||' POA_PERCENT2,
263            nvl(c_p_contract_amt_total,0) POA_MEASURE4,
264            nvl(c_p_savings_amt_total,0) POA_MEASURE5,
265            '||poa_dbi_util_pkg.change_clause('c_p_contract_amt_total','p_p_contract_amt_total') || ' POA_MEASURE6,
266            '||poa_dbi_util_pkg.rate_clause('c_p_contract_amt_total','c_purchase_amt_total')||' POA_MEASURE7';
267 
268   return l_sel_clause;
269 
270   END;
271 
272   FUNCTION get_trend_sel_clause return VARCHAR2
273   IS
274 
275   l_sel_clause varchar2(4000);
276 
277   BEGIN
278 
279 
280   l_sel_clause :=
281   'select cal.name VIEWBY,
282              nvl(p_p_contract_amt,0) POA_MEASURE1,
283              nvl(c_p_contract_amt,0) POA_MEASURE2,
284 	     nvl(p_p_contract_amt,0) POA_PERCENT1,
285           ' || poa_dbi_util_pkg.change_clause('c_p_contract_amt','p_p_contract_amt') || ' POA_PERCENT3,
286 	     nvl(c_p_contract_amt,0) POA_PERCENT2';
287 
288   return l_sel_clause;
289 
290   END;
291 
292 end poa_dbi_pcl_pkg;