DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_SA_USER_FUNCTION

Source


1 package body pay_sa_user_function as
2 /* $Header: pysarunf.pkb 120.0.12010000.2 2008/10/31 11:59:17 bkeshary ship $ */
3   g_formula_name    ff_formulas_f.formula_name%TYPE;
4   PROCEDURE run_formula(p_formula_id      IN NUMBER
5                        ,p_effective_date  IN DATE
6                        ,p_inputs          IN ff_exec.inputs_t
7                        ,p_outputs         IN OUT NOCOPY ff_exec.outputs_t) IS
8    l_inputs ff_exec.inputs_t;
9    l_outputs ff_exec.outputs_t;
10   BEGIN
11    hr_utility.set_location('--In Formula ',20);
12    --
13    -- Initialize the formula
14    --
15    ff_exec.init_formula(p_formula_id, p_effective_date  , l_inputs, l_outputs);
16    --
17    hr_utility.trace('after ff_exec');
18    -- Set up the input values
19    --
20    IF l_inputs.count > 0 and p_inputs.count > 0 THEN
21     FOR i IN l_inputs.first..l_inputs.last LOOP
22      FOR j IN p_inputs.first..p_inputs.last LOOP
23       IF l_inputs(i).name = p_inputs(j).name THEN
24        l_inputs(i).value := p_inputs(j).value;
25        exit;
26       END IF;
27      END LOOP;
28     END LOOP;
29    END IF;
30    --
31    -- Run the formula
32    --
33    hr_utility.trace('about to exec');
34    ff_exec.run_formula(l_inputs,l_outputs);
35    --
36    -- Populate the output table
37    --
38    IF l_outputs.count > 0 and p_inputs.count > 0 then
39     FOR i IN l_outputs.first..l_outputs.last LOOP
40      FOR j IN p_outputs.first..p_outputs.last LOOP
41       IF l_outputs(i).name = p_outputs(j).name THEN
42        p_outputs(j).value := l_outputs(i).value;
43        exit;
44       END IF;
45      END LOOP;
46     END LOOP;
47    END IF;
48   EXCEPTION
49    /*WHEN hr_formula_error THEN
50     fnd_message.set_name('PER','FFX22J_FORMULA_NOT_FOUND');
51     fnd_message.set_token('1', g_formula_name);
52     fnd_message.raise_error;*/
53    WHEN OTHERS THEN
54     raise;
55   --
56   END run_formula;
57 
58   function run_gosi_formula
59    (p_assignment_id         IN NUMBER
60    ,p_date_earned           IN DATE
61    ,p_business_group_id     IN NUMBER
62    ,p_payroll_id            IN NUMBER
63    ,p_payroll_action_id     IN NUMBER
64    ,p_assignment_action_id  IN NUMBER
65    ,p_tax_unit_id           IN NUMBER
66    --,p_balance_date          IN DATE
67    ,p_element_entry_id      IN NUMBER
68    ,p_element_type_id       IN NUMBER
69    ,p_original_entry_id     IN NUMBER
70    --,p_jurisdiction_code     IN VARCHAR2
71    --,p_tax_group             IN VARCHAR2
72    --,p_source_id             IN NUMBER
73    --,p_source_text           IN VARCHAR2
74    )
75   return NUMBER is
76     cursor csr_get_formula_id  is
77     select  HOI2.org_information1
78     from    hr_organization_units HOU
79             ,hr_organization_information HOI1
80             ,hr_organization_information HOI2
81             ,hr_soft_coding_keyflex HSCK
82             ,per_all_assignments_f PAA
83     where   HOU.business_group_id = p_business_group_id
84     and    trunc(p_date_earned) between HOU.date_from and nvl(HOU.date_to,
85 	to_date('4712/12/31','YYYY/MM/DD'))
86     and   HOU.organization_id = HOI1.organization_id
87     and   HOI1.org_information_context = 'CLASS'
88     and   HOI1.org_information1 = 'HR_LEGAL'
89     and   HOI1.organization_id = HOI2.organization_id
90     and   PAA.assignment_id = p_assignment_id
91     and   trunc(p_date_earned) between PAA.effective_start_date and PAA.effective_end_date
92     and   PAA.soft_coding_keyflex_id = HSCK.soft_coding_keyflex_id
93     and   HSCK.id_flex_num = 20
94     and   decode(HSCK.id_flex_num,20,to_number(HSCK.segment1),-9999) = HOU.organization_id
95     and   HOI2.org_information_context = 'SA_GOSI_REFERENCE_FORMULA';
96     l_formula_id NUMBER;
97     l_inputs     ff_exec.inputs_t;
98     l_outputs    ff_exec.outputs_t;
99     l_value      NUMBER;
100   begin
101     open csr_get_formula_id;
102     fetch csr_get_formula_id into l_formula_id;
103     close csr_get_formula_id;
104     l_inputs(1).name  := 'ASSIGNMENT_ID';
105     l_inputs(1).value := p_assignment_id;
106     l_inputs(2).name  := 'DATE_EARNED';
107     l_inputs(2).value := fnd_date.date_to_canonical(p_date_earned);
108     l_inputs(3).name  := 'BUSINESS_GROUP_ID';
109     l_inputs(3).value := p_business_group_id;
110     l_inputs(4).name  := 'PAYROLL_ID';
111     l_inputs(4).value := p_payroll_id;
112     l_inputs(5).name  := 'PAYROLL_ACTION_ID';
113     l_inputs(5).value := p_payroll_action_id;
114     l_inputs(6).name  := 'ASSIGNMENT_ACTION_ID';
115     l_inputs(6).value := p_assignment_action_id;
116     l_inputs(7).name  := 'TAX_UNIT_ID';
117     l_inputs(7).value := p_tax_unit_id;
118     --l_inputs(8).name  := 'BALANCE_DATE';
119     --l_inputs(8).value := fnd_date.date_to_canonical(p_balance_date);
120     l_inputs(8).name  := 'ELEMENT_ENTRY_ID';
121     l_inputs(8).value := p_element_entry_id;
122     l_inputs(9).name  := 'ELEMENT_TYPE_ID';
123     l_inputs(9).value := p_element_type_id;
124     l_inputs(10).name  := 'ORIGINAL_ENTRY_ID';
125     l_inputs(10).value := p_original_entry_id;
126     --l_inputs(11).name  := 'JURISDICTION_CODE';
127     --l_inputs(11).value := p_jurisdiction_code;
128     --l_inputs(11).name  := 'TAX_GROUP';
129     --l_inputs(11).value := p_tax_group;
130     --l_inputs(12).name  := 'SOURCE_ID';
131     --l_inputs(12).value := p_source_id;
132     --l_inputs(12).name  := 'SOURCE_TEXT';
133     --l_inputs(12).value := p_source_text;
134     l_outputs(1).name := 'GOSI_REFERENCE';
135     if l_formula_id is not null then
136       run_formula (l_formula_id
137                    ,p_date_earned
138                    ,l_inputs
139                    ,l_outputs);
140       /* Modified for the bug 7526068 */
141       l_value := NVL(fnd_number.canonical_to_number(l_outputs(l_outputs.first).value),0);
142     else
143       l_value := 0;
144     end if;
145     return(l_value);
146   end run_gosi_formula;
147 
148 end pay_sa_user_function;