1: Package Body hxc_ff_dict as
2: /* $Header: hxcffpkg.pkb 120.5 2011/07/14 11:29:21 bbayragi ship $ */
3:
4: g_debug boolean :=hr_utility.debug_enabled;
5:
6: function formula(
7: p_formula_id in number
8: , p_resource_id in number
37: AND asg.assignment_type in ('E','C');
38:
39: begin -- formula
40:
41: g_debug:=hr_utility.debug_enabled;
42: if g_debug then
43: l_proc := g_package||'.formula';
44: hr_utility.set_location ('Entering '||l_proc,10);
45: hr_utility.set_location ('Before Init Formula '||l_proc,20);
40:
41: g_debug:=hr_utility.debug_enabled;
42: if g_debug then
43: l_proc := g_package||'.formula';
44: hr_utility.set_location ('Entering '||l_proc,10);
45: hr_utility.set_location ('Before Init Formula '||l_proc,20);
46: end if;
47: ff_utils.set_debug(127);
48: ff_exec.init_formula
41: g_debug:=hr_utility.debug_enabled;
42: if g_debug then
43: l_proc := g_package||'.formula';
44: hr_utility.set_location ('Entering '||l_proc,10);
45: hr_utility.set_location ('Before Init Formula '||l_proc,20);
46: end if;
47: ff_utils.set_debug(127);
48: ff_exec.init_formula
49: (p_formula_id => p_formula_id,
50: p_effective_date => p_submission_date,
51: p_inputs => l_inputs,
52: p_outputs => l_outputs);
53: if g_debug then
54: hr_utility.set_location ('After Init Formula '||l_proc,30);
55: end if;
56:
57: -- check the cache for the assignment id
58: -- (should always be there now)
90: -- array locations we put the values into, this is because of the caching
91: -- mechanism that formula uses.
92: --
93: if g_debug then
94: hr_utility.set_location ('First Position'||l_inputs.first,10);
95: hr_utility.set_location ('Last Position'||l_inputs.last,10);
96: end if;
97: --
98: -- Account for case where formula has no contexts or inputs
91: -- mechanism that formula uses.
92: --
93: if g_debug then
94: hr_utility.set_location ('First Position'||l_inputs.first,10);
95: hr_utility.set_location ('Last Position'||l_inputs.last,10);
96: end if;
97: --
98: -- Account for case where formula has no contexts or inputs
99: --
99: --
100: for l_count in nvl(l_inputs.first,0)..nvl(l_inputs.last,-1) loop
101: --
102: if g_debug then
103: hr_utility.set_location ('Current Context'||l_inputs(l_count).name,10);
104: end if;
105: -- *** CONTEXTS ****
106:
107: if l_inputs(l_count).name = 'DATE_EARNED'
129: -- Note that you must pass the date as a string, that is because
130: -- of the canonical date change of 11.5
131: --
132: if g_debug then
133: hr_utility.set_location ('Submission Date '||to_char(p_submission_date),10);
134: end if;
135: -- Still the fast formula does't accept the full canonical form.
136: -- l_inputs(l_count).value := fnd_date.date_to_canonical(p_submission_date);
137: l_inputs(l_count).value := to_char(p_submission_date, 'YYYY/MM/DD HH24:MI:SS');
231: end loop;
232: for l_count in nvl(l_inputs.first,0)..nvl(l_inputs.last,-1) loop
233: --
234: if g_debug then
235: hr_utility.set_location ('GAZ Current Context: '||l_inputs(l_count).name||' Value: '||l_inputs(l_count).value ,999);
236: end if;
237: --
238: END LOOP;
239: --
243: ff_exec.run_formula(p_inputs => l_inputs,
244: p_outputs => l_outputs);
245: --
246: if g_debug then
247: hr_utility.set_location ('Leaving '||l_proc,10);
248: end if;
249: for l_count in nvl(l_outputs.first,0)..nvl(l_outputs.last,-1) loop
250: --
251: if g_debug then
248: end if;
249: for l_count in nvl(l_outputs.first,0)..nvl(l_outputs.last,-1) loop
250: --
251: if g_debug then
252: hr_utility.set_location ('GAZ Current Context: '||l_outputs(l_count).name||' Value: '||l_outputs(l_count).value ,999);
253: end if;
254: --
255: END LOOP;
256: return l_outputs;
257:
258: EXCEPTION WHEN OTHERS THEN
259:
260: if g_debug then
261: hr_utility.trace('gazza - error is '||SQLERRM);
262: end if;
263:
264: raise_application_error(-20000,'ORA'||sqlcode||':'||sqlerrm);
265:
317:
318:
319: if g_debug then
320: l_proc := g_package||'.set_pto_time_category';
321: hr_utility.set_location('Processing '||l_proc, 10);
322: end if;
323:
324: OPEN csr_get_time_category_id;
325: FETCH csr_get_time_category_id INTO l_tc_id, l_tc_name;
361:
362:
363: BEGIN
364:
365: g_debug:=hr_utility.debug_enabled;
366: if g_debug then
367: l_proc:= g_package||'.decode_formula_segments';
368: hr_utility.set_location('Entering '||l_proc, 10);
369: end if;
364:
365: g_debug:=hr_utility.debug_enabled;
366: if g_debug then
367: l_proc:= g_package||'.decode_formula_segments';
368: hr_utility.set_location('Entering '||l_proc, 10);
369: end if;
370:
371: -- initialise g_time_category_id
372:
375: FOR r_seg IN csr_get_flex_segments ( p_formula_name => p_formula_name )
376: LOOP
377:
378: if g_debug then
379: hr_utility.set_location('Processing '||l_proc, 10);
380: end if;
381:
382: IF ( r_seg.application_column_name = 'ATTRIBUTE1' )
383: THEN
381:
382: IF ( r_seg.application_column_name = 'ATTRIBUTE1' )
383: THEN
384: if g_debug then
385: hr_utility.trace('');
386: hr_utility.trace('attribute 1 param is '||r_seg.end_user_column_name);
387: hr_utility.trace('attribute 1 param value is '||p_rule_rec.attribute1);
388: end if;
389:
382: IF ( r_seg.application_column_name = 'ATTRIBUTE1' )
383: THEN
384: if g_debug then
385: hr_utility.trace('');
386: hr_utility.trace('attribute 1 param is '||r_seg.end_user_column_name);
387: hr_utility.trace('attribute 1 param value is '||p_rule_rec.attribute1);
388: end if;
389:
390: p_param_rec.param1_value := p_rule_rec.attribute1;
383: THEN
384: if g_debug then
385: hr_utility.trace('');
386: hr_utility.trace('attribute 1 param is '||r_seg.end_user_column_name);
387: hr_utility.trace('attribute 1 param value is '||p_rule_rec.attribute1);
388: end if;
389:
390: p_param_rec.param1_value := p_rule_rec.attribute1;
391: p_param_rec.param1 := UPPER(r_seg.end_user_column_name);
414:
415: ELSIF ( r_seg.application_column_name = 'ATTRIBUTE2' )
416: THEN
417: if g_debug then
418: hr_utility.trace('');
419: hr_utility.trace('attribute 2 param is '||r_seg.end_user_column_name);
420: hr_utility.trace('attribute 2 param value is '||p_rule_rec.attribute2);
421: end if;
422:
415: ELSIF ( r_seg.application_column_name = 'ATTRIBUTE2' )
416: THEN
417: if g_debug then
418: hr_utility.trace('');
419: hr_utility.trace('attribute 2 param is '||r_seg.end_user_column_name);
420: hr_utility.trace('attribute 2 param value is '||p_rule_rec.attribute2);
421: end if;
422:
423: p_param_rec.param2_value := p_rule_rec.attribute2;
416: THEN
417: if g_debug then
418: hr_utility.trace('');
419: hr_utility.trace('attribute 2 param is '||r_seg.end_user_column_name);
420: hr_utility.trace('attribute 2 param value is '||p_rule_rec.attribute2);
421: end if;
422:
423: p_param_rec.param2_value := p_rule_rec.attribute2;
424: p_param_rec.param2 := UPPER(r_seg.end_user_column_name);
447:
448: ELSIF ( r_seg.application_column_name = 'ATTRIBUTE3' )
449: THEN
450: if g_debug then
451: hr_utility.trace('');
452: hr_utility.trace('attribute 3 param is '||r_seg.end_user_column_name);
453: hr_utility.trace('attribute 3 param value is '||p_rule_rec.attribute3);
454: end if;
455:
448: ELSIF ( r_seg.application_column_name = 'ATTRIBUTE3' )
449: THEN
450: if g_debug then
451: hr_utility.trace('');
452: hr_utility.trace('attribute 3 param is '||r_seg.end_user_column_name);
453: hr_utility.trace('attribute 3 param value is '||p_rule_rec.attribute3);
454: end if;
455:
456: p_param_rec.param3_value := p_rule_rec.attribute3;
449: THEN
450: if g_debug then
451: hr_utility.trace('');
452: hr_utility.trace('attribute 3 param is '||r_seg.end_user_column_name);
453: hr_utility.trace('attribute 3 param value is '||p_rule_rec.attribute3);
454: end if;
455:
456: p_param_rec.param3_value := p_rule_rec.attribute3;
457: p_param_rec.param3 := UPPER(r_seg.end_user_column_name);
810:
811: END LOOP; -- csr_get_flex_segments
812:
813: if g_debug then
814: hr_utility.set_location('Leaving '||l_proc, 20);
815: end if;
816:
817:
818: END decode_formula_segments;
920:
921: END IF;
922:
923: if g_debug then
924: hr_utility.trace('');
925: hr_utility.trace(' ********** Fix Periods ************** ');
926: hr_utility.trace(' TC period start is :'||TO_CHAR(l_period_tab(x).period_start, 'DD-MON-YY HH24:MI:SS'));
927: hr_utility.trace(' TC period end is :'||TO_CHAR(l_period_tab(x).period_end, 'DD-MON-YY HH24:MI:SS'));
928: hr_utility.trace(' pre TC period start is :'||TO_CHAR(l_period_tab(x).db_pre_period_start, 'DD-MON-YY HH24:MI:SS'));
921: END IF;
922:
923: if g_debug then
924: hr_utility.trace('');
925: hr_utility.trace(' ********** Fix Periods ************** ');
926: hr_utility.trace(' TC period start is :'||TO_CHAR(l_period_tab(x).period_start, 'DD-MON-YY HH24:MI:SS'));
927: hr_utility.trace(' TC period end is :'||TO_CHAR(l_period_tab(x).period_end, 'DD-MON-YY HH24:MI:SS'));
928: hr_utility.trace(' pre TC period start is :'||TO_CHAR(l_period_tab(x).db_pre_period_start, 'DD-MON-YY HH24:MI:SS'));
929: hr_utility.trace(' pre TC period end is :'||TO_CHAR(l_period_tab(x).db_pre_period_end, 'DD-MON-YY HH24:MI:SS'));
922:
923: if g_debug then
924: hr_utility.trace('');
925: hr_utility.trace(' ********** Fix Periods ************** ');
926: hr_utility.trace(' TC period start is :'||TO_CHAR(l_period_tab(x).period_start, 'DD-MON-YY HH24:MI:SS'));
927: hr_utility.trace(' TC period end is :'||TO_CHAR(l_period_tab(x).period_end, 'DD-MON-YY HH24:MI:SS'));
928: hr_utility.trace(' pre TC period start is :'||TO_CHAR(l_period_tab(x).db_pre_period_start, 'DD-MON-YY HH24:MI:SS'));
929: hr_utility.trace(' pre TC period end is :'||TO_CHAR(l_period_tab(x).db_pre_period_end, 'DD-MON-YY HH24:MI:SS'));
930: hr_utility.trace(' post TC period start is:'||TO_CHAR(l_period_tab(x).db_post_period_start, 'DD-MON-YY HH24:MI:SS'));
923: if g_debug then
924: hr_utility.trace('');
925: hr_utility.trace(' ********** Fix Periods ************** ');
926: hr_utility.trace(' TC period start is :'||TO_CHAR(l_period_tab(x).period_start, 'DD-MON-YY HH24:MI:SS'));
927: hr_utility.trace(' TC period end is :'||TO_CHAR(l_period_tab(x).period_end, 'DD-MON-YY HH24:MI:SS'));
928: hr_utility.trace(' pre TC period start is :'||TO_CHAR(l_period_tab(x).db_pre_period_start, 'DD-MON-YY HH24:MI:SS'));
929: hr_utility.trace(' pre TC period end is :'||TO_CHAR(l_period_tab(x).db_pre_period_end, 'DD-MON-YY HH24:MI:SS'));
930: hr_utility.trace(' post TC period start is:'||TO_CHAR(l_period_tab(x).db_post_period_start, 'DD-MON-YY HH24:MI:SS'));
931: hr_utility.trace(' post TC period end is :'||TO_CHAR(l_period_tab(x).db_post_period_end, 'DD-MON-YY HH24:MI:SS'));
924: hr_utility.trace('');
925: hr_utility.trace(' ********** Fix Periods ************** ');
926: hr_utility.trace(' TC period start is :'||TO_CHAR(l_period_tab(x).period_start, 'DD-MON-YY HH24:MI:SS'));
927: hr_utility.trace(' TC period end is :'||TO_CHAR(l_period_tab(x).period_end, 'DD-MON-YY HH24:MI:SS'));
928: hr_utility.trace(' pre TC period start is :'||TO_CHAR(l_period_tab(x).db_pre_period_start, 'DD-MON-YY HH24:MI:SS'));
929: hr_utility.trace(' pre TC period end is :'||TO_CHAR(l_period_tab(x).db_pre_period_end, 'DD-MON-YY HH24:MI:SS'));
930: hr_utility.trace(' post TC period start is:'||TO_CHAR(l_period_tab(x).db_post_period_start, 'DD-MON-YY HH24:MI:SS'));
931: hr_utility.trace(' post TC period end is :'||TO_CHAR(l_period_tab(x).db_post_period_end, 'DD-MON-YY HH24:MI:SS'));
932: end if;
925: hr_utility.trace(' ********** Fix Periods ************** ');
926: hr_utility.trace(' TC period start is :'||TO_CHAR(l_period_tab(x).period_start, 'DD-MON-YY HH24:MI:SS'));
927: hr_utility.trace(' TC period end is :'||TO_CHAR(l_period_tab(x).period_end, 'DD-MON-YY HH24:MI:SS'));
928: hr_utility.trace(' pre TC period start is :'||TO_CHAR(l_period_tab(x).db_pre_period_start, 'DD-MON-YY HH24:MI:SS'));
929: hr_utility.trace(' pre TC period end is :'||TO_CHAR(l_period_tab(x).db_pre_period_end, 'DD-MON-YY HH24:MI:SS'));
930: hr_utility.trace(' post TC period start is:'||TO_CHAR(l_period_tab(x).db_post_period_start, 'DD-MON-YY HH24:MI:SS'));
931: hr_utility.trace(' post TC period end is :'||TO_CHAR(l_period_tab(x).db_post_period_end, 'DD-MON-YY HH24:MI:SS'));
932: end if;
933:
926: hr_utility.trace(' TC period start is :'||TO_CHAR(l_period_tab(x).period_start, 'DD-MON-YY HH24:MI:SS'));
927: hr_utility.trace(' TC period end is :'||TO_CHAR(l_period_tab(x).period_end, 'DD-MON-YY HH24:MI:SS'));
928: hr_utility.trace(' pre TC period start is :'||TO_CHAR(l_period_tab(x).db_pre_period_start, 'DD-MON-YY HH24:MI:SS'));
929: hr_utility.trace(' pre TC period end is :'||TO_CHAR(l_period_tab(x).db_pre_period_end, 'DD-MON-YY HH24:MI:SS'));
930: hr_utility.trace(' post TC period start is:'||TO_CHAR(l_period_tab(x).db_post_period_start, 'DD-MON-YY HH24:MI:SS'));
931: hr_utility.trace(' post TC period end is :'||TO_CHAR(l_period_tab(x).db_post_period_end, 'DD-MON-YY HH24:MI:SS'));
932: end if;
933:
934: END LOOP;
927: hr_utility.trace(' TC period end is :'||TO_CHAR(l_period_tab(x).period_end, 'DD-MON-YY HH24:MI:SS'));
928: hr_utility.trace(' pre TC period start is :'||TO_CHAR(l_period_tab(x).db_pre_period_start, 'DD-MON-YY HH24:MI:SS'));
929: hr_utility.trace(' pre TC period end is :'||TO_CHAR(l_period_tab(x).db_pre_period_end, 'DD-MON-YY HH24:MI:SS'));
930: hr_utility.trace(' post TC period start is:'||TO_CHAR(l_period_tab(x).db_post_period_start, 'DD-MON-YY HH24:MI:SS'));
931: hr_utility.trace(' post TC period end is :'||TO_CHAR(l_period_tab(x).db_post_period_end, 'DD-MON-YY HH24:MI:SS'));
932: end if;
933:
934: END LOOP;
935:
938: END fix_periods;
939:
940: BEGIN
941:
942: g_debug:=hr_utility.debug_enabled;
943: if g_debug then
944: l_proc := g_package||'.execute_approval_formula';
945: hr_utility.set_location('Entering '||l_proc, 10);
946: end if;
941:
942: g_debug:=hr_utility.debug_enabled;
943: if g_debug then
944: l_proc := g_package||'.execute_approval_formula';
945: hr_utility.set_location('Entering '||l_proc, 10);
946: end if;
947:
948: decode_formula_segments (
949: p_formula_name => p_rule_rec.formula_name
953: , p_reference_value => l_reference_period
954: , p_consider_zero_hours => l_consider_zero_hours );
955:
956: if g_debug then
957: hr_utility.set_location('Processing '||l_proc, 30);
958: end if;
959:
960: IF ( l_period_id IS NULL )
961: THEN
960: IF ( l_period_id IS NULL )
961: THEN
962:
963: if g_debug then
964: hr_utility.set_location('Processing '||l_proc, 40);
965: end if;
966:
967:
968: -- no period id entered via TER thus use application period
969:
970: l_period_end_date := TO_DATE(TO_CHAR(p_period_end_date, 'DD/MM/YYYY')||' 23:59:59','DD/MM/YYYY HH24:MI:SS');
971:
972: if g_debug then
973: hr_utility.trace('Application approval period start is '||TO_CHAR(p_period_start_date, 'DD-MON-YY HH24:MI:SS'));
974: hr_utility.trace('Application approval period end is ' ||TO_CHAR(l_period_end_date, 'DD-MON-YY HH24:MI:SS'));
975: end if;
976:
977: hxc_time_entry_rules_utils_pkg.calc_timecard_periods (
970: l_period_end_date := TO_DATE(TO_CHAR(p_period_end_date, 'DD/MM/YYYY')||' 23:59:59','DD/MM/YYYY HH24:MI:SS');
971:
972: if g_debug then
973: hr_utility.trace('Application approval period start is '||TO_CHAR(p_period_start_date, 'DD-MON-YY HH24:MI:SS'));
974: hr_utility.trace('Application approval period end is ' ||TO_CHAR(l_period_end_date, 'DD-MON-YY HH24:MI:SS'));
975: end if;
976:
977: hxc_time_entry_rules_utils_pkg.calc_timecard_periods (
978: p_timecard_period_start => p_tc_period_start_date
984:
985: ELSE -- user entered period via TER thus override application period
986:
987: if g_debug then
988: hr_utility.set_location('Processing '||l_proc, 50);
989: end if;
990:
991: /* NOTE: This code pulled from hxc_time_Entry_rules_utils_pkg */
992:
995: FETCH hxc_time_entry_rules_utils_pkg.csr_get_period_info INTO l_period_type, l_duration_in_days, l_period_start;
996: CLOSE hxc_time_entry_rules_utils_pkg.csr_get_period_info;
997:
998: if g_debug then
999: hr_utility.trace('');
1000: hr_utility.trace('*********** Period Info ************');
1001: hr_utility.trace('period type is '||l_period_type);
1002: hr_utility.trace('duration in days is '||TO_CHAR(l_duration_in_days));
1003: hr_utility.trace('period start date is '||TO_CHAR(l_period_start,'DD-MON-YY HH24:MI:SS'));
996: CLOSE hxc_time_entry_rules_utils_pkg.csr_get_period_info;
997:
998: if g_debug then
999: hr_utility.trace('');
1000: hr_utility.trace('*********** Period Info ************');
1001: hr_utility.trace('period type is '||l_period_type);
1002: hr_utility.trace('duration in days is '||TO_CHAR(l_duration_in_days));
1003: hr_utility.trace('period start date is '||TO_CHAR(l_period_start,'DD-MON-YY HH24:MI:SS'));
1004: end if;
997:
998: if g_debug then
999: hr_utility.trace('');
1000: hr_utility.trace('*********** Period Info ************');
1001: hr_utility.trace('period type is '||l_period_type);
1002: hr_utility.trace('duration in days is '||TO_CHAR(l_duration_in_days));
1003: hr_utility.trace('period start date is '||TO_CHAR(l_period_start,'DD-MON-YY HH24:MI:SS'));
1004: end if;
1005:
998: if g_debug then
999: hr_utility.trace('');
1000: hr_utility.trace('*********** Period Info ************');
1001: hr_utility.trace('period type is '||l_period_type);
1002: hr_utility.trace('duration in days is '||TO_CHAR(l_duration_in_days));
1003: hr_utility.trace('period start date is '||TO_CHAR(l_period_start,'DD-MON-YY HH24:MI:SS'));
1004: end if;
1005:
1006: -- gaz - remove this when function changed
999: hr_utility.trace('');
1000: hr_utility.trace('*********** Period Info ************');
1001: hr_utility.trace('period type is '||l_period_type);
1002: hr_utility.trace('duration in days is '||TO_CHAR(l_duration_in_days));
1003: hr_utility.trace('period start date is '||TO_CHAR(l_period_start,'DD-MON-YY HH24:MI:SS'));
1004: end if;
1005:
1006: -- gaz - remove this when function changed
1007:
1043:
1044: l_period_end_date := TO_DATE(TO_CHAR(l_period_end_date, 'DD/MM/YYYY')||' 23:59:59','DD/MM/YYYY HH24:MI:SS');
1045:
1046: if g_debug then
1047: Hr_utility.trace('');
1048: hr_utility.trace('*********** Period Start and End ************');
1049: hr_utility.trace('period start date is '||TO_CHAR(l_period_start_date,'DD-MON-YY HH24:MI:SS'));
1050: hr_utility.trace('period end date is '||TO_CHAR(l_period_end_date,'DD-MON-YY HH24:MI:SS'));
1051: hr_utility.trace('duration in days is '||TO_CHAR(l_duration_in_days));
1044: l_period_end_date := TO_DATE(TO_CHAR(l_period_end_date, 'DD/MM/YYYY')||' 23:59:59','DD/MM/YYYY HH24:MI:SS');
1045:
1046: if g_debug then
1047: Hr_utility.trace('');
1048: hr_utility.trace('*********** Period Start and End ************');
1049: hr_utility.trace('period start date is '||TO_CHAR(l_period_start_date,'DD-MON-YY HH24:MI:SS'));
1050: hr_utility.trace('period end date is '||TO_CHAR(l_period_end_date,'DD-MON-YY HH24:MI:SS'));
1051: hr_utility.trace('duration in days is '||TO_CHAR(l_duration_in_days));
1052: end if;
1045:
1046: if g_debug then
1047: Hr_utility.trace('');
1048: hr_utility.trace('*********** Period Start and End ************');
1049: hr_utility.trace('period start date is '||TO_CHAR(l_period_start_date,'DD-MON-YY HH24:MI:SS'));
1050: hr_utility.trace('period end date is '||TO_CHAR(l_period_end_date,'DD-MON-YY HH24:MI:SS'));
1051: hr_utility.trace('duration in days is '||TO_CHAR(l_duration_in_days));
1052: end if;
1053:
1046: if g_debug then
1047: Hr_utility.trace('');
1048: hr_utility.trace('*********** Period Start and End ************');
1049: hr_utility.trace('period start date is '||TO_CHAR(l_period_start_date,'DD-MON-YY HH24:MI:SS'));
1050: hr_utility.trace('period end date is '||TO_CHAR(l_period_end_date,'DD-MON-YY HH24:MI:SS'));
1051: hr_utility.trace('duration in days is '||TO_CHAR(l_duration_in_days));
1052: end if;
1053:
1054: -- now build up table of time entry rule periods that the timecard
1047: Hr_utility.trace('');
1048: hr_utility.trace('*********** Period Start and End ************');
1049: hr_utility.trace('period start date is '||TO_CHAR(l_period_start_date,'DD-MON-YY HH24:MI:SS'));
1050: hr_utility.trace('period end date is '||TO_CHAR(l_period_end_date,'DD-MON-YY HH24:MI:SS'));
1051: hr_utility.trace('duration in days is '||TO_CHAR(l_duration_in_days));
1052: end if;
1053:
1054: -- now build up table of time entry rule periods that the timecard
1055: -- may span
1064:
1065: END IF; -- ( l_period_id IS NOT NULL )
1066:
1067: if g_debug then
1068: hr_utility.set_location('Processing '||l_proc, 60);
1069: end if;
1070:
1071: -- set submission date to be within valid assignment
1072:
1085: FOR p IN l_period_tab.FIRST .. l_period_tab.LAST
1086: LOOP
1087:
1088: if g_debug then
1089: hr_utility.set_location('Processing '||l_proc, 70);
1090: end if;
1091:
1092: l_timecard_hrs := 0;
1093:
1091:
1092: l_timecard_hrs := 0;
1093:
1094: if g_debug then
1095: hr_utility.set_location('Processing '||l_proc, 80);
1096: end if;
1097:
1098: -- Execute the formula
1099:
1097:
1098: -- Execute the formula
1099:
1100: if g_debug then
1101: hr_utility.trace('Before call to execute formula');
1102: end if;
1103:
1104: -- GPM v115.19
1105: -- take the greater of the first assignment date or the period start date
1120: , p_duration_in_days => 1
1121: , p_param_rec => l_param_rec );
1122:
1123: if g_debug then
1124: hr_utility.set_location('Processing '||l_proc, 100);
1125: end if;
1126:
1127: --
1128: if g_debug then
1125: end if;
1126:
1127: --
1128: if g_debug then
1129: hr_utility.trace('After call to execute formula');
1130: end if;
1131: --
1132: -- Analyze the outputs
1133: --
1136: --
1137: IF (l_outputs(l_count).name = 'TO_APPROVE') THEN
1138:
1139: if g_debug then
1140: hr_utility.set_location('Processing '||l_proc, 110);
1141: end if;
1142:
1143: l_result := l_outputs(l_count).value;
1144:
1172:
1173: IF ( p = 1 AND l_period_id IS NULL )
1174: THEN
1175: if g_debug then
1176: hr_utility.set_location('Processing '||l_proc, 90);
1177: end if;
1178:
1179: -- remember only want to do this once for the
1180: -- application approval period
1184:
1185: END LOOP; -- period loop
1186:
1187: if g_debug then
1188: hr_utility.set_location('Processing '||l_proc, 120);
1189: end if;
1190:
1191:
1192: -- we used to populate the message table here but the approval
1193: -- process does not currently support ANY message being returned
1194: -- for the formulas executed in the date interdependcy rules
1195:
1196: if g_debug then
1197: hr_utility.set_location('Processing '||l_proc, 130);
1198: end if;
1199:
1200: if g_debug then
1201: hr_utility.trace('l result is '||l_result);
1197: hr_utility.set_location('Processing '||l_proc, 130);
1198: end if;
1199:
1200: if g_debug then
1201: hr_utility.trace('l result is '||l_result);
1202: end if;
1203:
1204: RETURN l_result;
1205:
1205:
1206: EXCEPTION WHEN OTHERS THEN
1207:
1208: if g_debug then
1209: hr_utility.trace('In exception : '||SQLERRM);
1210: end if;
1211:
1212: raise;
1213: