DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_NO_HOLIDAY_PAY

Source


1 PACKAGE BODY pay_no_holiday_pay AS
2   /* $Header: pynoholp.pkb 120.1.12020000.2 2012/09/21 11:24:06 mkuppuch ship $ */
3   -- Function to get the G value.
4   FUNCTION get_grate(p_business_group_id IN NUMBER,   p_effective_date IN DATE) RETURN NUMBER IS l_g_rate NUMBER;
5   BEGIN
6     -- Get the daily rate value
7     BEGIN
8 
9       -- Bug Fix 5566622 : Value of G (National Insurance Base Rate) to be taken from Global and not user table.
10 
11       -- l_g_rate := to_number(hruserdt.get_table_value(p_business_group_id,   'NO_GLOBAL_CONSTANTS',   'Value',   'NATIONAL_INSURANCE_BASE_RATE',   p_effective_date));
12 
13      select to_number(GLOBAL_VALUE)
14      into l_g_rate
15      from ff_globals_f
16      where global_name = 'NO_NATIONAL_INSURANCE_BASE_RATE'
17      and LEGISLATION_CODE = 'NO'
18      and BUSINESS_GROUP_ID IS NULL
19      and p_effective_date between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE ;
20 
21 
22     EXCEPTION
23     WHEN no_data_found THEN
24       l_g_rate := NULL;
25     END;
26 
27     RETURN l_g_rate;
28   END get_grate;
29 
30   --Function to get the age of a person as on 31-AUG of the holiday year.
31   FUNCTION get_age(p_payroll_proc_start_date IN DATE,   p_date_of_birth IN DATE) RETURN NUMBER IS l_age NUMBER;
32   l_effective_date DATE;
33   BEGIN
34     --l_effective_date := to_date('31/08/' || to_char(p_payroll_proc_start_date,   'YYYY'),   'DD/MM/YYYY');
35     l_effective_date := to_date('31/12/' || to_char(p_payroll_proc_start_date,   'YYYY'),   'DD/MM/YYYY'); -- Bug#9529805 fix
36     l_age := FLOOR(months_between(l_effective_date,   p_date_of_birth) / 12);
37     RETURN l_age;
38   END get_age;
39 
40   /* Function to whether the payroll run is the last payroll run of the year in order
41  recalulate the holiday pay over 60*/ FUNCTION get_last_payroll(p_payroll_id IN NUMBER,   p_pay_proc_period_end_date IN DATE) RETURN VARCHAR2 IS l_next_period_start_date DATE;
42   l_next_period_end_date DATE;
43   l_flag VARCHAR2(1);
44 
45   CURSOR csr_next_pay_proc_end_date(p_start_date DATE) IS
46   SELECT end_date
47   FROM per_time_periods ptp
48   WHERE ptp.payroll_id = p_payroll_id
49    AND ptp.start_date = p_start_date;
50 
51   BEGIN
52     l_next_period_start_date := p_pay_proc_period_end_date + 1;
53 
54     OPEN csr_next_pay_proc_end_date(l_next_period_start_date);
55     FETCH csr_next_pay_proc_end_date
56     INTO l_next_period_end_date;
57     CLOSE csr_next_pay_proc_end_date;
58 
59     IF(to_char(p_pay_proc_period_end_date,   'YYYY') <> to_char(l_next_period_start_date,   'YYYY')) THEN
60       l_flag := 'Y';
61       RETURN l_flag;
62       ELSIF(to_char(l_next_period_start_date,   'YYYY') <> to_char(l_next_period_end_date,   'YYYY')) THEN
63         l_flag := 'Y';
64         RETURN l_flag;
65       ELSE
66         l_flag := 'N';
67         RETURN l_flag;
68       END IF;
69 
70     END;
71 
72     -- Function to get the assignments status.
73     FUNCTION get_assg_status(p_business_group_id IN NUMBER,   p_asg_id IN NUMBER,   p_pay_proc_period_start_date IN DATE,   p_pay_proc_period_end_date IN DATE) RETURN VARCHAR2 IS
74 
75      CURSOR csr_asg IS
76     SELECT MIN(paaf.effective_start_date) effective_start_date
77     FROM per_all_assignments_f paaf
78     WHERE paaf.business_group_id = p_business_group_id
79      AND paaf.assignment_id = p_asg_id
80      AND paaf.assignment_status_type_id = 3;
81 
82     l_flag VARCHAR2(1);
83     l_asg_status csr_asg % rowtype;
84 
85     BEGIN
86 
87       OPEN csr_asg;
88       FETCH csr_asg
89       INTO l_asg_status;
90       CLOSE csr_asg;
91 
92       IF l_asg_status.effective_start_date >= p_pay_proc_period_start_date
93        AND l_asg_status.effective_start_date <=(p_pay_proc_period_end_date + 1) THEN
94         l_flag := 'T';
95       ELSE
96         l_flag := 'A';
97       END IF;
98 
99       RETURN l_flag;
100 
101     END get_assg_status;
102 
103     -- Function to get the entitlement days as years last payroll run end date.
104     FUNCTION get_entitlement_days(p_business_group_id IN NUMBER,   p_asg_id IN NUMBER,   p_tax_unit_id IN NUMBER,   p_effective_date IN DATE,   p_above_60 IN VARCHAR2,   p_entit_days OUT nocopy NUMBER,
105              p_entit_days_over_60 OUT nocopy NUMBER) RETURN NUMBER IS CURSOR csr_assig_details IS
106     SELECT hsck.segment15 holiday_entitlement,
107       hsck.segment16 holiday_pay_calc_basis
108     FROM per_all_assignments_f paaf,
109       hr_soft_coding_keyflex hsck
110     WHERE paaf.business_group_id = p_business_group_id
111      AND paaf.assignment_id = p_asg_id
112      AND p_effective_date BETWEEN paaf.effective_start_date
113      AND paaf.effective_end_date
114      AND hsck.soft_coding_keyflex_id = paaf.soft_coding_keyflex_id;
115 
116     CURSOR csr_person_details IS
117     SELECT papf.per_information16 holiday_entitlement,
118       papf.per_information17 holiday_pay_calc_basis
119     FROM per_all_people_f papf,
120       per_all_assignments_f paaf
121     WHERE paaf.business_group_id = p_business_group_id
122      AND paaf.assignment_id = p_asg_id
123      AND papf.person_id = paaf.person_id
124      AND p_effective_date BETWEEN papf.effective_start_date
125      AND papf.effective_end_date;
126 
127     --Added Cursor to get the legal employer details
128     CURSOR csr_le_details IS
129     SELECT hoi.org_information1 holiday_entitlement,
130       hoi.org_information2 holiday_pay_calc_basis
131     FROM hr_organization_information hoi
132     WHERE hoi.organization_id = p_tax_unit_id
133      AND hoi.org_information_context = 'NO_HOLIDAY_PAY_DETAILS';
134 
135     CURSOR csr_globals(p_global_name VARCHAR2) IS
136     SELECT fgf.global_value
137     FROM ff_globals_f fgf
138     WHERE fgf.global_name = p_global_name
139      AND fgf.legislation_code = 'NO'
140      AND p_effective_date BETWEEN fgf.effective_start_date
141      AND fgf.effective_end_date;
142 
143     l_holiday_entitlement VARCHAR2(150);
144     l_holiday_pay_calc_basis VARCHAR2(150);
145     l_entit_days NUMBER;
146     l_entit_days_over_60 NUMBER;
147     l_assig_details csr_assig_details % rowtype;
148     l_person_details csr_person_details % rowtype;
149     l_le_details csr_le_details % rowtype;
150     l_global_name ff_globals_f.global_name%TYPE;
151     BEGIN
152 
153       /*Bug 5346834 fix*/
154 
155       OPEN csr_assig_details;
156       FETCH csr_assig_details
157       INTO l_assig_details;
158       CLOSE csr_assig_details;
159 
160       OPEN csr_person_details;
161       FETCH csr_person_details
162       INTO l_person_details;
163       CLOSE csr_person_details;
164 
165       OPEN csr_le_details;
166       FETCH csr_le_details
167       INTO l_le_details;
168       CLOSE csr_le_details;
169 
170       IF(l_assig_details.holiday_entitlement IS NOT NULL) THEN
171         l_holiday_entitlement := l_assig_details.holiday_entitlement;
172         ELSIF(l_person_details.holiday_entitlement IS NOT NULL) THEN
173           l_holiday_entitlement := l_person_details.holiday_entitlement;
174           ELSIF(l_person_details.holiday_entitlement IS NOT NULL) THEN
175             l_holiday_entitlement := l_person_details.holiday_entitlement;
176             ELSIF(l_le_details.holiday_entitlement IS NOT NULL) THEN
177               l_holiday_entitlement := l_le_details.holiday_entitlement;
178             ELSE
179               l_holiday_entitlement := 'HA';
180             END IF;
181 
182             IF(l_assig_details.holiday_pay_calc_basis IS NOT NULL) THEN
183               l_holiday_pay_calc_basis := l_assig_details.holiday_pay_calc_basis;
184               ELSIF(l_person_details.holiday_pay_calc_basis IS NOT NULL) THEN
185                 l_holiday_pay_calc_basis := l_person_details.holiday_pay_calc_basis;
186                 ELSIF(l_le_details.holiday_pay_calc_basis IS NOT NULL) THEN
187                   l_holiday_pay_calc_basis := l_le_details.holiday_pay_calc_basis;
188                 ELSE
189                   l_holiday_pay_calc_basis := '5DAY';
190                 END IF;
191 
192                 IF(l_holiday_entitlement = 'HA'
193                  AND l_holiday_pay_calc_basis = '5DAY') THEN
194                   l_global_name := 'NO_HOLACT_5DAY_ENTITLMENT';
195 
196                   ELSIF(l_holiday_entitlement = 'HA'
197                    AND l_holiday_pay_calc_basis = '6DAY') THEN
198                     l_global_name := 'NO_HOLACT_6DAY_ENTITLMENT';
199                     ELSIF(l_holiday_entitlement = 'CA'
200                      AND l_holiday_pay_calc_basis = '5DAY') THEN
201                       l_global_name := 'NO_COLAGR_5DAY_ENTITLMENT';
202                       ELSIF(l_holiday_entitlement = 'CA'
203                        AND l_holiday_pay_calc_basis = '6DAY') THEN
204                         l_global_name := 'NO_COLAGR_6DAY_ENTITLMENT';
205                       END IF;
206 
207                       OPEN csr_globals(l_global_name);
208                       FETCH csr_globals
209                       INTO p_entit_days;
210                       CLOSE csr_globals;
211 
212                       IF p_above_60 = 'Y' THEN
213 
214                         IF(l_holiday_pay_calc_basis = '5DAY') THEN
215 	                  l_global_name := 'NO_HOL_5DAY_OVER60_ENTITLEMENT';
216                         ELSE
217 			  l_global_name := 'NO_HOL_6DAY_OVER60_ENTITLEMENT';
218                         END IF;
219 			  OPEN csr_globals(l_global_name);
220 			  FETCH csr_globals
221 			  INTO p_entit_days_over_60;
222 			  CLOSE csr_globals;
223 
224                       ELSE
225                         p_entit_days_over_60 := 0;
226                       END IF;
227 
228                       RETURN 1;
229                     END get_entitlement_days;
230 
231     -- Function to get the fixed period for a payroll.
232     FUNCTION get_fixed_period(p_payroll_id IN NUMBER,   p_start_date IN DATE) RETURN NUMBER IS l_fixed_period NUMBER;
233 
234     CURSOR csr_fixed_period IS
235     SELECT period_num
236     FROM per_time_periods
237     WHERE payroll_id = p_payroll_id
238      AND to_char(start_date,   'YYYY') = to_char(p_start_date,   'YYYY')
239      AND prd_information2 = 'Y';
240     BEGIN
241 
242       OPEN csr_fixed_period;
243       FETCH csr_fixed_period
244       INTO l_fixed_period;
245       CLOSE csr_fixed_period;
246 
247       RETURN l_fixed_period;
248 
249     END get_fixed_period;
250 
251     -- Function to get the previous employer details.
252     FUNCTION get_prev_employer_days(p_business_group_id IN NUMBER,   p_assg_id IN NUMBER,   p_emp_hire_date IN DATE,   p_asg_start_date IN DATE) RETURN NUMBER IS
253 
254      l_person_id per_all_people_f.person_id%TYPE;
255 
256     CURSOR csr_person_id IS
257     SELECT paaf.person_id
258     FROM per_all_assignments_f paaf
259     WHERE paaf.business_group_id = p_business_group_id
260      AND paaf.assignment_id = p_assg_id;
261     /*Bug 5344736 fix - getting the previous employer days */
262     /* Bug 5344736 fix - added condition to check the assignment start year*/
263     CURSOR csr_prev_employer_days(p_person_id NUMBER) IS
264     SELECT SUM(to_number(ppe.pem_information2))
265     FROM per_previous_employers ppe
266     WHERE ppe.business_group_id = p_business_group_id
267      AND ppe.person_id = p_person_id
268      AND to_char(ppe.end_date,   'YYYY') = to_char(p_emp_hire_date,   'YYYY')
269      AND to_char(ppe.end_date,   'YYYY') = to_char(p_asg_start_date,   'YYYY');
270 
271     l_prev_employer_days per_previous_employers.pem_information2%TYPE;
272     BEGIN
273 
274       OPEN csr_person_id;
275       FETCH csr_person_id
276       INTO l_person_id;
277       CLOSE csr_person_id;
278 
279       OPEN csr_prev_employer_days(l_person_id);
280       FETCH csr_prev_employer_days
281       INTO l_prev_employer_days;
282       CLOSE csr_prev_employer_days;
283       RETURN nvl(l_prev_employer_days,   0);
284     END get_prev_employer_days;
285 
286 -- Function to get the holiday details required for hoiliday pay calculation.
287 FUNCTION get_hol_parameters(p_bus_group_id IN NUMBER,   p_assignment_id IN NUMBER,   p_date_earned IN DATE,   p_tax_unit_id IN NUMBER,   p_hourly_salaried_code IN OUT nocopy VARCHAR2,
288 	     p_holiday_entitlement IN OUT nocopy VARCHAR2,   p_holiday_pay_calc_basis IN OUT nocopy VARCHAR2,   p_holiday_pay_in_fixed_period IN OUT nocopy VARCHAR2,
289 	     p_hol_pay_over60_in_fix_period IN OUT nocopy VARCHAR2,   p_holiday_pay_to_be_adjusted IN OUT nocopy VARCHAR2,   p_res_hol_pay_to_6g_for_over60 IN OUT nocopy VARCHAR2) RETURN NUMBER IS
290 
291      CURSOR csr_assg_details IS
292     SELECT paaf.hourly_salaried_code hourly_salaried_code,
293       hsck.segment15 holiday_entitlement,
294       hsck.segment16 holiday_pay_calc_basis,
295       hsck.segment17 holiday_pay_in_fixed_period,
296       hsck.segment18 hol_pay_over60_in_fix_period,
297       hsck.segment19 holiday_pay_to_be_adjusted
298     FROM per_all_assignments_f paaf,
299       hr_soft_coding_keyflex hsck
300     WHERE paaf.business_group_id = p_bus_group_id
301      AND paaf.assignment_id = p_assignment_id
302      AND p_date_earned BETWEEN paaf.effective_start_date
303      AND paaf.effective_end_date
304      AND hsck.soft_coding_keyflex_id = paaf.soft_coding_keyflex_id;
305 
306     CURSOR csr_person_details IS
307     SELECT papf.per_information6 hourly_salaried_code,
308       papf.per_information16 holiday_entitlement,
309       papf.per_information17 holiday_pay_calc_basis,
310       papf.per_information18 holiday_pay_in_fixed_period,
311       papf.per_information19 hol_pay_over60_in_fix_period,
312       papf.per_information20 holiday_pay_to_be_adjusted,
313       papf.per_information21 res_hol_pay_to_6g_for_over60
314     FROM per_all_people_f papf,
315       per_all_assignments_f paaf
316     WHERE paaf.business_group_id = p_bus_group_id
317      AND paaf.assignment_id = p_assignment_id
318      AND papf.person_id = paaf.person_id
319      AND p_date_earned BETWEEN papf.effective_start_date
320      AND papf.effective_end_date;
321 
322     --Added Cursor to get the legal employer details
323     CURSOR csr_le_details IS
324     SELECT hoi.org_information1 holiday_entitlement,
325       hoi.org_information2 holiday_pay_calc_basis,
326       hoi.org_information3 holiday_pay_in_fixed_period,
327       hoi.org_information4 hol_pay_over60_in_fix_period,
328       hoi.org_information5 holiday_pay_to_be_adjusted,
329       hoi.org_information6 res_hol_pay_to_6g_for_over60
330     FROM hr_organization_information hoi
331     WHERE hoi.organization_id = p_tax_unit_id
332      AND hoi.org_information_context = 'NO_HOLIDAY_PAY_DETAILS';
333 
334     CURSOR csr_le_hourly_sal IS
335     SELECT hoi.org_information5 hourly_salaried_code
336     FROM hr_organization_information hoi
337     WHERE hoi.organization_id = p_tax_unit_id
338      AND hoi.org_information_context = 'NO_ABSENCE_PAYMENT_DETAILS';
339 
340     l_person_details csr_person_details % rowtype;
341     l_le_details csr_le_details % rowtype;
342     l_le_hourly_sal csr_le_hourly_sal % rowtype;
343 
344     BEGIN
345 
346       OPEN csr_assg_details;
347       FETCH csr_assg_details
348       INTO p_hourly_salaried_code,
349 	p_holiday_entitlement,
350 	p_holiday_pay_calc_basis,
351 	p_holiday_pay_in_fixed_period,
352 	p_hol_pay_over60_in_fix_period,
353 	p_holiday_pay_to_be_adjusted;
354       CLOSE csr_assg_details;
355 
356       OPEN csr_person_details;
357       FETCH csr_person_details
358       INTO l_person_details;
359       CLOSE csr_person_details;
360 
361       OPEN csr_le_details;
362       FETCH csr_le_details
363       INTO l_le_details;
364       CLOSE csr_le_details;
365 
366       OPEN csr_le_hourly_sal;
367       FETCH csr_le_hourly_sal
368       INTO l_le_hourly_sal;
369       CLOSE csr_le_hourly_sal;
370 
371       IF(p_hourly_salaried_code IS NULL) THEN
372 
373 	IF(l_person_details.hourly_salaried_code IS NOT NULL) THEN
374 	  p_hourly_salaried_code := l_person_details.hourly_salaried_code;
375 	  ELSIF(l_le_hourly_sal.hourly_salaried_code IS NOT NULL) THEN
376 	    p_hourly_salaried_code := l_le_hourly_sal.hourly_salaried_code;
377 	  ELSE
378 	    p_hourly_salaried_code := 'S';
379 	  END IF;
380 
381 	END IF;
382 
383 	IF p_holiday_entitlement IS NULL THEN
384 
385 	  IF(l_person_details.holiday_entitlement IS NOT NULL) THEN
386 	    p_holiday_entitlement := l_person_details.holiday_entitlement;
387 	    ELSIF(l_le_details.holiday_entitlement IS NOT NULL) THEN
388 	      p_holiday_entitlement := l_le_details.holiday_entitlement;
389 	    ELSE
390 	      p_holiday_entitlement := 'HA';
391 	    END IF;
392 
393 	  END IF;
394 
395 	  IF p_holiday_pay_calc_basis IS NULL THEN
396 
397 	    IF(l_person_details.holiday_pay_calc_basis IS NOT NULL) THEN
398 	      p_holiday_pay_calc_basis := l_person_details.holiday_pay_calc_basis;
399 	      ELSIF(l_le_details.holiday_pay_calc_basis IS NOT NULL) THEN
400 		p_holiday_pay_calc_basis := l_le_details.holiday_pay_calc_basis;
401 	      ELSE
402 		p_holiday_pay_calc_basis := '5DAY';
403 	      END IF;
404 
405 	    END IF;
406 
407 	    IF p_holiday_pay_in_fixed_period IS NULL THEN
408 
409 	      IF(l_person_details.holiday_pay_in_fixed_period IS NOT NULL) THEN
410 		p_holiday_pay_in_fixed_period := l_person_details.holiday_pay_in_fixed_period;
411 		p_hol_pay_over60_in_fix_period := l_person_details.hol_pay_over60_in_fix_period;
412 		p_holiday_pay_to_be_adjusted := l_person_details.holiday_pay_to_be_adjusted;
413 		ELSIF(l_le_details.holiday_pay_in_fixed_period IS NOT NULL) THEN
414 		  p_holiday_pay_in_fixed_period := l_le_details.holiday_pay_in_fixed_period;
415 		  p_hol_pay_over60_in_fix_period := l_le_details.hol_pay_over60_in_fix_period;
416 		  p_holiday_pay_to_be_adjusted := l_le_details.holiday_pay_to_be_adjusted;
417 
418 		ELSE
419 		  p_holiday_pay_in_fixed_period := 'N';
420 		  p_hol_pay_over60_in_fix_period := 'N';
421 		  p_holiday_pay_to_be_adjusted := 'N';
422 		END IF;
423 
424 	      END IF;
425 
426 	      IF(l_person_details.res_hol_pay_to_6g_for_over60 IS NOT NULL) THEN
427 		p_res_hol_pay_to_6g_for_over60 := l_person_details.res_hol_pay_to_6g_for_over60;
428 		ELSIF(l_le_details.res_hol_pay_to_6g_for_over60 IS NOT NULL) THEN
429 		  p_res_hol_pay_to_6g_for_over60 := l_le_details.res_hol_pay_to_6g_for_over60;
430 		ELSE
431 		  p_res_hol_pay_to_6g_for_over60 := 'Y';
432 		END IF;
433 
434 		RETURN 1;
435 	      END get_hol_parameters;
436 
437       -- Function to get the assignment start date.
438 
439       /*Bug 5334894 fix- Added a new function to get the assignment start date*/
440  FUNCTION get_asg_start_date(p_business_group_id IN NUMBER,   p_assignment_id IN NUMBER,   p_asg_start_date OUT nocopy DATE) RETURN NUMBER IS CURSOR csr_asg_start_date IS
441       SELECT MIN(paaf.effective_start_date)
442       FROM per_all_assignments_f paaf
443       WHERE paaf.business_group_id = p_business_group_id
444        AND paaf.assignment_id = p_assignment_id
445        AND paaf.assignment_status_type_id = 1;
446 
447       BEGIN
448 
449 	OPEN csr_asg_start_date;
450 	FETCH csr_asg_start_date
451 	INTO p_asg_start_date;
452 	CLOSE csr_asg_start_date;
453 	RETURN 1;
454       END get_asg_start_date;
455 
456 --Function to get the accrual act information from absence details
457  FUNCTION get_abs_hol_accr_entitl (p_bus_group_id IN NUMBER,   p_assignment_id IN NUMBER,   p_date_earned IN DATE,   p_tax_unit_id IN NUMBER
458                                      , p_hol_accrual_entit OUT nocopy VARCHAR2) RETURN NUMBER IS
459 
460 	    CURSOR csr_person_details IS
461 	    SELECT
462 	      papf.per_information13 hol_accrual_entit
463 	    FROM per_all_people_f papf,
464 	      per_all_assignments_f paaf
465 	    WHERE paaf.business_group_id = p_bus_group_id
466 	     AND paaf.assignment_id = p_assignment_id
467 	     AND papf.person_id = paaf.person_id
468 	     AND p_date_earned BETWEEN papf.effective_start_date
469 	     AND papf.effective_end_date;
470 
471 	    --Added Cursor to get the legal employer details
472 	    CURSOR csr_le_details IS
473 	    SELECT hoi.org_information9 hol_accrual_entit
474 	    FROM hr_organization_information hoi
475 	    WHERE hoi.organization_id = p_tax_unit_id
476 	     AND hoi.org_information_context = 'NO_ABSENCE_PAYMENT_DETAILS';
477 
478 	    l_person_details csr_person_details % rowtype;
479 	    l_le_details csr_le_details % rowtype;
480 
481 	    BEGIN
482 
483 
484 	      OPEN csr_person_details;
485 	      FETCH csr_person_details
486 	      INTO l_person_details;
487 	      CLOSE csr_person_details;
488 
489 	      OPEN csr_le_details;
490 	      FETCH csr_le_details
491 	      INTO l_le_details;
492 	      CLOSE csr_le_details;
493 
494 	     p_hol_accrual_entit := NVL(NVL(l_person_details.hol_accrual_entit,l_le_details.hol_accrual_entit),'HA');
495 
496 	     RETURN 1;
497 
498 	    EXCEPTION WHEN OTHERS THEN
499 	    RETURN 0 ;
500 
501 	END get_abs_hol_accr_entitl;
502 
503 FUNCTION get_holiday_pay_base_asg_run
504     (p_assignment_action_id IN number
505    , p_payroll_action_id    IN number
506    , p_business_group_id    IN number
507    ,	p_effective_date DATE
508    , p_entity_name          IN varchar2) RETURN number IS
509 
510     ln_def_bal_id number;
511     ln_balance_value number;
512     ln_business_group_id number;
513 
514     CURSOR c_get_def_bal_id IS
515       SELECT  creator_id
516       FROM    ff_user_entities
517       WHERE   user_entity_name = p_entity_name
518       AND     (
519                       (
520                               legislation_code = 'NO'
521                       AND     business_group_id IS NULL
522                       )
523               OR      (
524                               legislation_code IS NULL
525                       AND     business_group_id = p_business_group_id
526                       )
527               )
528       AND     creator_type = 'B';
529 
530   BEGIN
531     hr_utility.trace ('Entering into the function PAY_NO_HOLIDAY_PAY.GET_HOLIDAY_PAY_BASE_ASG_RUN');
532 
533     OPEN c_get_def_bal_id;
534 
535     FETCH c_get_def_bal_id
536       INTO    ln_def_bal_id;
537 
538     IF c_get_def_bal_id%FOUND THEN
539       hr_utility.trace ('def bal id for '  || p_entity_name   || 'is ' || ln_def_bal_id);
540 
541       ln_balance_value := pay_balance_pkg.get_value (ln_def_bal_id, p_assignment_action_id
542                                                    , NULL, NULL
543                                                    , NULL, NULL
544                                                    , NULL, NULL
545                                                    , NULL, 'TRUE');
546     ELSE
547       hr_utility.trace ('def bal id NOT FOUND for '  || p_entity_name  || 'is ' || ln_def_bal_id);
548       hr_utility.raise_error;
549     END IF;
550 
551     CLOSE c_get_def_bal_id;
552 
553     hr_utility.trace ('ln_balance_value '|| ln_balance_value);
554 
555     hr_utility.trace ('Leaving the function PAY_NO_HOLIDAY_PAY.GET_HOLIDAY_PAY_BASE_ASG_RUN');
556 
557     RETURN ln_balance_value;
558 
559   END get_holiday_pay_base_asg_run;
560 
561 END;