DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_US_MULTI_MMRF

Source


1 PACKAGE BODY pay_us_multi_mmrf AS
2 /* $Header: payusmultimmrf.pkb 120.0.12000000.1 2007/02/23 10:16:48 sackumar noship $ */
3 FUNCTION  get_w2_er_arch_bal(
4                          w2_balance_name      in varchar2,
5                          w2_tax_unit_id           in varchar2,
6                          w2_jurisdiction_code   in varchar2,
7                          w2_jurisdiction_level   in varchar2,
8                          w2_year                     in varchar2,
9                          a1 OUT NOCOPY varchar2,
10                          a2 OUT NOCOPY varchar2,
11                          a3 OUT NOCOPY varchar2,
12                          a4 OUT NOCOPY varchar2,
13                          a5 OUT NOCOPY varchar2,
14                          a6 OUT NOCOPY varchar2,
15                          a7 OUT NOCOPY varchar2,
16                          a8 OUT NOCOPY varchar2,
17                          a9 OUT NOCOPY varchar2,
18                          a10 OUT NOCOPY varchar2,
19                          a11 OUT NOCOPY varchar2,
20                          a12 OUT NOCOPY varchar2,
21                          a13 OUT NOCOPY varchar2,
22                          a14 OUT NOCOPY varchar2,
23                          a15 OUT NOCOPY varchar2,
24                          a16 OUT NOCOPY varchar2,
25                          a17 OUT NOCOPY varchar2,
26                          a18 OUT NOCOPY varchar2,
27                          a19 OUT NOCOPY varchar2,
28                          a20 OUT NOCOPY varchar2,
29                          a21 OUT NOCOPY varchar2,
30                          a22 OUT NOCOPY varchar2,
31                          a23 OUT NOCOPY varchar2,
32                          a24 OUT NOCOPY varchar2,
33                          a25 OUT NOCOPY varchar2,
34                          a26 OUT NOCOPY varchar2,
35                          a27 OUT NOCOPY varchar2,
36                          a28 OUT NOCOPY varchar2,
37                          a29 OUT NOCOPY varchar2,
38                          a30 OUT NOCOPY varchar2,
39                          a31 OUT NOCOPY varchar2,
40                          a32 OUT NOCOPY varchar2,
41                          a33 OUT NOCOPY varchar2,
42                          a34 OUT NOCOPY varchar2,
43                          a35 OUT NOCOPY varchar2,
44                          a36 OUT NOCOPY varchar2,
45                          a37 OUT NOCOPY varchar2,
46                          a38 OUT NOCOPY varchar2,
47                          a39 OUT NOCOPY varchar2,
48                          a40 OUT NOCOPY varchar2,
49                          a41 OUT NOCOPY varchar2,
50                          a42 OUT NOCOPY varchar2,
51                          a43 OUT NOCOPY varchar2,
52                          a44 OUT NOCOPY varchar2,
53                          a45 OUT NOCOPY varchar2,
54                          a46 OUT NOCOPY varchar2,
55                          a47 OUT NOCOPY varchar2
56                          )
57                           RETURN varchar2 IS
58 
59 CURSOR C_EMP_count(cp_tax_unit_id number) IS
60   select   count(*)
61    from pay_payroll_actions ppa,
62            pay_assignment_actions paa
63  where ppa.report_type            = 'W2'
64      and report_qualifier             = 'FED'
65      and effective_date              = to_date('31/12/'||w2_year,'dd/mm/yyyy')
66      and ppa.payroll_action_id    = paa.payroll_action_id
67      and paa.action_status          = 'C'
68      and paa.tax_unit_id             = cp_tax_unit_id;
69 
70 CURSOR C_ER_SUM ( P_TAX_UNIT_ID number) IS
71 SELECT user_entity_name,
72               DECODE(fue.user_entity_name,
73        'A_REGULAR_EARNINGS_PER_GRE_YTD' ,nvl(sum(value),0) * 100,
74        'A_SUPPLEMENTAL_EARNINGS_FOR_FIT_SUBJECT_TO_TAX_PER_GRE_YTD' ,nvl(sum(value),0) * 100,
75        'A_SUPPLEMENTAL_EARNINGS_FOR_NWFIT_SUBJECT_TO_TAX_PER_GRE_YTD' ,nvl(sum(value),0) * 100,
76        'A_PRE_TAX_DEDUCTIONS_FOR_FIT_SUBJECT_TO_TAX_PER_GRE_YTD' ,nvl(sum(value),0) * 100,
77        'A_FIT_NON_W2_PRE_TAX_DEDNS_PER_GRE_YTD' ,nvl(sum(value),0) * 100,
78        'A_PRE_TAX_DEDUCTIONS_PER_GRE_YTD' ,nvl(sum(value),0) * 100,
79        'A_FIT_WITHHELD_PER_GRE_YTD',nvl(sum(value),0) * 100,
80        'A_SS_EE_TAXABLE_PER_GRE_YTD', nvl(sum(value),0) * 100 ,
81        'A_SS_EE_WITHHELD_PER_GRE_YTD', nvl(sum(value),0) * 100 ,
82        'A_MEDICARE_EE_TAXABLE_PER_GRE_YTD', nvl(sum(value),0) * 100 ,
83        'A_MEDICARE_EE_WITHHELD_PER_GRE_YTD', nvl(sum(value),0) * 100 ,
84        'A_W2_BOX_7_PER_GRE_YTD', nvl(sum(value),0) * 100 ,
85        'A_EIC_ADVANCE_PER_GRE_YTD',nvl(sum(value),0) * 100,
86        'A_W2_DEPENDENT_CARE_PER_GRE_YTD',nvl(sum(value),0) * 100  ,
87        'A_W2_401K_PER_GRE_YTD',nvl(sum(value),0) * 100,
88        'A_W2_403B_PER_GRE_YTD',nvl(sum(value),0) * 100,
89        'A_W2_408K_PER_GRE_YTD', nvl(sum(value),0) * 100,
90        'A_W2_457_PER_GRE_YTD', nvl(sum(value),0) * 100,
91        'A_W2_501C_PER_GRE_YTD', nvl(sum(value),0) * 100,
92        'A_W2_MILITARY_HOUSING_PER_GRE_YTD', nvl(sum(value),0) * 100,
93        'A_W2_NONQUAL_PLAN_PER_GRE_YTD', nvl(sum(value),0) * 100,
94        'A_W2_NONQUAL_457_PER_GRE_YTD',nvl(sum(value),0) * 100,
95        'A_W2_BOX_11_PER_GRE_YTD', nvl(sum(value),0) * 100,
96        'A_W2_GROUP_TERM_LIFE_PER_GRE_YTD', nvl(sum(value),0) * 100,
97        'A_FIT_3RD_PARTY_PER_GRE_YTD', nvl(sum(value),0) * 100,
98        'A_W2_NONQUAL_STOCK_PER_GRE_YTD', nvl(sum(value),0) * 100,
99        'A_W2_HSA_PER_GRE_YTD', nvl(sum(value),0) * 100,
100        'A_W2_NONTAX_COMBAT_PER_GRE_YTD', nvl(sum(value),0) * 100,
101        'A_W2_NONQUAL_DEF_COMP_PER_GRE_YTD',nvl(sum(value),0) * 100,
102        'A_W2_BOX_8_PER_GRE_YTD', nvl(sum(value),0) * 100,
103        'A_W2_UNCOLL_SS_TAX_TIPS_PER_GRE_YTD', nvl(sum(value),0) * 100,
104        'A_W2_UNCOLL_MED_TIPS_PER_GRE_YTD', nvl(sum(value),0) * 100,
105        'A_W2_MSA_PER_GRE_YTD', nvl(sum(value),0) * 100,
106        'A_W2_408P_PER_GRE_YTD', nvl(sum(value),0) * 100,
107        'A_W2_ADOPTION_PER_GRE_YTD', nvl(sum(value),0) * 100,
108        'A_W2_UNCOLL_SS_GTL_PER_GRE_YTD', nvl(sum(value),0) * 100,
109        'A_W2_UNCOLL_MED_GTL_PER_GRE_YTD', nvl(sum(value),0) * 100,
110        'A_W2_409A_NONQUAL_INCOME_PER_GRE_YTD', nvl(sum(value),0) * 100,
111        'A_TERRITORY_RETIRE_CONTRIB_PER_GRE_YTD', nvl(sum(value),0) * 100,
112        'A_TERRITORY_TAXABLE_ALLOW_PER_GRE_YTD', nvl(sum(value),0) * 100,
113        'A_TERRITORY_TAXABLE_COMM_PER_GRE_YTD', nvl(sum(value),0) * 100,
114        'A_TERRITORY_TAXABLE_TIPS_PER_GRE_YTD', nvl(sum(value),0) * 100
115        , 'A_W2_ROTH_401K_PER_GRE_YTD', nvl(sum(value),0) * 100
116        , 'A_W2_ROTH_403B_PER_GRE_YTD', nvl(sum(value),0) * 100
117        ) val
118  FROM  ff_archive_items fai,
119              pay_action_interlocks pai,
120              pay_payroll_actions  ppa,
121              pay_assignment_actions paa,
122              ff_user_entities fue
123 where   ppa.report_type           = 'W2'
124    and ppa.report_qualifier         = 'FED'
125    and effective_date                 = to_date('31/12/'||w2_year,'dd/mm/yyyy')
126    and ppa.payroll_action_id       = paa.payroll_action_id
127    and paa.tax_unit_id                = p_tax_unit_id
128    and paa.action_status             = 'C'
129    and paa.assignment_action_id = pai.locking_action_id
130    and fai.context1                     = pai.locked_action_id
131    and fai.user_entity_id             = fue.user_entity_id
132    and fue.user_entity_name  IN
133 (
134      'A_REGULAR_EARNINGS_PER_GRE_YTD' ,
135      'A_SUPPLEMENTAL_EARNINGS_FOR_FIT_SUBJECT_TO_TAX_PER_GRE_YTD' ,
136      'A_SUPPLEMENTAL_EARNINGS_FOR_NWFIT_SUBJECT_TO_TAX_PER_GRE_YTD' ,
137      'A_PRE_TAX_DEDUCTIONS_FOR_FIT_SUBJECT_TO_TAX_PER_GRE_YTD' ,
138      'A_FIT_NON_W2_PRE_TAX_DEDNS_PER_GRE_YTD' ,
139      'A_PRE_TAX_DEDUCTIONS_PER_GRE_YTD' ,
140      'A_FIT_WITHHELD_PER_GRE_YTD',
141      'A_SS_EE_TAXABLE_PER_GRE_YTD',
142      'A_SS_EE_WITHHELD_PER_GRE_YTD',
143      'A_MEDICARE_EE_TAXABLE_PER_GRE_YTD',
144      'A_MEDICARE_EE_WITHHELD_PER_GRE_YTD',
145      'A_W2_BOX_7_PER_GRE_YTD',
146      'A_EIC_ADVANCE_PER_GRE_YTD',
147      'A_W2_DEPENDENT_CARE_PER_GRE_YTD',
148      'A_W2_401K_PER_GRE_YTD',
149      'A_W2_403B_PER_GRE_YTD',
150      'A_W2_408K_PER_GRE_YTD',
151      'A_W2_457_PER_GRE_YTD',
152      'A_W2_501C_PER_GRE_YTD',
153      'A_W2_MILITARY_HOUSING_PER_GRE_YTD',
154      'A_W2_NONQUAL_PLAN_PER_GRE_YTD',
155      'A_W2_NONQUAL_457_PER_GRE_YTD',
156      'A_W2_BOX_11_PER_GRE_YTD',
157      'A_W2_GROUP_TERM_LIFE_PER_GRE_YTD',
158      'A_FIT_3RD_PARTY_PER_GRE_YTD',
159      'A_W2_NONQUAL_STOCK_PER_GRE_YTD',
160      'A_W2_HSA_PER_GRE_YTD',
161      'A_W2_NONTAX_COMBAT_PER_GRE_YTD',
162      'A_W2_NONQUAL_DEF_COMP_PER_GRE_YTD',
163      'A_W2_BOX_8_PER_GRE_YTD',
164      /* Sum of  */
165      'A_W2_UNCOLL_SS_TAX_TIPS_PER_GRE_YTD',
166      'A_W2_UNCOLL_MED_TIPS_PER_GRE_YTD',
167      'A_W2_MSA_PER_GRE_YTD',
168      'A_W2_408P_PER_GRE_YTD',
169      'A_W2_ADOPTION_PER_GRE_YTD',
170      'A_W2_UNCOLL_SS_GTL_PER_GRE_YTD',
171      'A_W2_UNCOLL_MED_GTL_PER_GRE_YTD',
172      'A_W2_409A_NONQUAL_INCOME_PER_GRE_YTD',
173      'A_TERRITORY_RETIRE_CONTRIB_PER_GRE_YTD',
174      'A_TERRITORY_TAXABLE_ALLOW_PER_GRE_YTD',
175      'A_TERRITORY_TAXABLE_COMM_PER_GRE_YTD',
176      'A_TERRITORY_TAXABLE_TIPS_PER_GRE_YTD'
177    , 'A_W2_ROTH_401K_PER_GRE_YTD'
178    , 'A_W2_ROTH_403B_PER_GRE_YTD'
179 )
180 group by fue.user_entity_name;
181 
182 CURSOR c_ter(cp_tax_unit_id number) IS
183 SELECT
184  fue.user_entity_name,decode(fue.user_entity_name,
185                               'A_SIT_WITHHELD_PER_JD_GRE_YTD',nvl(sum(value),0) * 100,
186                               'A_SIT_SUBJ_WHABLE_PER_JD_GRE_YTD',nvl(sum(value),0) * 100,
187                               'A_SIT_SUBJ_NWHABLE_PER_JD_GRE_YTD',nvl(sum(value),0) * 100,
188                               'A_SIT_PRE_TAX_REDNS_PER_JD_GRE_YTD',nvl(sum(value),0) * 100
189                               ) val
190 FROM ff_archive_item_contexts faic
191            ,ff_archive_items fai
192            ,pay_assignment_actions paa
193            ,pay_payroll_actions ppa
194            ,pay_action_interlocks pai
195            ,ff_user_entities fue
196 WHERE
197     ppa.report_type                   = 'W2'
198 and ppa.report_qualifier           = 'FED'
199 and ppa.effective_date            = to_date('31/12/'||w2_year,'dd/mm/yyyy')
200 and paa.payroll_action_id        = ppa.payroll_action_id
201 and paa.assignment_action_id  = pai.locking_action_id
202 and fai.context1                      = pai.locked_action_id
203 and context                            = '72-000-0000'
204 and fai.archive_item_id           = faic.archive_item_id
205 and fai.user_entity_id             = fue.user_entity_id
206 and paa.tax_unit_id                = cp_tax_unit_id
207 and fue.user_entity_name       in ( 'A_SIT_WITHHELD_PER_JD_GRE_YTD',
208                                                    'A_SIT_SUBJ_WHABLE_PER_JD_GRE_YTD',
209                                                    'A_SIT_SUBJ_NWHABLE_PER_JD_GRE_YTD',
210                                                    'A_SIT_PRE_TAX_REDNS_PER_JD_GRE_YTD')
211 and paa.action_status = 'C'
212 group by fue.user_entity_name;
213 
214 
215 CURSOR c_ro_count ( cp_tax_unit_id number) IS
216 select count(*)
217 from pay_payroll_actions ppa
218        ,pay_assignment_actions paa
219        ,ff_archive_items fai
220 where ppa.report_type = 'W2'
221     and ppa.report_qualifier = 'FED'
222     and effective_date = to_date('31/12/'||w2_year,'dd/mm/yyyy')
223     and ppa.payroll_action_id = paa.payroll_action_id
224     and paa.assignment_action_id = fai.context1
225     and name is not null
226     and name like 'TRANSFER_RO_TOTAL'
227     and paa.tax_unit_id = cp_tax_unit_id
228   group by tax_unit_id;
229 
230 l_date                date;
231 l_tax_unit_id      varchar2(10);
232 l_total_emp        number;
233 l_er_sum           er_sum_table;
234 l_fit_with           varchar2(20);
235 l_ss_ee_taxable varchar2(20);
236 l_ro_count         number;
237 
238 BEGIN
239 
240         a1 := '0';
241         a2 := '0';
242         a3 := '0';
243         a4 := '0';
244         a5 := '0';
245         a6 := '0';
246         a7 := '0';
247         a8 := '0';
248         a9 := '0';
249         a10:= '0';
250         a11 := '0';
251         a12 := '0';
252         a13 := '0';
253         a14 := '0';
254         a15 := '0';
255         a16 := '0';
256         a17 := '0';
257         a18 := '0';
258         a19 := '0';
259         a20 := '0';
260         a21 := '0';
261         a22 := '0';
262         a23 := '0';
263         a24 := '0';
264         a25 := '0';
265         a26 := '0';
266         a27 := '0';
267         a28 := '0';
268         a29 := '0';
269         a30 := '0';
270         a31 := '0';
271         a32 := '0';
272         a33 := '0';
273         a34 := '0';
274         a35 := '0';
275         a36 := '0';
276         a37 := '0';
277         a38 := '0';
278         a39 := '0';
279         a40 := '0';
280         a41 := '0';
281         a42 := '0';
282         a43 := '0';
283         a44 := '0';
284         a45 := '0';
285         a46 := '0';
286         a47 := '0';
287 
288 
289      OPEN   C_EMP_COUNT(to_number(W2_tax_unit_id));
290      FETCH C_EMP_COUNT  INTO a1;
291      IF C_EMP_COUNT%NOTFOUND THEN
292          a1 := 0;
293      END IF;
294      CLOSE C_EMP_COUNT;
295 
296 
297 
298    FOR I IN C_ER_SUM(to_number(W2_TAX_UNIT_ID)) LOOP
299 
300        if I.user_entity_name = 'A_REGULAR_EARNINGS_PER_GRE_YTD' THEN
301               a2 := a2 + i.val;
302        ELSIF I.user_entity_name = 'A_SUPPLEMENTAL_EARNINGS_FOR_FIT_SUBJECT_TO_TAX_PER_GRE_YTD' THEN
303              a2 := a2 + i.val;
304        ELSIF I.user_entity_name = 'A_SUPPLEMENTAL_EARNINGS_FOR_NWFIT_SUBJECT_TO_TAX_PER_GRE_YTD' THEN
305              a2  := a2 + i.val;
306        ELSIF I.user_entity_name = 'A_PRE_TAX_DEDUCTIONS_FOR_FIT_SUBJECT_TO_TAX_PER_GRE_YTD' THEN
307              a2 := a2 + i.val;
308        ELSIF I.user_entity_name = 'A_FIT_NON_W2_PRE_TAX_DEDNS_PER_GRE_YTD' THEN
309              a2 := a2 + i.val;
310        ELSIF I.user_entity_name = 'A_PRE_TAX_DEDUCTIONS_PER_GRE_YTD' THEN
311              a2 := a2 - i.val;
312        ELSIF I.user_entity_name = 'A_FIT_WITHHELD_PER_GRE_YTD'THEN
313               a3 := i.val;
314         ELSIF i.user_entity_name =  'A_SS_EE_TAXABLE_PER_GRE_YTD'THEN
315              a4 := i.val;
316         ELSIF i.user_entity_name ='A_SS_EE_WITHHELD_PER_GRE_YTD' THEN
317             a5 := i.val;
318         ELSIF i.user_entity_name = 'A_MEDICARE_EE_TAXABLE_PER_GRE_YTD'  THEN
319             a6 := i.val;
320         ELSIF i.user_entity_name = 'A_MEDICARE_EE_WITHHELD_PER_GRE_YTD'  THEN
321             a7 := i.val;
322         ELSIF i.user_entity_name =      'A_W2_BOX_7_PER_GRE_YTD'  THEN
323             a8 := i.val;
324         ELSIF i.user_entity_name =      'A_EIC_ADVANCE_PER_GRE_YTD'  THEN
325             a9 := i.val;
326         ELSIF i.user_entity_name =      'A_W2_DEPENDENT_CARE_PER_GRE_YTD'  THEN
327             a10 := i.val;
328         ELSIF i.user_entity_name =      'A_W2_401K_PER_GRE_YTD'  THEN
329             a11 := i.val;
330         ELSIF i.user_entity_name =      'A_W2_403B_PER_GRE_YTD'  THEN
331             a12 := i.val;
332         ELSIF i.user_entity_name =      'A_W2_408K_PER_GRE_YTD'  THEN
333             a13 := i.val;
334         ELSIF i.user_entity_name =     'A_W2_457_PER_GRE_YTD'  THEN
335             a14 := i.val;
336         ELSIF i.user_entity_name =      'A_W2_501C_PER_GRE_YTD'  THEN
337             a15 := i.val;
338         ELSIF i.user_entity_name =      'A_W2_MILITARY_HOUSING_PER_GRE_YTD'  THEN
339             a16 := i.val;
340         ELSIF i.user_entity_name =      'A_W2_NONQUAL_457_PER_GRE_YTD'  THEN
341             a17:= i.val;
342         ELSIF i.user_entity_name =      'A_W2_BOX_11_PER_GRE_YTD'  THEN
343             a18 := i.val;
344         ELSIF i.user_entity_name =       'A_W2_HSA_PER_GRE_YTD'  THEN
345             a19 := i.val;
346         ELSIF i.user_entity_name =   'A_W2_NONQUAL_PLAN_PER_GRE_YTD' THEN
347             a20 :=  i.val;
348         ELSIF i.user_entity_name =   'A_W2_NONTAX_COMBAT_PER_GRE_YTD'  THEN
349             a21 := i.val;
350          ELSIF i.user_entity_name =      'A_W2_GROUP_TERM_LIFE_PER_GRE_YTD'  THEN
351             a22:= i.val;
352         ELSIF i.user_entity_name =       'A_FIT_3RD_PARTY_PER_GRE_YTD'  THEN
353             a23 := i.val;
354         ELSIF i.user_entity_name =        'A_W2_NONQUAL_STOCK_PER_GRE_YTD' THEN
355             a24 := i.val;
356         ELSIF i.user_entity_name =     'A_W2_NONQUAL_DEF_COMP_PER_GRE_YTD' THEN
357             a25 := i.val;
358        ELSIF i.user_entity_name ='A_W2_BOX_8_PER_GRE_YTD' THEN
359              a26 := i.val;
360        ELSIF i.user_entity_name = 'A_W2_UNCOLL_SS_TAX_TIPS_PER_GRE_YTD' THEN
361              a27 :=  a27 + i.val;
362        ELSIF i.user_entity_name ='A_W2_UNCOLL_MED_TIPS_PER_GRE_YTD' THEN
363               a27 :=  a27 + i.val;
364        ELSIF i.user_entity_name ='A_W2_MSA_PER_GRE_YTD' THEN
365               a28 := i.val;
366        ELSIF i.user_entity_name ='A_W2_408P_PER_GRE_YTD' THEN
367               a29 := i.val;
368        ELSIF i.user_entity_name ='A_W2_ADOPTION_PER_GRE_YTD' THEN
369               a30 := i.val;
370        ELSIF i.user_entity_name ='A_W2_UNCOLL_SS_GTL_PER_GRE_YTD' THEN
371                a31 := i.val;
372        ELSIF i.user_entity_name ='A_W2_UNCOLL_MED_GTL_PER_GRE_YTD' THEN
373                a32 := i.val;
374        ELSIF i.user_entity_name ='A_W2_409A_NONQUAL_INCOME_PER_GRE_YTD' THEN
375                a33  := i.val;
376        ELSIF i.user_entity_name ='A_TERRITORY_RETIRE_CONTRIB_PER_GRE_YTD' THEN
377                 a34  := i.val;
378        ELSIF i.user_entity_name ='A_TERRITORY_TAXABLE_ALLOW_PER_GRE_YTD' THEN
379                a35 := i.val;
380        ELSIF i.user_entity_name ='A_TERRITORY_TAXABLE_COMM_PER_GRE_YTD' THEN
381                a36  := i.val;
382        ELSIF i.user_entity_name ='A_TERRITORY_TAXABLE_TIPS_PER_GRE_YTD' THEN
383                 a37  := i.val;
384        ELSIF i.user_entity_name ='A_W2_ROTH_401K_PER_GRE_YTD' THEN
385                 a46  := i.val;
386        ELSIF i.user_entity_name ='A_W2_ROTH_403B_PER_GRE_YTD' THEN
387                 a47  := i.val;
388        END IF;
389 
390        IF i.user_entity_name =      'A_W2_NONQUAL_457_PER_GRE_YTD'  THEN
391                a20 := a20 - i.val;
392         END IF;
393      END LOOP;
394 
395     OPEN   c_ro_count(to_number(W2_TAX_UNIT_ID));
396     FETCH c_ro_count  INTO l_ro_count;
397     CLOSE c_ro_count;
398     a38  := to_char(nvl(l_ro_count,0));
399 
400    IF l_ro_count > 0 THEN
401 
402       FOR J IN c_ter(to_number(W2_TAX_UNIT_ID)) LOOP
403           if J.user_entity_name         =  'A_SIT_SUBJ_WHABLE_PER_JD_GRE_YTD' THEN
404                 a39 := a39 + J.val;
405           ELSIF J.user_entity_name =  'A_SIT_SUBJ_NWHABLE_PER_JD_GRE_YTD' THEN
406                 a39 := a39 + J.val;
407           ELSIF J.user_entity_name =  'A_SIT_PRE_TAX_REDNS_PER_GRE_YTD' THEN
408                 a39  := a39 - J.val;
409           ELSIF J.user_entity_name  = 'A_SIT_WITHHELD_PER_JD_GRE_YTD' THEN
410                 a40  := J.val;
411           END IF;
412        END LOOP;
413     END IF ;
414 
415     a41 := to_number(a39) - to_number(a37) - to_number(a35) - to_number(a36);
416 
417     return '0' ;
418 END get_w2_er_arch_bal;
419 end pay_us_multi_mmrf;