[Home] [Help]
PACKAGE BODY: APPS.HRI_OLTP_PMV_ABS_CAT
Source
1 PACKAGE BODY HRI_OLTP_PMV_ABS_CAT AS
2 /* $Header: hriopabsct.pkb 120.3 2005/10/26 07:55 jrstewar noship $ */
3
4 g_rtn VARCHAR2(30) := '
5 ';
6
7 g_unassigned VARCHAR2(50) := HRI_OLTP_VIEW_MESSAGE.get_unassigned_msg;
8
9 PROCEDURE get_sql_abscat_t4
10 (p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL,
11 x_custom_sql OUT NOCOPY VARCHAR2,
12 x_custom_output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL) IS
13
14 l_sqltext VARCHAR2(32767);
15 l_custom_rec BIS_QUERY_ATTRIBUTES;
16 l_security_clause VARCHAR2(4000);
17
18 -- Parameter values
19 l_parameter_rec hri_oltp_pmv_util_param.HRI_PMV_PARAM_REC_TYPE;
20 l_bind_tab hri_oltp_pmv_util_param.HRI_PMV_BIND_TAB_TYPE;
21 l_abs_category_tab hri_oltp_pmv_rank_abs.abs_category_tab;
22
23 -- Trend Period Parameters
24 l_projection_periods NUMBER;
25 l_previous_periods NUMBER;
26 l_trend_sql VARCHAR2(10000);
27 l_trend_sql_params hri_oltp_pmv_query_trend.trend_sql_params_type;
28
29 -- dyanamic columns
30 l_period_abs_drtn_metric1 VARCHAR2(1000);
31 l_period_abs_drtn_metric2 VARCHAR2(1000);
32 l_period_abs_drtn_metric3 VARCHAR2(1000);
33 l_period_abs_drtn_metric4 VARCHAR2(1000);
34
35 l_drill_url1 VARCHAR2(1000);
36 l_drill_url2 VARCHAR2(1000);
37 l_drill_url3 VARCHAR2(1000);
38 l_drill_url4 VARCHAR2(1000);
39
40
41 BEGIN
42
43 /* Initialize out parameters */
44 l_custom_rec := BIS_PMV_PARAMETERS_PUB.INITIALIZE_QUERY_TYPE;
45 x_custom_output := BIS_QUERY_ATTRIBUTES_TBL();
46
47 /* Get common parameter values */
48 hri_oltp_pmv_util_param.get_parameters_from_table
49 (p_page_parameter_tbl => p_page_parameter_tbl,
50 p_parameter_rec => l_parameter_rec,
51 p_bind_tab => l_bind_tab);
52
53 /* Get security clause for Manager based security */
54 l_security_clause := hri_oltp_pmv_util_pkg.get_security_clause('MGR');
55
56 /* Get bind values for number of time periods */
57 hri_oltp_pmv_query_time.get_period_binds
58 (p_page_period_type => l_parameter_rec.page_period_type
59 ,p_page_comp_type => l_parameter_rec.time_comparison_type
60 ,o_previous_periods => l_previous_periods
61 ,o_projection_periods => l_projection_periods);
62
63 /* Get the top 4 Absence Categories for selection Mgr on effective date */
64 hri_oltp_pmv_rank_abs.set_top_categories
65 (p_supervisor_id => l_parameter_rec.peo_supervisor_id,
66 p_effective_from_date => l_parameter_rec.time_curr_start_date,
67 p_effective_to_date => l_parameter_rec.time_curr_end_date,
68 p_no_categories => 4,
69 p_category_tab => l_abs_category_tab);
70
71 /* Set the trend sql context for the code centralization call */
72 l_trend_sql_params.bind_format := 'PMV';
73
74 /* Set metric base on absence UOM parameter, default to DAYS */
75 IF (hri_bpl_utilization.get_abs_durtn_profile_vl = 'DAYS') THEN
76 l_trend_sql_params.include_abs_drtn_days := 'Y';
77
78 l_period_abs_drtn_metric1 := 'qry.period_abs_drtn_days_absCat1';
79 l_period_abs_drtn_metric2 := 'qry.period_abs_drtn_days_absCat2';
80 l_period_abs_drtn_metric3 := 'qry.period_abs_drtn_days_absCat3';
81 l_period_abs_drtn_metric4 := 'qry.period_abs_drtn_days_absCat4';
82
83 ELSIF (hri_bpl_utilization.get_abs_durtn_profile_vl = 'HOURS') THEN
84 l_trend_sql_params.include_abs_drtn_hrs := 'Y';
85 l_period_abs_drtn_metric1 := 'qry.period_abs_drtn_hrs_absCat1';
86 l_period_abs_drtn_metric2 := 'qry.period_abs_drtn_hrs_absCat2';
87 l_period_abs_drtn_metric3 := 'qry.period_abs_drtn_hrs_absCat3';
88 l_period_abs_drtn_metric4 := 'qry.period_abs_drtn_hrs_absCat4';
89 ELSE
90 l_trend_sql_params.include_abs_drtn_days := 'Y';
91 l_period_abs_drtn_metric1 := 'qry.period_abs_drtn_days_absCat1';
92 l_period_abs_drtn_metric2 := 'qry.period_abs_drtn_days_absCat2';
93 l_period_abs_drtn_metric3 := 'qry.period_abs_drtn_days_absCat3';
94 l_period_abs_drtn_metric4 := 'qry.period_abs_drtn_days_absCat4';
95
96 END IF;
97
98 /* Set to bucket for Absence Category */
99 l_trend_sql_params.bucket_dim := 'HRI_ABSNC+HRI_ABSNC_CAT';
100
101 /* Call the UI fact code centralization for the Trend */
102 l_trend_sql := hri_oltp_pmv_query_trend.get_sql
103 (p_parameter_rec => l_parameter_rec,
104 p_bind_tab => l_bind_tab,
105 p_trend_sql_params => l_trend_sql_params,
106 p_calling_module => 'HRI_OLTP_PMV_ABS_CAT.GET_SQL_ABSCAT_T4');
107
108 /* set the dynamic drill urls
109 Commented out, as this is not requested in the functional spec.
110
111 l_drill_url1 :=
112 'pFunctionName=HRI_P_ABS_SUP_DTL&' ||
113 'VIEW_BY=VIEW_BY_NAME&' ||
114 'VIEW_BY_NAME=VIEW_BY_ID&' ||
115 'HRI_ABSNC+HRI_ABSNC_CAT='|| hri_oltp_pmv_rank_abs.get_category_code(1)||'&'||
116 ''' || ''' || 'AS_OF_DATE=HRI_P_CHAR2_GA&' ||
117 'pParamIds=Y';
118 l_drill_url2 :=
119 'pFunctionName=HRI_P_ABS_SUP_DTL&' ||
120 'VIEW_BY=VIEW_BY_NAME&' ||
121 'VIEW_BY_NAME=VIEW_BY_ID&' ||
122 'HRI_ABSNC+HRI_ABSNC_CAT='|| hri_oltp_pmv_rank_abs.get_category_code(2)||'&'||
123 ''' || ''' || 'AS_OF_DATE=HRI_P_CHAR2_GA&' ||
124 'pParamIds=Y';
125 l_drill_url3 :=
126 'pFunctionName=HRI_P_ABS_SUP_DTL&' ||
127 'VIEW_BY=VIEW_BY_NAME&' ||
128 'VIEW_BY_NAME=VIEW_BY_ID&' ||
129 'HRI_ABSNC+HRI_ABSNC_CAT='|| hri_oltp_pmv_rank_abs.get_category_code(3)||'&'||
130 ''' || ''' || 'AS_OF_DATE=HRI_P_CHAR2_GA&' ||
131 'pParamIds=Y';
132 l_drill_url4 :=
133 'pFunctionName=HRI_P_ABS_SUP_DTL&' ||
134 'VIEW_BY=VIEW_BY_NAME&' ||
135 'VIEW_BY_NAME=VIEW_BY_ID&' ||
136 'HRI_ABSNC+HRI_ABSNC_CAT='|| hri_oltp_pmv_rank_abs.get_category_code(4)||'&'||
137 ''' || ''' || 'AS_OF_DATE=HRI_P_CHAR2_GA&' ||
138 'pParamIds=Y';
139 */
140
141 /* Formulate the PMV final query output for the UI*/
142 l_sqltext :=
143 'SELECT -- Employee Absence Top 4 Categories Trend
144 qry.period_as_of_date VIEWBYID
145 ,qry.period_as_of_date VIEWBY
146 ,qry.period_order HRI_P_ORDER_BY_1
147 ,'||l_period_abs_drtn_metric1 ||' HRI_P_MEASURE1
148 ,''' || l_drill_url1 || ''' HRI_P_DRILL_URL1
149 ,'||l_period_abs_drtn_metric2 ||' HRI_P_MEASURE2
150 ,''' || l_drill_url2 || ''' HRI_P_DRILL_URL2
151 ,'||l_period_abs_drtn_metric3 ||' HRI_P_MEASURE3
152 ,''' || l_drill_url3 || ''' HRI_P_DRILL_URL3
153 ,'||l_period_abs_drtn_metric4 ||' HRI_P_MEASURE4
154 ,''' || l_drill_url4 || ''' HRI_P_DRILL_URL4
155 ,to_char(qry.period_as_of_date,''DD/MM/YYYY'') HRI_P_CHAR2_GA
156 FROM
157 (' || l_trend_sql || ') qry
158 WHERE 1=1
159 '
160 || l_security_clause ||
161 ' ORDER BY
162 period_order';
163
164 x_custom_sql := l_sqltext;
165
166 l_custom_rec.attribute_name := ':TIME_PERIOD_TYPE';
167 l_custom_rec.attribute_value := l_parameter_rec.page_period_type;
168 l_custom_Rec.attribute_type := bis_pmv_parameters_pub.bind_type;
169 l_custom_rec.attribute_data_type := bis_pmv_parameters_pub.varchar2_bind;
170 x_custom_output.extend;
171 x_custom_output(1) := l_custom_rec;
172
173 l_custom_rec.attribute_name := ':TIME_COMPARISON_TYPE';
174 l_custom_rec.attribute_value := l_parameter_rec.time_comparison_type;
175 l_custom_Rec.attribute_type := bis_pmv_parameters_pub.bind_type;
176 l_custom_rec.attribute_data_type := bis_pmv_parameters_pub.varchar2_bind;
177 x_custom_output.extend;
178 x_custom_output(2) := l_custom_rec;
179
180 l_custom_rec.attribute_name := ':TIME_PERIOD_NUMBER';
181 l_custom_rec.attribute_value := l_previous_periods;
182 l_custom_Rec.attribute_type := bis_pmv_parameters_pub.bind_type;
183 l_custom_rec.attribute_data_type := bis_pmv_parameters_pub.numeric_bind;
184 x_custom_output.extend;
185 x_custom_output(3) := l_custom_rec;
186
187 l_custom_rec.attribute_name := ':ABS_CATEGORY_CODE1';
188 l_custom_rec.attribute_value := l_abs_category_tab(1);
189 l_custom_rec.attribute_type := bis_pmv_parameters_pub.bind_type;
190 l_custom_rec.attribute_data_type := bis_pmv_parameters_pub.varchar2_bind;
191 x_custom_output.extend;
192 x_custom_output(4) := l_custom_rec;
193
194 l_custom_rec.attribute_name := ':ABS_CATEGORY_CODE2';
195 l_custom_rec.attribute_value := l_abs_category_tab(2);
196 l_custom_rec.attribute_type := bis_pmv_parameters_pub.bind_type;
197 l_custom_rec.attribute_data_type := bis_pmv_parameters_pub.varchar2_bind;
198 x_custom_output.extend;
199 x_custom_output(5) := l_custom_rec;
200
201 l_custom_rec.attribute_name := ':ABS_CATEGORY_CODE3';
202 l_custom_rec.attribute_value := l_abs_category_tab(3);
203 l_custom_rec.attribute_type := bis_pmv_parameters_pub.bind_type;
204 l_custom_rec.attribute_data_type := bis_pmv_parameters_pub.varchar2_bind;
205 x_custom_output.extend;
206 x_custom_output(6) := l_custom_rec;
207
208 l_custom_rec.attribute_name := ':ABS_CATEGORY_CODE4';
209 l_custom_rec.attribute_value := l_abs_category_tab(4);
210 l_custom_rec.attribute_type := bis_pmv_parameters_pub.bind_type;
211 l_custom_rec.attribute_data_type := bis_pmv_parameters_pub.varchar2_bind;
212 x_custom_output.extend;
213 x_custom_output(7) := l_custom_rec;
214
215
216 END get_sql_abscat_t4 ;
217
218 PROCEDURE GET_SQL_TN(p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL
219 ,x_custom_sql OUT NOCOPY VARCHAR2
220 ,x_custom_output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
221 IS
222
223 l_SQLText VARCHAR2(32000);
224 l_security_clause VARCHAR2(4000);
225 l_custom_rec BIS_QUERY_ATTRIBUTES ;
226
227 /* Dynamic SQL Controls */
228 l_abs_fact_params hri_bpl_fact_abs_sql.abs_fact_param_type;
229 l_abs_fact_sql VARCHAR2(10000);
230 l_parameter_name VARCHAR2(100);
231 l_dynmc_drtn_curr VARCHAR2(100) DEFAULT 'curr_abs_drtn_days';
232 l_dynmc_tot_drtn_curr VARCHAR2(100) DEFAULT 'tot_abs_drtn_days_curr';
233 l_drill_abs_detail VARCHAR2(1000);
234
235 /* Parameter values */
236 l_parameter_rec hri_oltp_pmv_util_param.HRI_PMV_PARAM_REC_TYPE;
237 l_bind_tab hri_oltp_pmv_util_param.HRI_PMV_BIND_TAB_TYPE;
238 l_debug_header VARCHAR(550);
239
240 BEGIN
241 /* Initialize out parameters */
242 l_custom_rec := BIS_PMV_PARAMETERS_PUB.INITIALIZE_QUERY_TYPE;
243 x_custom_output := BIS_QUERY_ATTRIBUTES_TBL();
244
245 /* Get security clause for Manager based security */
246 l_security_clause := hri_oltp_pmv_util_pkg.get_security_clause('MGR');
247
248 /* Get common parameter values */
249 hri_oltp_pmv_util_param.get_parameters_from_table
250 (p_page_parameter_tbl => p_page_parameter_tbl,
251 p_parameter_rec => l_parameter_rec,
252 p_bind_tab => l_bind_tab);
253
254 /* Drill URL's for Manager and Direct Reports */
255 l_drill_abs_detail :='pFunctionName=HRI_P_ABS_SUP_DTL&' ||
256 'VIEW_BY=HRI_PERSON+HRI_PER_USRDR_H&' ||
257 'VIEW_BY_NAME=VIEW_BY_ID&' ||
258 'pParamIds=Y';
259
260 /* Set order by */
261 l_parameter_rec.order_by := hri_oltp_pmv_util_pkg.set_default_order_by
262 (p_order_by_clause => l_parameter_rec.order_by);
263
264 /* formulate the dynmaic column selection based on Absence Duration
265 unit of measure paramter selection Default Days */
266
267 IF (hri_bpl_utilization.get_abs_durtn_profile_vl = 'DAYS') THEN
268 l_dynmc_drtn_curr := 'curr_abs_drtn_days';
269 l_abs_fact_params.include_abs_drtn_days := 'Y';
270 ELSIF (hri_bpl_utilization.get_abs_durtn_profile_vl = 'HOURS') THEN
271 l_dynmc_drtn_curr := 'curr_abs_drtn_hrs';
272 l_abs_fact_params.include_abs_drtn_hrs := 'Y';
273 ELSE -- functional decision (JC) default to days
274 l_dynmc_drtn_curr := 'curr_abs_drtn_days';
275 l_abs_fact_params.include_abs_drtn_days := 'Y';
276 END IF;
277
278 /* Get SQL for workforce fact */
279 l_abs_fact_params.bind_format := 'PMV';
280 l_abs_fact_params.include_abs_in_period := 'N';
281 l_abs_fact_params.include_abs_ntfctn_period := 'N';
282 l_abs_fact_params.include_comp := 'N';
283 l_abs_fact_params.kpi_mode := 'N';
284 l_abs_fact_sql := hri_bpl_fact_abs_sql.get_sql
285 (p_parameter_rec => l_parameter_rec,
286 p_bind_tab => l_bind_tab,
287 p_abs_params => l_abs_fact_params,
288 p_calling_module => 'HRI_P_ABS_CAT_TN_GRAPH');
289
290 l_SQLText :=
291 ' -- Employee Absence by Category Graph Pie
292 SELECT
293 babs.vby_id VIEWBYID
294 ,babs.value VIEWBY'|| g_rtn
295 /* Absence */ || g_rtn ||'
296 ,NVL(babs.curr_abs_drtn,to_number(NULL)) HRI_P_MEASURE1 '|| g_rtn
297 /* Total Absence */ || g_rtn ||'
298 ,NVL(babs.curr_tot_abs_drtn,to_number(NULL)) HRI_P_GRAND_TOTAL1'|| g_rtn
299 /* Drill URLs */ || g_rtn ||'
300 ,'''|| l_drill_abs_detail ||''' HRI_P_DRILL_URL1
301 FROM
302 (
303 SELECT
304 /* Base Measures */
305 vby.id vby_id
306 ,vby.value value
307 ,vby.order_by order_by
308 ,NVL(afact.'|| l_dynmc_drtn_curr ||',0) curr_abs_drtn
309 ,SUM(afact.'|| l_dynmc_drtn_curr ||') OVER() curr_tot_abs_drtn
310
311 FROM
312 hri_cl_absnc_cat_v vby
313 ,('|| l_abs_fact_sql ||') afact
314 WHERE
315 vby.id = afact.vby_id
316 ' || l_security_clause || ') babs' || g_rtn ||
317 '&ORDER_BY_CLAUSE';
318
319 x_custom_sql := l_SQLText ;
320
321 END GET_SQL_TN ;
322
323
324 END HRI_OLTP_PMV_ABS_CAT ;