DBA Data[Home] [Help]

PACKAGE BODY: APPS.PQP_US_FF_FUNCTIONS

Source


1 PACKAGE BODY pqp_us_ff_functions AS
2 /* $Header: pqusfffn.pkb 115.19 2002/12/02 23:42:36 rpinjala ship $ */
3 ----------------------------------------------------------------------------+
4 -- FUNCTION GET_COL_VAL
5 ----------------------------------------------------------------------------+
6 FUNCTION  get_col_val(p_assignment_id     IN NUMBER
7                      ,p_payroll_action_id IN NUMBER
8                      ,p_column_name       IN VARCHAR2
9                      ,p_income_code       IN VARCHAR2 )
10    RETURN varchar2 IS
11    --+
12    l_col_val        varchar2(60);
13    l_string         varchar2(1000);
14    --+
15    l_effective_date date;
16 BEGIN
17    l_effective_date := TRUNC(pqp_car_mileage_functions.pqp_get_date_paid
18                                      (p_payroll_action_id));
19 
20    IF upper(p_column_name) IN ('CURRENT_RESIDENCY_STATUS',
21                                'DATE_8233_SIGNED')  THEN
22       l_string := 'SELECT pad.'||p_column_name ;
23    ELSE
24       l_string := 'SELECT NVL(pdd.'||p_column_name||', ''0'') ';
25    END IF;
26    l_string :=  l_string||
27                 ' FROM  pqp_analyzed_alien_data    pad,
28                         pqp_analyzed_alien_details pdd
29                  WHERE  pad.assignment_id     = :b1
30                    AND  to_char(:b2,''yyyy'') = pad.tax_year
31                    AND  pad.analyzed_data_id  = pdd.analyzed_data_id
32                    AND  pdd.income_code       = :b3
33                    AND  rownum < 2';
34    --+
35    BEGIN
36       EXECUTE IMMEDIATE l_string INTO l_col_val
37          USING p_assignment_id, l_effective_date, p_income_code;
38       --+
39       IF l_col_val IS NULL THEN
40          l_col_val := '0';
41       END IF;
42       --+
43       EXCEPTION
44          WHEN NO_DATA_FOUND THEN
45          RETURN '0';
46    END;
47    --+
48    RETURN l_col_val;
49 END get_col_val;
50 
51 ----------------------------------------------------------------------------+
52 -- FUNCTION STATE_HONORS_TREATY
53 ----------------------------------------------------------------------------+
54 FUNCTION state_honors_treaty ( p_payroll_action_id IN NUMBER
55                              ,p_ele_iv_jur_code    IN VARCHAR2
56                              ,p_override_loc_state IN VARCHAR2 )
57    RETURN varchar2 IS
58    --+
59    l_honor           pqp_alien_state_treaties_f.treaty_honored_flag%TYPE := 'N';
60    l_state_code      pay_state_rules.state_code%TYPE;
61    l_effective_date  date;
62    --+
63    CURSOR c_state_honor (l_state_code varchar2) IS
64    SELECT pas.treaty_honored_flag
65    FROM   pqp_alien_state_treaties_f pas
66    WHERE  l_effective_date BETWEEN
67           pas.effective_start_date AND pas.effective_end_date
68      AND  pas.state_code = l_state_code;
69    --+
70    CURSOR c_jurisdiction IS
71    SELECT state_code
72    FROM   pay_state_rules
73    WHERE  substr(jurisdiction_code,1,2) = substr(p_ele_iv_jur_code,1,2);
74    --+
75 BEGIN
76    l_effective_date := TRUNC(pqp_car_mileage_functions.pqp_get_date_paid
77                                      (p_payroll_action_id));
78    IF p_ele_iv_jur_code = 'NOT ENTERED' THEN
79       l_state_code := p_override_loc_state;
80    ELSE
81       --+ get state-code for the user entered jurisdiction code
82       FOR c_rec IN c_jurisdiction LOOP
83          l_state_code := c_rec.state_code;
84       END LOOP;
85    END IF;
86    --+
87    --+ find out if the state honors the treaty
88    --+
89    FOR c_rec in c_state_honor (l_state_code) LOOP
90       l_honor := c_rec.treaty_honored_flag;
91    END LOOP;
92    --+
93    RETURN l_honor;
94    --+
95 END state_honors_treaty;
96 --+
97 ----------------------------------------------------------------------------+
98 -- FUNCTION ALIEN_TREATY_VALID
99 ----------------------------------------------------------------------------+
100 FUNCTION alien_treaty_valid (p_assignment_id     IN NUMBER
101                             ,p_payroll_action_id IN NUMBER
102                             ,p_income_code       IN VARCHAR2 )
103    RETURN varchar2 IS
104    l_effective_date date;
105    l_col_val        number;
106    l_string         varchar2(1000);
107    --+
108 BEGIN
109    l_effective_date := TRUNC(pqp_car_mileage_functions.pqp_get_date_paid
110                                      (p_payroll_action_id));
111    l_string := 'SELECT 1
112                 FROM   pqp_analyzed_alien_data    pad,
113                        pqp_analyzed_alien_details pdd
114                 WHERE  pad.assignment_id     = :b1
115                   AND  to_char(:b2,''yyyy'') = pad.tax_year
116                   AND  pad.analyzed_data_id  = pdd.analyzed_data_id
117                   AND  :b2 BETWEEN NVL(treaty_benefits_start_date,:b2)
118                                AND NVL(date_benefit_ends, :b2)
119                   AND  pdd.income_code       = :b3
120                   AND  rownum < 2';
121    BEGIN
122       EXECUTE IMMEDIATE l_string INTO l_col_val
123          USING p_assignment_id,  l_effective_date, l_effective_date,
124                l_effective_date, l_effective_date, p_income_code;
125       EXCEPTION
126          WHEN NO_DATA_FOUND THEN
127          RETURN 'N';
128    END;
129    --+
130    RETURN 'Y';
131 END alien_treaty_valid;
132 ----------------------------------------------------------------------------+
133 -- FUNCTION GET_ALIEN_BAL
134 ----------------------------------------------------------------------------+
135 --Note : IF the p_fit_wh_bal_flag = 'P' then this returns
136 --       the FIT pre tax balances. This has been done to
137 --       avoid adding another parameter to this pkg.
138 
139 FUNCTION get_alien_bal(p_assignment_id     IN NUMBER
140                       ,p_effective_date    IN DATE
141                       ,p_payroll_action_id IN NUMBER   DEFAULT NULL
142                       ,p_tax_unit_id       IN NUMBER   DEFAULT NULL
143                       ,p_income_code       IN VARCHAR2 DEFAULT NULL
144                       ,p_balance_name      IN VARCHAR2 DEFAULT NULL
145                       ,p_dimension_name    IN VARCHAR2 DEFAULT NULL
146                       ,p_state_code        IN VARCHAR2 DEFAULT NULL
147                       ,p_fit_wh_bal_flag   IN VARCHAR2 DEFAULT 'N' )
148    RETURN NUMBER IS
149    --+
150    l_bal_name     pay_balance_types.balance_name%type;
151    l_dim_name     pay_balance_dimensions.dimension_name%type;
152    l_def_bal_id   number;
153    l_amt          number;
154    l_tax_unit_id  varchar2(30);
155    l_boolean      boolean := TRUE;
156    l_jd_code      varchar2(30);
157    l_effective_date date;
158    --+
159    CURSOR c_bal_name IS
160    SELECT meaning
161    FROM   hr_lookups
162    WHERE  lookup_code = p_income_code
163      AND  lookup_type = 'PQP_US_ALIEN_INCOME_BALANCE';
164    --+
165    CURSOR c_defined_bal IS
166    SELECT pdb.defined_balance_id
167    FROM   pay_balance_types      pbt,
168           pay_defined_balances   pdb,
169           pay_balance_dimensions pbd
170    WHERE  pbt.balance_name         = l_bal_name
171      AND  pbt.balance_type_id      = pdb.balance_type_id
172      AND  pbd.balance_dimension_id = pdb.balance_dimension_id
173      AND  pbd.dimension_name       = l_dim_name
174      AND  NVL(pbd.legislation_code,'US')  = 'US';
175    --+
176    CURSOR c_tax_unit IS
177    SELECT SFT.segment1
178    FROM   hr_soft_coding_keyflex SFT,
179           per_assignments_f      ASG
180    WHERE  SFT.soft_coding_keyflex_id = ASG.soft_coding_keyflex_id
181      AND  ASG.assignment_id          = p_assignment_id;
182    --+
183    CURSOR c_jurisdiction IS
184    SELECT jurisdiction_code
185    FROM   pay_state_rules
186    WHERE  state_code = p_state_code;
187    --+
188 BEGIN
189    IF p_payroll_action_id IS NOT NULL THEN
190    l_effective_date := TRUNC(pqp_car_mileage_functions.pqp_get_date_paid
191                                      (p_payroll_action_id));
192    ELSE
193    l_effective_date :=p_effective_date;
194    END IF;
195    --+
196    --+ If the dimension name is not passed default it
197    --+
198    IF p_dimension_name IS NULL OR p_dimension_name = 'NULL' THEN
199       l_dim_name := 'Person within Government Reporting Entity Year to Date';
200    ELSE
201       l_dim_name := p_dimension_name;
202    END IF;
203    --+
204    --+ If the income code is passed fetch the balance name
205    --+
206    IF p_income_code IS NOT NULL THEN
207       FOR c_rec IN c_bal_name LOOP
208         l_bal_name := c_rec.meaning;
209       END LOOP;
210    ELSE
211       l_bal_name := p_balance_name;
212    END IF;
213    --+
214    --+ If the requested balance is a withheld balance
215    --+
216    IF p_fit_wh_bal_flag = 'Y' THEN
217       l_bal_name := l_bal_name||' FIT WH';
218    END IF;
219    --+
220    --+ If the requested balance is a Pre-Tax balance
221    --+
222    IF p_fit_wh_bal_flag = 'P' THEN
223       l_bal_name := l_bal_name||' FIT PT';
224    END IF;
225    --+
226    --+
227    --+ If the tax unit id is not passed then fetch it
228    --+
229    IF p_tax_unit_id IS NULL THEN
230       FOR c_rec IN c_tax_unit LOOP
231          l_tax_unit_id := c_rec.segment1;
232       END LOOP;
233    ELSE
234       l_tax_unit_id := p_tax_unit_id;
235    END IF;
236    --+
237    --+ set the tax unit id context
238    --+
239    pay_balance_pkg.set_context('tax_unit_id',  l_tax_unit_id);
240    --+
241    --+ fetch the defined balance it
242    --+
243    FOR c_rec IN c_defined_bal LOOP
244      l_def_bal_id := c_rec.defined_balance_id;
245    END LOOP;
246    --+
247    --+ Get the jurisdiction code and set the JD context
248    --+
249    IF NVL(p_state_code, 'NULL') <> 'NULL' THEN
250       FOR c_rec IN c_jurisdiction LOOP
251         l_jd_code := c_rec.jurisdiction_code;
252       END LOOP;
253       pay_balance_pkg.set_context('jurisdiction_code', l_jd_code);
254    END IF;
255    --+
256    --+ Finally get the actual balance
257    --+
258    l_amt := pay_balance_pkg.get_value(l_def_bal_id,
259                                       p_assignment_id,
260                                       l_effective_date);
261    --+
262    RETURN l_amt;
263    --+
264 END get_alien_bal;
265 ----------------------------------------------------------------------------+
266 -- FUNCTION IS_WINDSTAR
267 ----------------------------------------------------------------------------+
268 FUNCTION is_windstar(p_person_id        IN NUMBER  DEFAULT NULL
269                     ,p_assignment_id    IN NUMBER  DEFAULT NULL)
270    --+
271    --+ Function to return TRUE/FALSE value if the assignment was/is being
272    --+ processed by windstar
273    --+
274    RETURN VARCHAR2 IS
275    --+
276    l_result    VARCHAR2(30) := 'FALSE';
277    --+
278    CURSOR c_person IS
279    SELECT 'x'
280    FROM   per_people_extra_info   PEI
281    WHERE  PEI.information_type  = 'PER_US_ADDITIONAL_DETAILS'
282      AND  PEI.pei_information12 = 'WINDSTAR'
283      AND  PEI.person_id         = p_person_id;
284    --+
285    CURSOR c_assignment IS
286    SELECT 'x'
287    FROM   per_people_extra_info   PEI,
288           per_all_assignments_f   PAA
289    WHERE  PEI.information_type  = 'PER_US_ADDITIONAL_DETAILS'
290      AND  PEI.pei_information12 = 'WINDSTAR'
291      AND  PEI.person_id         = PAA.person_id
292      AND  PAA.assignment_id     = p_assignment_id;
293    --+
294 BEGIN
295    IF p_person_id IS NOT NULL THEN
296       FOR c_rec in c_person LOOP
297          l_result := 'TRUE';
298          exit;
299       END LOOP;
300    ELSIF p_assignment_id IS NOT NULL THEN
301       FOR c_rec IN c_assignment LOOP
302          l_result := 'TRUE';
303          exit;
304       END LOOP;
305    END IF;
306    --+
307    RETURN l_result;
308    --+
309 END is_windstar;
310 
311 ----------------------------------------------------------------------------+
312 -- FUNCTION PQP_IS_WINDSTAR
313 ----------------------------------------------------------------------------+
314 FUNCTION pqp_is_windstar( p_assignment_id    IN NUMBER  DEFAULT NULL)
315 
316    RETURN VARCHAR2 IS
317 
318 l_ret_val VARCHAR2(30);
319    --+
320    --+ Function to return a true/false value if the assignment was/is being
321    --+ processed by windstar. Function has been added as person_id
322    --+ is not available as a CTX. This calls the function IS_WINDSTAR
323    --+
324 BEGIN
325 
326    l_ret_val := is_windstar( NULL,p_assignment_id);
327    RETURN l_ret_val;
328 
329 END pqp_is_windstar;
330 
331 ----------------------------------------------------------------------------+
332 -- FUNCTION get_nonw2_bal
333 ----------------------------------------------------------------------------+
334 FUNCTION  get_nonw2_bal (p_balance_name		IN VARCHAR2,
335                         p_period	         	IN VARCHAR2,
336                         p_assignment_action_id	IN NUMBER,
337                         p_jurisdiction_code	IN VARCHAR2 DEFAULT NULL,
338                         p_tax_unit_id		IN NUMBER)
339 RETURN NUMBER IS
340 
341   l_balance_amount      NUMBER;
342   l_defined_balance_id  NUMBER;
343   l_dimension_name      pay_balance_dimensions.dimension_name%type;
344 
345 CURSOR c1 (c_balance_name varchar2, c_dimension_name varchar2) IS
346    SELECT defined_balance_id
347      FROM pay_defined_balances pdb,
348           pay_balance_types pbt,
349           pay_balance_dimensions pbd
350     WHERE pdb.balance_type_id = pbt.balance_type_id
351       AND pdb.balance_dimension_id = pbd.balance_dimension_id
352       AND pbt.balance_name = c_balance_name
353       AND pbd.dimension_name = c_dimension_name
354       AND nvl(pdb.legislation_code, 'US') = 'US';
355 
356 BEGIN
357 
358   IF p_balance_name = 'Non W2 FIT Withheld' THEN
359      SELECT DECODE (upper(p_period),
360                    'CURRENT','Assignment-Level Current Run',
361                    'RUN','Assignment within Government Reporting Entity Run',
362                    'PAY','Assignment within Government Reporting Entity Pay Date',
363                    'MONTH','Assignment within Government Reporting Entity Month',
364                    'QTD','Assignment within Government Reporting Entity Quarter to Date',
365                    'YTD','Assignment within Government Reporting Entity Year to Date',null)
366      INTO l_dimension_name
367      FROM DUAL;
368   ELSIF p_balance_name = 'SIT Alien Withheld' THEN
369      SELECT DECODE (upper(p_period),
370                    'RUN','Assignment in JD within GRE Run',
371                    'MONTH','Assignment in JD within GRE Month',
372                    'QTD','Assignment in JD within GRE Quarter to Date',
373                    'YTD','Assignment in JD within GRE Year to Date',null)
374      INTO l_dimension_name
375      FROM DUAL;
376   ELSE
377      RETURN 0;
378   END IF;
379 
380  l_balance_amount := 0;
381 
382   IF l_dimension_name IS NOT NULL THEN
383 
384      FOR c1_rec IN c1 (p_balance_name, l_dimension_name)
385      LOOP
386       l_defined_balance_id := c1_rec.defined_balance_id;
387      END LOOP;
388 
389      --+ Set up the GRE and Jurisdicton context
390 
391      pay_balance_pkg.set_context('tax_unit_id', p_tax_unit_id);
392 
393      IF p_balance_name <> 'Non W2 FIT Withheld' THEN
394        pay_balance_pkg.set_context('jurisdiction_code',p_jurisdiction_code);
395      END IF;
396 
397      l_balance_amount := pay_balance_pkg.get_value(l_defined_balance_id,
398                                                 p_assignment_action_id);
399   END IF;
400 
401   RETURN l_balance_amount;
402 
403 END;
404 
405 ----------------------------------------------------------------------------+
406 -- FUNCTION GET_PREV_CONTRIB
407 ----------------------------------------------------------------------------+
408 FUNCTION get_prev_contrib(p_assignment_id     IN NUMBER
409                          ,p_payroll_action_id IN NUMBER
410                          ,p_income_code       IN VARCHAR2 )
411    --+
412    --+ Function to return the previous contribution of the employee for the
413    --+ income code
414    --+
415 RETURN NUMBER IS
416    --+
417    l_result    NUMBER := 0;
418    l_effective_date date;
419    --+
420    CURSOR c_prev_contrib IS
421    SELECT pei.pei_information6
422    FROM   per_people_extra_info pei
423    WHERE  pei.pei_information7 = to_char(l_effective_date,'YYYY')
424      AND  pei.pei_information5 = p_income_code
425      AND  pei.information_type = 'PER_US_PAYROLL_DETAILS'
426      AND  person_id IN
427          (SELECT pas.person_id
428           FROM   per_all_assignments_f pas
429           WHERE  pas.assignment_id = p_assignment_id
430             AND  l_effective_date BETWEEN pas.effective_start_date
431                                   AND     pas.effective_end_date);
432    --+
433 BEGIN
434    l_effective_date := TRUNC(pqp_car_mileage_functions.pqp_get_date_paid
435                                      (p_payroll_action_id));
436    --+
437    FOR c_rec in c_prev_contrib LOOP
438       l_result := c_rec.pei_information6;
439    END LOOP;
440    --+
441    RETURN l_result;
442    --+
443 END get_prev_contrib;
444 --
445 ----------------------------------------------------------------------------+
446 -- FUNCTION PQP_PROCESS_EVENTS_EXISTS
447 ----------------------------------------------------------------------------+
448 FUNCTION pqp_process_events_exist(p_assignment_id   IN NUMBER
449                                  ,p_income_code     IN VARCHAR2 )
450    --+
451    --+ Function to check whether there are any changes to the alien data that
452    --+ are not analyzed by Windstar
453    --+
454 RETURN VARCHAR2 IS
455    --+
456    CURSOR c_process_events IS
457    SELECT ppe.process_event_id
458    FROM   pay_process_events ppe
459    WHERE  ppe.assignment_id = p_assignment_id
460      AND  ppe.change_type   = 'PQP_US_ALIEN_WINDSTAR'
461      AND  ppe.status        IN ('N','D','R'); --+ Not read,Read,Data validation error
462    --+
463    l_value varchar2(10) := 'N';
464    --+
465 BEGIN
466    --+
467    FOR c_rec in c_process_events LOOP
468       l_value := 'Y';
469    END LOOP;
470    --+
471    RETURN l_value;
472    --+
473 END pqp_process_events_exist;
474 --
475 ----------------------------------------------------------------------------+
476 -- FUNCTION PQP_ALIEN_TAX_ELE_EXIST
477 ----------------------------------------------------------------------------+
478 FUNCTION pqp_alien_tax_ele_exist (p_assignment_id          IN NUMBER
479                                  ,p_effective_date         IN DATE
480                                   )
481    --+
482    --+ Function to check whether the ALIEN_TAXATION element is attached if
483    --+ there are earnings for classification Alien Earnings.
484    --+ If the function returns 'N' then there is an Alien Earnings and the
485    --+ ALIEN_TAXATION element is not attached.
486    --+
487 RETURN VARCHAR2 IS
488    --+
489    CURSOR c_alien_earn_exist IS
490    SELECT 'x'
491    FROM   pay_element_entries_f       pee
492          ,pay_element_links_f         pel
493          ,pay_element_types_f         pet
494          ,pay_element_classifications pec
495    WHERE  pee.assignment_id       = p_assignment_id
496      AND  pee.element_link_id     = pel.element_link_id
497      AND  pel.element_type_id     = pet.element_type_id
498      AND  pet.classification_id   = pec.classification_id
499      AND  pec.classification_name = 'Alien/Expat Earnings'
500      AND  pec.legislation_code    = 'US'
501      AND  p_effective_date BETWEEN pee.effective_start_date
502                                AND pee.effective_end_date
503      AND  p_effective_date BETWEEN pel.effective_start_date
504                                AND pel.effective_end_date
505      AND  p_effective_date BETWEEN pet.effective_start_date
506                                AND pet.effective_end_date;
507    --+
508    CURSOR c_alien_taxation IS
509    SELECT 'x'
510    FROM   pay_element_entries_f   pee
511          ,pay_element_links_f     pel
512          ,pay_element_types_f     pet
513    WHERE  pee.assignment_id       = p_assignment_id
514      AND  pee.element_link_id     = pel.element_link_id
515      AND  pel.element_type_id     = pet.element_type_id
516      AND  pet.element_name        = 'ALIEN_TAXATION'
517      AND  p_effective_date BETWEEN pee.effective_start_date
518                                AND pee.effective_end_date
519      AND  p_effective_date BETWEEN pel.effective_start_date
520                                AND pel.effective_end_date
521      AND  p_effective_date BETWEEN pet.effective_start_date
522                                AND pet.effective_end_date;
523    --+
524    l_exist   varchar2(1);
525    --+
526 BEGIN
527    FOR c_rec IN c_alien_earn_exist LOOP
528       --+
529       FOR c_rec_tax IN c_alien_taxation LOOP
530          --+
531          --+ All fine as ALIEN_TAXATION element is attached to the asg
532          --+
533          RETURN 'Y';
534       END LOOP;
535       --+
536       --+ Alien earnings exists but ALIEN_TAXATION element is NOT attached to the asg
537       --+
538       RETURN 'N';
539    END LOOP;
540    --+
541    --+ All fine as there are no Alien earnings and ALIEN_TAXATION
542    --+ element is not required
543    --+
544    RETURN 'Y';
545    --+
546 END pqp_alien_tax_ele_exist;
547 --
548 -------------------------------------------------------------------+
549 --
550 -- FUNCTION get_trr_nonw2_bal
551 --
552 -- ** NOTE ** Removed the Summing of balances for all the Asingments
553 --            and replaced the dimensions with the new GRE_JD dim.
554 --            14-JUN-2002 -- tmehra
555 --
556 -- Function to return the GRE level balances, Since we do no store
557 -- GRE level balances, we compute this by adding balances of all the
558 -- assignments for a given GRE. Function written to compute 'Non W2'
559 -- balances at the 'GRE' level.
560 -------------------------------------------------------------------+
561 FUNCTION get_trr_nonw2_bal (p_gre         IN NUMBER,
562                             p_jd          IN VARCHAR2 DEFAULT NULL,
563                             p_start_date  IN DATE,
564                             p_end_date    IN DATE,
565                             p_bal_name    IN VARCHAR2,
566                             p_dim         IN VARCHAR2)
567 RETURN NUMBER IS
568 
569 --
570 -- Cursor to get all the processed assignemtns in
571 -- a given GRE withing a date range
572 --
573 
574 l_dimension        pay_balance_dimensions.dimension_name%type;
575 l_defined_bal_id   NUMBER;
576 l_def_pre_tax_id   NUMBER;
577 l_bal_name         pay_balance_types.balance_name%type;
578 l_bal_amt          NUMBER;
579 l_asg_action_id    NUMBER;
580 ---------------------------------------+
581 -- Funtion to get the defined balance Id
582 -- for a given balance and dimension
583 ---------------------------------------+
584 FUNCTION get_defined_bal_id (p_bal_name     VARCHAR2
585                             ,p_dimension    VARCHAR2) RETURN number IS
586 
587 l_id   number := 0;
588 
589  --+ Cursor to get the defined balance id for a given balance and a dimension
590 
591  CURSOR crs_get_defined_bal_id (p_bal_name   VARCHAR2
592                                ,p_dimension  VARCHAR2) IS
593    SELECT dbl.defined_balance_id
594    FROM   pay_defined_balances dbl
595    WHERE  dbl.balance_type_id  =
596                 (SELECT balance_type_id
597                  FROM   pay_balance_types blt
598                  WHERE  blt.balance_name = p_bal_name
599                  AND    blt.legislation_code  = 'US')
600                  AND    dbl.balance_dimension_id =
601                              (SELECT balance_dimension_id
602                               FROM   pay_balance_dimensions bld
603                               WHERE  bld.database_item_suffix =
604                                                 '_'|| p_dimension
605                               AND    bld.legislation_code  = 'US')
606    AND    dbl.legislation_code  = 'US';
607 
608 BEGIN
609     --+ Get the defined balance id for the passed balance and dimension
610 
611    FOR i IN crs_get_defined_bal_id (p_bal_name, p_dimension)
612    LOOP
613       l_id := i.defined_balance_id;
614    END LOOP;
615 
616    RETURN l_id;
617 
618 END;
619 
620 ----------------------------------------+
621 -- end of the get_defined_bal_id function
622 ----------------------------------------+
623 
624 BEGIN
625 
626 l_bal_amt           := 0;
627 l_asg_action_id     := NULL;
628 
629 -- Commented out and replaced by the following line
630 -- on 13-Jun-2002 tmehra
631 -- pay_us_balance_view_pkg.set_context('TAX_UNIT_ID',p_gre);
632 -- pay_us_balance_view_pkg.set_context('DATE_EARNED',p_end_date);
633 
634 pay_balance_pkg.set_context('TAX_UNIT_ID',p_gre);
635 pay_balance_pkg.set_context('DATE_EARNED',fnd_date.date_to_canonical(p_end_date));
636 pay_balance_pkg.set_context('BALANCE_DATE',fnd_date.date_to_canonical(p_start_date));
637 
638 IF p_bal_name = 'Non W2 FIT' THEN
639 
640   IF p_dim = 'CTD' THEN
641      l_dimension := 'GRE_PYDATE';
642   ELSIF p_dim = 'MTD' THEN
643      l_dimension := 'GRE_MONTH';
644   ELSIF p_dim = 'QTD' THEN
645      l_dimension := 'GRE_QTD';
646   ELSIF p_dim = 'YTD' THEN
647      l_dimension := 'GRE_YTD';
648   END IF;
649 
650   l_defined_bal_id := get_defined_bal_id ('Non W2 FIT Withheld',l_dimension);
651 
652   l_bal_amt :=  pay_balance_pkg.get_value(l_defined_bal_id
653                                           ,l_asg_action_id);
654 ELSIF p_bal_name = 'Non W2 SIT' THEN
655 
656   IF p_dim = 'CTD' THEN
657      l_dimension := 'GRE_JD_PYDATE';
658   ELSIF p_dim = 'MTD' THEN
659      l_dimension := 'GRE_JD_MONTH';
660   ELSIF p_dim = 'QTD' THEN
661      l_dimension := 'GRE_JD_QTD';
662   ELSIF p_dim = 'YTD' THEN
663      l_dimension := 'GRE_JD_YTD';
664   END IF;
665 
666   l_defined_bal_id := get_defined_bal_id ('SIT Alien Withheld',l_dimension);
667 
668   pay_balance_pkg.set_context('JURISDICTION_CODE',p_jd);
669 
670   l_bal_amt := pay_balance_pkg.get_value(l_defined_bal_id
671                                         ,l_asg_action_id);
672 
673 
674 ELSIF p_bal_name = 'Non W2 FIT Wages' THEN
675 
676   IF p_dim = 'CTD' THEN
677      l_dimension := 'GRE_PYDATE';
678   ELSIF p_dim = 'MTD' THEN
679      l_dimension := 'GRE_MONTH';
680   ELSIF p_dim = 'QTD' THEN
681      l_dimension := 'GRE_QTD';
682   ELSIF p_dim = 'YTD' THEN
683      l_dimension := 'GRE_YTD';
684   END IF;
685 
686   l_defined_bal_id := get_defined_bal_id ('FIT Alien Subj Whable',l_dimension);
687   l_def_pre_tax_id := get_defined_bal_id ('FIT Non W2 Pre Tax Dedns',l_dimension);
688 
689   l_bal_amt := l_bal_amt
690                 + pay_balance_pkg.get_value(l_defined_bal_id
691                                            ,l_asg_action_id)
692                 - pay_balance_pkg.get_value(l_def_pre_tax_id
693                                            ,l_asg_action_id);
694 
695 ELSIF p_bal_name = 'Non W2 SIT Wages' THEN
696 
697   IF p_dim = 'CTD' THEN
698      l_dimension := 'GRE_JD_PYDATE';
699   ELSIF p_dim = 'MTD' THEN
700      l_dimension := 'GRE_JD_MONTH';
701   ELSIF p_dim = 'QTD' THEN
702      l_dimension := 'GRE_JD_QTD';
703   ELSIF p_dim = 'YTD' THEN
704      l_dimension := 'GRE_JD_YTD';
705   END IF;
706 
707   l_defined_bal_id := get_defined_bal_id ('SIT Alien Subj Whable',l_dimension);
708   l_def_pre_tax_id := get_defined_bal_id ('SIT Non W2 Pre Tax Dedns',l_dimension);
709 
710   pay_balance_pkg.set_context('JURISDICTION_CODE',p_jd);
711 
712       l_bal_amt := l_bal_amt
713                    + pay_balance_pkg.get_value(l_defined_bal_id
714                                               ,l_asg_action_id)
715                    - pay_balance_pkg.get_value(l_def_pre_tax_id
716                                               ,l_asg_action_id);
717 END IF;
718 
719 
720 RETURN l_bal_amt;
721 END;
722 --------------------------------------------------------------------------+
723 
724 
725 END pqp_us_ff_functions;