DBA Data[Home] [Help]

PACKAGE BODY: APPS.HRI_BPL_DBI_CALC_PERIOD

Source


1 PACKAGE BODY hri_bpl_dbi_calc_period AS
2 /* $Header: hribdcrp.pkb 120.7 2005/11/10 01:53:49 jrstewar noship $ */
3 
4 g_rtn  VARCHAR2(5) := '
5 ';
6 /* Total Absence events for a supervisor in a period  */
7 /******************************************************/
8 PROCEDURE calc_sup_absence(p_supervisor_id         IN NUMBER,
9                             p_from_date            IN DATE,
10                             p_to_date              IN DATE,
11                             p_period_type          IN VARCHAR2,
12                             p_comparison_type      IN VARCHAR2,
13                             p_total_type           IN VARCHAR2,
14                             p_wkth_wktyp_sk_fk     IN VARCHAR2,
15                             p_total_abs_drtn_days     OUT NOCOPY NUMBER,
16                             p_total_abs_drtn_hrs      OUT NOCOPY NUMBER,
17                             p_total_abs_in_period     OUT NOCOPY NUMBER,
18                             p_total_abs_ntfctn_period OUT NOCOPY NUMBER) IS
19 
20   CURSOR calc_totals_for_sup(v_direct_record_ind IN NUMBER) IS
21     SELECT
22          SUM(CASE WHEN a.effective_date BETWEEN p_from_date AND p_to_date
23                  THEN a.abs_drtn_days
24                  ELSE 0
25              END)  abs_drtn_days
26         ,SUM(CASE WHEN a.effective_date BETWEEN p_from_date AND p_to_date
27                  THEN abs_drtn_hrs
28                  ELSE 0
29              END)  abs_drtn_hrs
30         ,SUM(CASE WHEN a.effective_date = p_from_date
31                  THEN a.abs_start_blnc + a.abs_nstart_blnc
32                   WHEN a.effective_date > p_from_date
33                     AND a.effective_date <= p_to_date
34                  THEN abs_start_blnc
35                  ELSE 0
36              END)  abs_in_period
37         ,SUM(CASE WHEN a.effective_date = p_from_date
38                 THEN a.abs_ntfctn_days_start_blnc + a.abs_ntfctn_days_nstart_blnc
39                   WHEN a.effective_date > p_from_date
40                     AND a.effective_date <= p_to_date
41                 THEN abs_ntfctn_days_start_blnc
42                 ELSE 0
43              END)  abs_ntfctn_period
44   FROM HRI_MDP_SUP_ABSNC_SUP_MV a
45   WHERE a.supervisor_person_id = p_supervisor_id
46   AND a.direct_record_ind = v_direct_record_ind
47   AND a.effective_date BETWEEN  p_from_date AND p_to_date;
48 
49 
50   l_direct_record_ind     NUMBER;
51   l_use_snapshot          BOOLEAN;
52 
53 BEGIN
54 
55 
56 /* Set record type indicator */
57   IF p_total_type = 'ROLLUP' THEN
58     l_direct_record_ind := 0;
59   ELSE
60     l_direct_record_ind := 1;
61   END IF;
62 
63 /* Get WMV Change totals for supervisor from cursor */
64   OPEN calc_totals_for_sup(l_direct_record_ind);
65   FETCH calc_totals_for_sup INTO p_total_abs_drtn_days,
66                                  p_total_abs_drtn_hrs,
67                                  p_total_abs_in_period,
68                                  p_total_abs_ntfctn_period;
69   CLOSE calc_totals_for_sup;
70 
71 
72 END calc_sup_absence;
73 
74 
75 /* Total workforce change events for a supervisor in a period */
76 /**************************************************************/
77 PROCEDURE calc_sup_wcnt_chg(p_supervisor_id        IN NUMBER,
78                             p_from_date            IN DATE,
79                             p_to_date              IN DATE,
80                             p_period_type          IN VARCHAR2,
81                             p_comparison_type      IN VARCHAR2,
82                             p_total_type           IN VARCHAR2,
83                             p_total_gain_hire      OUT NOCOPY NUMBER,
84                             p_total_gain_transfer  OUT NOCOPY NUMBER,
85                             p_total_loss_term      OUT NOCOPY NUMBER,
86                             p_total_loss_transfer  OUT NOCOPY NUMBER) IS
87 
88   CURSOR calc_totals_for_sup(v_direct_record_ind IN NUMBER) IS
89   SELECT
90    NVL(SUM(a.hire_hdc),0)          tot_gain_hire
91   ,NVL(SUM(a.transfer_in_hdc),0)   tot_gain_transfer
92   ,NVL(SUM(a.termination_hdc),0)   tot_loss_term
93   ,NVL(SUM(a.transfer_out_hdc),0)  tot_loss_transfer
94   FROM hri_mdp_sup_wcnt_chg_mv a
95   WHERE a.supervisor_person_id = p_supervisor_id
96   AND a.direct_record_ind = v_direct_record_ind
97   AND a.effective_date BETWEEN p_from_date
98                        AND p_to_date;
99 
100   CURSOR calc_totals_for_sup_snp(v_direct_record_ind IN NUMBER) IS
101   SELECT /*+ INDEX(a) */
102    NVL(SUM(a.hire_hdc),0)          tot_gain_hire
103   ,NVL(SUM(a.transfer_in_hdc),0)   tot_gain_transfer
104   ,NVL(SUM(a.termination_hdc),0)   tot_loss_term
105   ,NVL(SUM(a.transfer_out_hdc),0)  tot_loss_transfer
106   FROM hri_mds_sup_wcnt_chg_mv a
107   WHERE a.supervisor_person_id = p_supervisor_id
108   AND a.direct_record_ind = v_direct_record_ind
109   AND a.effective_date = p_to_date
110   AND a.period_type = p_period_type
111   AND a.comparison_type IN (p_comparison_type, 'CURRENT');
112 
113   l_direct_record_ind     NUMBER;
114   l_use_snapshot          BOOLEAN;
115 
116 BEGIN
117 
118 /* Check whether a snapshot can be used */
119 /* Note a snapshot may be used to get the total even if the portlet query */
120 /* is not able to use snapshots */
121   l_use_snapshot := hri_oltp_pmv_util_snpsht.use_wcnt_chg_snpsht_for_mgr
122                      (p_supervisor_id => p_supervisor_id,
123                       p_effective_date => p_to_date);
124 
125 /* Set record type indicator */
126   IF p_total_type = 'ROLLUP' THEN
127     l_direct_record_ind := 0;
128   ELSE
129     l_direct_record_ind := 1;
130   END IF;
131 
132 /* Open the cursor corresponding to the snapshot flag */
133   IF l_use_snapshot THEN
134 
135   /* Get WMV Change totals for supervisor from snapshot cursor */
136     OPEN calc_totals_for_sup_snp(l_direct_record_ind);
137     FETCH calc_totals_for_sup_snp INTO p_total_gain_hire,
138                                        p_total_gain_transfer,
139                                        p_total_loss_term,
140                                        p_total_loss_transfer;
141     CLOSE calc_totals_for_sup_snp;
142 
143   ELSE
144 
145   /* Get WMV Change totals for supervisor from cursor */
146     OPEN calc_totals_for_sup(l_direct_record_ind);
147     FETCH calc_totals_for_sup INTO p_total_gain_hire,
148                                    p_total_gain_transfer,
149                                    p_total_loss_term,
150                                    p_total_loss_transfer;
151     CLOSE calc_totals_for_sup;
152 
153   END IF;
154 
155 END calc_sup_wcnt_chg;
156 
157 /* Total Employee Or Contingent change events for a supervisor in a period */
158 /***************************************************************************/
159 PROCEDURE calc_sup_wcnt_chg(p_supervisor_id        IN NUMBER,
160                             p_from_date            IN DATE,
161                             p_to_date              IN DATE,
162                             p_period_type          IN VARCHAR2,
163                             p_comparison_type      IN VARCHAR2,
164                             p_total_type           IN VARCHAR2,
165                             p_wkth_wktyp_sk_fk     IN VARCHAR2,
166                             p_total_gain_hire      OUT NOCOPY NUMBER,
167                             p_total_gain_transfer  OUT NOCOPY NUMBER,
168                             p_total_loss_term      OUT NOCOPY NUMBER,
169                             p_total_loss_transfer  OUT NOCOPY NUMBER) IS
170 
171   CURSOR calc_totals_for_sup(v_direct_record_ind IN NUMBER) IS
172   SELECT
173    NVL(SUM(a.hire_hdc),0)          tot_gain_hire
174   ,NVL(SUM(a.transfer_in_hdc),0)   tot_gain_transfer
175   ,NVL(SUM(a.termination_hdc),0)   tot_loss_term
176   ,NVL(SUM(a.transfer_out_hdc),0)  tot_loss_transfer
177   FROM hri_mdp_sup_wcnt_chg_mv a
178   WHERE a.supervisor_person_id = p_supervisor_id
179   AND a.wkth_wktyp_sk_fk = p_wkth_wktyp_sk_fk
180   AND a.direct_record_ind = v_direct_record_ind
181   AND a.effective_date BETWEEN p_from_date
182                        AND p_to_date;
183 
184   CURSOR calc_totals_for_sup_snp(v_direct_record_ind IN NUMBER) IS
185   SELECT /*+ INDEX(a) */
186    NVL(SUM(a.hire_hdc),0)          tot_gain_hire
187   ,NVL(SUM(a.transfer_in_hdc),0)   tot_gain_transfer
188   ,NVL(SUM(a.termination_hdc),0)   tot_loss_term
189   ,NVL(SUM(a.transfer_out_hdc),0)  tot_loss_transfer
190   FROM hri_mds_sup_wcnt_chg_mv a
191   WHERE a.supervisor_person_id = p_supervisor_id
192   AND a.wkth_wktyp_sk_fk = p_wkth_wktyp_sk_fk
193   AND a.direct_record_ind = v_direct_record_ind
194   AND a.effective_date = p_to_date
195   AND a.period_type = p_period_type
196   AND a.comparison_type IN (p_comparison_type, 'CURRENT');
197 
198   l_direct_record_ind     NUMBER;
199   l_use_snapshot          BOOLEAN;
200 
201 BEGIN
202 
203 /* Check whether a snapshot can be used */
204 /* Note a snapshot may be used to get the total even if the portlet query */
205 /* is not able to use snapshots */
206   l_use_snapshot := hri_oltp_pmv_util_snpsht.use_wcnt_chg_snpsht_for_mgr
207                      (p_supervisor_id => p_supervisor_id,
208                       p_effective_date => p_to_date);
209 
210 /* Set record type indicator */
211   IF p_total_type = 'ROLLUP' THEN
212     l_direct_record_ind := 0;
213   ELSE
214     l_direct_record_ind := 1;
215   END IF;
216 
217 /* Open the cursor corresponding to the snapshot flag */
218   IF l_use_snapshot THEN
219 
220   /* Get WMV Change totals for supervisor from snapshot cursor */
221     OPEN calc_totals_for_sup_snp(l_direct_record_ind);
222     FETCH calc_totals_for_sup_snp INTO p_total_gain_hire,
223                                        p_total_gain_transfer,
224                                        p_total_loss_term,
225                                        p_total_loss_transfer;
226     CLOSE calc_totals_for_sup_snp;
227 
228   ELSE
229 
230   /* Get WMV Change totals for supervisor from cursor */
231     OPEN calc_totals_for_sup(l_direct_record_ind);
232     FETCH calc_totals_for_sup INTO p_total_gain_hire,
233                                    p_total_gain_transfer,
234                                    p_total_loss_term,
235                                    p_total_loss_transfer;
236     CLOSE calc_totals_for_sup;
237 
238   END IF;
239 
240 END calc_sup_wcnt_chg;
241 
242 /* Total turnover events for a supervisor in a period */
243 /******************************************************/
244 PROCEDURE calc_sup_turnover(p_supervisor_id        IN NUMBER,
245                             p_from_date            IN DATE,
246                             p_to_date              IN DATE,
247                             p_period_type          IN VARCHAR2,
248                             p_comparison_type      IN VARCHAR2,
249                             p_total_type           IN VARCHAR2,
250                             p_wkth_wktyp_sk_fk     IN VARCHAR2,
251                             p_total_trn_vol        OUT NOCOPY NUMBER,
252                             p_total_trn_invol      OUT NOCOPY NUMBER) IS
253 
254   CURSOR calc_totals_for_sup(v_direct_record_ind IN NUMBER) IS
255   SELECT
256    NVL(SUM(a.sep_vol_hdc),0)     total_trn_vol
257   ,NVL(SUM(a.sep_invol_hdc),0)   total_trn_invol
258   FROM hri_mdp_sup_wcnt_chg_mv a
259   WHERE a.supervisor_person_id = p_supervisor_id
260   AND a.direct_record_ind = v_direct_record_ind
261   AND a.effective_date BETWEEN p_from_date AND p_to_date
262   AND a.wkth_wktyp_sk_fk = p_wkth_wktyp_sk_fk;
263 
264   CURSOR calc_totals_for_sup_snp(v_direct_record_ind IN NUMBER) IS
265   SELECT /*+ INDEX(a) */
266    NVL(SUM(a.sep_vol_hdc),0)     total_trn_vol
267   ,NVL(SUM(a.sep_invol_hdc),0)   total_trn_invol
268   FROM hri_mds_sup_wcnt_chg_mv a
269   WHERE a.supervisor_person_id = p_supervisor_id
270   AND a.direct_record_ind = v_direct_record_ind
271   AND a.effective_date = p_to_date
272   AND a.period_type = p_period_type
273   AND a.comparison_type IN (p_comparison_type, 'CURRENT')
274   AND a.wkth_wktyp_sk_fk = p_wkth_wktyp_sk_fk;
275 
276   l_direct_record_ind     NUMBER;
277   l_use_snapshot          BOOLEAN;
278 
279 BEGIN
280 
281 /* Check whether a snapshot can be used */
282 /* Note a snapshot may be used to get the total even if the portlet query */
283 /* is not able to use snapshots */
284   l_use_snapshot := hri_oltp_pmv_util_snpsht.use_wcnt_chg_snpsht_for_mgr
285                      (p_supervisor_id => p_supervisor_id,
286                       p_effective_date => p_to_date);
287 
288 /* Set record type indicator */
289   IF p_total_type = 'ROLLUP' THEN
290     l_direct_record_ind := 0;
291   ELSE
292     l_direct_record_ind := 1;
293   END IF;
294 
295 /* Open the cursor corresponding to the snapshot flag */
296   IF l_use_snapshot THEN
297 
298   /* Get WMV Change totals for supervisor from cursor */
299     OPEN calc_totals_for_sup_snp(l_direct_record_ind);
300     FETCH calc_totals_for_sup_snp INTO p_total_trn_vol,
301                                        p_total_trn_invol;
302     CLOSE calc_totals_for_sup_snp;
303 
304   ELSE
305 
306   /* Get WMV Change totals for supervisor from cursor */
307     OPEN calc_totals_for_sup(l_direct_record_ind);
308     FETCH calc_totals_for_sup INTO p_total_trn_vol,
309                                    p_total_trn_invol;
310     CLOSE calc_totals_for_sup;
311 
312   END IF;
313 
314 END calc_sup_turnover;
315 
316 /* Total terminations by supervisor and length of service */
317 /**********************************************************/
318 PROCEDURE calc_sup_term_low_pvt
319     (p_supervisor_id  IN NUMBER,
320      p_from_date      IN DATE,
321      p_to_date        IN DATE,
322      p_bind_tab       IN hri_oltp_pmv_util_param.HRI_PMV_BIND_TAB_TYPE,
323      p_total_term     OUT NOCOPY NUMBER,
324      p_total_term_b1  OUT NOCOPY NUMBER,
325      p_total_term_b2  OUT NOCOPY NUMBER,
326      p_total_term_b3  OUT NOCOPY NUMBER,
327      p_total_term_b4  OUT NOCOPY NUMBER,
328      p_total_term_b5  OUT NOCOPY NUMBER) IS
329 
330   TYPE term_csr_type IS REF CURSOR;
331 
332   term_cv          term_csr_type;
333   l_sql_stmt       VARCHAR2(8000);
334   l_where_clause   VARCHAR2(4000);
335   l_parameter_name VARCHAR2(100);
336 
337 BEGIN
338 
339   l_parameter_name := p_bind_tab.FIRST;
340 
341 /* Loop through parameters that have been set */
342   WHILE l_parameter_name IS NOT NULL LOOP
343 
344     IF (l_parameter_name = 'GEOGRAPHY+COUNTRY' OR
345         l_parameter_name = 'GEOGRAPHY+AREA' OR
349         l_parameter_name = 'HRI_PRFRMNC+HRI_PRFMNC_RTNG_X' OR
346         l_parameter_name = 'JOB+JOB_FAMILY' OR
347         l_parameter_name = 'JOB+JOB_FUNCTION' OR
348         l_parameter_name = 'HRI_PRSNTYP+HRI_WKTH_WKTYP' OR
350         l_parameter_name = 'HRI_LOW+HRI_LOW_BAND_X' OR
351         l_parameter_name = 'HRI_WRKACTVT+HRI_WAC_SEPCAT_X') THEN
352 
353     /* Dynamically set conditions for parameter */
354       l_where_clause := l_where_clause || g_rtn ||
355           'AND term.' ||
356           hri_mtdt_dim_lvl.g_dim_lvl_mtdt_tab
357                  (l_parameter_name).fact_viewby_col ||
358           ' IN (' || p_bind_tab(l_parameter_name).sql_bind_string || ')';
359 
360     END IF;
361 
362     l_parameter_name := p_bind_tab.NEXT(l_parameter_name);
363 
364   END LOOP;
365 
366 
367   l_sql_stmt :=
368 'SELECT
369    NVL(SUM(term.separation_hdc), 0) total_term
370   ,NVL(SUM(CASE WHEN pow.pow_band = 1
371                 THEN term.separation_hdc
372                 ELSE 0
373            END), 0)  total_term_pow_band1
374   ,NVL(SUM(CASE WHEN pow.pow_band = 2
375                 THEN term.separation_hdc
376                 ELSE 0
377            END), 0)  total_term_pow_band2
378   ,NVL(SUM(CASE WHEN pow.pow_band = 3
379                 THEN term.separation_hdc
380                 ELSE 0
381            END), 0)  total_term_pow_band3
382   ,NVL(SUM(CASE WHEN pow.pow_band = 4
383                 THEN term.separation_hdc
384                 ELSE 0
385            END), 0)  total_term_pow_band4
386   ,NVL(SUM(CASE WHEN pow.pow_band = 5
387                 THEN term.separation_hdc
388                 ELSE 0
389            END), 0)  total_term_pow_band5
390 FROM
391  hri_mdp_sup_wcnt_term_asg_mv  term
392 ,hri_dbi_cl_pow_all_band_v     pow
393 WHERE term.supervisor_person_id = :1
394 AND term.effective_date BETWEEN :2 AND :3
395 AND term.pow_band_sk_fk = pow.id'
396   || l_where_clause;
397 
398   OPEN term_cv FOR l_sql_stmt
399    USING
400     p_supervisor_id,
401     p_from_date,
402     p_to_date;
403   FETCH term_cv INTO
404    p_total_term,
405    p_total_term_b1,
406    p_total_term_b2,
407    p_total_term_b3,
408    p_total_term_b4,
409    p_total_term_b5;
410   CLOSE term_cv;
411 
412 EXCEPTION WHEN OTHERS THEN
413 
414   RETURN;
415 
416 END calc_sup_term_low_pvt;
417 
418 /* Total terminations by supervisor and performance band */
419 /*********************************************************/
420 PROCEDURE calc_sup_term_perf_pvt
421     (p_supervisor_id  IN NUMBER,
422      p_from_date      IN DATE,
423      p_to_date        IN DATE,
424      p_bind_tab       IN hri_oltp_pmv_util_param.HRI_PMV_BIND_TAB_TYPE,
425      p_total_term     OUT NOCOPY NUMBER,
426      p_total_term_b1  OUT NOCOPY NUMBER,
427      p_total_term_b2  OUT NOCOPY NUMBER,
428      p_total_term_b3  OUT NOCOPY NUMBER,
429      p_total_term_na  OUT NOCOPY NUMBER) IS
430 
431   TYPE term_csr_type IS REF CURSOR;
432 
433   term_cv          term_csr_type;
434   l_sql_stmt       VARCHAR2(8000);
435   l_where_clause   VARCHAR2(4000);
436   l_parameter_name VARCHAR2(100);
437 
438 BEGIN
439 
440   l_parameter_name := p_bind_tab.FIRST;
441 
442 /* Loop through parameters that have been set */
443   WHILE l_parameter_name IS NOT NULL LOOP
444 
445     IF (l_parameter_name = 'GEOGRAPHY+COUNTRY' OR
446         l_parameter_name = 'GEOGRAPHY+AREA' OR
447         l_parameter_name = 'JOB+JOB_FAMILY' OR
448         l_parameter_name = 'JOB+JOB_FUNCTION' OR
449         l_parameter_name = 'HRI_PRSNTYP+HRI_WKTH_WKTYP' OR
450         l_parameter_name = 'HRI_PRFRMNC+HRI_PRFMNC_RTNG_X' OR
451         l_parameter_name = 'HRI_LOW+HRI_LOW_BAND_X' OR
452         l_parameter_name = 'HRI_WRKACTVT+HRI_WAC_SEPCAT_X') THEN
453 
454     /* Dynamically set conditions for parameter */
455       l_where_clause := l_where_clause || g_rtn ||
456           'AND term.' ||
457           hri_mtdt_dim_lvl.g_dim_lvl_mtdt_tab
458                  (l_parameter_name).fact_viewby_col ||
459           ' IN (' || p_bind_tab(l_parameter_name).sql_bind_string || ')';
460 
461     END IF;
462 
463     l_parameter_name := p_bind_tab.NEXT(l_parameter_name);
464 
465   END LOOP;
466 
467   l_sql_stmt :=
468 'SELECT
469    NVL(SUM(separation_hdc), 0)
470   ,NVL(SUM(CASE WHEN perf_band = 1
471                 THEN separation_hdc
472                 ELSE 0
473            END), 0)  total_term_perf_band1
474   ,NVL(SUM(CASE WHEN perf_band = 2
475                 THEN separation_hdc
476                 ELSE 0
477            END), 0)  total_term_perf_band2
478   ,NVL(SUM(CASE WHEN perf_band = 3
479                 THEN separation_hdc
480                 ELSE 0
481            END), 0)  total_term_perf_band3
482   ,NVL(SUM(CASE WHEN perf_band = -5
483                 THEN separation_hdc
484                 ELSE 0
485            END), 0)  total_term_perf_bandna
486 FROM
487  hri_mdp_sup_wcnt_term_asg_mv  term
488 WHERE term.supervisor_person_id = :1
489 AND term.effective_date BETWEEN :2 AND :3'
490   || l_where_clause;
491 
492   OPEN term_cv FOR l_sql_stmt
493    USING
494     p_supervisor_id,
495     p_from_date,
496     p_to_date;
497   FETCH term_cv INTO
498    p_total_term,
499    p_total_term_b1,
500    p_total_term_b2,
501    p_total_term_b3,
502    p_total_term_na;
503   CLOSE term_cv;
504 
505 EXCEPTION WHEN OTHERS THEN
506 
507   RETURN;
508 
509 END calc_sup_term_perf_pvt;
510 
511 /* Total terminations by supervisor pivot */
515        p_from_date         IN DATE,
512 /******************************************/
513 PROCEDURE calc_sup_term_pvt
514       (p_supervisor_id     IN NUMBER,
516        p_to_date           IN DATE,
517        p_bind_tab          IN hri_oltp_pmv_util_param.HRI_PMV_BIND_TAB_TYPE,
518        p_total_term_vol    OUT NOCOPY NUMBER,
519        p_total_term_invol  OUT NOCOPY NUMBER,
520        p_total_term        OUT NOCOPY NUMBER) IS
521 
522   TYPE term_csr_type IS REF CURSOR;
523 
524   term_cv          term_csr_type;
525   l_sql_stmt       VARCHAR2(8000);
526   l_where_clause   VARCHAR2(4000);
527   l_parameter_name VARCHAR2(100);
528 
529 BEGIN
530 
531   l_parameter_name := p_bind_tab.FIRST;
532 
533 /* Loop through parameters that have been set */
534   WHILE l_parameter_name IS NOT NULL LOOP
535 
536     IF (l_parameter_name = 'GEOGRAPHY+COUNTRY' OR
537         l_parameter_name = 'GEOGRAPHY+AREA' OR
538         l_parameter_name = 'JOB+JOB_FAMILY' OR
539         l_parameter_name = 'JOB+JOB_FUNCTION' OR
540         l_parameter_name = 'HRI_PRSNTYP+HRI_WKTH_WKTYP' OR
541         l_parameter_name = 'HRI_PRFRMNC+HRI_PRFMNC_RTNG_X' OR
542         l_parameter_name = 'HRI_LOW+HRI_LOW_BAND_X' OR
543         l_parameter_name = 'HRI_REASON+HRI_RSN_SEP_X'  OR
544         l_parameter_name = 'HRI_WRKACTVT+HRI_WAC_SEPCAT_X') THEN
545 
546     /* Dynamically set conditions for parameter */
547       l_where_clause := l_where_clause || g_rtn ||
548           'AND term.' ||
549           hri_mtdt_dim_lvl.g_dim_lvl_mtdt_tab
550                  (l_parameter_name).fact_viewby_col ||
551           ' IN (' || p_bind_tab(l_parameter_name).sql_bind_string || ')';
552 
553     END IF;
554 
555     l_parameter_name := p_bind_tab.NEXT(l_parameter_name);
556 
557   END LOOP;
558 
559   l_sql_stmt :=
560 'SELECT
561  NVL(SUM(CASE WHEN separation_category = ''SEP_INV''
562               THEN term.separation_hdc
563          ELSE 0
564          END), 0)
565 ,NVL(SUM(CASE WHEN separation_category = ''SEP_VOL''
566               THEN term.separation_hdc
567          ELSE 0
568          END), 0)
569 ,NVL(SUM(term.separation_hdc), 0)
570 FROM
571  hri_mdp_sup_wcnt_term_asg_mv  term
572 WHERE term.supervisor_person_id = :1
573 AND term.effective_date BETWEEN :2 AND :3'
574   || l_where_clause;
575 
576   OPEN term_cv FOR l_sql_stmt USING p_supervisor_id, p_from_date, p_to_date;
577   FETCH term_cv INTO p_total_term_invol, p_total_term_vol, p_total_term;
578   CLOSE term_cv;
579 
580 EXCEPTION WHEN OTHERS THEN
581 
582   RETURN;
583 
584 END calc_sup_term_pvt;
585 
586 /******************************************************************************/
587 /* Returns worker Termination Date                                            */
588 /******************************************************************************/
589 FUNCTION get_term_date (p_assignment_id  IN NUMBER
590                        ,p_person_id      IN NUMBER)
591 
592             RETURN DATE IS
593  l_end_place_date DATE;
594 BEGIN
595 
596   SELECT effective_change_end_date  INTO l_end_place_date
597   FROM hri_mb_asgn_events_ct asgn
598   WHERE
599        asgn.person_id = p_person_id
600   AND  asgn.assignment_id = p_assignment_id
601   and  asgn.worker_term_nxt_ind = 1 ;
602 
603   RETURN l_end_place_date ;
604 
605 EXCEPTION WHEN OTHERS THEN
606   RETURN null;
607 
608 END get_term_date;
609 
610 
611 END hri_bpl_dbi_calc_period;